(Part 2) Best computer programming books according to redditors

Jump to the top 20

We found 8,316 Reddit comments discussing the best computer programming books. We ranked the 1,691 resulting products by number of redditors who mentioned them. Here are the products ranked 21-40. You can also go back to the previous section.

Next page

Subcategories:

Web development programming books
Software development books
API & operating environments books
Algorithms and data structures books
Graphic & multimedia programming books
Programming for beginners books
Software design & engeneering books
Microsoft programming books
Game programming books
Functional software programming books
Apple programming books
Parallel computer programming books

Top Reddit comments about Computer Programming:

u/D3FEATER · 699 pointsr/IAmA

The exact four books I read are:

Learning Obj-C

Learning Java

iOS Programming: The Big Nerd Ranch Guide

Android Programming: The Big Nerd Ranch Guide

However, I would now recommend learning Swift instead of Obj-C. At the time when I was looking into iOS books, good books on Swift were few and far between.

u/samort7 · 257 pointsr/learnprogramming

Here's my list of the classics:

General Computing

u/Mydrax · 118 pointsr/learnprogramming

Well, this is usually because C++ is not really a beginner friendly language. You need to understand the architecture/fundamentals of a computer system at times to understand certain concepts and are often difficult to understand ex: pointers, dynamic memory allocation etc. and with C++ you never finish learning!

Yes, you are very correct about understanding basics before doing actual game-based programming, C++ Primer is pretty old but it's definitely a golden book alongside it though for someone like you I will suggest some of the books I read a couple years back and some that I believe are better for beginners:

Accelerated C++: Practical Programming by Example

Programming: Principles and Practice Using C++

The C++ Programming Language, 4th Edition- Very big book, read this after you've read the rest.

And a book that I've heard is pretty good for game development with c++: https://www.amazon.com/Mastering-Game-Development-professional-realistic/dp/1788629221

u/dinmordk1 · 47 pointsr/learnprogramming

For Theory/Lectures

  1. https://www.youtube.com/channel/UClEEsT7DkdVO_fkrBw0OTrA
  2. https://www.geeksforgeeks.org/data-structures/
  3. https://www.geeksforgeeks.org/fundamentals-of-algorithms/
  4. https://www.coursera.org/learn/algorithms-part1
  5. https://www.coursera.org/learn/algorithms-part2
  6. https://www.coursera.org/specializations/algorithms
  7. https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/lecture-videos/
  8. https://www.codechef.com/certification/data-structures-and-algorithms/prepare#foundation
  9. https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836/ref=sr_1_3?crid=Y51H99ZLXW8S&keywords=elements+of+programming+interviews&qid=1558622746&s=gateway&sprefix=elements+of+pro%2Caps%2C349&sr=8-3 [C++/Python/Java]
  10. https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850/ref=sr_1_1?crid=10BA7LH4GNFTS&keywords=cracking+the+coding+interview&qid=1558622733&s=gateway&sprefix=cracking+the+co%2Caps%2C368&sr=8-1

    For Practice

  11. https://www.hackerearth.com/practice/
  12. https://www.hackerrank.com/dashboard
  13. https://leetcode.com/problemset/all/
  14. https://www.interviewbit.com/practice/
  15. https://www.spoj.com/problems/classical/sort=6
  16. https://www.codechef.com/problems/school/?sort_by=SuccessfulSubmission&sorting_order=desc
  17. https://codeforces.com/problemset?order=BY_SOLVED_DESC
  18. https://practice.geeksforgeeks.org/
  19. https://a2oj.com/ps
  20. https://projecteuler.net/archives
  21. https://hack.codingblocks.com/
  22. https://www.reddit.com/r/dailyprogrammer/
u/Rizzan8 · 46 pointsr/learnprogramming

Here below is my copy pasta of C#/Unity stuff which I post pretty often on /r/learnprogramming and /r/learncsharp . I only need to find a moment one day and add some computer science theory links.

Free C# ebook

http://www.csharpcourse.com/ <- The download link is under 'here' at the end of the first paragraph.

Youtube tutorials:

https://www.youtube.com/playlist?list=PLGLfVvz_LVvRX6xK1oi0reKci6ignjdSa <- apart from C# this dude has also A LOT OF other tutorials on many other languages.

https://www.youtube.com/watch?v=pSiIHe2uZ2w <- has also pretty good Unity tutorials.

https://scottlilly.com/build-a-cwpf-rpg/ <- learn WPF (desktop application with GUI) by making simple RPG game.

https://www.youtube.com/user/IAmTimCorey <- This guy is also good, but I dislike his coding style and that he uses a lot of nugets instead of writing stuff himself.

Book reference guide:

https://www.amazon.com/C-7-0-Nutshell-Definitive-Reference/dp/1491987650/ref=sr_1_1?ie=UTF8&qid=1547990420&sr=8-1&keywords=C%23+in+a+nutshell <- But treat is as a language reference guide, not a programming learning guide.

Text-based tutorials

https://www.tutorialspoint.com/csharp/index.htm <- C#

https://www.tutorialspoint.com//wpf/index.htm <- WPF (GUI programming)

Udemy - wait for $10 sale which occurs at least once in a month:

https://www.udemy.com/csharp-tutorial-for-beginners/ <- for C#, dude has also more advanced tutorials to choose from.

https://www.udemy.com/user/bentristem/ <- for Unity

Do not move to Unity or WPF before you get good grasp on C# syntax and OOP concepts. Bear in mind that majority of Unity tutorials present abysmal C# coding style and practices. So I wouldn't recommend learning C# from such courses.

Coding style (read after getting good grasp of OOP concepts)

https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship-ebook/dp/B001GSTOAM/ref=sr_1_1?keywords=clean+code&qid=1562330510&s=gateway&sr=8-1 <- Clean Code, recommended for every newcomer at my work

https://www.amazon.com/gp/product/B075LRM681?pf_rd_p=2d1ab404-3b11-4c97-b3db-48081e145e35&pf_rd_r=22NFZ5GCWM7YMK2A5A2G <- Clean Architecture

u/Hyru · 39 pointsr/programming

Books

u/phughes · 38 pointsr/iOSProgramming

My best advice is to avoid "It's easy to write an app" tutorials. They put you in way over your head and when there's something wrong with the tutorial (or you mistype something) you flounder.


Instead focus on "the basics" of programming. For loops. If statements. Basic control flow. Variable assignment.

Next focus on understanding Object Oriented Programming. It'll take a while to wrap your head around it, but it's the foundation of everything Apple provides you to write apps.

For these two steps I used this book but you might want to find something based on Swift, since that's the new hip thing.

Then you start learning Apple's frameworks. Do a bunch of tutorials. Write your own app. When you realize it sucks and you'd be embarrassed to share it with anyone dump it and start over. Write lots of apps that do stupid little things. Make them bigger. After a few times you may have something cool, but more importantly you'll have learned a bunch of stuff you can't learn by doing tutorials.

Try to remember when it's late at night and you're crying with your head down on the desk because you can't get it to work that programming is fun. (That's sarcasm, but you need to know that even expert programmers went through it too. If you keep plugging you'll get better.)

u/_dban_ · 31 pointsr/programming

I think this post summarizes why blog posts are a bad teaching medium, and why books are still very useful.

It looks like this guy read some stuff and applied it, without reading the full instructions. For example, the OP quotes Uncle Bob, but misses the context which is fully explained in Uncle Bob's book Agile Patterns, Principles and Practices.

For example, thinking that:

> depend on abstractions, not concretions

implies an explosion of interfaces and false abstractions.

The PPP book has a chapter detailing what he means by this.

In essence, the business rules should be abstracted away from how they are implemented, because the business rules change for different reasons than the implementation (and thus why they should be separated, as per SRP).

In the example, he is implementing a Coffee Machine.

Uncle Bob starts with the use cases to determine what software behavior is required, and derives a software model of that behavior using OOP. This results in a coherent set of classes with well partitioned responsibilities.

Then, he creates abstract classes to expose seams which the concrete implementations use to connect the abstract model to the physical implementation of the Coffee Machine. You can use interfaces and the strategy pattern as well to achieve the same effect (the approach I prefer). This way, the physical implementation depends on the abstract definition (as per DIP).

Thus, the seams become layer boundaries driven by abstractions derived from use cases.

Note that the goal isn't testability, it is separation of concerns. The fact that testability is improved is a side effect (and testability is a tool for measuring how well concerns are separated). This is why chasing testability as a goal leads to false abstractions, because you are approaching the problem from the wrong direction.

Thus, if you apply Uncle Bob's advice as he meant and as is explained in the book, the problem the OP demonstrates with lack of cohesion doesn't exist. In fact, there is a very useful section in the PPP book providing some useful metrics to determine how well your software model is organized, so you can move your abstract model from the "bad abstraction" to the "good abstraction" as demonstrated by the OP.

TL;DR - Seams aren't the problem, the problem is how you are thinking about the problem. Also, read the book, not the blog.

u/Avinson1275 · 29 pointsr/gis
u/iownahorseforreal · 29 pointsr/hacking

For a practical top-down approach to pentesting, this book was monumental for me learning the process of pentesting. I have mentioned the OSCP, and while that is an advanced course, it has benefited me greatly to excel at what I do. It's difficult to give you a starting point now, since when I started the security field was very different. I would say here and netsec are solid communities to get help on something specific, but you definitely want to have working knowledge before asking about it.

u/feketegy · 25 pointsr/PHP

Every quality software should have tests. So...

Read the unit tests / features tests first. Those will show you how a specific piece of the code works.

Also:

  1. Play with composer packages.
  2. Learn about PHP SPL
  3. Learn about design patterns and beyond
  4. Learn TDD, setup PHPUnit, Behat, Mink, PHPSpec
  5. Read PHP The Right Way
  6. Learn about clean code, EBI, DCI and how to put MVC on a shorter leash here: http://ikke.info/clean_code.html and here http://ikke.info/todo.txt and check out the #cleancode IRC channel on freenode
  7. Read a couple of books like: PHP Objects, Patterns and Practice or Code Complete or Clean Code or The Pragmatic Programmer or The Mythical Man-Month
  8. Start an open-source project or contribute to one


    There are a lot to learn and if you really like programming you will never stop learning.

u/cronin1024 · 25 pointsr/programming

Thank you all for your responses! I have compiled a list of books mentioned by at least three different people below. Since some books have abbreviations (SICP) or colloquial names (Dragon Book), not to mention the occasional omission of a starting "a" or "the" this was done by hand and as a result it may contain errors.

edit: This list is now books mentioned by at least three people (was two) and contains posts up to icepack's.

edit: Updated with links to Amazon.com. These are not affiliate - Amazon was picked because they provide the most uniform way to compare books.

edit: Updated up to redline6561


u/sleepbot · 24 pointsr/AcademicPsychology

For a stats program, I recommend learning R. It's free and powerful. No need to worry or wonder whether your university will have a license, as you would for SPSS, SAS, STATA, etc.

If you really have no stats background, you might find Andy Field's popular book series Discovering Statistics to be a good place to start. He's re-written this for several stats programs, but you'd want the one called Discovering Statistics Using R. That should be plenty to keep you busy. If not, then go a bit more into factor analysis, structural equation modeling, and Bayesian statistics.

u/misconfig_exe · 24 pointsr/netsecstudents

Also I highly recommend THP2 (pentesting focused) (you can skip THP, its contents are all included and better organized in THP2) and THP3 (red teaming focused). Peter also hosts awesome trainings which I've leveraged into internships and jobs. more info at https://securepla.net/training

u/K60d55 · 23 pointsr/java

I don't really like the term "design your system using interfaces" because it doesn't tell you why. It's a generic idea without any context.

It is better to start with a principle, like Dependency Inversion. Dependency Inversion says you should separate your code from its external dependencies. This is good, because it keeps your code isolated and not dependent on the particular details of things like storage.

Does your application use MySql? Does it use MongoDB? It doesn't matter. In your interface, you can specify query methods for objects from a data store, and a method to save objects to your data store. Then implement the interface specifically for the data store. Your interface could be called FooRepository and the implementation MySqlFooRepository or MongoFooRepository. I dislike interfaces called FooRepositoryImpl. This strongly suggests an interface isn't necessary.

Interfaces are contracts that help you preserve your design and to explain what you need out of external dependencies.

Interfaces are good, but so are classes. Don't overuse interfaces, because indirection isn't always necessary or good. It can make your code impossible to follow and understand.

Start by learning principles like SOLID, which will help you understand where usage of interfaces makes sense. Agile Patterns, Principles and Practices is the best book I've read about this. Another book which does a great job of explaining how to properly use interfaces is Growing Object Oriented Software Guided By Tests.

u/karlfreeman · 22 pointsr/ruby

Some great suggestions here around complimentary languages. Let me chime in on the tools. Depending on where you want your career to go deploying Ruby without Heroku wouldn't hurt at all.

  • When to use Varnish / Nginx and why
  • Why Capistrano is a popular way to deploy code
  • How to demonize and monitor ruby processes
  • Why people use Chef
  • Knowing the key difference between how Unicorn scales and Puma
  • Understanding Git, Git merging strategies and having an awarness of Git Flow style branching models
  • etc...

    I've made no assumption on what you already know so please don't feel like you need to know all of this but as Rubyist these are things I look for in candidate's that I hire :).

    PS: I've not included Databases in all of this which I think is obvious to say is important when fleshing out a CV.

    PPS: Two books I would recommend highly (can easily be read on holiday in the sun)

  • Seven Languages in Seven Weeks
  • Seven Databases in Seven Weeks

    Both of these books are fairly light hearted, give you a grounded understanding of the core differences in languages and databases, assume your a programmer already and IMO are very interesting reads for someone that is keen to look at languages from different angles. Prolog == mind blown

    Good Luck
u/MrBushido2318 · 20 pointsr/gamedev

You have a long journey ahead of you, but here goes :D

Beginner

C++ Primer: One of the better introductory books.

The C++ Standard Template Library: A Tutorial and Reference: Goes over the standard template library in fantastic detail, a must if you're going to be spending a lot of time writing C++.

The C++ Programming Language: Now that you have a good idea of how C++ is used, it's time to go over it again. TCPPL is written by the language's creator and is intended as an introductory book for experienced programmers. That said I think it's best read once you're already comfortable with the language so that you can full appreciate his nuggets of wisdom.


Intermediate

Modern C++ Design: Covers how to write reusable C++ code and common design patterns. You can definitely have started game programming by the time you read this book, however it's definitely something you should have on your reading list.

C++ Templates: Touches on some similar material as Modern C++ Design, but will help you get to grips with C++ Template programming and how to write reusable code.

Effective C++: Practical advise about C++ do's and dont's. Again, this isn't mandatory knowledge for gamedev, but it's advice is definitely invaluable.

Design Patterns: Teaches you commonly used design patterns. Especially useful if you're working as part of a team as it gives you a common set of names for design patterns.

Advanced

C++ Concurrency in Action: Don't be put off by the fact I've put this as an "advanced" topic, it's more that you will get more benefit out of knowing the other subjects first. Concurrency in C++11 is pretty easy and this book is a fantastic guide for learning how its done.

Graphics Programming

OpenGL: A surprisingly well written specification in that it's pretty easy to understand! While it's probably not the best resource for learning OpenGL, it's definitely worth looking at. [edit: Mix it in with Open.gl and arcsynthesis's tutorials for practical examples and you're off to a good start!]

OpenGL Superbible: The OpenGL superbible is one of the best ways to learn modern OpenGL. Sadly this isn't saying much, in fact the only other book appears to be the "Orange Book", however my sources indicate that is terrible. So you're just going to have suck it up and learn from the OGL Superbible![edit: in retrospect, just stick to free tutorials I've linked above. You'll learn more from them, and be less confused by what is 3rd party code supplied by the book. Substitute the "rendering" techniques you would learn from a 3d book with a good 3d math book and realtime rendering (links below)]


Essential Mathematics for Game Programmers or 3D Math Primer for Graphics and Game Development: 3D programming involves a lot of math, these books cover topics that OpenGL/DirectX books tend to rush over.

Realtime Rendering: A graphics library independent explanation of a number of modern graphical techniques, very useful with teaching you inventive ways to use your newly found 3d graphical talents!

u/DucBlangis · 20 pointsr/netsecstudents

Here is a "curriculum" of sorts I would suggest, as it's fairly close to how I learned:

  1. Programming. Definitely learn "C" first as all of the Exploitation and Assembly courses below assume you know C: The bible is pretty much Dennis Richie and Kernighan's "The C Programming Language", and here is the .pdf (this book is from 1988, I don't think anyone would mind). I actually prefer Kochan's book "Programming in C" which is very beginner freindly and was written in 2004 rather than 1988 making the language a little more "up to date" and accessible. There are plenty of "C Programming" tutorials on YouTube that you can use in conjunction with either of the aforementioned books as well. After learning C than you can try out some other languages. I personally suggest Python as it is very beginner friendly and is well documented. Ruby isn't a bad choice either.

  2. Architecture and Computer basics:
    Generally you'll probably want to look into IA-32 and the best starting point is the Intel Architecture manual itself, the .pdf can be found here (pdf link).
    Because of the depth of that .pdf I would suggest using it mainly as a reference guide while studying "Computer Systems: A Programmers Perspective" and "Secrets of Reverse Engineering".

  3. Operating Systems: Choose which you want to dig into: Linux or Windows, and put the effort into one of them, you can come back to the other later. I would probably suggest Linux unless you are planning on specializing in Malware Analysis, in which case I would suggest Windows. Linux: No Starch's "How Linux Works" is a great beginner resource as is their "Linux Command Line" book. I would also check out "Understanding the Linux Kernel" (that's a .pdf link). For Windows you can follow the Windows Programming wiki here or you can buy the book "Windows System Programming". The Windows Internals books are generally highly regarded, I didn't learn from them I use them more as a reference so I an't really speak to how well they would teach a "beginner".

  4. Assembly: You can't do much better than OpenSecurityTraining's "Introductory Intel x86: Architecture, Assembly, Applications, & Alliteration" class lectures from Xeno Kovah, found here. The book "Secrets of Reverse Engineering" has a very beginner friendly introduction to Assembly as does "Hacking: The Art of Exploitation".

  5. Exploitation: OpenSecurityTraining also has a great video series for Introduction to Exploits. "Hacking: The Art of Exploitation" is a really, really good book that is completely self-contained and will walk you through the basics of assembly. The author does introduce you to C and some basic principles of Linux but I would definitely suggest learning the basics of C and Linux command line first as his teaching style is pretty "hard and fast".

  6. Specialized fields such as Cryptology and Malware Analysis.


    Of course if you just want to do "pentesting/vuln assessment" in which you rely more on toolsets (for example, Nmap>Nessus>Metasploit) structured around a methodology/framework than you may want to look into one of the PACKT books on Kali or backtrack, get familiar with the tools you will use such as Nmap and Wireshark, and learn basic Networking (a simple CompTIA Networking+ book will be a good enough start). I personally did not go this route nor would I recommend it as it generally shys away from the foundations and seems to me to be settling for becoming comfortable with tools that abstract you from the real "meat" of exploitation and all the things that make NetSec great, fun and challenging in the first place. But everyone is different and it's really more of a personal choice. (By the way, I'm not suggesting this is "lame" or anything, it was just not for me.)

    *edited a name out





u/dragonmantank · 20 pointsr/learnprogramming

For all the posts that will eventually come, PHP is a viable language to learn. I'm not saying it's the best language, nor a language that I would point to as an example of "this is how all programming should be done", but there's one big thing PHP has going for it:

For The Web, It Gets Shit Done

So, really, stop with the hate.



As for learning PHP, don't start with a framework. Learn core PHP first and then pick a framework. You'll have a better understanding about what is going on.

Join a local user group. Even if you can't make it to meetings, most of them have newsgroups that you can post questions to and get local advice. Check out http://www.zend.com/en/community/local-php-groups to see if there is one near you.

If you're not on Twitter, get on there to follow big names in the community. @calevans, @lornajane, @weierophinney, and @grmpyprogrammer are a few to follow.

Resources for help that aid in learning PHP:

u/telnetrestart · 19 pointsr/blackhat

I'm taking it right now. The books I read through or started before the OSCP in no particular order:

u/benr783 · 18 pointsr/jailbreak

If you don't have any prior knowledge with programming, I'd first recommend learning Python. If you do have programming knowledge, then jump straight into ObjC. I read these 3 books and my Objective-C knowledge grew so much. I highly recommend reading these books.

Book One

Book Two

Book Three

I'd recommend reading these books in the order I listed them.

After you have read those books, you'll want to get friendly with theos. Theos is what you will use to make your tweaks. Learn how to install/use it here: http://iphonedevwiki.net/index.php/Theos/Getting_Started.

Now, you can look at open source tweaks. There is a great place to see a lot of them: http://iphonedevwiki.net/index.php/Open_Source_Projects.

Once you are comfortable, get started writing tweaks!

Always feel free to PM me if you need any help or have a question. :)

u/ridicalis · 18 pointsr/javascript

The first thing that comes to mind is understanding scope. In particular, if you come from a C-esque language, this might be one of your biggest hangups. Understanding how the scope works before you write your code will inevitably lead to a better-written product.

(tl;dr for the rest of this: know the fundamentals)

The route I came up, I started as an OOP developer and thought JS was a toy language for much of my career. It wasn't until I took the time to understand the language that I came into my own as a JS dev, and it is currently my favorite language to develop for. If you're the book-reading sort, I would suggest the following resources in sequence:

  • JavaScript: The Definitive Guide (David Flanagan)
  • JavaScript: The Good Parts (Douglas Crockford)
  • JavaScript Patterns: Build Better Applications with Coding and Design Patterns (Stoyan Stefanov)

    If you follow this link and look at the Frequently Bought Together section, you'll see that these three form a common trifecta. What you can expect:

  • The first book will give you a fundamental understanding of the language (I would personally skip the DOM-related parts, since that's more framework/environment than language)
  • The second book will tell you "Okay, we just gave you a drawer full of knives, here are the ones that won't send you to the hospital"
  • The third book gives you a rationale for how and why to apply the language in certain ways. It deals with JS-specific issues, and also brings in some of the Gang of Four patterns and other best practices.

    (edit: added link to Amazon page for the first of the three books, fixed formatting)
u/[deleted] · 18 pointsr/netsec

It really depends on what niche you're looking on covering. It's difficult, I feel, to brush up on "infosec" to any level of practical proficiency without focusing on a few subsets. Based on your interests, I would recommend the following books.

General Hacking:

Hacking Exposed

The Art of Exploitation

The Art of Deception



Intrusion Detection / Incident Response:

Network Flow Analysis

The Tao of Network Security Monitoring

Practical Intrusion Analysis

Real Digital Forensics


Reverse Engineering:

Reversing: Secrets of Reverse Engineering

The Ida Pro Book

Malware Analyst Cookbook

Malware Forensics



Digital Forensics:

File System Forensic Analysis

Windows Forensic Analysis

Real Digital Forensics

The Rootkit Arsenal


Hope this helps. If you're a University student, you might have access to Safari Books Online, which has access to almost all of these books, and more. You can also purchase a personal subscription for like $23 a month. It's a bit pricey, but they have an awesome library of technical books.

u/_Skeith · 16 pointsr/AskNetsec

Hey man! I work as Security Analyst - about a year away from graduating with my Bachelors.

I suggest you pick up the CompTIA Security+ Certification, as well as start learning the basics of Networks and how they function. Learn ports and protocols, as well as how IDS/IPS/Firewalls function. This will get you an entry level role as a Jr Analyst. I suggest you use [http://www.professormesser.com/security-plus/sy0-401/sy0-401-course-index/](Professor Messers Security+ Videos) This will teach you the basics of security work, networking concepts, threats, etc.

At the same time start listening to podcasts like Paul's Security Weekly, Down the Security Rabbit Hole, etc. As well as start reading blogs on hacking to get a feel for whats done.

Get a home lab and learn a few tools like Wireshark and Nmap for basic Security Analyst work - to learn how packets work, how they are structured, and how to scan pc's for ports and services. At the same time, focus on learning about threats and vulnerabilities (which are covered in security+).

If you want to get into PenTesting then you need a wide range of knowledge. Pick up and learn a few languages (master the basics and understand what the code does and how to read/interpret it). You need to know: PHP, HTML, SQL, Python (or Ruby), and a basic language like C, or Java.

If you want to dig deeper into PenTesting then start reading: https://www.offensive-security.com/metasploit-unleashed/

Good way to get into the Kali Distro and learn how to run Metasploit against vulnerable VM's.

Take a look at https://www.vulnhub.com/resources/ for books, and vulnerable VM's to practice on.

https://www.cybrary.it/ is also a good place with tons of videos on Ethical Hacking, Post Exploitation, Python for Security, Metasploit, etc.

Pick up some books such as

The Hacker Playbook 2: Practical Guide To Penetration Testing

Hacking: The Art of Exploitation

Black Hat Python: Python Programming for Hackers and Pentesters

Rtfm: Red Team Field Manual

The Hackers Playbook and The Art of Exploitation are great resources to get you started and take you step by step on pen testing that will allow you to alter explore the endless possibilities.

Also a good list of resources that you can learn more about security:

Getting Started in Information Security

Pentester Labs

Awesome InfoSec

Awesome Pentest

Overall experience and certification are what will get you into the door faster. Most employers will look for experience, but if they see you have motivation to learn and the drive to do so, then they might take you. Certifications also are big in the infosec field, as they get you past HR. And having a home lab and doing side projects in security also reflects well.

u/iownahorsefurreal · 15 pointsr/hacking

Hacker playbook 2 is always my recommendation for reference and a good guide to PTES.

u/andralex · 15 pointsr/programming

I don't have any experience with Clay and have a vested interest in D, so take the following with a grain of salt.

Here are my impressions on Clay vs D2 after having read the brief docs on the wiki:

  • Clay seems to have no take on concurrency whatsoever. In fact even googling for Clay concurrency is quite difficult. D2 tackles concurrency issues directly with a no-default-sharing model.
  • I like Clay's syntax desugaring (what I call "lowering"), but it assigned a name for each operator, which I believe is adverse to generic programming. D2 lowers operators by passing the operator as a compile-time string into the function, which enables further generic processing.
  • Clay's iterators and coordinates seem to be similar to D's ranges. I'm unclear from the documentation provided about the pervasiveness of related entities and idioms in Clay. D2's ranges turned out to be wildly successful. Both use compile-time introspection to assess membership of a type to a concept. For example, in Clay you assess the presence of a member "size" like this:

    [S] SizedSequence?(static S) = Sequence?(S) and CallDefined?(size, S);

    whereas you do the same thing in D like this:

    template hasLength(R) {
    enum hasLength = isInputRange!R && is(typeof(R.init.length) == size_t);
    }

    I don't know how to enforce in Clay that the type of "size" is size_t; I'm sure there must be a way. And indeed the Clay version is shorter.

  • Clay mentions multiple dispatch as a major feature. Based on extensive experience in the topic I believe that that's a waste of time. Modern C++ Design has an extensive chapter on multiple dispatch, and I can vouch next to nobody uses it in the real world. Sure, it's nice to have, but its actual applicability is limited to shape collision testing and a few toy examples.
  • The docs offer very little on Clay's module system (which is rock solid in D2). The use of an antipattern in Clay's docs worries me though:

    import myownlib.test.*;

  • Both languages seem to pay attention to linking with C and assembling applications out of separate modules.
  • D2 is aggressively geared towards allowing its users to write correct code. Clay seems to have nothing else to say beyond a run-of-the-mill exception model.
  • Clay lacks object-oriented programming support, although it does offer a number of palliatives (discriminated unions, for which D2 has powerful library offerings). This design choice seems odd to me because I believe straight OOP is much more important than supporting the obscure multiple dispatch.

    Overall Clay's current offering (judging only by the docs) is very scarce compared to D2's. I found nothing in Clay that's sorely missing in D2, and conversely there's plenty in D2 that I'd sorely miss in Clay.

    Clay looks a lot like the toy language I was working on before deciding to build on D: long on hope, short on bread and butter. In hindsight, I am happy with the decision to start with a language (D1) in which I could take for granted a lot of stuff.
u/ShipOfHopes · 14 pointsr/csharp

I don't know how open you are to using more than one text, but Jon Skeet's C# in Depth is about as canon as it gets. A second-term course where C# basics are already understood would be great for this text. I can't speak for a truly introductory book, however.

u/markdoubleyou · 13 pointsr/cpp

Those quizzes were brutal... they mostly covered esoteric features, undefined behavior, and how the compiler deals with terrible code (variable hiding, etc.).

I'd start off with FizzBuzz for the phone screen (via collabedit or something) to quickly check syntax knowledge, and, if they pass that (brace for 50% failure), I'd move on to a trivial algorithm and beat the hell out of it to see how deep they go into the language.

For example, ask them to reverse a character array, and, after they finish an implementation, keep asking them to revise it:

  • Use pointer arithmetic
  • Use array notation
  • Use std::swap
  • Use std::reverse()
  • Use std::string and a reverse_iterator

    and on and on... if you get a blank look when you mention a reverse iterator or <algorithm> then you'll know their knowledge doesn't go very deep.

    For on-site questions, I've been hearing very good things about Elements of Programming Interviews: The Insiders' Guide ...there's a C++ and a Java edition. It's not an online quiz, but it has good questions that'll measure programming ability instead of just language trivia.
u/noobzilla · 13 pointsr/csharp

CLR via C# for a better understanding of the runtime you're working with.

C# in Depth for a deep dive into the language and it's features and their details of implementation.

I'd consider those two to be the primary intermediate texts.

u/gunshard · 13 pointsr/PHP

Checkout the book PHP Objects, Patterns and Practice by Matt Zandstra, it helped me dive right into OOP after years of procedural programming.

u/meathead80 · 12 pointsr/exjw

There's a reason why there is a Javascript book (1096 pages) and another called Javascript: The Good Parts (176 pages).

I think the bible could use a similar treatment.

u/ap0x · 12 pointsr/ReverseEngineering

Chapter 3 - Windows fundamentals; Secrets of Reverse engineering by Eldad Eilam should be an easy high level overview of the subject. The rest of the book is a great resource too.

u/soadapop · 12 pointsr/PHP

Check out this online book, it covers a wide array of PHP topics, but there are some solid chapters on objects including the building of a basic OOP website.

The book, PHP Objects, Patterns, and Practice is an incredible resource of PHP OOP concepts and application design. It starts off with a few chapters on the basics of OO PHP coding, giving you the rundown of syntax and inner-workings. From there it covers popular OOP design patterns (MVC, Adapter, Component, etc) and then lives up to its name by showing the patterns in practice.

After you've picked up the basics of OOP, check out a PHP web framework. I would recommend CodeIgniter for its amazing documentation, not to mention this wonderful set of video tutorials CodeIgniter from Scractch featured on Nettuts.

Once you get a working knowledge of a framework and have built some basic applications and websites, take the time to study the code behind the framework. Find out where the entry point is and trace its execution, checking out the source for each and ever object that is instantiated. Not only will you pick up on some sweet OOP concepts, but you'll gain a great understanding of how a typical OO PHP application is structured.

Good luck and have fun!

Keep your programs DRY! (Don't repeat yourself) In procedural, you would take those large blocks of code and faction them up into functions. With OOP, look even more abstractly and take several large blocks of related code and put them into classes, which are, at a very basic level, a collection of related functions and properties.

u/_____sh0rug0ru_____ · 12 pointsr/programming

Ah, the context of the Uncle Bob rant from a few weeks ago. I don't see how any of the author's particular complaints have anything to do with TDD:

> You therefore are more reluctant to make large-scale changes
> that will lead to the failure of lots of tests. Psychologically, you
> become conservative to avoid breaking lots of tests.

This is a bad thing? If you think a whole lot of tests might break if you make large changes, clearly there are massive side-effects to the change you propose, and then wouldn't a conservative approach to making the changes be the right thing to do?

Personally, I like fixing broken tests when I make large changes. It gives me greater confidence that I won't introduce regressions and allows me to understand the impact of what I am doing and gives me insights to the design of the system, particularly when it comes to the level of coupling.

But, this is the consequence of having a test suite, and doesn't say anything about whether that test suite was created through TDD.

> Sometimes, the best design is one that’s hard to test so you are
> more reluctant to take this approach because you know that
> you’ll spend a lot more time designing and writing tests

The author didn't give an example of this, but I am assuming he probably means GUIs. Well, not everything needs to be tested, and especially with TDD. The key is to separate code that needs to be tested from code that doesn't (or tested in a different way).

When it comes to GUIs, I usually write a "shell" without tests (because really, besides interaction, what are you testing?) and delegate functionality to interior objects which I definitely implement test first.

Another example I can think of is heavily algorithmic code. Like, back in the day, I worked on seismic processing software. Well of course, you don't develop those kinds of algorithms test first (or, maybe in a very different way - the geoscientists involved wrote papers which discussed the math involved before writing any code). But again, like GUI programming, the seismic processing algorithms were isolated from the rest of the system, which was written test first.

TDD works well for some types of code and not others. The requirement of using judgement to decide the development processes for specific cases has nothing to do with the effectiveness of TDD as a general practice.

> The most serious problem for me is that it encourages a focus
> on sorting out detail to pass tests rather than looking at the
> program as a whole.

No it doesn't. Test-first just means you write tests before you write the code. That doesn't mean you can't look at the program as a whole first before that. The first half of Uncle Bob's book Agile Patterns, Principles and Practices is devoted to UML. Yes, you heard that right.

Check out this chapter from that book, Heuristics and Coffee. Before diving into the code, Uncle Bob spends a good chunk of time going through the use cases and coming up with a first pass at a high level structure for the system, in UML.

TDD is one part of "Agile" software development, where the rubber hits the road. But before you start driving, you should have a basic idea of where you are going, which is design. The "epicycles" of TDD then serve to validate that you are on the right course, from minor turn-by-turn directions to occasionally stepping back and making sure you are still on course.

The idea is to come up with as much UML as necessary to get a basic idea of the overall design, and then use TDD to execute and validate that design, incrementally.

The author is taking TDD out of context and missing the bigger picture.

> But the reality is that it’s often hard to specify what ‘correct
> data’ means and sometimes you have to simply process the data
> you’ve got rather than the data that you’d like to have.

What does this have to do with TDD? Again, TDD is a part of a larger process, which involves the business. Software that does "real work" doesn't work in a vacuum. Programmers have to deal with the business to understand the data to the best of their ability, and even still, you'll still make mistakes.

At least the tests document an executable understanding of the data, and test failures can actually give valuable insights on changing assumptions of the data.

u/huck_cussler · 12 pointsr/learnprogramming

As far as books go:

  • CLRS

  • Dasgupta

  • Kleinberg and Tardos

    Those are the standards. Dasgupta is probably the most immediately accessible, followed by K&T, with CLRS the hardest (imo).
u/dgryski · 11 pointsr/programming

It is an academic paper and written as such. For a more practical approach to the topic, try some of these:

Programming Pearls

Performance Bugs

Performance Engineering of Software System

u/sanyasi · 11 pointsr/compsci

TAOCP is too hard: its like one of those fantasy wishlist items: the kind of thing every computer scientist wishes they had read but never really has the time to. Some nicer books that are gold standards in their respective fields are:

CLRS (Algorithms)

SICP (Just see the top two amazon reviews)

Kernighan and Ritchie (if you want to be a pretty accomplished C programmer and have little to no real C experience before)

Since you mentioned security, Ross Anderson's Security Engineering is a fantastic read, and very easy to parse: you could read it through in less than a week and have a deeply changed view of the structural issues in security: there is little crypto in the book (for that, Schneier is the gold standard) but more discussion about protocols, where protocols fail, real-world protocols like the military classification scheme, etc. It is absolutely fantastic. If you read this and Schneier you'd have a very thorough understanding of the entire security stack.

Kleinberg and Tardos is a much easier read than CLRS when it comes to algorithms, doesn't cover as much, and is very graceful in its explanations. Personally, I love it.

u/pkamb · 11 pointsr/simpleios

The Big Nerd Ranch guide to Objective-C Programming is what you need.

It covers the basics of C programming (variables, loops, etc.) before quickly moving on to Mac and iOS specific tutorials. Small book, short chapters, and easy to read.

u/brotherMotty · 11 pointsr/learnprogramming

(Copy pasting from other thread).

I stand by this JS roadmap, especially because I tested so many different free courses online (and subsequently wasted a bunch of time).

Rithm (https://www.rithmschool.com/courses)

  • Awesome for going from 0 to beginner/intermediate; possibly the best fundamentals I've found

  • Doesn't hand hold so it teaches you how to think

  • Writing is friendly and understandable

    Eloquent JS (http://eloquentjavascript.net/)

  • Great for solidifying intermediate

  • This is when you begin to learn "real" coding

  • Can be difficult to grasp, but with a solid understanding of the fundamentals, you should be good

    Secrets of a JS Ninja (https://www.amazon.com/Secrets-JavaScript-Ninja-John-Resig/dp/193398869X)

  • Great for going from intermediate to advanced

  • If you've methodically mastered the previous two, you will be good. Really deepens your understanding and sharpens skillset

    Finally, if you supplement all this with Codewars (https://www.codewars.com/ , allows you a bunch of puzzles/katas to check your level as you progress; great because you can go back and see how your skills have actually improved, you'll definitely cringe at some of your old code, ha), it's a pretty fucking awesome roadmap to get you from 0 to advanced, though like most things it'll take a lot of work.

    I've also heard good things about Free Code Camp, though I've only checked it out briefly so I can't give in-depth comments on it.

    Hit me up if you have questions, always down to help others get started.
u/iamthatis · 11 pointsr/apolloapp

Hey, I'm flattered you care what I think!

I learned basic Objective-C on my own in high school (read this one during boring classes), and then went on to do a Bachelor in Computer Science at uni. Learning some basic programming really helps, because at least at my school it was very much fundamentals for the full first year, and if you understand them well enough it'll be a breeze.

That being said (and take this with a major grain of salt, as it's just me) I wasn't that big a fan of school. I got into and taught myself iOS development as my school, like most, was mostly based around Computer Science theory rather than practical applications and programming. I did learn some valuable things about algorithms and whatnot, but it's nothing that I couldn't have taught myself and everything that I've found to be "marketable" (things that have helped me get jobs) have been self-taught.

But university's awesome for a whole wealth of reasons (met awesome people), and you may adore it, I'd just be very careful not to learn a wealth of knowledge but have little experience applying it to anything concrete. Employers appreciate the latter far more (my GPA was rather meh, and I got some really cool jobs).

I do most of my work alone, but a lot of smart people have helped me along the way. :) It's just how I personally like to work at the moment. If you have any more questions I'm happy to answer. r/cscareerquestions as mentioned is a great resource too!

u/nasdas · 10 pointsr/apple

> What did you use to learn how to write the code?

I read this book to get started: Programming in Objective-C by Stephen G. Kochan

I highly recommend it for starters, since it provides lots of easy explanations, exercises and guides.



And since you need a 2D physics framework to program a game, I decided to use Apple's native framework called SpriteKit. I learned SpriteKit's basics with YouTube tutorials and this free online course.
I also recommend everyone to google some open source games/apps to learn some programming methods & techniques.


> What tool was the app built in? XCode? Unity?

Xcode.

u/FarkCookies · 10 pointsr/programming

Best book to start with C#/.net is CLR via C#. And to keep yourself up to date you can read MS articles about new features in new versions of C# / .net.

u/_EvilRin · 10 pointsr/pcgaming

A lot of these people have university degrees or better knowledge about ASM and dissecting than your university professors. Do you really believe people without qualification could beat a software solution of a multi-million dollar company that's sole propose is to protect software (VMProtect and Denuvo), that employs security researches and experts with 10+ years experience in the field and did years of development on said DRM? You sound like you don't have the slightest idea about the amount of brain power that goes into reversing something that doesn't want to be reversed. Maybe educate yourself before drawing conclusions.

u/jeremywilms · 10 pointsr/hacking

Depending on the sort of hacking you want to do, your programming skills will likely complement your learning experience very well.

Depending on what sort of programming you've been doing and what your target is, it could also be totally irrelevant.

If you're looking to find exploits in software (i.e inside of a server) you'll need to understand how to reverse engineer it and search for exploits - getting a hang of IDA Pro and OllyDbg will be key to this. If you're looking for software exploits, already understanding languages like C and C++ will be highly benificial. Understanding your target's platform will also be crucial.

If you want to get into exploiting websites etc your C programming probably won't be too helpful - since most scripts are most easily hacked up in python or php. If you have any experience in programming server-side logic in php and interfacing with databases then that would be applicable to this field.

As I am more into native software reverse engineering and not hacking webservers I can really only point you down the path of reverse engineering software. A very good book I found for this was http://www.amazon.ca/Reversing-Secrets-Engineering-Eldad-Eilam/dp/0764574817

This book will guide you through the process of offline and online analysis with ollydbg and IDA. Further it will introduce you to the internal workings on the windows platform (which is crucial if you're looking to reverse engineer targets on the windows platform.)

There are some good books on IDA Pro as well.

u/Karzka · 10 pointsr/gamedev

Not game-specific, but these books are definitely industry essential books when it comes to anything related to software development.

In no particular order (though Code Complete should probably be first):

u/BroDudeGuy · 10 pointsr/iOSProgramming

You can dive right into Objective C, I was only vaguely familiar with C and I've published a few apps without any problems. However, if you're intent on learning C pick up 'The C Programming Language' (K&R), not only the best C programming book, but one of the best programming books ever written.

Objective C books, I recommend one of the two or both books,
'Programming in Objective C 3rd edition' or
'Objective C: The Big Nerd Ranch Guide'

Both of these books are excellent resources for learning and I keep them close by whenever I have a question.

In terms of learning iOS development. I recommend going into iTunes U and downloading the latest Stanford University iPhone development course. I believe Winter 10 is the newest, follow along those classes and the class website, treat it like a real class, do the homework and all the assignments. There is no text book for the class, but this other book by Big Nerd Ranch, 'iOS Programming: The Big Nerd Ranch Way' is totally awesome.

After these classes and books you should have a great foundation for iOS development. Once you feel comfortable with everything and have an app or two under your belt, download Madison Technical College's Advanced iPhone Development course videos from iTunes U and Apple's own WWDC Session Videos.

Each MTC video is about 3 hours, watch them in chunks. The professor, Brad Larson is one of the best iPhone developers out there and in my opinion is one the best contributors to the community, (see his posts on stack overflow).

Lastly, check out www.raywenderlich.com. My personal favorite iPhone development website. It's updated every Monday, Wednesday, Friday with great technical tutorials that are funny and educational.

Best of luck to you and welcome to iOS development :-D.

u/Monory · 10 pointsr/GradSchool

I've really enjoyed Discovering Statistics using R by Andy Field. The book is written more like prose than a textbook, and is rarely dry. It requires you to learn how to use the R programming language as well, but I think it is very worth it. Everything he teaches, he teaches it at the conceptual level first and then shows you how to perform the tests using R. A great bonus is that R is great for data visualization, and being able to visualize large data sets quickly really helps get a better understanding of the data you are working with, which helps learn the theory.

u/sooperkool · 10 pointsr/cscareerquestions
u/woodforbrains · 9 pointsr/AcademicPsychology

An EXCELLENT response. I'm a research psychologist and I think that is an absolutely fair summary of what to expect if you go the grad school route.

As far as "what you're expected to know", this will vary by which of the four options you choose; the best RAs i've mentored are always interested in two things: stats and current literature. Google Scholar your favorite topic in psychology and the backwards/forwards links will connect you to a wealth of ideas. As for stats, they get a bad rap, but i can suggest a few books that might turn around anyone with stats-loathing:

-Andy Field's SPSS/R how-to books. Honestly, the man has probably done more for beginning psychologists than Starbucks. Very readable, even good for more developed psychologists to get ideas for new analyses.
http://www.amazon.com/Discovering-Statistics-Using-Andy-Field/dp/1446200469/ref=sr_1_2?s=books&ie=UTF8&qid=1419965487&sr=1-2.

-Mac & Creel: Bible for signal detection theory, a cool way of thinking about perception as a process of separating signal from noise.
http://www.amazon.com/Detection-Theory-A-Users-Guide/dp/0805842314

u/trngoon · 9 pointsr/statistics

You must learn an application heavy book in 2018. Preferably in R unless you can program, in that case maybe Python.

I will link you two perfect books with very little math that people from any discipline can understand and are very well written. Both heavy on application in R with accompanying websites with all the code. (dont worry, R code is easy and the vast majority of R users are not programmers in the traditional sense). The first book I link does go into some more advanced topics, but everything is explained in a very common language. Its accompanying website also has lecture videos from the prof who wrote it.

https://www.amazon.com/Discovering-Statistics-Using-Andy-Field/dp/1446200469

^^ I emailed andy some time ago and he wants to release edition 2 next year probably

https://www.amazon.com/Understanding-Applying-Basic-Statistical-Methods/dp/1119061393

Trust me, these two books are what you want to look into.


NOTE some idiot is going to try to suggest to you a book called "Introduction to statistical learning" (mainly a supervised machine-learning book which is stats-focused) by the standford stats team. Do not start with this book if you want to learn traditional stats (like you point out in your post). No one who recommends you this book has considered your needs. I see this recommended every single day for all the wrong reasons. It actually makes me frustrated. It's a great book but has confused many people because of its name. Is it a stats book? Yeah. Is it an ML book, yeah? Is it a traditional stats book? Nope. Anything that says "_____ learning" is probably a machine learning book. Sorry for the rant.

u/cfors · 9 pointsr/cscareerquestions

Elements of Programming Interviews

This book is way easier to digest than CLRS. I used it extensively for not only preparing for interviews but as a resource for my algorithms course. I'm going to honest it's harder than cracking the coding interview but the lessons in the chapters are MUCH more clear imo.

u/daaa_interwebz · 9 pointsr/csharp

> Clr via c#

amazon link for the lazy

u/cpp_is_king · 9 pointsr/gamedev

Yea, I actually recommended one in the post above. Here's a direct link though

I'm recommending this only because it's the one book on the topic that I've read and it was really good. There's others too, like this one, but I haven't read them so I can't comment.

Any book about reverse engineering can only teach you the most basic things. But it teaches you enough that once you're on your own, you aren't lost. If you want to develop the skills further, just start disassembling OS functions and figuring out how they work.

Another book that's tangentially related is this one. It isn't about reverse engineering specifically, but rather about debugging (usually without source code), which is obviously a critical skill.

u/emtuls · 9 pointsr/netsec

Hey /u/Xerack! I'm the original author of the post linked here.

Appreciate the feedback! If you think I could clarify anything better, please let me know.

As far as resources for Reverse Engineering, I can provide you with a baseline that I would recommend starting with.

x86 Assembly:


If you don't know assembly language at all, this list of videos was where I picked up a decent amount of x86 assembly language.


A few good books would be:


  • Hacking: The Art of Exploitation I am a huge advocate for this book. I learned a lot from this and have read it multiple times. It is written very well and teaches someone with no experience how to do C programming and assembly. This is mainly a book for learning exploitation/vulnerability research, but that can play hand and hand with Reverse Engineering. It will show you the assembly language break down of basic exploits and this can help you with RE.

  • Practical Reverse Engineering I read through the beginning of this book and it gave me some good foundations of understanding memory and computer architecture for RE along with assembly of course

  • Secrets of Reverse Engineering This book is a bit in depth, but the beginning gives another good foundation for Comp Architecture and assembly stuff.

  • The IDA Pro Book Haven't personally read this book yet, but I have been told it is the defacto standard for learning IDA Pro, and it has examples you can learn from.

    Hands On:


  • Legend of Random Very useful hands on with tutorials. Mainly based on cracking, but that requires reverse engineering. Highly recommend this!

  • Lenas Tutorials Again, another awesome hands on tutorial, mostly based on cracking as well.

  • Crackmes These are more of challenges once you start to have a little understanding down

    Courses:

    Tons of courses on youtube. I learn well from visual, so I recommend these youtube videos:


  • Basic Dynamic Analysis
  • Real World Decompilation There are a few videos to this series and he disassembles a game, definitely nice to learn from.


    Beyond that, Google will always be your friend, and /r/reverseengineering. I also have a bunch of material for Malware RE, but that's a bit different than Software RE, though it is relatable.
u/khedoros · 9 pointsr/learnprogramming

This book was written by the author of the C++ programming language, and it's designed for a student to begin learning to program using C++.

C++ isn't an easy language, and it's not one that I'd usually recommend as a first language to learn....but it's doable.

u/phao · 8 pointsr/cscareerquestions

The best way I know how is by solving problems yourself and looking at good solutions of others.

You could consider going back to "fundamentals".

Most programming courses, IMO, don't have nearly as many exercises I think they should have. Some books are particularly good on their exercises list, for example K&R2, SICP, and TC++PL. Deitel's has long exercises lists, but I don't think they're particularly challenging.

There are some algorithms/DS books which focus on the sort of problem solving which is about finding solutions to problems in context (not always a "realistic" one). Like the "Programming Challenges" book. In a book like that, a problem won't be presented in a simple abstract form, like "write an algorithm to sort numbers". It'll be inside some context, like a word problem. And to solve that "word problem", you'll have to find out which traditional CS problems you could solve/combine to get the solution. Sometimes, you'll just have to roll something on your own. Like a new algorithm for the problem at hand. In general, this helps you work out your reduction skills, for once. It also helps you spotting applications to those classical CS problems, like graph traversal, finding shortest plath, and so forth.

Most algorithms/DS books though will present problems in a pretty abstract context. Like Cormen's.

I think, however, people don't give enough credit to the potential of doing the exercises on the books I've mentioned in the beginning.

Some books I think are worth reading which also have good exercises:

u/xxf1sh3rxx · 8 pointsr/jailbreak

I'm currently using Objective-C Programming: The Big Nerd Ranch Guide

So far I haven't learned much that I didn't already know from Java or Python, but if you don't have any programming experience I'd say this is a great start

u/evanwalsh · 8 pointsr/ios

The Big Nerd Ranch book on Objective-C doesn't assume you have any programming experience and I've found it helpful for someone that's not very familiar with compiled languages. Also, it was published very recently, so it stands a chance at being most up to date.

u/thestandardtoaster · 8 pointsr/PHP

PHP the right way is a very good site, but for books one of my favorite in php is http://www.amazon.com/dp/143022925X/ PHP Objects, Patterns and Practice. I never used media wiki but joomlas code base a few years ago was a joke (hope it has gotten better!).

u/poopmagic · 8 pointsr/cscareerquestions

>Do you find that the standard system of technical interviews (data structures & algorithms) is an effective way of assessing candidates? Why or why not?

When I was an undergraduate, the dominant interview approach involved brainteasers like "why are manhole covers round?" Initially, these were reliable indicators of future success. But after every other company started copying Microsoft mindlessly and asking the same set of questions, the approach quickly became less effective. People optimized for interview performance with books like How Would You Move Mount Fuji? and How to Ace the Brainteaser Interview.

Brainteasers were mostly phased out after Google introduced the current approach involving data structures and algorithms. Initially, these were reliable indicators of future success. But after every other company started copying Google mindlessly and asking the same set of questions, the approach quickly became less effective. People optimized for interview performance with books like Cracking the Coding Interview and Elements of Programming Interviews.

There are certainly parallels between what happened then and what's happening now. The difference today is that people have taken things to another level with platforms like Pramp and bootcamps like Interview Kickstart. New businesses keep popping up that focus on cracking the current system, and I don't think that bodes well for its future.

But what can we do about it? The fact is that any interviewing process can be cracked once its format becomes popular and standardized. Let's say that some major company like Facebook introduces a new standard that involves candidates giving two-hour presentations about significant personal projects and then answering tough questions from a committee. You may be familiar with this format if you've ever applied for a research position. I actually think this would be great for 2-3 years until everyone starts doing it and Gayle Laakmann McDowell or whoever publishes "Cracking the Personal Project Presentation." And then a bunch of new businesses will pop up to sell you slide templates, professional reviews, etc.

In short, I'm not a big fan of the current system (EDIT: because it's been "cracked") but I honestly don't know of a better one (EDIT: that won't suffer the same fate).

u/PM_ME_YOUR_SCI-FI · 8 pointsr/cscareerquestions

> Most of the jobs out there are temporary or contract (short/long/C2H)

This sounds patently untrue. I'm certain that the vast majority of people in CS have full-time jobs rather than temp or contract.

>
Recruiters won't even look at you if you don't have a knowledge in a specific stack (even for entry level)

Also untrue, especially for entry level, where good companies won't care what tech stacks you know.

> Recruiters don't even look at your resume, all they do is keyword search

Partially true. Resumes are often automatically filtered by how many buzzwords they contain. If you can use buzzwords without making your resume seem over the top, do it.

>
I've been told that I shouldn't even apply for SDE jobs because I'm a "tester" and how I probably don't know of any CS fundamentals (because my degree is in CompE, not CS)

Bullshit. Any company worth working for - most companies - will not take that attitude. They might be skeptical, but they would never suggest you don't apply.

> Interviewers don't seem to have interest in interviewing

It doesn't matter; it's their job. And most interviewers are competent at interviewing, so nothing to worry about, regardless of how "interested" they are. (Though an "interested" interviewer, while rare, is a pleasure!)

>
Companies have absurd hiring standards (they are all looking for a unicorn for 50-60k/yr pay, through contract)

Depends on the company.

> * Entry level jobs require years of PROFESSIONAL experience in a specific technology


Entirely false.

---

The current job market is fine, prosperous even. Craft a strong resume, post it in the resume advice thread, and send it out to companies. Apply to a bunch of companies, account for a 5-15% response rate (higher if you're more skilled).

Getting interviews will be the easy part; to pass them, you'll need to pass difficult algorithms questions. Books like Cracking the Coding Interview and Elements of Programming Interviews are essential reads; then go on a website like LeetCode and grind away at problems until you can solve easies in 20 minutes or less, mediums in 30 minutes or less, and hards in 60-120 minutes. I'd say a 3:9:1 ratio of easy:medium:hard would be a good ratio to go with, and do as many problems as possible until you're comfortable with where you are (for me, that was about 120 problems). The premium subscription is well worth it for problems tailored to certain companies.


Edit: spelling

u/Soreasan · 8 pointsr/cscareerquestions

Make your own projects or code to build a portfolio. Upload the code to Github to build an online portfolio.

Here are some excellent books that may help as well:

Elements of Programming Interviews

Cracking the Code Interview

Programming Interviews Exposed

u/shankrabbit · 8 pointsr/csharp

CLR via C#


This is the only book you need as a beginner to C# who already knows other languages.

What are you waiting for? Go get it! Read it! And impress the shit out of your employer.

u/smo0shy · 8 pointsr/MrRobot

I actually already have a copy of Hacking: The Art of Exploitation. My personal library consists of around 45 books on a range of computing topics from PHP, MySQL, C++, Windows Internals, CCNA, MCSE/MCSA, Unix, Rootkits, AI, Data Structures and the list goes on.

Other relevant titles include Gray Hat Python, Reversing: Secrets of Reverse Engineering and Rootkits: Subverting the Windows Kernel.

I was going to buy the following: Assembly Language Step-by-step, SQL Injection Attacks and Defense and Metasploit: The Penetration Tester's Guide.

I agree that where one starts really depends on what they want to end up doing. "Hacking" is such a general term and SQL-Injections is completely different from finding 0-days. If I'm honest I'm not sure where to start but I'm open to suggestions.

​

u/planesforstars · 7 pointsr/iosgaming

Hi! I'd be happy to share some info. I didn't actually go to school for Computer Science so I learned everything I know from the internet really. When I first started learning programming in general, I started with a course in C http://www.computerscienceforeveryone.com/. I think it was a pretty good intro into computer science in general too. There were a lot of concepts in that course that were really hard for me to grasp at first and honestly pretty boring at times, but I stuck with it and I feel like it set me up for objective-C and iOS programming pretty well.

Moving on to iOS programming. The Big Nerd Ranch book was the best iOS development book I read. It's chock full of good tutorials and good explanations of concepts. It was just updated to the 4th edition to and is available on amazon.com

Finally getting into iOS Game Development, I think Ray Wenderlich's tutorials were the best help for me. Most of the iOS game dev stuff out there right now is mostly for Cocoa's 2d (which is great!). However, I wanted to try out Sprite Kit since it's newer and I think it's eventually going to surpass cocoa's 2d as the standard for iOS 2d game development. There aren't a lot of resources out there beyond apple's guide (which is good in my opinion) Sprite Kit Documentation
Ray Wenderlich has a great Sprite Kit book out with all kinds of great information that makes game development on the iPhone easy. Here is a link to his book: http://www.raywenderlich.com/store/ios-games-by-tutorials

I hope that answered some of your questions. Feel free to ask more if you had any other questions, or if I missed something. Thanks for trying out the game. I hope you like it :)

u/ThereKanBOnly1 · 7 pointsr/dotnet

I think you partially need to decide what area you want to focus on. Generally if you're going to delve into more advanced materials they should also be geared towards the in depth aspects of a specific technology, methodology, or problem.

I'll add a +1 for the design patterns suggestion. The Head First book is an option, but here is the book that I've got that is quite good. There's always the gang of 4 book, and although it is the "design patterns bible" its also a bit dry.

I'm also going to suggest Mark Seemann's Dependency Injection book. Although it is about DI and inversion of control containers, he also really focuses on SOLID design that makes DI more effective.

If you don't know what SOLID design principles are, then I'd brush up on that.

Turning specifically to C#, there's Jon Skeet's C# in Depth and also Jeremy Richter's CLR via C#. Both are great books are focused on roughly the same thing, understanding some of the inner workings of of the C# language, but they each approach it in a slightly different way. Although the CLR book came out before, C# in Depth seems to be a bit more highly regarded. I'd take a look at the TOC of each and see which one interests you more.

Outside of that, I'd say make sure that you really understand concepts like generics, reflection, and maybe even dive into understanding some MSIL.

u/Novakog · 7 pointsr/compsci

Actually, I've seen quite a few loop invariants in shipping production code. But probably 95% of the times they're used, the programmer might not even think to call it a loop invariant.

Specifically, a lot of codebases use conditional assertions to test for bad conditions (usually debug-only). If you place a conditional assertion in a loop, you're expressing a loop invariant. I personally have used them to find a number of bugs in shipping production code.

Read Programming Pearl's - it's very short classic, and he uses loop-invariants via assertions.

u/emcoffey3 · 7 pointsr/webdev

I'm a big fan of JavaScript: The Good Parts. I'm not sure if it is quite intermediate, but it is a terrific (and short) read.

Secrets of the JavaScript Ninja is a bit more advanced. It's written by the guy who created jQuery. I found some of the coding style to be sort of strange, but it does have a lot of great information.

u/DutchPhenom · 6 pointsr/AskEconomics

Now this is an interesting and difficult question, which depends on many things. For starters, if you find this process frustrating that is unfortunate, because learning how to code is usually a trail and error + revise your work process. In other words, its supposed to be both frustrating and rewarding, like a hard (text-based) video game. For me its half of the fun.

What you want to learn really depends on the context. If you are really diving into econ, Stata is still very common. More stats-heavy, new, or interdisciplinary fields tend to use R. If you work with big, live datasets, or work with computer scientists, learning Python is always a plus. But obviously start with one.

I am proficient in stata simply because I had classes in it, it is difficult for me to advice how to self study. I learned most of the basics through An Introduction to Modern Econometrics Using Stata, and later on most of my R through R for Stata Users (Statistics and Computing) . I also learned some R through Discovering Statistics Using R, but I find Field obnoxiously failing to be funny, so I wouldn't reccomend it.

I'm now in the process of learning more Python, to do some more programming work on the side. As a start I used Learn Python 3 the Hard Way recommended to me by a very proficient friend of mine. This however does not give you much of an intro to stats in python, only the very very simple basics you can use as a vantage point for further work.

If you have learned the basics, tbe hest way to learn more is just to fool around. What is your field of interest? I like a lot of macro, so I used to just go to Quandl, pick some free databases, import them, and run some fun stuff. This is the best way to learn, especially if you for example try to merge free World bank databases with a different database from Quandl, as it will give you a lot of errors whilst merging and conversion problems later on.

If you are a bit more proficient you can start using websites like upwork to get some assignments. Usually it doesn't earn you much at the start, but the experience of actual assignments is the best way to self-teach. A different manner I like to do (if you are still studying) is offering your services (for free) to a professor. Ask him/her if there are still projects they are working on for which they need some to look at. Usually you will be treated solely as someone for the code, but it generally gives you a lot of experience and the right contacts.

These are just some of my thoughts. If you could provide some more context of where exactly you want to go, I could go into more detail.

Edit: What I forgot to say is that if it is not possible to study a course, I would recommend doing at least one MOOC to get you at a basic level.

u/datadude · 6 pointsr/datascience

I have an excellent statistics text book that I am using to learn stats: Discovering Statistics Using R by Andy Field. My approach is to do the exercise in R first, then try to reproduce the same result in Python. It's slow going, but it's a real learning experience.

u/Jake_JAM · 6 pointsr/statistics

I like Discovering Statistics using R . Great book for learning the basics of hypothesis testing, a little bit of math, and you learn how to do it in R; not to mention there are a few bits you’ll chuckle at. There are also other books for other programs in this series (SPSS, SAS).



u/NudeRanch · 6 pointsr/AskStatistics

This book is a amazing:
Discovering Statistics Using R
by Andy Field


If you are doing self-study, it is easy to lose momentum. This book is hilarious, personal, and transcends the textbook genre.

Amazon Link

u/BasedBarry · 6 pointsr/AirForce

Alright man I was sort of in the same boat.

You don't have to rely on your Airforce job to be your only source of NetSec training. https://hireourheroes.org/veterans-training/

If NetSec is your passion you should start reading up on Blue team / Red Team type procedures. Get familiar with Firewalls and Cisco equipment. Work on getting maybe a CCNA Sec, work your way to a CISSP. Learn networking itself inside and out, to form a base for the security concepts. Practice Network Forensics, learn about write-blockers, legal procedures to work NetSec, that kinda stuff. If you find the time, learn Python.
https://www.amazon.com/Hacker-Playbook-Practical-Penetration-Testing/dp/1512214566/ref=sr_1_sc_1?ie=UTF8&qid=1474252248&sr=8-1-spell&keywords=the+hacker+paybook+2

If you have Linux experience, a well recognized PenTest OS is Kali Linux. You can use it to practice on a home network, or build your own virtual environment.

I'm finishing my Bachelors in Cyber Security here in May and testing for my CISSP, if you want any more info on programs/certs stuff like that feel free to shoot a PM.

u/affectation_man · 6 pointsr/programmingcirclejerk

Um... that's what the 2012 book Secrets of the JavaScript Ninja is all about. It chronicles Intel's development of the Core 2 architecture, their first to have JS inside, which enabled them to give AMD a trashing they have still not recovered from.

u/rjett · 6 pointsr/javascript

Advanced

Medium

Old, but probably still relevant

Yet to be released, but you can get the in progress pdf from the publisher

Docs

The one that everybody recommends

HTML5 spec

HTML5Rocks

Latest Webkit News

Other than that build build build. Make demos and play. Ask questions here or on stackoverflow and read other people's code. Also, lots of great old JSConf videos out there.

u/IllTryToReadComments · 6 pointsr/learnpython

What I learned from reading Clean Code [1] is that developers spend far more time trying to read/understand code then they do actually writing it, they gave an empirical ratio of 10:1 for the time spent reading vs writing code. So I think it's worth it in the long run to make your code cleaner/understandable for other devs.

I highly recommend the book, they even have an entire chapter dedicated to meaningful names, so I think it's important to refactor variable names as well.


[1] Page 13 in the "We Are Authors" section (you can actually see it in the Amazon preview if you want)

u/MoTTs_ · 6 pointsr/learnjavascript

I would say either JavaScript: The Definitive Guide or Speaking and Exploring JavaScript

u/RecycledAir · 6 pointsr/javascript

I've recently been working on my JS skills and heres a few resources I've found super useful:

Books:

Javascript Patterns

Javascript: The Good Parts

Javascript: The Definitive Guide (While an exhausive resource on the topic, this one is a bit verbose)

Web:

Mozilla's Javascript Guide (One of the best free online javascript guides/references.

How to Node (Tutorials on server-side Node.js)

Daily JS (Interesting JS related news)

Echo JS (Similar to above but updates less frequently)

Hacker News (This is more general tech news but there is a ton of useful web stuff, especially as node.js is currently a hot topic. Reddit actually spawned from HN)

Online Videos (free)

Douglas Crockford's Javascript Lectures (I would recommend these to anyone getting into javascript)

u/liaguris · 6 pointsr/learnjavascript

I learnt ( in fact I am still learning ) JS from YDKJS ( all books read almost 80% , you can view them legally here ) , EJ (read almost 60% , you can download it legally from here , the site of the book is here ) and MDN , with a background of : I know what if and for does and i also know what a function is . My advice is to jump from one resource to another if you feel you are stuck . Also I did not read them linearly . Another book that is useful although a bit outdated is DOM enlightment (read almost 20% of it) . I do believe that professional JS , and javascript.info are also worth to take a look .

Other resources for JS are a meh from me .

I have no clue about the third book in the video .

edit : js the definitive guide is also worth looking although a bit outdated .

u/iissqrtneg1 · 6 pointsr/csharp

Learn what's happening at the metal.

Edit: I'll be a little more helpful and say read this book: https://www.amazon.com/CLR-via-4th-Developer-Reference/dp/0735667454 (not an affiliate link)

u/NisusWettus · 6 pointsr/csharp

C# in Depth likely isn't what you need. That's more aimed at proficient coders that want to understand the nitty gritty/internals.

Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin) is very popular. Not specifically aimed at C# (a lot of the examples are Java) but it's guidelines about how to write clean code in general. The lessons carry over to all/most languages. That's probably more the sort of thing you want.

https://www.amazon.co.uk/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

Robert C. Martin aka 'Uncle Bob' also has a few other books but I've not really looked into them. e.g. this one is focused on C# and looks decent based on a quick skim of the index but I've not read it:

Agile Principles, Patterns, and Practices in C# (Robert C. Martin)

https://www.amazon.co.uk/Principles-Patterns-Practices-Robert-Martin/dp/0131857258

u/win7dev · 6 pointsr/IAmA

>What would be the best way to prepare for these types of interviews? What sources/books did you use to study data structures and algorithms?

Get a friend and have them run you through practice interviews. Lots of them. Get used to writing code on a whiteboard, because it's different from writing code in an IDE.

For algorithm practice, I bought Introduction to Algorithms and Programming Pearls. I also did a lot of research online to find out the kind of interview questions to expect. (Ignore the brainteaser questions; Microsoft doesn't do them any more.)

For the most part, just hit the books, study hard, and write lots of code on a whiteboard. This article by Steve Yegge really nails it, I think.

u/TheSuperficial · 6 pointsr/programming

Andrei Alexandrescu's "Modern C++ Design". It was so mind-expanding and well-written, not to mention useful, I was reading it for 2-3 hours a day until I finished it.

u/theootz · 6 pointsr/cscareerquestions

TL;DR Improve yourself, invest in your future, don't worry about the mistakes...read the books listed at bottom, and practice!

Few months ago I royally fucked up an interview at Microsoft. A really simple question. But I had no experience doing coding on paper instead of a computer.

I spent a lot of time studying various books and paper coding to make sure it wouldn't happen again.

I then had an interview for another (in my mind at the time) dream job. I did fine for all the phone interviews and they flew me over to the west coast for an in person interview for the day. I did well for the first bit until they started pulling out dynamic programming and integer programming questions on me and expecting me. Once again something I didn't prepare for, and f'd up. Didn't get this job either. For the longest time I was really hard on myself at fucking up on both these interviews one after another. Especially this second one since a lot more was riding on it than just the job (another story).

But then I decided I didn't want to have this sort of experience again and expected better of myself. I made myself further improve and brush up on all those concepts as well. Did a few mock interviews with friends, spent some time working on interview type questions on both the computer and on paper. A month or two later I started interviewing again. By this point I was an interviewing machine - and I'm now able to do just about anything thrown at me. I've had my choice of employers and until just recently, was in the situation where I had so many offers I didn't know which one I wanted most. I'll be heading to silicon valley soon at one of the top tech companies in the world with a fantastic offer considering I just graduated.

The point is - learn from the mistakes and improve yourself. I realize you don't want to be that guy spending heaps of time coding outside of work or whatever... but this is an investment in yourself and your career. Do it once, and then just brush up on your skills from time to time. Get into the interviewing mindset and just rock them so you can have your choice of job - and then you can go about your thing once you have the job locked. The up front investment will be worth it!

Things that helped me:

  • www.hackerrank.com - practiced a lot of questions on here
  • www.careercup.com - another great site for questions
  • Cracking the Coding Interview More help on questions, but also some great insights into the interview process for the larger tech companies and many hints and tips on how to go about solving the more complex problems
  • Code Complete A great book for helping you to refresh or learn about software design
  • Eternally Confuzzled Great resource to learn how to think about common data structures and algorithms

    Having trouble with Algorithm design/analysis? These are some of the go-to books for that:

  • The Algorithm Design Manual Probably the defacto for learning about algorithm design and analysis
  • Introduction to Algorithms A great book with many different algorithms and data structures to learn about
  • Algorithm Design A great book if you want to dive deeper into more complex subjects like graph theory, dynamic programming, search algorithms, etc.. etc..
u/woooter · 6 pointsr/apple
u/adamwathan · 5 pointsr/PHP

In the real Command Pattern, commands do have an execute method.

This excellent book by Uncle Bob devotes a great deal of time to that pattern if you'd like to learn more about it:

https://www.amazon.com/Agile-Principles-Patterns-Practices-C/dp/0131857258

u/sh0rug0ru · 5 pointsr/java

Read lots of code and read books to get multiple viewpoints. This is a deep topic which will require more than superficial online reading.

Check this out.

Books I have found useful:

u/NowTheyTellMe · 5 pointsr/UCI

So this is what I would consider the "Core" reading list for anyone interested in programming games. None of this is really game specific though. These are just the fundamentals you need in order to be an effective Software Engineer.

Learn about...

C++ syntax: Programming: Principles and Practice Using C++ by Bjarne Stroustrup

Software Engineering: Code Complete by Steve McConnell

C++ gems: Effective C++ by Scott Meyer

Software Teams: The Mythical Man-Month by Frederick P. Brooks Jr.

Why we love Joel: Joel on Software by Joel Spolsky

Problem Solving: The Pragmatic Programmer by Andrew Hunt

Common Code Solutions: Head First Design Patterns by Eric Freeman

Pearls!: Programming Pearls by Jon Bentley

I'll do a supplemental on this in a few days that dives into specific topics related to engine development. All of this is generic enough that it will help you regardless of what you do. You'll notice that very little here is actually language specific. Almost all of this is about the art of making software and process of working with a team. These 8 books alone will make you think about making software in a whole new way.

u/craiig · 5 pointsr/compsci

I agree, CLSR is too much like a dictionary and not enough like a story. For my graduate algorithms course, we used Algorithm Design by Kleinberg and Tardos. I could actually read this book because they took the words to explain the formulas they used. I'd recommend it! Not only did I learn about algorithms, but it also helped with reading formulas. Website Amazon Link

That said, they focused more on algorithms than on data structures, so this might not be for you.

u/the_omega99 · 5 pointsr/compsci

You should mention more specifically what kinds of problems you're looking for. Do you want to merely implement well known algorithms? Design novel algorithms for specific problems? Analyze the efficiency of a given algorithm?

For the first two possibilities that I listed, you should not need solutions (and there's no single way to write code and many algorithm problems have multiple solutions). Instead, you should be writing test suites that can let you know when they code works. This isn't 100% perfect because it's always possible that there'll be some edge case that you'll miss (although test suites should be rigorous to try and avoid this), but it'll do well for most cases and is how you'd work in the real world.

And of course, you can always try and formally prove novel algorithms work. There's isn't really an easy way to check for answers here, though, since there's more than one way to prove many algorithms (and some algorithms are extremely complicated to prove). So there isn't really anything you can do besides having a more experienced person check your answers. If you have a low volume of questions, Reddit might be able to help (find specific subreddits). But otherwise expect to have to pay for a tutor (if you're in school, your university might have something free available for CS help).

As for some actual advice, I thought Kleinberg's Algorithm Design was very good for creating novel algorithms. It has lots of problems. No answers, though.

You're right that it's pretty hard to find quality books that come with solutions (even if it's just one solution to a problem that has many possible solutions). It seems that most texts of a reasonable quality are targeted towards universities and thus don't make answers available so that universities can use the problems in assignments. I wish more books would do something like giving answers to even numbered problems. It's a major pain in the ass for those who would try and self-learn something.

u/tyme · 5 pointsr/cocoa

>I liked the book with a scooter on the front...

Cocoa Programming for Mac OS X

I also recommend that book, along with Programming in Objective-C which I feel gives a more in-depth overview of the underlying Objective-C base of Cocoa.

u/Zuslash · 5 pointsr/webdev

I found Lynda.com to be extremely dry and slow. To me it was the equivalent of those old school mandated educational movies you would watch in classrooms back in the 90s on your faux-wood tv. Take this opinion with a grain of salt though as it has been almost two years since I have looked at anything on Lynda, I hear it may be better today.

If you are looking for web development in particular I would suggest the following:

  • Codeademy - Free and very good at introducing basic web development skills.
  • Team Treehouse - Paid subscription but well worth it in my opinion as they will walk you through everything from the most basic HTML to building advanced JavaScript applications.
  • CodeSchool - CodeSchool tends to be more advanced and I would wait until you have a strong grasp on your HTML, CSS and JavaScript before investing in their coursework.

    In addition, StackOverflow; A general programming Q&A website, has an answer to just about any programming issue you may be running into. If the answer is not already there, then chances are you will have one within 24hours.

    I began my pursuit into web development about 2 years ago. In that time I have gone through the resources listed above as well as the following books which have helped immensely:

  • HTML and CSS: Design and Build Websites - Ducketts whole series is extremely friendly to the new web developer and will help you build a solid foundation quite quickly.
  • JavaScript and JQuery: Interactive Front-End Web Development - Another Duckett book which was just released focusing primarily on JavaScript.
  • JavaScript: The Definitive Guide - A massive JavaScript reference. It has answers to just about everything.

    Some personal career history if you're interested:

    In the last two years I have gone from making 18k a year as a Technical Support Representative to 80k a year as a Front-End Engineer building JavaScript applications at a large FDIC Bank. It was only in the last two years that I really dug into Web Development (and programming for that matter) and I really can't see myself ever doing anything else for a living. The job requires an immense amount of learning (which I love) and will keep your mind sharp. I really do get a kick out of problem solving all day. Programming will require a major adjustment to the way you think. I can say that the way I work through problems now is completely different to the way I did before. I feel as if critical thinking has eluded me until the last two years and it has been a major life changing event. By far the biggest contributing factor to my growth has been the team I work with. You have to do your best to find a team that is willing to work with you as a junior so you can siphon that knowledge. Even if that means taking a low paying job, however; know your worth so that you can ask for the right amount of money once you have gained the necessary skills. As a personal rule of thumb, I will not stay at a company where I am the most knowledgable member of the team. This inhibits growth as a developer and will prevent me from realizing my true potential.

    Feel free to hit me up if you have any questions.


u/adamzx3 · 5 pointsr/javascript

I can definitely relate, this sounds just like me last year! I've done things the hard way and it took me 5x longer. I also prefer screencasts to books. I always need to create a project to solidify those fresh skills, otherwise they'll be gone in a month. Also tutorials for things like Backbone assume you know how to use jQuery, Underscore, and things like REST, and JSON responses... this can quickly get confusing if your not familiar with all of these. My largest regret is not building enough practice apps in the last year. I really should have applied more by doing, instead of staying in the theoretical world.

Here are some insights that i've made and the courses/tuts/projects that helped me the most:


Learn the language first:


u/wreckedadvent · 5 pointsr/fsharp

I was reading CLR via C# the other day and something that struck me is how often the author talked about the advantages of being to use multiple languages that can talk with one another seamlessly due to them all running on the CLR. The author seemed disappointed that VB became C# with slightly different syntax while other languages on the platform weren't really getting much love.

With C# getting pattern matching in the next version, I do wonder how far and how large C# will become, ultimately, and if we'll see a more distinct push to have more varied usage of other CLR languages to solve particular problems.

u/nemec · 5 pointsr/dotnet

A more appropriate title would be "Some things you'd like to know about the CLR".

CLR via C# is really all you want to know about the CLR.

u/GeneticsGuy · 5 pointsr/wow

Reverse engineering, technically. Blizz doesn't actually publish an official list of available Lua API (which I find odd, personally), but you can find them by looking at memory dumps on each update.

You can also do an /etrace and then see the exact events being fired and thus record anything new. Though, that is a bit inefficient. Blizz often announces UI/Macro changes HERE

If you want to do your own scans to see the latest API check this out here

Some basics on how to do this can be found HERE, though it might be a bit outdated, it is quite good on how to learn for yourself how to reverse engineer programs

u/PeeWeeHerming · 5 pointsr/AskReddit

Reverse engineer Microsoft patches.

edit: serious answer:

I do this kind of work for a living. I started out in 1995 when I was 13 years old learning from mudge's excellent article on how to write buffer overflows and I progressed from there.

If you're analyzing software for which you have access to source code, you can't beat The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities.

Chris Wysopal's Art of Software Security Testing is also good.


If you're attacking software for which you have no source code, learn about fuzzing and reverse engineering. An excellent intro to reverse engineering is Reversing: Secrets of Reverse Engineering.

Those will get you started, but it helps to have people around you who are successfully discovering and exploiting software vulnerabilities. This is also the kind of field where you absolutely have to stay on top of the latest developments in software security. Things move at a mind-boggling pace. Read security blogs, talk to people in the industry, read books, etc...

u/martindines · 5 pointsr/PHP

I've go with PHP Objects Patterns & Prac. I haven't read the other 2, but this book is definitely worth investing in

u/last_alchemyst · 5 pointsr/rstats

I would recommend Discovering Statistics Using R. It goes through the math of the stats in a pretty solid way with example experiments and available data files if you want to work along with it. I have used the SPSS version with my intro and intermediate stats classes, so using it with R would be great. Plus, Fields is funny as hell.

u/10_6 · 5 pointsr/learnprogramming

Some books that could help you practice algorithms and coding challenges are:

  1. Elements of Programming Interviews

  2. The Algorithm Design Manual

  3. Cracking the Coding Interview

    If you want some actual practice solving challenges with some guidance and/or help, I'd recommend Coderbyte which provides solutions to the problems along with the ability to view other user solutions so you can learn how others solve the same challenges. This article might help you find some other coding challenge websites as well.
u/recrudesce · 5 pointsr/HowToHack

Came here to say the same thing; you don't NEED Kali to pentest, it's really mostly used because it has a lot of tools already included. You can test from a Windows box if you really wanted to.

Kali won't magically make you a pentester, nor will it teach you how to be one as it's just a bundle of tools - there's no tutorials included with those tools. Read Hackers Playbook 2 and Penetration Testing: A Hands-On Introduction to Hacking and do some vulnerable VM's from places like Vulnhub

u/mapunk · 4 pointsr/PHP

I haven't read it all yet, but I've gotten through a good amount of PHP Objects, Patterns, and Practice by Matt Zandstra. Just like you, prior to reading this I was a seasoned PHP programmer but developed very little OOP stuff. The book provides some good real-world examples and also gives the pros/cons of the techniques he's teaching.

u/wouldeye · 4 pointsr/datascience

field's "introduction to statistics using R" is the best book for my money.

EDIT: sorry I got the title wrong:

https://www.amazon.com/Discovering-Statistics-Using-Andy-Field/dp/1446200469

u/PatsysStone · 4 pointsr/statistics

Andy Field also has a book for learning statistics using R: https://www.amazon.com/Discovering-Statistics-Using-Andy-Field/dp/1446200469

I also recommend his book, it is quite a fun read.

u/kokkivos · 4 pointsr/gamedev

If you want to learn C# from scratch, read Head First C#! This is hands down the best programming book I've ever read. It leads you through interesting examples (sometimes games) and teaches you how to code in a very hands-on way.

If you don't know how to code yet, probably don't jump right into C++ and Unreal Engine. That's one of the most technically challenging paths for a programmer to take. If you want to be a professional AAA developer on a large team, I would say do it, but otherwise you will get much more done with Unity and C#.

u/rfinger1337 · 4 pointsr/csharp

That's an interesting point. I can't remember seeing books that target experienced devs that use exercises. They tend to say "here's how this works."

http://www.amazon.com/Depth-3rd-Edition-Jon-Skeet/dp/161729134X

^ I don't think there are exercises, but I like Jon's writing style and his technical knowledge is beyond reproach.

u/CrimsonCuntCloth · 4 pointsr/learnpython

Depending on what you want to learn:

PYTHON SPECIFIC

You mentioned building websites, so check out the flask mega tutorial. It might be a bit early to take on a project like this after only a month, but you've got time and learning-by-doing is good. This'll teach you to build a twitter clone using python, so you'll see databases, project structure, user logons etc. Plus he's got a book version, which contains much of the same info, but is good for when you can't be at a computer.

The python cookbook is fantastic for getting things done; gives short solutions to common problems / tasks. (How do I read lines from a csv file? How do I parse a file that's too big to fit in memory? How do I create a simple TCP server?). Solutions are concise and readable so you don't have to wade through loads of irrelevant stuff.

A little while down the road if you feel like going deep, fluent python will give you a deeper understanding of python than many people you'll encounter at Uni when you're out.

WEB DEV

If you want to go more into web dev, you'll also need to know some HTML, CSS and Javascript. Duckett's books don't go too in depth, but they're beautiful, a nice introduction, and a handy reference. Once you've got some JS, Secrets of the javascript ninja will give you a real appreciation of the deeper aspects of JS.

MACHINE LEARNING
In one of your comments you mentioned machine learning.

These aren't language specific programming books, and this isn't my specialty, but:

Fundamentals of Machine Learning for Predictive data analytics is a great introduction to the entire process, based upon CRISP-DM. Not much of a maths background required. This was the textbook used for my uni's first data analytics module. Highly recommended.

If you like you some maths, Flach will give you a stronger theoretical understanding, but personally I'd leave that until later.

Good luck and keep busy; you've got plenty to learn!

u/art_three · 4 pointsr/programming

Clean Code. I will always recommend it to any developer.

​

https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship-ebook/dp/B001GSTOAM

u/dmazzoni · 4 pointsr/learnprogramming

Step 1: get a better learning resource.

Most online tutorial suck. They're fine for a quick intro or to learn more about one feature, but not for learning everything from scratch.

Buy a book.

Programming in Objective-C is pretty good and it's aimed at beginners.

If you don't want a physical book, get the Kindle edition and read it online.

Step 2: spend more time building.

For every minute you spend reading or watching, you should spend 10 minutes trying it out, doing stuff.

Programming is not about knowledge, it's a craft, like woodworking or pottery. You can't just watch masters build things for a month, then go home and build a dresser. You need to start small, build up your skills before you can actually build useful things.

So as you're reading the book: are you learning to write a loop? Stop, put down the tutorial or book, and type it in and run it. Get used to the syntax. Experiment with it - can you make it do something different?

u/TheUnwiseOwl_ · 4 pointsr/csharp

CLR Via C# is a really good book to have handy.

u/marpstar · 4 pointsr/cscareerquestions

I've never done any embedded software development, but as a web developer looking at you from the other side, this is what I see...

At the domain level, you'll be working with different technologies than you're used to. Embedded software developers do a lot more low-level interactions with inputs from sensors, so you'll see less of that. Web developers are generally dealing more with human interaction and data persistence and retrieval.

Another big thing to think about would be your OOP experience. Are you familiar with SOLID? Have you done any real-world development using OOP? Most of the web frameworks available today (from a server-side standpoint, at least...particularly ASP.NET) are rooted in OOP.

If you've got 10 years of experience developing, learning C# will be easy. I wouldn't focus as much on the language itself as I would learning the .NET standard libraries. You'll pick up the patterns as you go. I really liked the "Pro ASP.NET MVC" books, now available for MVC 5.

If you're looking specifically for books on C# and .NET development, I don't think there's any book better than CLR via C#. Don't let the title scare you away, it's a great book for learning the lower-level bits of the .NET platform, which are relevant everywhere from ASP.NET to WinForms.

If you aren't aware, there are huge changes coming to the .NET framework and ASP.NET, so you could choose to focus on ASP.NET 5 and get ahead of the game a bit, at the expense of availability of reference material.

u/ShadoWolf · 4 pointsr/Futurology

chrome runs at user app level. it's not running in kernal space with rootkit-like functionality.


Google going out of there way to try and illegally spy on you is crazy. simply because any interested party can go and grab a copy of IDA pro and slap it onto chrome right now and do live disassemble the code base as it's running. Watch the stack calls, view library calls, and view network traffic.

But if the overly paranode type. Then go an investigate for yourself you have access to the tools and the books to self-learn the skills need to do so. Here a good jumping off point


http://out7.hex-rays.com/demo/request < request a trail evulation of ida pro

read this
https://www.amazon.ca/Reversing-Secrets-Engineering-Eldad-Eilam/dp/0764574817

this
https://www.amazon.ca/IDA-Pro-Book-Unofficial-Disassembler/dp/1593272898

and finally this
https://www.apress.com/gp/book/9781484200650


u/PM_ME_YOUR_SHELLCODE · 4 pointsr/RELounge

Reversing: Secrets of Reverse Engineering - Is probably the most common book recommendation. Its an older book (2005) but its about as gentle as it gets in terms of the core concepts but its missing a bit due to its age (32bit RE only). I'd liken it to something like Hacking: The Art of Exploitation for exploit developers. Its a solid book, it covers the fundamentals but it'll take a bit more work to get up to speed.

Practical Reverse Engineering - This one is a newer book (2014) while it doesn't cover as many topics as the above book, its less dated in what it does cover, and it does cast a wider net covering things you'll see today like ARM and x64 instead of just x86. I tend to recommend starting with this book, using Reversing and the next book as a reference if there is a chapter of interest.

Practical Malware Analysis - While this one has more traditional RE introduction, where it excels is in dynamic analysis and dealing with software that doesn't want to be analyzed. Now, its from 2012 and malware has changed since then, so its age certainly shows, but again fundamentals remain even if technical details change or are expanded upon.

Practical Binary Analysis - This is the newest book of the list (December 2018). It wouldn't use it alone, but after you've gone through any of the above books, consider this an add-on. Its focus is on dynamic analysis and its modern. I'll admit I haven't read the entire thing yet, but I've been pleased with what I have read.

Edit: s/.ca/.com/g

u/jailbird · 4 pointsr/PHP

Check out this question on StackOverflow.

I could also vouch for PHP Objects, Patterns, and Practice. When I was learning OOP, I found the book straightforward and quite easy to understand.

u/CSMastermind · 4 pointsr/learnprogramming

I'd suggest you should pursue software development as a career path. Once you're working full time as a developer it will be much easier for you to move into a .NET role if you choose.

The career market can be hit or miss. There are plenty of jobs using those technologies but they're less ubiquitous than say Node or Java.

In terms of keeping up your skill, Pluralsight has some amazing content. And I'd recommend these books:

Design Patterns in C# - probably the first book I'd read.

CLR via C# - In-depth, targeted at professional developers, and absolutely crucial for anyone doing it professionally.

Agile Principles, Patterns, and Practices in C# - Will help get ready to work on a professional software development team with a slant towards Cc#.

Pragmatic Unit Testing in C# with NUnit - Also important for working as a professional C# developer.

More Effective C# - Is more of a specialist read. Might be helpful after you've worked for a year or two.

Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries - Is better suited for a technical lead or architect. But could be useful to keep in your back pocket.

u/Kris_Ekenes · 4 pointsr/learnprogramming

I lose interest all the time reading programming books. I will circle back if something comes up that reminds me of a subject of that book. Each CS book has a ton of material and knowledge in it, so keep that bookshelf stocked and keep on circling back. Since you're interested in reading up on programming a few of my personal favorites for beginners include:

Pragmatic Programmer: https://pragprog.com/book/tpp/the-pragmatic-programmer

Eloquent JavaScript: http://eloquentjavascript.net/

Programming Perls: https://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880

u/ClockworkV · 4 pointsr/cpp

"Modern C++ Design" by https://www.reddit.com/user/andralex might not be quite so modern anymore, but it does a good job of presenting the basic building blocks for TMP, especially if you want to do complex stuff with types. Many of the things presented there have since gone into the standard, but it's good to know what goes on in the background.

u/napperjabber · 4 pointsr/gamedev

Grab a book, find a project. Bunker down and nail it out.

I have a simular background; I learnt AS3, went onto JS/HTML, c#, java, python, c/c++. For my C, I picked up unix networking and for c++ I picked up modern c++ design.

From there, it's just a matter of getting dirty.

u/ontoillogical · 4 pointsr/compsci

The Sipser book mentioned elsewhere is pretty much all of those topics. You may also be interested in a good algorithms book. CLRS has been recommended elsewhere, but Kleinberg & Tardos is probably more accessible. I am using both in school right now, and I find CLRS as a better reference (more breadth) and K&T better for exposition.

u/Canadana · 4 pointsr/learnprogramming

Don't be too hard on yourself, C++ is a tough language. Its a good sign that you are struggling, it means that you are human. You might want to take a look at Programming: Principles and Practice Using C++. It was written by the creator of the language and its good for beginners.

Good luck!

u/fookhar · 4 pointsr/apple

Read this, then read this.

u/missedtheplane · 4 pointsr/simpleios

You didn't ask me the question, but I'm learning with the same material.

  • Paul Solt's course
  • Big Nerd Ranch Objective-C programming
  • Big Nerd Ranch iOS Programming

    I just finished working through the Big Nerd Ranch Objective-C book and found it extremely accessible and enjoyable. I started the iOS book yesterday and worked through five chapters - if you're genuinely interested in learning Objective-C and iOS these books are difficult to put down. Be aware that the newest edition of the BNR Objective-C is due at the end of November and the iOS book due at the end of December.

    Paul Solt's course provides video content that I have found to be beneficial supplementary content to the BNR books. Working through the book along with Paul's course has helped me cement the material. He posted a coupon to take the course for free ~1 week ago. Not sure the coupon is still valid or not.
u/ImEasilyConfused · 3 pointsr/IAmA

From OP:

>The exact four books I read are:

>Learning Obj-C

>Learning Java

>iOS Programming: The Big Nerd Ranch Guide

>Android Programming: The Big Nerd Ranch Guide

>However, I would now recommend learning Swift instead of Obj-C. At the time when I was looking into iOS books, good books on Swift were few and far between.

From u/AlCapwn351 in regards to other sources to learn from:

>www.codeacademy.com is a great site for beginners (and it's free). It's very interactive. W3schools is good for learning stuff like JavaScript and HTML among other things.

>When you get stuck www.stackoverflow.com will be a lifesaver. Other than that, YouTube videos help and so do books. Oh and don't be afraid to google the shit out of anything and everything. I feel like an early programmers job is 90% google 10% coding.

>Edit:

>It's also good to look at other peoples code on GitHub so you can see how things work.

u/TopTheTop · 3 pointsr/iOSProgramming

Started with some Udemy course that was on a 95% discount.

Bought an iOS book after.

Although the Big Nerd Ranch books aren't for sale in my country everybody seems to favor them.

http://www.amazon.com/iOS-Programming-Ranch-Edition-Guides/dp/0321942051

u/SlaunchaMan · 3 pointsr/iOSProgramming

Stephen Kochan’s Programming in Objective-C is great for learning.

u/rishabhsingh8 · 3 pointsr/jailbreak

To go along with what /u/xXCallMeGreenyXx said, you should definitely learn Objective C before attempting tweaks. I'd personally suggest [this] (http://www.amazon.com/Programming-Objective-C-Edition-Developers-Library/dp/0321967607) because it starts from the basics.


Feel free to PM me though, if you need any help. :)

u/mfbridges · 3 pointsr/iOSProgramming

The book Programming in Objective-C is pretty good, and focuses on the language itself rather than SDKs.

u/fofgrel · 3 pointsr/javascript

JavaScript: The Definitive Guide. It's long, but very thorough.

u/magenta_placenta · 3 pointsr/web_design

Pro JavaScript Design Patterns

http://www.amazon.com/JavaScript-Design-Patterns-Recipes-Problem-Solution/dp/159059908X

JavaScript Patterns

http://www.amazon.com/JavaScript-Patterns-Stoyan-Stefanov/dp/0596806752/ref=sr_1_1?s=books&ie=UTF8&qid=1303912468&sr=1-1

High Performance JavaScript

http://www.amazon.com/Performance-JavaScript-Faster-Application-Interfaces/dp/059680279X/ref=sr_1_3?s=books&ie=UTF8&qid=1303912468&sr=1-3

Object Oriented JavaScript

http://www.amazon.com/Object-Oriented-JavaScript-high-quality-applications-libraries/dp/1847194141/ref=sr_1_1?s=books&ie=UTF8&qid=1303912517&sr=1-1

JavaScript: The Good Parts

http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/ref=sr_1_4?s=books&ie=UTF8&qid=1303912536&sr=1-4

Everyone loves to swing from Crockford's nuts, but I found this book a little hard to read. I lack a CS background and I fully admit I need to re-read this book as last time I read it was beginning of 2009

JavaScript: The Definitive Guide 6th Edition

http://www.amazon.com/JavaScript-Definitive-Guide-David-Flanagan/dp/0596805527/ref=sr_1_1?s=books&ie=UTF8&qid=1303912643&sr=1-1

I just ordered this yesterday, the 5th Edition is the book that really kicked it off for me back in 2005.

jQuery is cool and all (as are all the other libs) but you should try to learn core JavaScript as much as possible.

u/GrayDonkey · 3 pointsr/java

You need to understand there are a couple of ways to do Java web development.

  • Servlets & JSPs. - Check out Core Servlets and JavaServer Pages or the Java EE Tutorial. Note that I link to an older EE tutorial because the newer versions try to switch to JSF and not much changed in Servlets and JSPs between Java EE 5 and 6. I recommend learning Servlets and JSPs before anything else.
  • JSF - A frameworks that is layered on top of Servlets and JSPs. Works well for some tasks like making highly form centric business web apps. Most of the JSF 2 books are okay. JSF is covered in the Java EE 6 Tutorial
  • Spring - Spring is actually a bunch of things. You'd want to learn Spring MVC. If you learn any server-side Java web tech besides Servlets and JSPs you'd probably want to learn Spring MVC. I wouldn't bother with GWT or any other server-side Java web tech.
  • JAX-RS - After you get Servlets and JSPs down, this is the most essential thing for you to learn. More and more you don't use server-side Java (Servlets & JSPs) to generate your clients HTML and instead you use client-side JavaScript to make AJAX calls to a Java backend via HTTP/JSON. You'll probably spend more time with JavaScript:The Good Parts and JavaScript: The Definitive Guide than anything else. Also the JAX-RS api isn't that hard but designing a good RESTful api can be so be on the lookout for language agnostic REST books.

    Definitely learn Hibernate. You can start with the JPA material in the Java EE tutorial.

    As for design patterns, Design Patterns: Elements of Reusable Object-Oriented Software is a classic. I also like Patterns of Enterprise Application Architecture for more of an enterprise system pattern view of things. Probably avoid most J2EE pattern books. Most of the Java EE patterns come about because of deficiencies of the J2EE/JavaEE platform. As each new version of Java EE comes out you see that the patterns that have arisen become part for the platform. For example you don't create a lot of database DAOs because JPA/Hibernate handles your database integration layer. You also don't write a lot of service locators now because of CDI. So books like CoreJ2EE Patterns can interesting but if you are learning a modern Java web stack you'll be amazed at how archaic things used to be if you look at old J2EE pattern books.

    p.s. Don't buy anything that says J2EE, it'll be seven years out of date.
u/JonnyRocks · 3 pointsr/dotnet

open source aside - you should read this book

http://www.amazon.com/CLR-via-4th-Developer-Reference/dp/0735667454/ref=sr_1_1?ie=UTF8&qid=1415979190&sr=8-1&keywords=.net+via+c%23

you have some terms mixed up. This book will explain everything .net is under the covers.

u/root_pentester · 3 pointsr/blackhat

No problem. I am by no means an expert in writing code or buffer overflows but I have written several myself and even found a few in the wild which was pretty cool. A lot of people want to jump right in to the fun stuff but find out rather quickly that they are missing the skills to perform those tasks. I always suggest to people to start from the ground up when learning to do anything like this. Before going into buffer overflows you need to learn assembly language. Yes, it can be excellent sleep material but it is certainly a must. Once you get an understand of assembly you should learn basic C++. You don't have to be an expert or even intermediate level just learn the basics of it and be familiar with it. The same goes for assembly. Once you get that writing things like shellcode should be no problem. I'll send you some links for a few books I found very helpful. I own these myself and it helped me tremendously.

Jumping into C++: Alex Allain

Write Great Code: Volume1 Understanding the Machine

Write Great Code: Volume2 Thinking Low-Level, Writing High Level

Reversing: Secrets of Reverse Engineering

Hacking: The Art of Exploitation I used this for an IT Security college course. Professor taught us using this book.

The Shellcoders Handbook This book covers EVERYTHING you need to know about shellcodes and is filled with lots of tips and tricks. I use mostly shells from metasploit to plug in but this goes really deep.

.

If you have a strong foundation of knowledge and know the material from the ground-up you will be very successful in the future.

One more thing, I recently took and passed the course from Offensive Security to get my OSCP (Offensive Security Certified Professional). I learned more from that class than years in school. It was worth every penny spent on it. You get to VPN in their lab and run your tools using Kali Linux against a LOT of machines ranging from Windows to Linux and find real vulnerabilities of all kinds. They have training videos that you follow along with and a PDF that teaches you all the knowledge you need to be a pentester. Going in I only had my CEH from eccouncil and felt no where close to being a pentester. After this course I knew I was ready. At the end you take a 24-long test to pass. No questions or anything just hands on hacking. You have 24 hrs to hack into a number of machines and then another 24 hours to write a real pentest report like you would give a client. You even write your own buffer overflow in the course and they walk you through step by step in a very clear way. The course may seem a bit pricey but I got to say it was really worth it. http://www.offensive-security.com/information-security-certifications/oscp-offensive-security-certified-professional/

u/jtreminio · 3 pointsr/PHP

> How do I learn all the technologies that have emerged out in the recent years?

Slowly.

Read. Books, large projects, small projects, blogs.

I wrote something on PHPUnit.

I wrote something on XDebug.

I wrote something on Composer.

Frameworks aren't for learning how to write PHP. You should already know PHP pretty well before deciding on using a framework. If you try to learn OOP through using a framework you're Going To Have a Bad Time.

Read this to figure out what a framework actually is and what it's for.

If you're not very familiar with how to use OOP, read /u/ircmaxell's blog, from the beginning.

If you need to actually gain more in-depth understanding of OOP, read this and then this.

u/psychfi · 3 pointsr/AcademicPsychology

Lots of great suggestions here. My grad program used SPSS but it annoyed me that someone had to pay for it, so I learned R. Like others mention, if you learn R it can be easier to go back to SPSS. Also, others who use SPSS might think you have some kind of superpower.

Like u/bobbyfiend says, the best is to do use it on some projects. This forces you to learn something that is important and you have interest in solving. The internet is amazing, and most answers in some form or another can be found on Stack Overflow (make sure to ask the questions in the proper format and search first), /r/rstats (a bit more friendly than stack overflow), or on some of the email lists.

In general, I would say there are a couple of resources that most people could benefit from as they start to learn:

-Andy Field's Discovering Statistics with R - It does have some irreverent humor, but is a good read

-Hadley Wickham's R for Data Science - this resource is free online but can also be bought through Amazon. Hadley is a R celebrity responsible for creating the 'tidyverse' series of packages - packages which make R more beginner friendly imo.

You will definitely want to look at your subspecialty and see if there are any people working in R there. They may have some other resources. Again, you can read books and watch courses all you want, but it is critical to practice (and practice using something you are interested in can help exceptionally). Ultimately, I used my dissertation as an excuse to dive into R - there was pain, and I probably could have done it quicker if I stayed in SPSS - but I learned a lot and now use R and Rmarkdown - and really do not think I plan on going back. Another user mentions looking at others' code, and this has also helped me to make my code more efficient and reproducible - a big strength of R (love that you can use Git).

u/ResidentGinger · 3 pointsr/IOPsychology

Second Tabachnik & Fiddle along with Hunter & Schmidt

Rogelberg's IO Handbook

Brannick & Levine's JA text

HLM - Raudennbush & Bryk

Ployhart et al's Staffing Organizations

I have lots of other O-oriented things, but those will depend on your specific area.

Edit: This!

u/Bjarkwelle69 · 3 pointsr/badeconomics

> Maybe pick up a book and try to learn a little bit of R this summer?

Coursera has online courses if you want learn R and how to do statistics using R.

If you prefer a book, try "Discovering Statistics Using R" by Andy Field. I'm using it to self-study right now and I highly recommend it. It really explains statistical concepts well and it's very easy to read. Although it does sacrifice a lot of mathematics, you could compensate for it when you take up your statistics subject.

I do have to say that I've already taken up Econ Statistics and Econometrics (I had a horrible time however). Also, I've taken up the R course in Coursera so I'm not sure if my experience with the book is the same as yours. Read a couple of chapters and see if it is to your liking.

u/MrDominus7 · 3 pointsr/GradSchool

Discovering Statistics Using R by Andy Field is probably your best bet. It's pretty comprehensive in terms of what it covers and is easy (and enjoyable) to follow along with and understand.

u/mr0860 · 3 pointsr/statistics

I found Andy Field's Discovering Statistics Using R to be quite helpful.

u/Lord_Zero · 3 pointsr/csharp
u/FourForYouGlennCoco · 3 pointsr/learnprogramming

I'd suggest finding a good course and a good book that you can use for reference. Then cementing your skills by doing lots of problems.

The book: this one's easy. Skiena's Algorithm Design Manual is highly regarded, surprisingly readable, and affordable by textbook standards. Don't need to read it cover to cover, but it's great reference, and I'd suggest reading the really critical chapters like graph search and sorting.

The course: You can't really do better than Stanford's course, taught by Tim Roughgarden. I took it a few years ago and have used it to brush up every time I apply for a new job.

The problems: it's important not to dive into this until after you've learned the basic concepts. But Leetcode is the standard, and for good reason -- it has a ton of problems, many of which are leaked from real companies. At first, these problems will seem very difficult -- it make take hours to solve a 'medium' level problem, if you can get it at all. If you simply can't get it, read the solutions and really understand them.

I also recommend the book Elements of Programming Interviews. You'll hear a lot of love for Cracking the Coding Interview on this sub, but it's too easy and outdated for current interview prep. It's a fine intro book, but it won't take you all the way to where you need to be.

u/Berecursive · 3 pointsr/computervision

Pretty difficult to guess to be honest. They may just end up asking 'Google' style questions in which case I would recommend Elements of Programming Interviews which I think is much better than Cracking the coding interview.

u/TheSploogeMcDuck · 3 pointsr/cscareerquestions

I rarely see this posted here for some reason, but I've found Elements of the Programming Interview to be a really great book, and far more helpful than websites like careercup.

u/sumzup · 3 pointsr/cscareerquestions

I love this book: Elements of Programming Interviews

It's sort of like Cracking the Coding Interview but on steroids. CtCI is good, but I've found that it doesn't cover some of the harder problems that still show up. Definitely buy EPI; $30 is a drop in the bucket compared to what's at stake in an interview.

u/squirrelmasterzero · 3 pointsr/cscareerquestions

This book has everything you'd ever need to practice for a technical interview barring design patterns, basic database design and framework specific stuff.
Worth the investment imo.

http://www.amazon.com/gp/aw/d/1479274836?cache=9b500b2ef102be94720051e93b4472f6&pi=SY200_QL40&qid=1407757596&sr=8-1#ref=mp_s_a_1_1

u/cquick97 · 3 pointsr/AskNetsec

Depends on what you want to learn.

Web Application Security?

Exploit Development?

"Pentesting" techniques?

Also check here for tons other of resources.

As for certs, if you are a beginner beginner, then probably stuff like Security+ and Network+. Unlike the guy behind me, I will never get, nor do I really recommend CISSP, unless you are going for strictly blue team (defense) work. I personally enjoy red team (pentesting, etc), so something like OSCP would be more useful.

Like I said in a post above, feel free to PM me with questions. I'm always happy to help others on their quest to learn more about the wide world of infosec :)

u/cloneruler · 3 pointsr/HowToHack

Network+,Security+,Linux+ = Good.

Udemy i'm not exactly sure about, I have no idea how good it is, however Cybrary does have penetration testing courses on there for free and they're decent.

Grey & Black hat python - Great books. I'm currently looking at black hat python, and it's awesome.

Some other books i'd recommend: Hacking: The Art of Exploitation The hacker playbook 2


While i'm not a professional pentester(YET :P) i've learned alot from the books I listed above as well as the cybrary videos. If you really have the money, I recommend the Penetration Testing With Kali Linux Course From Offensive Security It's fairly expensive, but I've heard it's worth it.

u/qasimchadhar · 3 pointsr/AskNetsec

Offensive Security's OSCP should be your goal if you wanna get into pentesting. Start with reading CEH material and The Hacker Playbook http://www.amazon.com/The-Hacker-Playbook-Practical-Penetration/dp/1512214566.

u/Krom2040 · 3 pointsr/dotnet

“Why is C# better than Python” is a tough question to answer, but the short answer is that all the features of C# were put there for a reason. And there are MANY features; C# has evolved over the years to support virtually all of the programming paradigms you can imagine, from procedural code to object-oriented to functional to low-level memory/hardware interaction to whatever. It’s dauntingly complex to dig into all of it, but you really only need a relatively shallow subset of those features to be productive, and you’ll only get better as you absorb more of the profile. What you find as you watch other languages like Python evolve is that they’re really playing catch-up, trying to patch in features that C# has had from its inception. Of course, trying to stick static type safety in after the fact is extremely difficult, but you’re seeing a lot of that in both Python and JavaScript. The lifecycle typically goes something like this: new developers get a whiff of the complexity of C# and are put off, then are pleasantly surprised by how easy and “flexible” JavaScript seems, spend years working with it, and then after hitting a wall with the limitations of those languages, they start down the rabbit hole of trying to monkey around with them to try to fix them up to be more like C#.

Just from the outset, static typing is a huge necessity for large software projects. You can’t afford to exist in an environment where every change of a property throws the stability of your codebase into question, with a host of problems that you can’t identify until runtime. Code clarity is, I would argue, the DEFINING feature of a stable, healthy project, and what you find with dynamically-typed languages is that people get to be afraid to refactor for clarity, because the code is brittle and can’t be changed with any reasonable
level of confidence.

Som people try to make assertions like “a good linter is just as powerful as a strongly-typed language”, but that just strikes me as nonsense. It’s only true if you can commit to using the language in a very basic, highly-conventional way, and once you’ve done that, what you’ve REALLY done is abandoned the flexibility that was the hallmark of the loosely-typed language in the first place, AND what you end up with is a very limited subset of the features a true statically-typed language gives you. It’s really tantamount to believing that most static-typing support is superfluous, which it is most definitely is not.

The thing about JavaScript in particular is that it received an enormous boost by being the only game in town. It’s still a pretty crappy language, but it used to be considerably worse; people tolerated it because it was the only game in town. Even then, it had its cadre of language evangelists who assured everybody that the overwhelmingly primitive nature of the language was really a great feature, and maybe in some abstract sense they were correct insofar as it was sufficient to become a building block for better transpiled iterations of it. But largely, as new features were introduced, developers embraced them wholeheartedly, which likely wouldn’t have been the case if there really was a ton of value in the extremely raw nature of early JavaScript.

These are a couple of really excellent resources for C#, which really dig into the design motivations of the language:

https://www.amazon.com/C-Depth-3rd-Jon-Skeet/dp/161729134X
https://www.amazon.com/C-7-0-Nutshell-Definitive-Reference/dp/1491987650

It’s worth noting that they’re both enormous books, and ironically the “Nutshell” book is over a thousand pages! That’s the kind of scope that you’re dealing with to really get into what C# has to offer. But once you do, it can feel awkward to switch between that and less-powerful languages. For that reason, I think every developer in any language could stand to learn about C#, since it’s just a great case study in language design.

All of that said, I always think it’s important to remember that programming in most dynamically-typed languages is pretty much like writing every C# program using Dictionary(string, object) as your only data type.

u/PM_ME_YOUR_MAKEFILE · 3 pointsr/learnprogramming

I've also been learning C# for work, and I don't do well in classes: I learn better from books. So if books are your thing, here's a couple recommendations (all of these are on Safari Books Online, see if your work will shell out for a subscription)

u/Orthak · 3 pointsr/mylittleandysonic1

Unity is the bee's knees.
I've been messing with it casually for several years, and got serious in the last 2-ish years. I like it because I get to use C#, and that's the language I know best. Only problem in it's using some weird limbo version of .NET 2, that's not actually 2.0 but is also 3.0 is some places? I think it's because it's using Mono 2.0, which is some subset of .NET. It's weird. They're moving to 4.5 soon anyways so I'm hype for that. I'ts been a lot of fun regardless, I get to apply a different knowledge and tool set from my day job. Not to mention it feels great when you actually get something to build and actually work.

So anyways here's a list of resources I've found over the years to be super helpful:

Things on Reddit

u/JessieArr · 3 pointsr/programming
u/LyndonArmitage · 3 pointsr/programming

Personally I wouldn't mind if == never did implicit casting and acted like === (in fact I wish it did), but the rules don't seem that bad to me.

The example I gave was very contrived, and solution was naive, the best way to compare two arrays to each other would be to loop through them, like this. What I was doing was showing you how you'd take advantage of the implicit casting.

I think it was in John Resigs book where I read the best advice I have seen for JavaScript and it went something like "Treat everything as if it was an object and use === unless you need to use ==".

Also never use the wrapper objects if you can help it. Let the interpreter use them in auto-boxing and leave them alone. Because you are 100% right, things can get a bit weird then.

u/Canthros · 3 pointsr/programming

I'm mainly looking for things they could do to shore up their resumé when comparing it to somebody coming out of a 4-year CS program someplace. They need to have projects to talk about, and github's a good place to put that. Making contributions to open source projects seems like a good way to build experience doing the sort of maintenance work that keeps business systems churning, and a good way to get some practical experience cutting code that they won't have from a 3-month bootcamp. It's also a way to get experience using source control, dealing with code reviews, etc. I totally agree that they should be building their own projects, but github also seems like a good way to present that part of their portfolio.

They should keep up to date, specifically, on developments in tools and technologies they're trying to get hired to use. There's no reason to expend effort tracking, say, Haskell, unless you really want to work with it, professionally, but, if your skillset is all webdev, it might behoove you to have a clue about, say, ES2017 and how much of it's actually supported and where.

There's no reason for a junior dev to be mastering languages or tools they're not actually going to be using, but a bootcamper is going to have pretty narrow exposure to programming paradigms outside their existing skillset. Rolling through something like Seven Languages in Seven Weeks as a project you spend an hour or two on each week would help broaden their foundation, and maybe expose them to some other ideas and programming paradigms. Likewise, a survey of, say, algorithms and data structures, if only to the point of being able to explain the difference between a queue and a stack, or an array and a linked list. This isn't because these are immediately useful skills, but because they're things I wouldn't expect a bootcamper to have picked up in bootcamp and they are things I'd expect a CS grad to know (if not necessarily know well), and the bootcamper is competing with the CS grad for the job.

For comparison, somebody in r/csharp asked what people actually expect from junior developers a while back. This was my answer to that question, which was bounded in terms of the language and technology stack.

u/michael0x2a · 3 pointsr/learnprogramming

You could try Learn Seven Languages in Seven Weeks. It attempts to teach 7 radically different languages/paradigms at the same time -- Clojure, Haskell, Io, Prolog, Scala, Erlang, and Ruby. It sounds like he already knows Scala, and probably won't find Ruby too interesting given he already knows Python, but the other languages should hopefully be new.

u/LuminousDragon · 3 pointsr/gamedev

The answer to that is really a bunch of variables that you have to determine yourself. Answer these questions and others I havent thought of and then use them to calculate if its worth keeping:

How much longer am I going to use this code? is it temporary code? are other people using this code? Is coming back to this code in 6 months or a year going to be a nightmare? Am I going to be working with this code often? Is the sloppiness of this code causing other problems or might it in the future, and how serious are those problems? HOW MUCH TIME AND EFFORT WILL IT BE TO REWRITE THE CODE VERSUS ALL OF THE POTENTIAL TIME AND EFFORT THAT WILL BE ADD FROM UNFORSEEN PROBLEMS FROM THIS SLOPPY CODE?

-----
The capitalized part is the final question you can use to decide to rewriting it. Keep in mind its easy to underestimate future headaches from being sloppy.

-------------

Some random basic links on not writing sloppy code:

An EXCELLENT book on the subject:
https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship-ebook/dp/B001GSTOAM

other links...

https://blog.alexdevero.com/6-simple-tips-writing-clean-code/

https://www.butterfly.com.au/blog/website-development/clean-high-quality-code-a-guide-on-how-to-become-a-better-programmer

https://www.pluralsight.com/blog/software-development/10-ways-to-write-cleaner-code

u/mmmguitar · 3 pointsr/java

It does the job, good stuff! I think you've got loads of suggestions about the actual code / arrays.

For me an important programming skill is called "clean code", there is a book.

It may be a little over the top given you are learning arrays, but I'll rabble on a little bit about it as I think its quite a simple premise and also I think a real good thing to start doing as soon as possible as it can keep clean and code simple.

Essentially how to make your code easier to read and understand. It applies to any coding, not just java. Short can curlies relating to your code post, meaningful naming and small methods that do basically 1 thing.

So for example take line 25:

if (userChoice > 12 || userChoice < 1) {

I dont know right away what that is doing or it means. Given we are talking about months, this looks like a range check and looking at the code within the if statement I can figure out it looks like this is the "good / valid" part of the check and we another have a bad / error check as well.

But the problem is I have to figure that by looking at what the code is doing. In another example where its not months / something new to me and the if's are doing something a little more clever, it'd be alot more difficult to figure what the code is doing.

So one / the traditional solution is to write a comment something like:

// bounds check the user input to make sure its a valid month
if (userChoice > 12 || userChoice < 1) {

But comments are likely to get old + out of date if someone makes changes and ignores the comment (happens all the time). They also muddy up the code with extra lines / make it harder to read + understand.

So an alternative way is extract the if logic to another method and give it a nice friendly name, for example:

if(isValidMonth(userChoice)) {
... rest of method...
}

private boolean isValidMonth(int input) {
return input > 0 && input< 13;
}


Now when you read you read that if statement its telling you exactly what its doing so you dont have to figure anything out yourself. Its quick, easy and clean. If this logic is difficult / doing something odd, then rather a comment, you can right some javadoc for the method.

See my example below of one way the main loop in your application could look:

while (continueInput) {
printUserMenuToConsole();
userChoice = userInput.nextInt();

if (isValidMonth(userChoice)) {
printSelectedMonthToConsole(userChoice);
String askQuit = getIt.nextLine();
continueInput = isContinueInputQuit(askQuit)
}
else {
printErrorMessage(userChoice);
}
}

You can see how that loop now is much more readable, its telling the reader what its doing. Essentially what is happening is taking a method that does a lot and break it down into smaller more manageable chunks and separating process and logic.

It still is a little clunky, we could take that one step further:

private void doUserInputLoop () {
boolean continueInput = true;
while (continueInput) {
printMonthMenuToConsole();
takeUserMonthAndPrintToConsole();
continueInput = doesUserWantToContinue();
}
}

You can see here the logic / complexity of all the months is now stripped out each into there own methods and this method is not much smaller and is all about the process of the loop. Within 2 seconds you can understand what you app does by reading those 3 lines, print menu console, get user input and print to console and ask use if they want to loop again. Its a little clunky with the while loop / boolean but its not too bad.

Its handy as well becuase if the code tells you what its doing, you never (or very rarely) need to write a comment.

Word of warning, balance is everything, this can be taken too far. The key is to name variables / method names fully to describe what they do (your variables are good). If you cant / struggling to come up with a name or they are getting too long, then its warning bells that a bit too much is going on / there is probably a simpler way to achieve what you are trying to do.

u/negative_epsilon · 3 pointsr/cscareerquestions

>how, exactly, things like MVC work in action, and why the little things always end up more challenging than anticipated.

These are things a bootcamp will not teach you.

I just finished this book and it goes over a lot of things like design patterns and how to stay agile, why code rot happens, etc etc. It might help you a lot more than a bootcamp would, and costs about 300 times less.

u/zebishop · 3 pointsr/csharp

I found that often the best way to know if your implementation is SOLID is to write the unit tests for it.

For example, if you want to test the PreferencesThing class, you could run into an issue because of the dependency on PreferencesStorage() : if it needs a file, the network, whatever, it will be hard to write. So PreferenceStorage should implement a IPreferenceStorage interface, that you would mock during the tests. And your class constructor or GetThing method would take a IPreferenceStorage parameter. In a strict SOLID approach, I guess that even the ObjectSerializer could be considered problematic.

That being said, keep in mind that SOLID is an excellent way to structure your code, not a magical hammer. Use it wisely.

I would recommend (if it has not been made) reading http://www.amazon.com/Agile-Principles-Patterns-Practices-C/dp/0131857258 which goes in length on those topics. Also, anything else by Robert Martin (uncle bob) is usually a good reference on the topic.

u/sethgecko · 3 pointsr/NewOrleans

LSU's problem is not budget cuts. Their CS bachelor and masters programs have been unaccredited and very poor for 20 years. Their CS PhD program on the other hand is quite good but that's a completely different entity. (I'm not saying brilliant people haven't graduated from LSU CS, but those people were brilliant themselves and largely could have done without the 4 year term in undergrad since they learned more on the job than in Coates Hall)

SLU, LSU and all state universities are going through budget cuts. I'm on the advisory board for SLU and ULL and in the case of SLU in 2004, 67% of their funding came from the state. In 2014, it's down to only 28% from the state. So, tuition has gone up. The pressure for private donations has risen sharply. But despite this SLU CS revamped the department in 2005 including modern technology into the curriculum, modern theoretical concepts and increased its student project exposure with modern technology and techniques many times over.

So while LSU recently added a class incorporating AngularJS in it, SLU has been teaching students cutting edge technology and theory and technics like SOLID principles, MVC and now AngularJS for a decade now. I was directly involved in SLU continuing their ABET accreditation 6 years ago and wasn't even needed for the 2014 check. SLU is also constructing a new building for CS, despite having build a new for them less than 16 years ago. I don't know how I feel about it but whatever, it's a perk.

The difference isn't money, it's people. SLU and ULL CS profs have LSU profs beat by a country mile. The SLU curriculum is constantly adapted for the industry. The student focus is experience and application of the theoretical techniques. The theory classes will teach you a dictionary is faster than a list and in the project courses, which start sophomore year, you will see why and will never forget it.

Consulting firms cherry pick ULL and SLU junior project presentations for new hires while LSU CS graduates are largely unimpressive until their 3 year maturity.

So snag a used copy of the cs bible and give Doc a call.

u/timmense · 3 pointsr/cscareerquestions
u/mighty-byte · 3 pointsr/AskReddit

As other mentionned, your question is pretty hard to answer on a post, even if it is pretty interesting. But having done a bit of research in discrete math & algorithm design and being a math lover myself, I'll try to talk about why I find my area interesting.

Being a software developper, you should pretty much know what an algorithm is. Given a problem, an algorithm is a recipe/step-by-step set of instructions that, if followed exactly, solves your problem. Algorithms can be classified in a lot of categories: deterministic algorithms (given some input, you always get the same right answer), probabilistic algorithms (you get the right answer 'on average'), approximation algorithms (you get an answer that is within some (provable) factor of the optimal answer) and so on. The main measure (there are multiple others) for the performance of an algorithm is the time it takes to find an answer with respect to the size of the input you are giving it. For example, if your problem is to search through an unordered list of n items for a given item, then the trivial solution (look at every item) takes time n. This is what we call linear in n, but algorithms can run logarithmic in n (takes time log(n) ) (very fast), exponential in n (c^n for some c) (very slow) or polynomial in n (n^k for some k) (efficient).

So the fun part is to find THE best algorithm for your problem. For a particular problem, one may ask how fast can the best algorithm run. Well surprisingly, it turns out that some problems will never admit an efficient EXACT solution. I'll give an example of such problem, and then come to the main point of my discussion.

Consider a graph/network (we love these things in discrete math), which is basically a set of points/nodes/vertices that are connected by links/edges, and its size is usually the number of nodes (the maximum number of edges of a (simple) graph is n^2 - the maximum number of pairs you can make with n elements). The Internet is the best example : nodes are webpages and edges are hyperlinks between theses pages. We say that two nodes are neighbors if they are connected by an edge. A fundamental problem of discrete mathematics goes as follows: what is the minimum number k such that you can color the nodes of a graph with k colors such that not two neighboring nodes share the same color? (http://en.wikipedia.org/wiki/Graph_coloring). It turns out that this problem can be proven to be inherently hard - if we can find an efficient deterministic algorithm (we strongly believe we can't) to solve this problem, than there is an efficient (=fast) algorithm to solve many "hard" problems (ex.: proving a theorem, or solving a sudoku ! - probably not going to happen). Such hard problems are said to be NP-complete. It also turn out that most real life (interesting) problems are also that kind of hard (http://en.wikipedia.org/wiki/List_of_NP-complete_problems).

This sounds quite desperate. However, here is where the research starts. It is said that these NP-complete problems cannot have efficient DETERMINISTIC and EXACT algorithms. Nothing prevents us from producing randomized and approximate solutions. So with some clever analysis, input from other areas (read algebra, geometry, probability, ...) and other tricks, some algorithms are built to find solutions that are usually within a good factor of the optimal. Hell, some NP-complete problems (i.e. Knapsack Problem) even admit an arbitrarly precise efficient algorithm. How is this possible? Reading required!

I don't know of non-scholar books that covered this subject, but if you are motivated, here are the books I suggest:

u/jesyspa · 3 pointsr/learnprogramming

First of all, ask yourself why it is you want to do C++. It isn't the easiest or most convenient language; unless there's some specific reason you want to focus on it, there's a pretty good chance that you should (first) learn something else. If you're not sure, try this page.

As for where to learn it, the only worthwhile resources available at this moment are good books. If you have little experience with programming, I'd recommend starting with C++ Primer or Programming: Principles and Practice using C++.

u/InsidetheCentre- · 3 pointsr/learnprogramming

Me and a couple of others are learning C++ with this book, and have a study group where we discuss content & problems here. If you fancy joining feel free.

u/_rere · 3 pointsr/cscareerquestions

Hi there, fellow EE.

We should make a club :)

I believe you can do a crash course into software development and catch up later when it comes to be a better software developer, since you've already been in the market for 4 years I'm sure you know exactly what I'm talking about (job has nothing to do with education, and you can learn as you go), and I know its the same in CS, a lot of companies just want you to do specific thing, and they don't really care about your theoretical knowledge or your full knowledge with software development life cycle.


Since you are an EE graduate I think you can relatively easily land a c++ software development job, but the problem with c++ is that there is a lot of theoretical knowledge is expected from you.

Still I believe if you set aside 3 months of your lifetime and study the following:

Programming: Principles and Practice Using C++

Code Complete

introduction to algorithms

Optional:

Software Engineering

Java Heads first

C# in a nutshell

Note, half of these books will bore you to death, but you have to power through.
Also there will come times where you don't understand what you are reading, I find it best is just to keep going, eventually things will make sense.

I personally find books is the fastest way to learn, and give you the deepest knowledge and always access to awesome tips and tricks that you can't learn at class or from a video.

If you pick those books, you can read from them in parallel, make a habit of finishing a chapter per 24/48 hour and practice 1-2 hours of programming (of what you've learned) I'm sure by the end of the 3 months you will be better than a lot of CS graduates

u/hesham8 · 3 pointsr/learnprogramming

Pick up this book for $15 and work through it.

http://www.amazon.com/Objective-C-Programming-Ranch-Guide-Guides/dp/0321706285

This book is written for complete beginners so that you will learn the C programming language on OS X, and then more specifically Objective-C so that you can begin programming for iOS and Mac OS X.

It'll guide you through everything from getting your development environment (Xcode) to creating your first programs. There's also an active forum community at BigNerdRanch if you run into problems, although all of us should be able to help you as well.

In my opinion, not only do you not need Windows, but developing anything in Windows is much more difficult than in OS X. OS X is based on UNIX, which is a big deal for programming, because it gives you access to the terminal and a nix filesystem (which is identical to Linux's – most programmers would suggest you use a Linux variant such as CentOS or Ubuntu, but to be honest Mac OS X is just as viable for programming as any Linux variant).

As far as getting started goes, it's always a good idea to learn the granddaddy of most languages: C, and one of its extensions (C++ or Objective C). After that you're free to learn whichever language you want. Python is a popular choice because it's very simple (and powerful!), but I wouldn't make it your first language if you're serious about programming. Python is almost
too simple for its own good. You won't learn many of the common language conventions, which you would* learn if you learned C or Java.

There are a few free C textbooks online, but none are as beginner-friendly and OS X tailored as the one I linked above. As far as development environments go, on Mac OS X there are two important environments: Xcode, which is Apple's own development environment. It will allow you to program in C, Objective C, and NASM. And then there's Eclipse, which is a multi-platform environment that supports a whole slew of languages.

u/silverforest · 3 pointsr/IWantToLearn

I would think C rather than C++, because Objective-C is basically C with the object orientation from Smalltalk smacked onto it.

My recommendation is to pick up a book. This one (Objective-C Programming: The Big Nerd Ranch Guide) was one recommended by the iOS 5 Developer Cookbook.

u/PoisonTaffy · 2 pointsr/learnprogramming

Agile Principles, Patterns, and Practices in C#

Covers a lot of varied grounds and isn't boring to read.

u/DEiE · 2 pointsr/learnprogramming

I would place OOP and practice on the top of the list. OOP on the top because it is much broader than a single language and practice second because practice is just plain important.

Data structures and algorithms come third and fourth because they are more forgiving in practice. OP is using Python which has a lot of data structures and algorithms built in (lists, sets, sorting, etc.) so they aren't immediately needed for results. On the other hand, if you aren't utilizing OOP and abstraction the software is more likely to turn into an unmaintainable mess (although your project will have to have a certain magnitude before it comes to this point).

One of the best resources I have read on OOP is Agile Principles, Patterns, and Practices. This one is focused on C# but the principles are applicable much more broadly.

Don't get me wrong, all are important, this is just the way I would prioritize.

u/binarybabe · 2 pointsr/TwoXChromosomes

I've found that I gained most of my best experience on the job, and that staying at a job where I wasn't learning anything was a huge mistake and detriment to my career.

That said... I don't think I'm a super genius either. I did well in college and my GPA helped with my first few jobs. But I have lots of hobbies outside of work, and rarely spend my time at home thinking about the office. A lot of times companies aren't looking for the super genius type either... if they were they'd have a hard time filling staffing requirements. I think the keys are learning how to interview well, focusing on letting the interviewer know that you're willing and good at learning and having the basics of OOO down to a T. Come off as confident, even if you don't feel it. It never hurts.

As far as books go, here are some of my favorites:


Programming Interviews Exposed


Programming Pearls


Refactoring



I'm mostly a java programmer, so here are three absolutely necessary java books:


Head First Design Patterns


Core Java 1


Core Java 2 - Advanced


u/sgmctabnxjs · 2 pointsr/programming

It's a search algorithm which divides up the solution space using binary search.

See Programming Pearls by Jon Bentley for an interesting investigation of the ubiquity of binary search.

u/welshfargo · 2 pointsr/compsci
u/shagieIsMe · 2 pointsr/programming

In college, I probably wouldn't have cared and had it end up as a fluff class (if it got offered at all, academia is notoriously different than the industry). There was far too many other things to learn. As it was I took intro, mips assembly, digital logic, data structures, compilers, operating systems, theory of programming languages (imperative and functional), theory (the regex to Turing machine), AI, and numerical methods - and that filled up all of my CS degree requirements.

In the mean time, I've found a few books that do capture some of this philosophy. Probably the best is Programming Pearls, though there's some in The Mythical Man Month too. (And yes, this time it is something I wrote...) my list of Five books every programmer should read captures some of that.

The post Ruby’s Principle of Too Much Power is a good read about what happens with too much power.

I do suspect much of this comes from our generation and the code philosophy we (or at least I) was brought into back in college. From that W3 link:

> Computer Science in the 1960s to 80s spent a lot of effort making languages which were as powerful as possible.

More powerful languages to hide the complexity more. C++ and Java came into the world with the idea of encapsulation and private variables - OO coming into vogue. Everything was "more power" (and I have Tool Time flashbacks here). It took two or three decades to come to terms with "too much power is not a good thing."

... and yes, this is finding its way to a blog post of my own.

u/jimauthors · 2 pointsr/compsci

Expert C Programming : Read this after reading K&R C book.
Programming Pearls : Excellent Book
Algorithm design manual : Read it after CLRS.

u/JohnKog · 2 pointsr/compsci

A lot of good mentions here. Although they're more programming and engineering than "computer science", I would add Design Patterns by the Gang of Four, and
Programming Pearls by Jon Bentley.

u/winner123 · 2 pointsr/programming

Programming Pearls by Jon Bentley

u/suhcoR · 2 pointsr/Qt5

Well, this is what most people understand by "modern C++": https://www.amazon.com/Modern-Design-Generic-Programming-Patterns/dp/0201704315; it was published 2001.

Actually Qt offered an equal or even better solution for most features introduced with C++11 alread long before 2011. At least for me C++11 brought little benefit.

u/skebanga · 2 pointsr/cpp

I would also suggest to follow these up with Modern C++ Design by Andrei Alexandrescu, which really opens your eyes to the power of C++ templates and template meta programming.

u/TimMensch · 2 pointsr/programming
  1. If you think that C++ isn't harder to learn than C, then you don't really know C++. Read Modern C++ Design, and a few dozen pages of the C++ FAQ, and if your head doesn't explode, tell me again that C++ isn't harder to really learn than C.
  2. I know the Linus article. I know he's competent. But I still don't agree; I think he's so steeped in his kernel code world that he doesn't see the advantages, at least for application software.
  3. Anyone who writes code in C++ but who doesn't know pointers, can't concat strings, etc., is someone who also really doesn't know C++.

    Someone who doesn't really know C++ can do things in C++ and be productive, but keep them away from writing templates, macros, and/or doing anything with pointers. The right library can protect amateurs from shooting themselves in the foot, at least too often; that's why people talk about using a "subset of the language."

    I'm a game developer. It's still the case that most serious game developers demand C++, and for good reason.

    For reference: I've interviewed dozens of developers applying for a C++ game development job. Most rate themselves 9 to 10/10 in C++, and yet most also choke when I start asking them even slightly interesting questions about the language. Not even the standard (or any other) libraries -- just about the core language. This is all stuff I know like the back of my hand -- and I know that there are things in C++ that I couldn't just get right the first time (see Modern C++ Design for a few examples).
u/ChrisFingaz · 2 pointsr/learnprogramming

Starting this off as saying that I work primarily in iOS and mac environments. I think PCs are great and apple is overpriced but I really enjoy it and I love Swift so whatever.

If you're building applications in Windows most people seem to start with Visual Studio. There's a ton of resources, frameworks, libraries, and a large community for it. At the very least it's probably a good place to start. For C++ development maybe start here: https://msdn.microsoft.com/en-us/windows/uwp/get-started/create-a-basic-windows-10-app-in-cpp

Now for your broader question of application development, I would start with the Gang Of Four for code design. These aren't easy concepts to get right off the bat, it's putting in some reps before it becomes natural. You'll never use just one either, most projects become a mesh of different design concepts and there's way more than 4. I recommend coming up with a simple project to build on your own and then attempting to architect that from a high level before coding. Then actually building it. It's really the only way to learn. For C++ reading maybe check this out (not 100% on this, I don't do much with C++, but seems recommended as an update for the original Gang of Four): http://www.amazon.com/dp/0201704315/

Another book: http://www.amazon.com/dp/0735619670/

it's from this list: http://blog.codinghorror.com/recommended-reading-for-developers/

This all said, don't get bogged down in books. Read enough to feel comfortable starting something then start it.

u/arabidkoala · 2 pointsr/cpp_questions

The problem here is that of the three "overrides" of colideWithObject that you defined, only bool collideWithObject(Object* obj) is actually an override. If you put the override keyword at the end of each statement function in Circle (Assuming c++11), you will see the problem. see here

What you are trying to achieve is called multiple dispatch (aka multimethods), which requires some legwork in C++. I remember a good method of doing this described in chapter 11 of Modern C++ Design.

u/George3d6 · 2 pointsr/cpp

Well, in that case I would recommend using C++ to do it, if you can compile using a recent~ish version of clang or gcc for your environment and using the standard library (aka the std or the stl) as much as possible, it's a very OO library so by using it you will understand how OO can be helpful and you can look at it's design to understand how to write things similar to it.

If you want books I would recommend Scott Mayer's Effective Modern C++ (if you are familiar with C and/or older C++) or Brine Startrooper's A Tour of C++ if you are not that familiar with programming in general.

Alternatively, if you want a book about OOP design patterns, there are tow classics that come to mind:
Gang of four (http://wiki.c2.com/?DesignPatternsBook)
Modern C++ Design(https://www.amazon.co.uk/Modern-Design-Generic-Programming-Patterns/dp/0201704315)

For more up to date stuff, watch talks, look at code or look for less popular "up and coming" books.

Keep in mind that your goal shouldn't be to use OOP because you want to use OOP but to use OOP because it helps you reason about things.

OOP can easily result in slow code (similar sized data will not be localized, resulting in inefficient access), horrible design patterns (most beginners will make the mistake of writing large objects that have two many responsabilites) and hard to read code and change code (due to, sometimes useless, coupling between data an algorithms).

If you want to see some interesting takes on OOP check out Scala and Akka's actor library, actors are a thought provoking distributed design pattern that is fun to write and Scala is arguably "the purest OO" language that is widely used today.

Overall write code that works and is easy to modify, use a lot of language and libraries to familiarize yourself with as many aspects of technology as possible.

And remember "objects are burritos", they are simply an abstraction that is used by a wide array of programmer and as such they mean different things from different people.

u/reventlov · 2 pointsr/programming

First, be prepared to write code that sucks and is unmaintainable for a while. (This could be months or years.)

If you only know Java, then you'll need some C concepts. In particular, you need to become familiar with pointer arithmetic, avoiding buffer overruns, and manual memory management. (C++ has ways (RAII) to make manual memory management less error-prone, but you still need to understand what's going on.)

To learn the basics of the language, read The C++ Programming Language, Special Edition, by Bjarne Stroustrup.

Read a lot of things by Herb Sutter and Andrei Alexandrescu. I particularly recommend Modern C++ Design and Exceptional C++; I'm sure others in this thread can give you some good suggestions.

Finally, start writing code, and get it critically reviewed by someone who really knows C++. (I've known 2 or 3 such people in my career; they exist but are the exception, not the rule. Look for people who can explain all the things I listed, and more.)

(Edited to add The C++ Programming Language.)

u/Crazy__Eddie · 2 pointsr/learnprogramming

I have not made anything up. I've described the long-standing accepted definition of the term. You don't just get to claim I'm making stuff up as if it were fact, sir.

> "smart pointer" is not a catch-all for any object with pointer-like behavior.

And that's not the way I described it. A smart pointer is an object that behaves like a regular pointer but is smarter in some way.

> Smart pointer (as opposed to a "dumb" or "raw" pointer) is a C++ structure that behaves almost identically to a common C pointer but it also includes some other capabilities, e.g. throws an exception when it's NULL and someone tries to dereference it, or it destroys its contents automatically when it goes out of scope.

http://www.csc.lsu.edu/~kosmas/smartPointers.html

> In computer science, a smart pointer is an abstract data type that simulates a pointer while providing additional features, such as automatic memory management or bounds checking.

http://en.wikipedia.org/wiki/Smart_pointer

> Smart pointers are objects that look and feel like pointers, but are smarter. What does this mean?

> To look and feel like pointers, smart pointers need to have the same interface that pointers do: they need to support pointer operations like dereferencing (operator *) and indirection (operator ->). An object that looks and feels like something else is called a proxy object, or just proxy. The proxy pattern and its many uses are described in the books Design Patterns and Pattern Oriented Software Architecture.

http://ootips.org/yonat/4dev/smart-pointers.html

> So what's a smart pointer? A smart pointer is a C++ class that mimics a regular pointer in syntax and some semantics, but it does more.

>...

> This is the mantra of smart pointers: You can replace pointer definitions with smart pointer definitions without incurring major changes to your application's code. You thus get extra goodies with ease.

http://www.amazon.com/Modern-Design-Generic-Programming-Patterns/dp/0201704315

And finally http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Smart_Pointer

Although I don't agree with most of the intent and motivation sections in that one and would never implement handle/body in that manner.

u/markgraydk · 2 pointsr/algorithms

I liked Algorithm Design. It's not really that more advanced but does a good job at expanding on the design and use of algorithms. It's good for bridging that gap from a theoretical course based off Cormen to real-life application of algorithms, which I think is a problem many CS students run into.

u/rafiss · 2 pointsr/AskComputerScience

I think these lecture slides are great. They are meant to go along with the book Algorithm Design, which does have a few sample chapters available. The slides and book do a good job of coming up with understandable, and often practical, examples.

u/e_vampire · 2 pointsr/compsci

Either Introduction to Algorithms

or Algorithm Design

Those books were the textbooks for the algorithm and data structures courses, respectively during my bachelor and master's degree in computer science, I find both of them really well written.

u/benkitty · 2 pointsr/learnprogramming

Kleinberg Tardos is an excellent, if more recent, book that emphasizes theory. It's especially good with reductions to graph algorithms, since the two authors are arguably some of the best graph theorists alive.

u/JAPH · 2 pointsr/compsci

$50 for the 2006 edition? I'm not sure I would count that as "incredibly expensive".

But yes, the CLRS is a must-have. Almost every intermediate-high level algorithms course I've seen at any university uses the CLRS.

I've also used Kleinberg's Algorithm Design back for some 200-level algorithms course.

u/fireatx · 2 pointsr/algorithms

Not either of those, but I can vouch for Algorithm Design. Really innovative practice problems, and they provide some really awesome, novel explanations for concepts.

u/obiwan90 · 2 pointsr/cpp_questions

Stroustrup's "Programming - Principles and Practice Using C++", starting at $5.40 used at Amazon

u/xRehab · 2 pointsr/personalfinance

And if that is what you want to do then there will always be jobs that require you to write code, but those aren't the only jobs available to people with a CS degree. I got my degree with no intent of writing code in the long term, I've always loved the analytics side of things and the systems integrations; the actual use between client, employee and system. And CS degrees teach more than how to program, they teach how to think logically like a programmer which is a huge boost to everything else you'll do later on.

Personally haven't used the Harvard site before but if you want to learn it yourself try and pick up Stroustrup's book on C++ programming.. One of my favorite books I have ever used, cheap, and written by the guy who literally invented modern day C++. If you can successfully implement the first half of his book, and understand why it all works, you'll be way ahead of most CS students. After that it's just applying OOP to other languages and practicing with bigger personal projects that use new languages/tech until you've sampled a ton of stuff and built a few multilayered projects.

u/MarioV2 · 2 pointsr/unt

Linux Journey is pretty good. I think the "Grasshopper" section should be more than enough for 1030. You can skip the getting started part and follow this guide to get a linux distribution on your Windows 10.
If you don't have windows 10 then ¯\_(ツ)_/¯


And I think the book for that class is Programming: Principles and Practice Using C++ by Stroustrup. You can probably find a .pdf of it online though.

u/ChristianTaz · 2 pointsr/learnprogramming

Actually I think the book he's referring to may be Programming Principles and Pratice written by the original designer of C++. Many consider it one of the best books for beginners to learn programming principles and the C++ language. The author also explicitly says it is not a reference book and that it is best to go through chapter by chapter.

Of course, I could also be assigning meaning to nothing. I'm just going off the fact that the book is like 1300 pages and is popular for people trying to learn C++.

But the answer to this would still be no. You would need to code a lot in addition to reading the 1300 page tome.

u/Gankbanger · 2 pointsr/learnprogramming

Programming: Principles and Practice Using C++ by Bjarne Stroustrup, the creator of C++.

He wrote this book for an entry level engineering course he teaches at Texas A&M University.

The table of contents of this book look very similar to the contents on your class, plus some more:

Chapter 1: Computers, People, and Programming 17
1.1 Introduction 18
1.2 Software 19
1.3 People 21
1.4 Computer science 24
1.5 Computers are everywhere 25
1.6 Ideals for programmers 34
Part I: The Basics 41
Chapter 2: Hello,World! 43
2.1 Programs 44
2.2 The classic first program 45
2.3 Compilation 47
2.4 Linking 51
2.5 Programming environments 52
Chapter 3: Objects, Types, and Values 59
3.1 Input 60
3.2 Variables 62
3.3 Input and type 64
3.4 Operations and operators 66
3.5 Assignment and initialization 69
3.6 Composite assignment operators 73
3.7 Names 74
3.8 Types and objects 77
3.9 Type safety 78
Chapter 4: Computation 89
4.1 Computation 90
4.2 Objectives and tools 92
4.3 Expressions 94
4.4 Statements 99
4.5 Functions 112
4.6 Vector 116
4.7 Language features 123
Chapter 5: Errors 131
5.1 Introduction 132
5.2 Sources of errors 134
5.3 Compile-time errors 134
5.4 Link-time errors 137
5.5 Run-time errors 138
5.6 Exceptions 144
5.7 Logic errors 152
5.8 Estimation 155
5.9 Debugging 156
5.10 Pre- and post-conditions 161
5.11 Testing 164
Chapter 6: Writing a Program 171
6.1 A problem 172
6.2 Thinking about the problem 173
6.3 Back to the calculator! 176
6.4 Grammars 186
6.5 Turning a grammar into code 193
6.6 Trying the first version 201
6.7 Trying the second version 206
6.8 Token streams 207
6.9 Program structure 213
Chapter 7: Completing a Program 219
7.1 Introduction 220
7.2 Input and output 220
7.3 Error handling 222
7.4 Negative numbers 227
7.5 Remainder: % 228
7.6 Cleaning up the code 231
7.7 Recovering from errors 238
7.8 Variables 241
Chapter 8: Technicalities: Functions, etc. 253
8.1 Technicalities 254
8.2 Declarations and definitions 255
8.3 Header files 261
8.4 Scope 264
8.5 Function call and return 269
8.6 Order of evaluation 287
8.7 Namespaces 290
Chapter 9: Technicalities: Classes, etc. 299
9.1 User-defined types 300
9.2 Classes and members 301
9.3 Interface and implementation 302
9.4 Evolving a class 304
9.5 Enumerations 314
9.6 Operator overloading 316
9.7 Class interfaces 318
9.8 The Date class 328
Part II: Input and Output 337
Chapter 10: Input and Output Streams 339
10.1 Input and output 340
10.2 The I/O stream model 341
10.3 Files 343
10.4 Opening a file 344
10.5 Reading and writing a file 346
10.6 I/O error handling 348
10.7 Reading a single value 352
10.8 User-defined output operators 357
10.9 User-defined input operators 359
10.10 A standard input loop 359
10.11 Reading a structured file 361
Chapter 11: Customizing Input and Output 375
11.1 Regularity and irregularity 376
11.2 Output formatting 376
11.3 File opening and positioning 384
11.4 String streams 390
11.5 Line-oriented input 391
11.6 Character classification 392
11.7 Using nonstandard separators 394
11.8 And there is so much more 401
Chapter 12: A Display Model 407
12.1 Why graphics? 408
12.2 A display model 409
12.3 A first example 410
12.4 Using a GUI library 414
12.5 Coordinates 415
12.6 Shapes 416
12.7 Using Shape primitives 417
12.8 Getting this to run 431
Chapter 13: Graphics Classes 437
13.1 Overview of graphics classes 438
13.2 Point and Line 440
13.3 Lines 443
13.4 Color 445
13.5 Line_style 448
13.6 Open_polyline 450
13.7 Closed_polyline 451
13.8 Polygon 453
13.9 Rectangle 455
13.10 Managing unnamed objects 459
13.11 Text 462
13.12 Circle 464
13.13 Ellipse 466
13.14 Marked_polyline 468
13.15 Marks 469
13.16 Mark 470
13.17 Images 472
Chapter 14: Graphics Class Design 479
14.1 Design principles 480
14.2 Shape 485
14.3 Base and derived classes 496
14.4 Benefits of object-oriented programming 504
Chapter 15: Graphing Functions and Data 509
15.1 Introduction 510
15.2 Graphing simple functions 510
15.3 Function 514
15.4 Axis 518
15.5 Approximation 521
15.6 Graphing data 526
Chapter 16: Graphical User Interfaces 539
16.1 User interface alternatives 540
16.2 The “Next” button 541
16.3 A simple window 542
16.4 Button and other Widgets 548
16.5 An example 552
16.6 Control inversion 556
16.7 Adding a menu 557
16.8 Debugging GUI code 562
Part III: Data and Algorithms 567
Chapter 17: Vector and Free Store 569
17.1 Introduction 570
17.2 vector basics 572
17.3 Memory, addresses, and pointers 574
17.4 Free store and pointers 577
17.5 Destructors 586
17.6 Access to elements 590
17.7 Pointers to class objects 591
17.8 Messing with types: void* and casts 593
17.9 Pointers and references 595
17.10 The this pointer 603
Chapter 18: Vectors and Arrays 611
18.1 Introduction 612
18.2 Copying 613
18.3 Essential operations 620
18.4 Access to vector elements 625
18.5 Arrays 627
18.6 Examples: palindrome 637
Chapter 19: Vector, Templates, and Exceptions 645
19.1 The problems 646
19.2 Changing size 649
19.3 Templates 656
19.4 Range checking and exceptions 668
19.5 Resources and exceptions 672
Chapter 20: Containers and Iterators 685
20.1 Storing and processing data 686
20.2 STL ideals 690
20.3 Sequences and iterators 694
20.4 Linked lists 698
20.5 Generalizing vector yet again 703
20.6 An example: a simple text editor 704
20.7 vector, list, and string 711
20.8 Adapting our vector to the STL 715
20.9 Adapting built-in arrays to the STL 718
20.10 Container overview 719
Chapter 21: Algorithms and Maps 727
21.1 Standard library algorithms 728
21.2 The simplest algorithm: find() 729
21.3 The general search: find_if() 732
21.4 Function objects 734
21.5 Numerical algorithms 738
21.6 Associative containers 744
21.7 Copying 757
21.8 Sorting and searching 762
Part IV: Broadening the View 769
Chapter 22: Ideals and History 771
22.1 History, ideals, and professionalism 772
22.2 Programming language history overview 783
Chapter 23: Text Manipulation 813
23.1 Text 814
23.2 Strings 814
23.3 I/O streams 819
23.4 Maps 820
23.5 A problem 828
23.6 The idea of regular expressions 830
23.7 Searching with regular expressions 833
23.8 Regular expression syntax 836
23.9 Matching with regular expressions 844
23.10 References 849
Chapter 24: Numerics 853
24.1 Introduction 854
24.2 Size, precision, and overflow 854
24.3 Arrays 859
24.4 C-style multidimensional arrays 859
24.5 The Matrix library 861
24.6 An example: solving linear equations 872
24.7 Random numbers 877
24.8 The standard mathematical functions 879
24.9 Complex numbers 880
24.10 References 882
Chapter 25: Embedded Systems Programming 887
25.1 Embedded systems 888
25.2 Basic concepts 891
25.3 Memory management 897
25.4 Addresses, pointers, and arrays 905
25.5 Bits, bytes, and words 916
25.6 Coding standards 935
Chapter 26: Testing 949
26.1 What we want 950
26.2 Proofs 952
26.3 Testing 952
26.4 Design for testing 978
26.5 Debugging 979
26.6 Performance 979
26.7 References 983
Chapter 27: The C Programming Language 987
27.1 C and C++: siblings 988
27.2 Functions 994
27.3 Minor language differences 1002
27.4 Free store 1009
27.5 C-style strings 1011
27.6 Input/output: stdio 1016
27.7 Constants and macros 1020
27.8 Macros 1021
27.9 An example: intrusive containers 1025

u/jtbrown · 2 pointsr/learnprogramming

I would highly recommend just diving in with Objective-C. Skip all the other languages - they'll just slow you down. The Big Nerd Ranch Objective-C Programming book is an excellent way to get started with programming in general, and you get to learn Objective-C (of course). Here's the link: http://www.amazon.com/Objective-C-Programming-Ranch-Guide-Guides/dp/0321706285

I've written a bit more on my blog based on my experience - it's a bit different from yours, since I already had Java experience when I learned Objective-C, but you certainly don't need to learn another language first. Here it is: http://roadfiresoftware.com/2014/03/can-i-learn-objective-c-without-knowing-c/

u/Adams_Apples · 2 pointsr/learnprogramming

> Maybe now is a good time to step back and consider what kind of programming job you might want to target.

This is definitely something you should keep in mind. Try to become really awesome at one thing. That's not to say you shouldn't have a well rounded education in programming, just that someone who is simply ok at everything isn't getting a job anywhere.

Here are a few texts which I consider to be great for a novice programmer:

The C Programming Language : ANSI C

It's an older book, but it's still the best book to learn the language.

C++ Primer : C++

I used this book to get started with C++, and found it to be easy to follow and informative. Some say it's not a beginner book per-se, they may be right. I was already very familiar with C when I started.

Objective-C Programming: The Big Nerd Ranch Guide : Objective-C

If you're planning to write apps for Apple's iOS and OS X platforms, you're definitely going to need to learn this. Otherwise, don't bother.

Algorithms : Algorithms / Data Structures

This is not the be and end all authority on algorithms, but it's a great book. It's less theoretical and more concrete in my opinion.

I don't feel qualified to give recommendations for other topics like Java or web development, as those aren't really my strong suits. Happy hunting!

u/goldfire · 2 pointsr/computing

If you can get another book, I would recommend this one; it is basically written to be the other book's only prerequisite, so it will take you through the language without assuming that you already know anything at all. As far as Internet tutorials, the first thing I found in a quick search that makes similarly few assumptions is this. There may be others, I'll try to look more later.

Keep in mind also that, if you want to write iOS applications, you're going to need either a Mac or some kind of hackintosh, because the tools you will need run only on Mac OS.

u/firstmanonmars · 2 pointsr/IWantToLearn

This book by Aaron Hillegass is what I consider to be the bible for noobs. He's an amazing teacher.

Objective-C Programming: The Big Nerd Ranch Guide

I've been writing Objective-C for a decade now and writing iPhone apps since Apple first launched their SDK, and since wayyy back in the Mac-only days I've always referred people to "the Hillegass book".

u/cupuz · 2 pointsr/iOSProgramming

I'm considering starting off with this and then moving onto this book

u/mutatedllama · 2 pointsr/ios

I'm currently working through the Big Nerd Ranch books which are fantastic. They have such a good way of teaching - you are constantly writing code and there are a lot of challenges for you to complete at the end of chapters. I picked them up after recommendations from many other redditors.

They have two books:

  • Objective-C Programming - for those with no previous Objective-C experience.
  • iOS Programming - for those who have worked through the above book &or those who already have a good understanding of Obj-C.

    I started with the first and would definitely recommend both.
u/fndmntl · 2 pointsr/learnprogramming

Before you read any iPhone-specific development books, you're going to want a good understanding of the C and Objective-C language. Trust me, building a good foundation will help you immensely down the road. I can't recommend this book highly enough. http://amzn.com/0321706285

u/TheMiamiWhale · 2 pointsr/iOSProgramming

Ray Wenderlich's site has great tutorials. I'd strongly encourage you to work through these books - they should give you a pretty strong foundation:

  • Programming in Objective-C - this will also give you a primer/background in C language features as well.

  • BNR's Objective-C Programming - great overview of the language

  • BNR's iOS Programming

    Ray Wenderlich also has some Swift tutorials but if you are just starting out I'd focus more on Objective-C for now as it will be very useful to know when looking at libraries that aren't ported to Swift.
u/spunkerspawn · 2 pointsr/cscareerquestions

Learn Android or iPhone development. Here are two resources for you:

Android: http://developer.android.com/index.html
iPhone: http://www.amazon.com/iOS-Programming-Ranch-Edition-Guides/dp/0321942051

Have fun learning!

u/rkho · 2 pointsr/learnprogramming

I found this book to be extremely helpful: http://www.amazon.com/Programming-Objective-C-Edition-Developers-Library/dp/0321967607

It assumes two things:

  1. You don't have any prior experience in programming.

  2. You are competent enough to comprehend logic when presented in a simple manner.
u/boyfarrell · 2 pointsr/ObjectiveC

I was in your position about ten years ago. The book that made it all click for me was Programming in Objective-C. In it Steven Kochan walks the read through the core principles of object orientated programming. As you said you are a complete beginner this seems like an ideal place to start.

Once you have the fundamental understood I would then recommend trying to build some simple apps. Follow these video tutorials, Apple Programming (YouTube).

u/oureux · 2 pointsr/iOSProgramming

2008-2009: Took 3 High school level Computer Engineer/Science courses and studied Assembly Language Robotics (This is where I really took up an interest in programming)

2010-2012: Attended Humber College (Toronto, Ontario, Canada) for a multimedia course that mainly focussed on web development.

2011-2013: While still in school and for a bit afterwards I worked at a company that did AS3 based facebook games and then ported them over to iPad using Objective-C (This is where I was transitioned over to iOS programming)

2013-Now: I've worked at many companies in different roles from junior->lead.

My learning basically was from trial and error, and not from being scared to just jump into large projects. You really shouldn't because it could put you off but I was in the state of mind that this is my career and I love learning new things so one of my first major personal projects was an RPG game engine made from scratch for iOS. It didn't use ARC, IB, or any 3rd party frameworks (When I was first taught Objective-C I was told this is how it should be so I continued down that road). I was very proud of what I was able to accomplish as such a Junior developer. I did go onto making more apps, for example: Sky and being on development teams, for example: BNN GO.

Books: Programming-Objective-C-6th & C-Programming-Language-2nd are the two books I read when starting out and sometimes reference or read them still.

Future: I hope to teach myself to be more patient as a developer and not jump the gun on features being "prematurely" completed or bugs being fixed. I believe this is a problem a lot of developers suffer from and could be seen as ADD-Developers if you will. I would like to crack down on this personally because I find myself shifting towards more of a lower level, application architecture role and will need to be more sure of my code as it would hold together the application in a sense.

u/Jeremy1026 · 2 pointsr/IAmA

I totally skipped the 2nd question you asked there, sorry about that. Find $32.48 in between the couch cushions, go to Amazon, and buy Programming in Objective-C by Stephen Kochan. Here is a link: http://www.amazon.com/Programming-Objective-C-Edition-Developers-Library/dp/0321967607 Read this book, work through it. Then do it again. This will give you a great base to build off of.

u/jeromius · 2 pointsr/webdev

I'd highly recommend checking out this book: JavaScript: The Definitive Guide - it covers everything you need to know in an easy to read way - I still keep a copy on my desk as a reference, one of the best books on the subject.

u/raze2012 · 2 pointsr/learnprogramming

honestly, the site looks better tailored towards JS than the resources I used back in the day to learn. The generic things I do for a new language is:

  • look at learnxinyminutes.com to get a feel for syntax
  • try and do some problems on hackerrank.com to practice (it's easier than coming up with and verifying problems by myself IMO)
  • google for important tools/ides/plugins that people like to use with the language after I get a feel for the core language (Don't obsess too much on this step. Or even feel compelled to use these tools. This is just so that I know they exist in the case I'll need a larger scale project done.

    for JS specifically, all I'd suggest is to keep using that site if it works, and get comfortable looking through/googling the mozilla docs (closest thing to a Javadoc, I guess). I'd normally point to this book as an offline referece, but JS has changed a lot since the last edition. I'd wait until a new edition comes out before jumping on it.



u/U3011 · 2 pointsr/web_design

Here's a good list I keep posting because people often ask the same question - not like it's a bad thing.

In any case follow the below, but I really suggest for total newbies to first go through the course Codecademy offers. It won't teach you much in how to do things but the syntax education is good. Follow their HTML and CSS courses and when you're done, create a site using just HTML and CSS. Once done, try to emulate a few of your favorite sites using just these two languages.

Once done you should check out the free 30 day Tutsplus courses on HTML/CSS and jQuery. At some point you will want to go back to Codecademy and take their JS course. Syntax and method of doing or starting certain things is important. It's incredibly easy to pickup the actual methods of doing things once your head understands the syntax used.

Any form of education that follows a hierarchical format makes for easy learning.
__


Codecademy isn't bad. It won't teach you much in the way of doing things but it does teach you the way to type out code, the general process and stuff. I can't speak for myself because I work as a professional developer and have been tinkering with code for 10 years now, but I did give the first lesson to one of my brothers. He's not great with computers or the Internet, but he was able to follow the first two sections of the basic HTML/CSS course and able to make his own site albeit very basic in nature nearly a month later (3 week gap following him doing the lessons). He was able to do a rough basic site of his Facebook profile, and he nailed it. It should open doors for you in terms of having the basic knowledge of how to do things. It'll allow you to read more advanced stuff and pick it up much faster than if you hadn't.

Below is a list I sent to someone on here a while back.

>
>http://www.reddit.com/r/webdev/comments/1eqaqo/best_books_or_online_resources_for_comprehensive/ca2w2dn?context=3



>PHP and MySQL Web Development (4th Edition)
>
>Beginning PHP and MySQL: From Novice to Professional
>
>Read the second book, do all the examples, then go back to the first book. Pay a lot of attention toward array manipulation. When you're comfortable with that, get into OOP. Once you do and OOP clicks for you, you'll be able to go to town on anything. I've heard a lot of good about Jefferey Way's video lesson courses over at TutsPlus. I've never used them nor do I need to, but I've never heard a single bad thing about their video courses. Their Javascript and Jquery is a great starting point. This is great stuff too if you're willing to put in the time.
>
>Professional JavaScript for Web Developers
>
>JavaScript: The Definitive Guide: Activate Your Web Pages
>
>Responsive Web Design with HTML5 and CSS3
>
>The Node Beginner Book
> Professional Node.js: Building Javascript Based Scalable Software
>
>Paid online "schooling":
>
>http://teamtreehouse.com/
>
>http://www.codeschool.com/
>
>Bonus:
>
>http://hackdesign.org/
>
>
>I've got a shit ton (Excuse my French) of books in print and E-Format that I could recommend, but it would span a couple pages. Anything is easy to learn so as long is it's served in a hierarchical format that makes it easy to absorb the information. A year ago I started to learn Ruby and using ROR as a framework. I can say it's been quite fun and I feel confident that I could write a fully complete web app using it. I started node.JS a few months ago, but it's been on break due to being sick and some unexpected events.
>
>My knowledge is extensive only because I wanted it to be. I'm not gifted by any means nor am I special. Not by a longshot. Some people are gifted when it comes to dev and design, most are not. Most only know one or the other. I forced myself to learn and be good at both. I'm 23, I started when I was about 12. I'm only breathing more comfortably now. I know a load of people on here and other sites who make me look like complete shit.
>
>
>Also for what it's worth, sign up to StackOverflow. It's the bible and holy grail rolled up into one site. It's amazing.
>
>Also;
>
>Hattip to /u/ndobie
>
>> CodeAcademy
>
Team Treehouse
> CodeSchool. This is more programming but still very useful & has free stuff.
>
Tuts+
> Google. Probably the best way to find out how to do something specific.
>
This subreddit. If you have any questions about how to do something, like parallax scrolling, try searching for it, then ask, make sure to include an example of what you want if you don't know what it is called.

u/DingDongHelloWhoIsIt · 2 pointsr/java
u/ZeroBugBounce · 2 pointsr/learnprogramming

The book CLR via C# is great on going in depth on these topics, so as long as you know the basics, this book can really fill out the details.

I would highly recommend it.

u/developerinsoul · 2 pointsr/csharp
u/anonymousbjj · 2 pointsr/dotnet

If anyone is interested in exploring this, the CLR does a lot more than just compile VB and C# to native code. Here is a book that will show you much more: http://www.amazon.com/CLR-via-Edition-Developer-Reference/dp/0735667454

Note: This is not a beginner book.

(EDIT) Technical error.

u/snarfy · 2 pointsr/dotnet

CLR via C#

.NET reference source. The gritty stuff is in mscorlib.

u/HexCC · 2 pointsr/ReverseEngineering

Thanks for the list. I've been recommended Reversing: Secrets of Reverse Engineering by a friend but it didn't make this list. Does anyone know why?

u/MHHH_SALTY_BALLS · 2 pointsr/gamedev

Even if you don't plan on writing your bots in C/C++, you should still understand how most commonly used compilers compile them to native code.
Most games* are written in C/C++, although .NET ones seem to be gaining popularity.
Once again, assuming Windows, it's usually enough to know how MSVC works.

It's hard to summarize what exactly is 'necessary', as a lot of this comes with experience and some trial & error, but I'll try it anyway:

u/sanitybit · 2 pointsr/netsec
u/arvindsraj · 2 pointsr/netsecstudents

Reversing: Secrets of reverse engineering by Eldad Eilam by Eldad Eilam could be included in the reverse engineering section.

u/daeken · 2 pointsr/IAmA

Only book I recommend is Reversing by Eldad Eilam (affiliate link if you feel like it: http://www.amazon.com/gp/product/0764574817/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0764574817&linkCode=as2&tag=iha0a-20 )

Otherwise, I just recommend diving in and asking questions of everyone you possibly can. Feel free to contact me, should you want to do so.

u/Grazfather · 2 pointsr/ReverseEngineering

Hah. Just got my order of "Reversing: Secrets of Reverse Engineering" in recently. I'll have to finish that, first.

u/ivosaurus · 2 pointsr/PHP

http://www.youtube.com/watch?v=iCUV3iv9xOs&feature=list_related&playnext=1&list=SP442FA2C127377F07

Followed by http://www.amazon.com/dp/143022925X/

When you're beginning in PHP, remember that the code that you write at first will be almost surely very insecure in some way or another. Now no-one is perfect at security, but just keep this in the back of your mind while you're learning :)

u/SteelCity905 · 2 pointsr/PHP

PHP Objects, Patterns and Practice - Expert's Voice in Open Source -

I am only on page 65 and I got a good grasped of OOP.


Building PHP Applications with Symfony, CakePHP, and Zend Framework

Another great book. Especially if you havent decided which framework to go with.

u/slowfly1st · 2 pointsr/learnprogramming

Your foes are kids in their twenties with a degree which takes years to achieve, this will be tough! But I think your age and your willingness to learn will help you lot.

​

Other things to learn:

  • JDK - you should be at least aware what API's the JDK provides, better, have used them (https://docs.oracle.com/javase/8/docs/). I think (personal preference / experience) those are the minimum: JDBC, Serialization, Security, Date and Time, I/O, Networking, (Internationalization - I'm from a country with more than one official language), Math, Collections, Concurrency.
  • DBMS: How to create databases and how to access them via JDBC. (I like postgreSQL). Learn SQL.
  • Learn how to use an ORM Mapper. (I like jOOQ, I dislike JPA/hibernate)
  • Requirements Engineering. I think without someone who has the requirements you can't really practice that, but theory should be present. It's a essential part of software development: Get the customers requirements and bring it to paper. Bad RE can lead to tears.
  • Writing Unit Tests / TDD. Having working code means the work is 50% done - book recommendation: Growing Object-Oriented Software, Guided by Tests
  • CI/CD (Continuous Integration / Delivery) - book recommendation: Continuous Delivery.
  • Read Clean Code (mandatory!)
  • Read Design Patterns (also mandatory!)
  • (Read Patterns of Enterprise Application Architecture (bit outdated, I think it's probably a thing you should read later, but I still love it!))
  • Get familiar with a build tool, such as maven or gradle.

    ​

    If there's one framework to look at, it would be spring: spring.io provides dozens of frameworks, for webservices, backends, websites, and so on, but mainly their core technology for dependency injection.

    ​

    (edit: other important things)
u/MrKurtHaeusler · 2 pointsr/software_design

Possibly one or both of Bob Martin's books.
Agile Software Development, Principles, Patterns, and Practices (comes as a Java or C# version, but many of the ideas will probably be useful if you are using an OO language) or
Clean Code

u/crack3rtastic · 2 pointsr/PHP
u/shhh-quiet · 2 pointsr/learnprogramming

You mentioned some issues that sound like code cleanliness and structural issues. Getting better at algorithms really comes down to practice and exposure, there's no shortcut to this. But there's no reason to suffer from bad coding practices if there's room to improve.

A few books come to mind, which may seem like they're coming from left field, and may not seem immediately useful to the task of solving algorithm puzzles, but might be useful in the long term for you to learn how to write correct, clean code and reduce uncertainty:

  • Code Complete 2. Some good tips in here regarding code cohesion, and how to write functions and classes cleanly.
  • Clean Code. More on writing functions cleanly, along with design & testing.
  • How to Prove It. This is a great book that delves deeply into logic. Even just the first chapter or two could be incredibly useful to you. It discusses things like DeMorgan's Laws, which show up a lot in programming and electronics. It deconstructs common logical concepts and phrases into boolean algebra and set builder notation (which inspire Python's list comprehensions). The world of math and logic and proof is not completely isolated from the world of programming.

    EDIT: One other thing is to make sure you understand the limitations of how computers represent numbers. The need for this understanding will become clear very quickly on, say, Project Euler problems. Look into bits, values, integers, signed vs unsigned, IEEE754 floating point.

    And one other thing is that it's easy to compare your solutions against some of the best solutions that exist for those problems and think you're doing a bad job when in fact you're doing an alright job if you manage to solve the problems with decent runtimes. Mind your 80/20 rule here. The extra time it probably took those people to craft those solutions is not 0, which includes whatever time they spent over the years becoming an expert at that language, etc.
u/patroniton · 2 pointsr/AskProgramming

Before you look into trying to optimize your code, beyond the basics anyway, I think it's more important to learn how to write readable and maintainable code first. Code that is easier to change, maintain, and write, is much much better than code that runs slightly faster.

Two books that are highly recommended for this are Code Complete and Clean Code.

u/ihadisr · 2 pointsr/PHP

The book Learning PHP, MySQL, JavaScript, CSS & HTML5 was one of the most useful PHP books I read as a newcomer to PHP. It's very basic but it teaches how you can start using PHP to do useful and interesting things.

After making it though that book, I think PHP Objects, Patterns, and Practice is a really good next step. It will help you learn to design, organize, and write your code to a more professional standard. It will also help you better understand the workings of a PHP framework.

u/pisskidney · 2 pointsr/PHP

read this
then this

Build something you like while reading them.

u/Thatonefreeman · 2 pointsr/PHP

You should read this: http://www.amazon.com/Objects-Patterns-Practice-Experts-Source/dp/143022925X

This helped me a lot when getting used to OOP and how to practically use it in my apps.

u/MysteriousEchidna · 2 pointsr/bioinformatics

I would second The Elements of Statistical Learning is a great text but it is not an entry level stats book. Maybe try Discovering Statistics Using R?

u/Stem3576 · 2 pointsr/learnprogramming

I have found that the head first books to be the easiest to read while not having access to a computer. It has challenges where you write the code by hand inside the book and a couple other cool features.

u/TheInfamousMaze · 2 pointsr/learnprogramming

I learned on this book: https://www.amazon.com/Head-First-Learners-Real-World-Programming/dp/1449343503/ref=sr_1_1?ie=UTF8&qid=1523941220&sr=8-1&keywords=Headfirst+c%23

Later on I found this website for virtually any language:

Http://www.hackerrank.com/‎

However if you're just going to use C sharp for Unity then just start doing the Unity tutorials. The head first book really deals with how to create user interfaces and full programs whereas Unity programming requires a lot more knowledge about the engine rather than how to program in C sharp.

u/combovercool · 2 pointsr/csharp

This is how I learned C#. I had taken a semester of C++ in college when I read this. It doesn't talk down to you, and it isn't dry. You could probably skip the first few chapters since you have a lot of C++ experience.

Enjoy C#. It's great, unless you are putting down the cash for Visual Studio, but I would highly recommend using it.


u/z4rdoz · 2 pointsr/gamedev

Maybe go straight to c#? Worked for me. Get a good book and just work through it. I like this one a lot. If that's way too difficult, then take the CS101 thing, but I wouldn't do that straight away. Get familiar with making code that does stuff, do some stuff in Unity, and then, if you find yourself being held back by a lack of understanding of the basic principles, take the course.

u/darthirule · 2 pointsr/learnprogramming

What are you currently using to learn?

I recommend the headfirst series.

http://www.amazon.com/Head-First-C-Jennifer-Greene/dp/1449343503

And here is a blog post with a good outline for learning C# that was posted here on reddit before. I don't remember who the original OP was though.
http://www.nicoschuele.com/posts/teach-yourself-web-development-from-scratch-with-ruby-python-or-c

u/Lerke · 2 pointsr/learnprogramming

I began with C# with a book called Head First C#. I've found that it's a fantastic book for beginners. Good luck!

u/nikofeyn · 2 pointsr/csharp

take a look at head first java and head first c#. i learned object-oriented programming from head first java, but was implementing object-oriented code in another language, which is one example of how good the book explains the general concepts. it is far better than head first c# in terms of explaining object-oriented concepts and is likely better than most books, but head first c# gets you a lot of hands on experience with visual studio and c#.

reading head first java first and then moving to head first c# wouldn't be a bad approach, in my opinion.

u/IronLionZion95 · 2 pointsr/cscareerquestions

Usually the CTCI referred to here is Cracking The Coding Interview. It´s probably the best known interview preparation book. You can easily find the PDF online but I would recommend buying it because it´s like an algorithms/datastructures bible and it will make it easier to take notes (it´s also a tiny investment compared to the potential pay-off). I think if you can comfortably do all of the questions (incl. moderate+hard) then you will be close to ready for Google. It depends from person to person. But I would recommend doing some LeetCode Google flagged questions afterwards to gauge how well prepared you are. For some people CTCI alone is enough while for others an additional 50-100 LeetCode are sufficient (some skip to LeetCode directly and do 150-300 questions on there). Note that CTCI is an alternative to EPI (Elements of Programming Interviews). Doing both would be a bit redundant. From what I gather EPI has more challenging problems so might prepare you better for Google, but if you´re very rusty then CTCI might be an easier start.

There´s plenty of resources available on this; I suggest checking out the relevant FAQs in the sidebar of this subreddit.

u/Himmelswind · 2 pointsr/cscareerquestions

I can't answer your other questions but EPI is Elements of Programming Interviews, a Cracking the Coding Interview-esque book of algorithm puzzles that's somewhat more challenging than CTCI.

u/sun_tzu_vs_srs · 2 pointsr/UofT

As far as courses go just take the math-oriented ones like algos and data structures seriously. It's about developing your problem solving ability more than anything. Strong problem solver, strong interviews. Also developing an intuitive understanding of complexity and problem classes will help you to think clearly.

For interview-specific stuff courses won't help you. Pick up Cracking the Coding Interview and Elements of Programming Interviews. The latter used to be called Algorithms for Interviews which is also good.

Protip: last time I checked all these books were available through Safari Books Online, which most university libraries give you access to for free.

u/mgob · 2 pointsr/learnprogramming

I've found Elements of Programming Interviews to be beter than both Cracking the Coding Interview and Programming Interviews Exposed. It may have less background information on each subject, but I find wikipedia/the internet to be better for learning these topics anyway. The problems are more challenging and more out of the box. The only detracting factor is that the solutions are all templated, which I find clutters the code a little bit, but I suppose its good to learn to read code like that anyway.

I was studying for interviews at a major company known for its difficult interview process and had all three of the aforementioned books - after a week of looking through all of them this is the only one I used. And I did get the job :)

u/mikejay707 · 2 pointsr/HowToHack
u/roobixx · 2 pointsr/homelab

Sorry this has taken me so long to get too. Been busy.


First, understand that Kali is nothing mote than a collection of tools. Its those tools that you are actually wanting to learn.


KaliTutorials is one place you can start.


Also, there is an abundance of videos on YouTube and if you are serious about wanting to learn penetration testing/security makes sure you book mark Irongeek


Like I said earlier, by the time books are written, edited, and published, they can often be out of date.


If you do want to understand some of the basics, here are books you should look at:


Metasploit: The Penetration Tester's Guide


rtfm


btfm


Basic Security Testing with Kali Linux 2 I havent read this one but I have heard good things


The Hacker Playbook


[The Hacker Playbook 2] (https://www.amazon.com/Hacker-Playbook-Practical-Penetration-Testing/dp/1512214566/ref=pd_sim_14_4?_encoding=UTF8&pd_rd_i=1512214566&pd_rd_r=2HDYK8BDM5MR8PV03JG8&pd_rd_w=kiAl7&pd_rd_wg=fAjYi&psc=1&refRID=2HDYK8BDM5MR8PV03JG8)


Also a good list of resources can be found here: cybrary.it

u/Inji · 2 pointsr/Kalilinux

I've been working with the Hacker Playbook Ver 2. It's pretty good. Has helped me learn a lot.

u/Sjoerder · 2 pointsr/netsec

A pretty recent general purpose hacking book is The Hacker Playbook 2, from June 2015.

u/wartimespark · 2 pointsr/learnprogramming

Would you recommend C# In Depth?

Someone said it's a masterpiece. Another person said it's for someone who already knows a bit of C#.

I am ready to do what you said.

u/Freonr2 · 2 pointsr/dotnet

Given your understanding of the problem with Js/React, I'd dive right in to C#/.NetCore. You're aware of potential pitfalls and confusion of language vs framework, but there's probably not a lot of avoiding it anyway. C# is fairly straight forward for the most part. .NetCore is fairly dominant now so starting with it makes sense.

You could start with this book if you wanted:

https://www.amazon.com/Programming-Language-Covering-Microsoft-Development/dp/0321741765

Its starting to show some age, but it is where I started. It does do a good job covering stuff like value vs reference types, nulls, basic operators, special types like string, structured exception handling, etc. that could be valuable, but you can probably infer most of it if you have learned any sort of OO before. There's some stuff in there that's simply out of date, and glaringly no coverage of async/await. There are a bunch of newer language features such as string interpolation that may be better or more accepted ways to handle things these days.

edit: this is also popular, but still only up to date on C# 5.0:
https://www.amazon.com/C-Depth-3rd-Jon-Skeet/dp/161729134X

u/fuckyournormality · 2 pointsr/csharp

I can highly recommend C#in Depth. It does not start with programming basics, instead it walks you through the evolution of the language version by version, which means not only that the more advanced topics are further down the road, but also gives you a very broad understanding about why the language has developed the way it has.

Edit: also +1 for Unity. It really gives you the freedom to focus on the important parts of game development.

u/voidpirate · 2 pointsr/javascript

I would check out Secrets of the JavaScript Ninja

It's a great book if you are coming from a different programming language to JavaScript. The syntax of JavaScript may feel familiar but don't be fooled. Javascript has many different quirks, that you should wrap your head around in order to write "good" JavaScript.

u/Neurotrace · 2 pointsr/ProgrammerHumor

Thank you! Which is why it bothers me that an otherwise great book wastes a whole chapter talking about with.

u/minond · 2 pointsr/webdev

Not really related to mobile development, but he should still really enjoy these if he hasn't read them already:

u/dig-up-stupid · 2 pointsr/learnprogramming

Neat interview question, I'd either love it or hate it depending on what they expected to get out of it. I do think it's a bit problematic because how programming languages are different usually has (among other things) straightforward technical answers, but asking why one is more popular or successful than another is usually better answered from a historical/political perspective than a technical one (often, anyway). Part of your job will be to narrow down what the interviewer is actually asking.

To learn more about different programming languages themselves, I've seen this book recommended highly before (on this sub) and have it on my reading list, though I haven't got to it myself yet. If you're into MOOC's then I can say that I surveyed this course and enjoyed it for the price (free).

For the "why thing x is popular" side I would recommend just googling around (or waiting on reddit) to familiarize yourself with the popular flame wars. Most everything you will read is straight up wrong (just wait around for people to talk about the performance of Java for the best example). It may sound terrible, but you don't need real answers, for an interview you just need something to talk about. The history of CS is still a tiny field, and I'd eat my shorts if an interviewer was actually well informed on the subject. Here is a classic essay on why C beat out Lisp historically, it's arguments tend to get recycled a lot for other topics as well (Java, OOP, etc) despite it basically being an opinion piece.

u/XMR1 · 2 pointsr/IWantToLearn

If you know a language that you want to learn, go ahead and look for tutorials online (there really isn't the perfect beginners guide).

If you don't know/care for any specific language, I'd recommend the book 7 languages in 7 weeks to get started.

That way you can learn a few different language paradigms and find what suits you best.

I highly recommand that you not only go over the book and do all the examples, but ask yourself after each language: "What cool (small) thing could I build myself with it?".

And then browse the web for some more tutorials on that language.

You won't know any of these languages very well at the end, but you'll have a general overview and can then dive into any that you like.

If you are interested, you can also PM me and I'd offer some help (mostly chat-based explaining and pointing to resources, etc.).
I currently have a lot of spare time and know C#/Java/Php, generall HTML development and am always happy to support someone willing to code (most people only care for the result, but I believe coding to be an art itself worth more than that ;) ).

tl;dr find a language you like, look for online tutorials or books and just start learning

edit: also check our subreddits like /r/coding and /r/programming.

u/madmaxx · 2 pointsr/AskComputerScience

While you only need to learn the languages you're going to use, it can help to be familiar with how to read (and solve problems) languages of various lineages, structures, and dialects (e.g., C-like functional, imperative, etc.).

There are books (like this one) on the topic, and many CompSci programs include a 3rd or 4th year language survey course. I found that this course (and much later that book) helped me think about solutions more clearly, especially after having solved one problem across several languages.

Also, if you're at all interested in language design (or processing), having more mental models of programming languages can help immensely.

On the other hand, when I'm hiring I don't really care what language(s) you know, as long as it's clear you've done well with the ones you use (and how you talk about your opinions around them). If it's clear you actually know a number of languages, you'll get some bonus points.

u/linuxjava · 2 pointsr/programming

Or just buy 7 languages in 7 :)

u/fewpeople · 1 pointr/PHP

PHP Objects, Patterns and Practice (3rd Ed) is a fantastic book which is a little bit more advanced that takes you into the OOP aspect of PHP.

u/phpdevster · 1 pointr/PHP

There's this: http://www.amazon.com/Objects-Patterns-Practice-Experts-Source/dp/143022925X

And while i won't link to them here, you can find pirated PDFs of that book quite easily in Google, if you'd like to skim through and see if it's what you're looking for (and if it is, buy it - don't be a dick).

u/baconOclock · 1 pointr/PHPhelp

I have an older edition but it was worth every penny.

http://www.amazon.com/Objects-Patterns-Practice-Experts-Source/dp/143022925X

u/nullrouteinroot · 1 pointr/Romania

Eu sunt în general împotriva tutorialelor, cel puţin pe partea de programare. E greu de urmărit şi nu prea are de-a face cu procesul de învăţare ci mai degrabă cu cel de înmagazinare a unor cunoştinţe.
Cel mai bine ar fi la început să începi să citeşti o carte/un articol despre concepte ale programării în general pentru ca apoi să te apuci de sintaxa unui anume limbaj. Plus că îţi trebuie determinare şi multă răbdare.

Odată ce ai prins basicul limbajului, recomandarea mea ar fi să te implici într-un proiect la care poţi contribui cu cod. Codul ăsta va suferi o grămadă de transformări pentru ca la final să nu mai semene deloc cu cel de la început. Ştiu, sună descurajator dar ăsta e procesul natural prin care îţi îmbunătăţeşti skillurile.

Dacă vrei neapărat tutorial video, singura mea recomandarea ar fi PHP with MySQL Essential Training
with Kevin Skoglund
, însă repet: nu mi se pare cea mai fericită metodă de a învăţa programare. Cele mai sfinte lucruri în PHP sunt: cărţile, practica şi http://www.php.net/manual/en/index.php!

Dintre cărţi ţi-aş recomanda:

u/noartist · 1 pointr/PHP

Imo good replacement for gang of four book would be this http://www.amazon.com/Objects-Patterns-Practice-Experts-Source/dp/143022925X
To be honest i don't think there is much depth into PHP itself. If you want to become a better programmer you should pick up other languages preferably fundamentally different from PHP. It will change your preception of problems/solutions and the way you program in your main language.

u/intangiblemango · 1 pointr/AcademicPsychology

My program requires a number of stats classes and my advisor requires a number more than that. My program also offers a few data science-related specializations, which are, of course, optional, but great.

For some independent learning, Andy Field's Discovering Statistics Using R -- https://www.amazon.com/Discovering-Statistics-Using-Andy-Field/dp/1446200469/ref=sr_1_1?ie=UTF8&qid=1538060236&sr=8-1&keywords=discovering+statistics+using+r -- and datacamp.com are both handy resources.

u/AngularBeginner · 1 pointr/csharp

> Any good suggestions on where to learn LINQ?

http://www.amazon.com/Head-First-C-Jennifer-Greene/dp/1449343503

u/darchangel · 1 pointr/csharp

I recommend this book: https://www.amazon.com/Head-First-C-Jennifer-Greene/dp/1449343503

Although it's cutesy to a fault, the info is solid and understandable. Do not skip the exercises: actually do each one.

u/pyscript · 1 pointr/learnprogramming

Dude, check out Head First C#.

u/The_Binding_Of_Data · 1 pointr/csharp

I found The C# Player's Guide (3rd Ed.) to be pretty solid at teaching the basics of the C# language. I particularly liked how they diagrammed the various data types.

Head First C# (3rd Ed.) was also good, but it's pretty out of date at this point. If you can use Visual Studio 2015 or earlier, you should still be able to follow along without too much trouble. After that, the templates they use for doing UI are no longer available, so you'd have to do some extra work there.

That said, Head First C# includes a lot more general Computer Science information the Player's Guide, and includes UI design and implementation.

I think one issue with hard copy books is that C# and .NET are evolving really really fast currently, which makes it hard to keep up to date.

As far as projects go, I totally know how difficult it can be to think of something when you're specifically trying to.

Several projects I've made ended up being due to some need. For example, I have a project idea I really need to get started at some point for a recipe book for Breath of the Wild. I want something light weight that I can use to record the recipes I find in game, as well as being able to store additional useful information (such as places where ingredients drop or can be purchased, purchase prices, etc).

Another project idea that I've played with a bit here and there is a basic character stat generator for an RPG. This is something that can be super simple, but can also be expanded a great deal into a complex program.

u/cronsy66 · 1 pointr/indonesia

I suppose it's easy to get into programming, just buy some books like this, try to code some, and go to stackoverflow when you stuck.

Why would you after Indonesian gaming company? I heard that gameloft paycheck is good and they have an office in Indonesia.

u/CaptainIncredible · 1 pointr/ADHD_Programmers

There are so many books out there and I've hated most of them. A lot of them read like a 2000 page tome about corporate tax law - all the text is the same, its just paragraph after paragraph of babbling. Sure its accurate, but who wants to read that?

Not me.

BUT there are some books that don't suck - the Head First books. I swear they were built for ADHD minds.

https://www.amazon.com/Head-First-Learners-Real-World-Programming/dp/1449343503/

BUT... Books still kind of suck. I wouldn't recommend them unless you want to learn general concepts.

And my particular example uses XAML which is an XML layout language that only Microsoft uses... Which is good if you are writing Windows desktop apps, but who does that anymore? Most of it has moved to web or mobile.

But I do recommend:

  1. Figuring out a project of something you DO want to do. Let's use an example of "I want to build a web based To Do list application. I want to use C#."

  2. Find a tutorial online that is relevant. Like this: https://mva.microsoft.com/en-us/training-courses/asp-net-core-beginner-18153

  3. Work through the exercises to get a basic foundation for ASP.NET Core, C#, web applications, etc.

  4. THEN think about the ToDo app you want to build. Find a tutorial that works well for it like... Oh... I dunno... Maybe this one: https://medium.com/@ThisisZone/to-do-write-to-do-app-with-asp-net-core-c02bc3ca9fa1

    Its helpful if the tutorial has all the source code on GitHub like this: https://medium.com/@ThisisZone/to-do-write-to-do-app-with-asp-net-core-c02bc3ca9fa1
u/BestMomo · 1 pointr/gamedev

This is the book that helped me a lot when I was studying C# years ago:

Amazon link

It's fun and easy, and there's a few simplistic games that it teaches you to code here and there.

As others mentioned, good programming concepts are independent of language. Given your post wording, I think what you need to learn now is good object-oriented programming, so you need to learn the concepts of polymorphism, inheritance, overload, abstraction, etc. It's those concepts that make code expandable, independent and easily manageable. This book might just help you grasp those concepts and improve your overall C# coding.

u/thisdudehenry · 1 pointr/csharp

I have Head First C#: A Learner's Guide to Real-World Programming with C#, XAML, and .NET https://www.amazon.com/dp/1449343503/ref=cm_sw_r_cp_apa_mYj-ybB13MG8A and also orderd The C# Player's Guide (3rd Edition) https://www.amazon.com/dp/0985580135/ref=cm_sw_r_cp_apa_MTj-ybN7NTF1H second edition has nothing but great reviews. Also you can skim through a few chapters and I like how it's structured with chapters that are only projects for you to do that they taught you basics in the previous chapter.

I plan on doing that book first since it's more up to date and modern . Then tackle head first c#, because it's a little older so I'll know my way around and it also starts you off with the GUI too and a few little things the other book doesn't go over .

u/Tetravus · 1 pointr/learnprogramming

I'm a big fan of the headfirst books.

http://www.amazon.com/Head-First-C-Jennifer-Greene/dp/1449343503/ref=sr_1_1?ie=UTF8&qid=1422302647&sr=8-1&keywords=headfirst+C%23

It will help you get a good understanding on C#, and then you can try and make unity scripts.

u/srblan · 1 pointr/csharp

I'm 35, no degree, 2 young kids, little time to study. I had an interest in coding but have done nothing more than an intro to HTML/CSS and Javascript while in community college.

I got a job as a tester/DBA support. I expressed interest in learning to develop as we were short staffed (still are).

I started with Udemy.com, C# Beginner with Mosh. I liked this course but felt it was a bit disjointed. His lectures did not always cover the material used in his challenges, but I will go back into his other two courses eventually.
Next I watched the Bob Tabor videos others have mentioned. I liked these, they were a little more direct and showed more actual coding than the Mosh vids.
Third - I read the first 20 chapters of this book: https://www.amazon.com/C-Players-Guide-3rd/dp/0985580135/ref=sr_1_1?ie=UTF8&qid=1521128465&sr=8-1&keywords=C%23+Players+Guide (most of this would be a review, but I like seeing how other people teach the same material)
Now, I'm working through this book:
https://www.amazon.com/Head-First-Learners-Real-World-Programming/dp/1449343503/ref=sr_1_2?s=books&ie=UTF8&qid=1521128540&sr=1-2&keywords=Head+First+C%23.

After this book, i will move onto Pluralsight.

I am very much still a beginner, probably still a year or more away from supporting our devs at work. But the best advice I got was to code every day. You won't learn it if you don't do it. I don't know if any of this will help you get "job ready" super fast, but its the advice I was given and I just wanted to pass it along.

u/TheTarquin · 1 pointr/cscareerquestions

I'm going to disagree with a several of the other comments here: don't feel pressed to ask textbook questions that are narrowly related to the job you're hiring for. Hiring narrow specialists tends to yield devs that are good at a narrow set of tasks. "Abstract algo questions" have a better track record of hiring strong devs that are better able to pick up any task that may come up.

Remember: it's easier for a great programmer to learn a new technology than it is for someone who knows that technology to become a great programmer. I should know: I've done over two hundred interviews for my current employer, most for positions where I would have to work with the developer directly. I've been in interviews where we hired the wrong candidate and it's almost never worked out well. In most of those failed hires, the rationale was "well, yes, he didn't do great on the interview, but he has experience with $TECHNOLOGY that we desperately need!"

As for your question: I highly recommend "Elements of Programming Interviews" by Aziz, et al. Amazon link

It provides a wide range of questions that you can tweak to suit your needs, in a range of difficulties from relatively easy to mind-bendingly difficult. None of the problems, however, are trivial in the way FizzBuzz is. (And seriously, if you're asking FizzBuzz or similar in interview, your sourcing process needs some work.)

I hope this helps. Interviewing programmers is a devilishly hard problem and tough, pointed data structures, algorithms, coding, and design questions under interview conditions isn't an ideal solution, but it is the least shitty one anyone's yet found, so far as I know.

Best of luck in your search!

u/Silchas_Ruine · 1 pointr/cscareerquestions

I've been looking to prepare for some Internships for Summer 2015. I've heard a lot of good things about Cracking the Coding Interview, but I was wondering what everyone's thoughts are on Elements of Programming Interviews.

u/wiprogrammer · 1 pointr/UWMadison

Elements-Programming-Interviews-Insiders-Guide This book is also offered in Java, Python

This book goes into better details than the normal tech interview (Cracking the Coding Interview) it will teach you common ways to solve problems as well as good programming practices as well as how to handle the interview and the offer.


Then you could be practicing problems on Leetcode.com, however I cannot speak for exactly how Epic interviews but I have interviewed at larger companies they should be similar.

u/infinitebeam · 1 pointr/cscareerquestions

Elements of Programming Interviews (https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836). It's another book for interview prep. A lot of people, including me, consider it to be superior to CTCI in terms of number of problems, coverage of topics (it has about 20 chapters on DS+Algo), problem difficulty, code quality and explanation of solutions. I used EPI+leetcode (for the most part) for my prep.

u/everylittlethingido · 1 pointr/ITCareerQuestions

Take a look at this and this book

u/tact1cal · 1 pointr/cscareerquestions

Probably you wouldn't get much for 3 days, but for the future:

u/dougsec · 1 pointr/computerforensics

Since this is the subreddit for DFIR, that's what you're going to end up with as far as suggestions go. For pentesting stuff, checkout:

-Web Application Hacker's Handbook: https://www.amazon.com/Web-Application-Hackers-Handbook-Exploiting/dp/1118026470 (this has some labs, but just reading through the various weaknesses in WebApps will be a great start)

-The Hacker Playbook: https://www.amazon.com/dp/1512214566/ref=pd_lpo_sbs_dp_ss_1?pf_rd_p=1944687742&pf_rd_s=lpo-top-stripe-1&pf_rd_t=201&pf_rd_i=1118026470&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1NSA1RZZ3WQTP374S9WK

Red Team Field Manual: https://www.amazon.com/Rtfm-Red-Team-Field-Manual/dp/1494295504/ref=pd_bxgy_14_img_2?ie=UTF8&psc=1&refRID=S7FG8F9TCMZMM9HVX2TN

Those two are good general pentesting books. You might also try /r/AskNetsec for other suggestions.

u/yungbole · 1 pointr/hacking

What's Possible With Hacking?:

Things are more possible than you think; the more you know, the more you can do (hacking isn't just one thing to learn, it's a combination of different subjects).

Where can I learn about it?:

I recommend try to learn anything you can get your hands on, E-books, videos, etc. You should take the paid online courses later on, once you advance your knowledge.

!!TIP!!: Recommend reading some questions from him https://www.reddit.com/r/hacking/comments/4up17b/i_am_a_lead_penetration_tester_ama/

This book (recommended by a real pentester): https://www.amazon.com/Hacker-Playbook-Practical-Penetration-Testing/dp/1512214566

Video on Kali Linux: https://www.youtube.com/watch?v=7nF2BAfWUEg&list=WL&index=3
(i recommend Kali btw, install it on a virtual machine. )

I got all this just from the internet, the internet has all the information you need; just get it from the right places.

(I know basically squat, i am also starting off as of today) good luck!

u/zywrek · 1 pointr/Hacking_Tutorials

Kali is the way to go.

For resources I really recommend getting some proper litterature. The two books below are often recommended (i have them both) as a starting point. Preferably read in the order written.


  1. https://www.amazon.com/Basics-Hacking-Penetration-Testing-Syngress-ebook/dp/B005A3K4J4

  2. https://www.amazon.com/Hacker-Playbook-Practical-Penetration-Testing/dp/1512214566


u/maq0r · 1 pointr/vzla

Que mas quieres hacer? No saques mas nada Cisco si no estas pendiente de hacer networking y aun asi, Cisco no se esta usando tanto como otros (Palo Alto por ejemplo).

Si quieres hacer Incident Response y Pentest, lanzate estos libros

https://www.amazon.com/Blue-Team-Handbook-condensed-Responder/dp/1500734756/ref=sr_1_1?ie=UTF8&qid=1479171676&sr=8-1&keywords=blue+team+handbook

https://www.amazon.com/gp/product/1494295504/ref=pd_bxgy_14_img_2?ie=UTF8&psc=1&refRID=P8TB8XKCFAKNQBRS1EG5

https://www.amazon.com/gp/product/1512214566/ref=pd_bxgy_14_img_3?ie=UTF8&psc=1&refRID=P8TB8XKCFAKNQBRS1EG5

Tienes que definir un poco mas que quieres hacer. Que te atrae mas de cybser security?

u/GlennPegden · 1 pointr/securityCTF

Wow, the gold was an utterly unexpected and unnecessary move (you did something cool, for free, so YOU deserve the gold!), but Thank You anyway.

In return (now I've a little light OSSEC work on your Reddit account and twigged who you are ... probably) I'll make sure my next amazon order has a copy of this in it - https://www.amazon.co.uk/d/Books/Hacker-Playbook-Practical-Penetration-Testing/1512214566 . it's been on my list of possible purchases for a while.

u/gospelwut · 1 pointr/learnprogramming

There's a good course by Google on Udacity at the moment - https://www.udacity.com/course/ud853 - which guides you through developing an app using their souped up version of Eclipse (Android Studio).

The nice thing about Android is you can run an emulator without XCode -- i.e. a Mac.

Depending on where your skills are at the moment, programming gis programming and the fundamentals are always important. You have to cut your teeth on something, but don't get caught in whatever framework/stack/paradigm you're working in. C# (Xamerin) is a great language, and it's what I started off with.

I'd say start off with something you want -- like the widget app. See if there's source code for some of the current Android reddit apps so you can get an idea of what's going on.

I cannot emphasize enough, however that you should eventually return to the meaty books/reading -- e.g. C# in Depth for C#. It's GOOD to try something and get frustrated; you'll see the value of good design and understanding in a way that being "told" cannot do.

u/americio · 1 pointr/csharp

For a quick overlook, this. And for a little bit more detail, this one.

u/Pinski47 · 1 pointr/dotnet

The Pragmatic Programmer is about the discipline of Software Engineering. It focuses on treating Software Engineering like a craft, just like any other craft. Turning the focus of "just producing code" into an apprenticeship.

Clean Code is about how to write your code as cleanly as possible. Clean Code allows for better productivity, better maintenance, clearer understanding of your code, and makes communication with your peers easier.

Neither book is focused on .NET or any type of specific tech, they are more about how to approach the discipline of Software Engineering. Having that kind of mentality will help you conquer any Software Engineering hurdles you may be having.

If you feel you need to learn more about how .NET/C# works. These books might be best saved for later. But they will come in handy in the long run. It sounds to me like you have a grasp of being able to do your day-to-day job now. So maybe some general knowledge about Software Engineering would help.

If you are looking for something to read that is C# specific I cannot recommend C# in Depth enough. It is a rather dry read, but it completely covers all aspects of the language. It even does it in a chronological way so you can see the language grow and develop over time. If you have ever thought "Why does C# do it that way?" this book will answer that question. I found it fascinating to see the language grow over time and realize why the language is what it is today. Make sure to get the latest version of the book which I believe is currently the 3rd Edition.

u/sleepybychoice · 1 pointr/learnprogramming

I've heard C# In Depth is pretty good. The author, Jon Skeet, works at Google and is apparently Chuck Norris as well.

Disclaimer: I never read the book.

u/dsquid · 1 pointr/cscareerquestions

Grab a copy of Skeet's C# In Depth and consume it.

I suspect you'll find the transition pretty easy. Linq and lambdas may be a bit mind stretching at first, depending on your other experience.

As someone who spent 10+ years in Java and am doing C# currently for the last 3, I must say I strongly really prefer C#. OTOH, we use as little of the MS stack as possible otherwise: we rely on MySQL, Redis, and Servicestack

u/codechinchilla · 1 pointr/csharp

There isn't a 4th ed./C# 6 version out yet for this, but C# in Depth (http://www.amazon.com/Depth-3rd-Edition-Jon-Skeet/dp/161729134X) is basically all advanced C#/.NET topics, and extremely well written.

If you're looking to up your C# knowledge, definitely would recommend this book. (Also a lot of the C# 6 features are syntactic sugar, so you're not missing too much you can't get from an online source such as https://msdn.microsoft.com/en-us/magazine/dn879355.aspx)

u/jpmmcb · 1 pointr/FreeCodeCamp

For one of my projects, I decided to just use vanilla JavaScript AJAX and for the rest, I ended up using jQuery. I felt this gave me a better handle of what was going on behind the scenes.

For vanilla JavaScript resources, the MDN documentation was helpful to get going. Using vanilla JavaScript was hard and it isn't super intuitive. This is why I think most people just end up using a library to call out to APIs. There's also a good Lynda course that's called "AJAX and JavaScript." It's pretty fast paced, and the course assumes you already know basic JavaScript, but I found it helpful with learning vanilla js ajax.

As far as jQuery goes, this video was also really helpful. Again, fairly fast pace but overall, good info. Once again, using the jQuery documentation is ESSENTIAL. I've found that in general, if I am stuck, asking myself the right questions, going to the documentation, and finding the answers is usually best.

I also read through the book Secerts of the JavaScript Ninja which had a few things to say about asynchronous code. Hope this helps!

u/whoisjuan · 1 pointr/dailyprogrammer

I would add Secrets of a JavaScript Ninja, written by John Resig (the creator of jQuery). An amazing resource with a nice philosophical approach about JS.

u/MaybiusStrip · 1 pointr/web_design

HTML and CSS are easy enough to pick up from tutorials and on an "as you go" basis.

Javascript is a difficult and intricate language. If you don't have a programming background, it is not a great one to start with. You will more or less be doomed to be mediocre at it (which might be fine for adding minor interactions, importing plugins, etc...). Functions as first class objects, closures, prototypal inheritance, and other concepts that are used frequently in Javascript can be tricky to grok.

I highly recommend Secrets of the Javascript Ninja. Javascript: The Good Parts is a great resource too but it goes over things to quickly for them to really stick and requires a couple readings.

u/eddyvanhelgen · 1 pointr/javascript

Books that helped me to get the hang of JS

John Resig's Secrets of the JavaScript Ninja and Douglas Crockford's JavaScript: The Good Parts are pretty much the only ones worth reading in my opinion.

Projects

The best thing would be to build something you want to use yourself. Maybe you try cordova and build a small app with the browser platform so that you can create a simple App that you can bring to your Smartphone.

More advise

Read a lot of code: TODO MVC is a good place to start, people try to write good code for this one because they want you to use their framework :-). The problem with the source code of many projects is that the JS ecosystem is in a constant flux and ES6 modules are skyrocketing right now. You may want to check out the jQuery source code - you can pretty much watch the evolution by looking at older versions of the source code and how it evolved.

If you feel really adventurous the NodeJS source code is a fun read - although it's a very big project that also got some C/C++ code sprinkled in - but that shouldn't be a problem for you :-).

I would advise you not to bother reading the Angular1 code for the time being, Angular2 maybe interesting but its written in Microsoft's TypeScript - which is a nice language on top of JS that is worth learning about.

u/sharkmandan · 1 pointr/javascript

For more advanced topics, "Secrets of the JavaScript Ninja" covers many of the advanced techniques popular libraries use (including prototype and jQuery), written by the jQuery creator.

It assumes you have an understanding of the fundamentals so it gets into the advanced topics pretty quickly.

http://www.amazon.com/Secrets-JavaScript-Ninja-John-Resig/dp/193398869X

u/alexlafroscia · 1 pointr/javascript

I really enjoyed Secrets of a JavaScript Ninja by John Resig, the main person by jQuery. I found it to be really helpful as someone that was comfortable with JS and wanted to know more, but if I remember right the beginning of the book went over some more of the fundamentals.

u/lw9k · 1 pointr/learnprogramming

If you want to be a really stellar programmer, learning a lot of languages is a must. This book talks about it.

u/keithtalent · 1 pointr/atheism

My argument is the change is beneficial. And it is.

Atheism the word would be meaningless, but the belief system that atheism represents would still exist I chose to interpret what people mean when they say atheist to be representative of that belief system rather than not the other belief systems, which is natural, common and resonable.

I am a strong atheist, I believe that no god exists and I have a very sound argument for that. I do however believe that people (like you just have) commonly blend politics and religion to match and reinforce their own beliefs. Religion is not always organised, and it's organisation is not always bad. The dedication in this book gave me a feeling of remorse for taking such a hard line against religious people when it is such a personal matter.

What you think is religious hatred is the political organisation of vulnerable people who are religious. Not combining church and state is meant to protect religion from politics as well.

What the fuck is the pope doing to you? You fucking idiot. What is a puss bag deist and what kind of thing is that to bring up. Noone is reasonable other than you? You heinous arrogant cunt.

My argument doesn't prevent anyone from meeting, nor does it prevent people arguing against reproductive right activism or bullshit in schools. But you fail to see that that is not religion that is politics or the politicisation of religious people. Tell me how many vulnerable people can be incited to vote by politicising creationism, a fuck of a lot. Is it representative of religion as a whole? Is it fuck.

u/Schnevets · 1 pointr/learnprogramming

Required reading for everyone

However, if you're looking for an actual physical book, I'm currently finding Seven Languages in Seven Weeks a very fun read. It may sound daunting, but it more focuses on the differences in languages and how it can help/hinder you, rather than cramming as much in as possible. Also, it's a nice guide that shows a lot without wasting valuable paper re-re-re-re-explaining what an int/char/string is.

u/solidh2o · 1 pointr/singularity

I'm at work right now ( library is at home), but there's a few books I can recommend. there's no one great path though, it'll be "find a hole in knowledge, fill it, move forward until you find another hole in your knowledge".

First, learn a programming language, and master it. Then learn to abstract that. Use this book as a good way to abstract. You'll come to recognize two basic abstraction: first, every language does all the same things, in just a little different way. The book acts sort of as a Rosetta stone for comp sci. Second, some languages are better than others for some things, and for AI, none of that matters, just pure processing power. I started the project in c# ( very simple for prototyping and testing, not super efficient) , and then swapped to C++ when I started working the outcomes into a game world to see evolutionary behavior better ( using the unreal engine) .

Next,Hofstadter has two books worth reading, "I am a strange loop" and "Gödel, Escher, Bach: An Eternal Golden Braid" - this ( combined with Kurzweil's "How to Create a Mind") will give you some of the more theoretical on neurology/computer cross over. read them both, even though it's 60% the same book. there's enough differences to make both worth while.

On the biology side, This book has some info on what it means to be "alive" which is a prerequisite for what it means to have "artificial intelligent life" this will likely lead you into genetic research and how DNA works - it's important, but not until you get there.

On the sociology / economic side, I can't think of one book that would be a great starting point. I will say that specifically understanding risk/reward principals and game theory are critical to development of any AI that goes beyond a linear regression model. Also look into OODA loops, it's a military term for "Observe, orient, decide, act"

For machine learning, there's no one better to teach it than Andrew Ng, the chief scientist at Baidu. His course at Stanford is recorded and free to take on Coursera. You can find it here

Saw your PM, but figured I'd post it here since you weren't the only person who pinged me on it :). Happy to answer any more questions, but i'm not online all that much so please be patient!

Take care and good luck!

u/zelf0gale · 1 pointr/programming

If I don't learn something new every four hours at my job, I'm probably posting to Reddit. It doesn't have to be a new language (but it could be).

u/victotronics · 1 pointr/learnprogramming

That's not really a list of paradigms. If you're interested in seeing the breadth of programming paradigm options these days, by all means pick up this book:

https://www.amazon.com/Seven-Languages-Weeks-Programming-Programmers/dp/193435659X/ref=sr_1_1?ie=UTF8&qid=1537894778&sr=8-1&keywords=seven+languages+in+seven+weeks

It's nowhere near a course in all of the seven languages, but it gives you the flavour.

u/tech_tuna · 1 pointr/learnprogramming

I'm going to agree with others and recommend that you not go with C++. The first programming class I ever took was in C++ and it very nearly made me give up on programming forever.

If you want to learn how to code "closer to the machine", go with C. If you want to learn something useful and fun, go with Python or Ruby. If you want to learn useful Windows-specific skills, go with C#. C is much simpler than C++ but still challenging compared to VB. Also, it's still widely used and probably will be used forever. Python and Ruby are just plain fun and make many tasks easy to do. They're also excellent general purpose languages to have in your tool belt. C# is great if you're coding on Windows and significantly easier than C++ (Java is an option too, it's very similar to C# but since you already know some VB, C# will probably be easier to pick up).

There are plenty of other languages you could try as well, at some point you'll want to dabble in a functional language just to see how wildly different that is from object oriented and procedural languages.

Actually, I just finished this book and it's a very cool way to get a quick idea of just how many options there are:

http://www.amazon.com/Seven-Languages-Weeks-Programming-Programmers/dp/193435659X

Oh jeez, almost forgot, you'll definitely want to tinker around with some Javascript and do some client side web stuff (and node.js on the backend if that interests you).

u/clintwn · 1 pointr/arduino

Happy to help!

>Did you stabilize it somehow with a gyro and arduino or was is literally just the receiver, transmitter and ESC?

Flight controller with built in gyros handled all the stabilization. FCs are really cool and you can have as many features as you like or virtually none at all. I used a CC3D, but like I said that was years ago and you'll probably find much better. Apparently some even have built-in RC receivers.

Every programmer hates their own code, unless they don't want to get any better at it. Finding one language and getting good at it comfortable with it is a good start, and it doesn't have to be c/c++. I started with perl, quickly switched to python, probably suck at both to this day.

There's a lot to be said about learning libraries and their implementations rather than trying to learn a particular language.

I've also written java code that ended up in production and is still used. The only C++ code I've ever written was for arduino and other microcontrollers, which is loaded with tons of convenience features that have a tendency to hide the hard parts, like memory management and stuff, but you can still get at them.

There's a surfeit of free information out there, but if you want a short booklist I recommend these:

u/PlainEminem · 1 pointr/cscareerquestions

7 languages in 7 weeks

Really good book to learn about the different programming paradigms.

u/LiftCodeSleep · 1 pointr/cscareerquestions

I'd read Seven Languages in Seven Weeks. It'll give you some insight into different languages. It'll make it easier for you to pick up new languages. Use the sites others have practiced to reinforce the book.

http://www.amazon.com/Seven-Languages-Weeks-Programming-Programmers/dp/193435659X

u/ashmoran · 1 pointr/Bitcoin

I read this like you assume it will take longer to learn two or three languages than one, but this isn't necessarily true. It will take you longer to learn two languages to a professional level than one, but if you're starting from fresh then trying multiple languages has a lot of advantages. Every programming language has a different philosophy and emphasises different features, making some things harder or easier. If you only ever program in Java, there are things that are easy in say Ruby or Clojure it would never occur to you to try, because the language makes it so much harder. But if you only program in these two and not say C, you won't appreciate how the languages manage memory for you. The list is almost endless, but the more languages you're exposed to the more you deepen your understanding (and learn new tricks) by triangulation.

Realistically it takes a few years to get to a professional standard in programming, don't be afraid of spending a few months to get a good start. The book Seven Languages in Seven Weeks may interest you: http://www.amazon.com/gp/aw/d/193435659X – also there are Bitcoin implementations in most main languages, so once you can read a language you can use these to compare how they and how they're used in practice.

u/toyladill · 1 pointr/iOSProgramming

iOS Programming: The Big Nerd Ranch Guide (4th Edition) (Big Nerd Ranch Guides)

https://www.amazon.com/iOS-Programming-Ranch-Guide-Guides/dp/0321942051/ref=sr_1_7?ie=UTF8&qid=1485464571&sr=8-7&keywords=ios+programming

It seemed like a good option and great ratings

u/codevil · 1 pointr/iOSProgramming

The Big Nerd Ranch Guides for Objective C and iOS Programming are just about the best books for absolute beginners, I've found. I had programming experience in Java and Android apps prior to working on iOS, but read the two books anyway (online tutorials are the faster way to go) just to see if I could pick up something in-depth, and I did.

http://www.amazon.com/Objective-C-Programming-Ranch-Edition-Guides/dp/032194206X/ref=sr_sp-atf_title_1_3?ie=UTF8&qid=1408323435&sr=8-3&keywords=big+nerd+ranch+ios

http://www.amazon.com/iOS-Programming-Ranch-Edition-Guides/dp/0321942051/ref=sr_sp-atf_title_1_1?ie=UTF8&qid=1408323435&sr=8-1&keywords=big+nerd+ranch+ios

u/petermolnar_hu · 1 pointr/simpleios

Another thumbs up to Big Nerd Ranch books. If you want to focus on Objective-C use the 4th edition of iOS Programming: https://www.amazon.co.uk/iOS-Programming-Ranch-Guide-Guides/dp/0321942051/ref=sr_1_7?ie=UTF8&qid=1462183605&sr=8-7&keywords=Big+nerd+ranch

u/asdf-user · 1 pointr/mac

Hm, probably not. Obj-C is used for developing iOS/OS X Apps. But I have no clue what to use in Engineering, maybe C or C++

Infos about Alfred here. It's basically a better Spotlight Search, to find/launch Apps, find files, quick google search, calculator, etc

About Objective-C: Take a look at the Big Nerd Ranch Guide

For Java: Head First

C: The C Programming Language

EDIT: iTerm2: Terminal replacement, I use it mainly for the hotkey window
and Cheatsheet: Hold command to get a list of all shortcuts for the active App

u/Tandoori_Pizza · 1 pointr/iOSProgramming

Last year I was using the second edition of this book - http://www.amazon.com/iOS-Programming-Ranch-Edition-Guides/dp/0321942051/ref=sr_1_1?ie=UTF8&qid=1413908253&sr=8-1&keywords=big+nerd+ranch

But for whatever reason it wouldn't work on Xcode 5 and I didn't care so much about buying the newest book, check out their forums to see if the 4th edition has any issues with Xcode 6.

u/Siriss85 · 1 pointr/Xcode

Yeah a lot of this stuff is old now that storyboards have come along. Also Xcode has change tremendously. I would recommend a different book. Not to mention, this person is a terrible writer. Big Nerd Ranch is great found here. Also, the Ray Wenderlich books and tutorials online are great.

u/linkrift · 1 pointr/iOSProgramming

Can't go wrong with the Big Nerd Ranch. That'll get you going on obj-c and a simple starter app. Their iOS specific book is great if you don't mind translating some of the out of date stuff.

u/this_is_a_reference · 1 pointr/cscareerquestions
u/arntzel · 1 pointr/IAmA

If you want an introduction to computer science:

Introduction to CS: https://itunes.apple.com/us/course/this-is-cs50-2012./id624655973.
Stanford's iOS course: https://itunes.apple.com/us/course/coding-together-developing/id593208016 - This can be challenging for beginners as it assumes prior computer programming experience. That said the course is incredibly comprehensive and does an amazing job of teaching iOS.

u/AlphaDonkey1 · 1 pointr/iOSProgramming

Use these ebooks. They're brilliant:

First: Learn some Objective-C
Second: Start with iOS

It's very important that you don't give up when learning to write software. Keep chiseling at it and you will be able to create amazing apps.

u/UH1868 · 1 pointr/iOSProgramming

Pointers

In all seriousness, others have mentioned great resources. I found the Big Nerd Ranch Book to be a great resource. From zero Objective-C knowledge to developing.

u/kippypapa · 1 pointr/iOSProgramming

I did this back when it was only like $150
https://www.udemy.com/the-complete-ios-7-course-learn-by-building-14-apps/?dtcode=zVm6tx21l7ow

Vea Software - simple and easy projects
http://www.veasoftware.com/tutorials/

Chris Ching - great guy
http://codewithchris.com/

The Bible
http://www.amazon.com/Programming-Objective-C-Edition-Developers-Library/dp/0321967607

And, if you get stuck, come back here and ask questions or message me! It's a great skill and fun to do as well.

u/meteorfury · 1 pointr/ObjectiveC

C How to Program by Deitel is an extremely awesome book and you can knock out two birds with one stone by learning how to program in C. After that I would suggest Programming in Objective-C by Stephen Kochan from there I would then go into the Nerd Ranch Books and even take the Stanford iOS Courses which are free through iTunes University. You need to build a solid foundation of a programming mentality. It will take a little time but, then again, rome wasn't builit in a day. Good luck!

u/dxmzan · 1 pointr/iOSProgramming

It gets harder and harder as time goes on because a lot of the new books, editions and tutorials are converting to Swift.

Two of my favorite books for Objective-C are Stephen Kochan's Programming in Objective-C Sixth Edition and Big Nerd Ranch's Objective-C Programming.

Unless you're a voracious learner, I probably wouldn't read through the whole book but instead just use it for reference while also continuing your training in Swift. As someone else mentioned in this thread, most of your Objective-C work will probably be bug fixes or interacting with some Objective-C frameworks like RestKit. That means you'll have a plethora of codebase to look at and learn from.

u/iiMysticKid · 1 pointr/ObjectiveC

>Stephan Cochan

Not sure if it's a bug on Amazon UK, but it allows me to see the vast majority of the book without even buying it.

https://www.amazon.co.uk/Programming-Objective-C-Developers-Library-Stephen/dp/0321967607

u/carlosypunto · 1 pointr/ciif

He modificado mi comentario anterior, ahora es mas especifico. Ese manual, al que te refieres, requiere saber C o algo, tiene lagunas.

> Although it’s preferable to have some familiarity with C or one of the C-based languages such as Java or C#, this document does include inline examples of basic C language features such as flow control statements. If you have knowledge of another higher-level programming language, such as Ruby or Python, you should be able to follow the content.

Es decir, a la hora de la verdad, necesitas conocer mucha terminología C (enum, const, typedef, etc.) para entender código (incluso de Apple), el de Swift lo cuenta todo o un 98% y evoluciona con el lenguaje.

De todas formas me refería más a las páginas web bien indexadas puedes acceder a ellas con culaquier navegador (lo malo que con conexión) y desde cualquier dispositivo. No me gusta mucho iBooks prefiero los PDFs o webs.

A mi para Objective-C me ayudo más este libro y hombre yo había programado algo antes en otros lenguajes y con C había jugueteado un poco

Espero ansioso tu opinión al respecto, ademas tu eres de los que aprendiste y te desarrollaste en Objective-C, a mi me ha pillado a medias.

u/mobcat40 · 1 pointr/PHP

Sure, though I've also read people in your position are better at building apps with JS if they're new to it because things like PHP are completely different in how you start growing an app (classical vs prototypal inheritance) not to mention that if you also do PHP instead of just straight JS you're getting used to and learning 2 languages that are completely different in how you code. In either case you're right you have to learn JS anyway, here are the best resources after codeacademy basics stuff:

JavaScript: The Definitive Guide: Activate Your Web Pages (Definitive Guides):

http://www.amazon.com/JavaScript-Definitive-Guide-Activate-Guides/dp/0596805527/

JavaScript: The Good Parts:

http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/

Programming JavaScript Applications: Robust Web Architecture with Node, HTML5, and Modern JS Libraries:

http://www.amazon.com/Programming-JavaScript-Applications-Architecture-Libraries/dp/1491950293/

A cool talk from last year of the Fluent conference (and the author of that last book) explaining how different something like PHP and JavaScript are and why JS doesn't deserve the bad rap it used to get (He's a pretty cool guy from Adobe and I got to talk to him last week about all of these things we're talking about right now and where web development is heading, and why JS as a single language for the web can work even better):

http://www.youtube.com/watch?v=lKCCZTUx0sI

This was a really cool overview on JS today, and you get to see Unreal Tournament and the Unreal 4 engine run in a web browser:

http://www.youtube.com/watch?v=aZqhRICne_M

u/sotopheavy · 1 pointr/webdev

I have the first of these and plan to get the second two soon as they have come highly recommended by /r/programming at one time or another.

u/N8Programs · 1 pointr/learnjavascript

Things have changed a lot! A good summary would be:

Front-End Frameworks: Robust libraries that make developing good-looking UIs easier and make your code more scalable. (ex: Vue, React)

No More Frames: Only the <iframe> tag remains. The use of frames is discouraged, and CSS flexbox (a responsive style that makes your site work for desktop and mobile if used correctly) is used.

Fancy New Paradigms: It is no longer encouraged to program javascript in traditional OOP styles with classes + inheritance. Instead, a paradigm called Functional Programming is encouraged. Functional Programming drifts away from classes and inheritance, and towards functions, and specifically, higher order functions. In addition, creating mutable variables in excess has fallen out of favor.

So, while a lot has changed, if you know Java 8, are familiar with Lambda Expressions + Closure, and ready to devote some time to JavaScript and the frontend, you'll be making near-professional to professional looking websites in around 6 months (at least, that is my experience). And even if you aren't, JavaScript isn't hard to learn. I would recommend the following books + websites:

MDN - Good JavaScript Resource + Tons of documentation. https://developer.mozilla.org/en-US/

Javascript: The Good Parts - https://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742 (Bit outdated)

How Javascript Works - https://howjavascriptworks.com/ (Recent)

Javascript: The Definitive Guide - https://www.amazon.com/JavaScript-Definitive-Guide-Activate-Guides/dp/0596805527 (Bit outdated)

u/Neres28 · 1 pointr/Codecademy

They are essentially identical.

function functName(...)

is referred to as a function statement whereas

var varName = function(...)

is called a function literal. You can also name the function in a function literal:

var varName = function functName(...) // useful for recursive functions.

Function literals are used (for example) when passing a function to another function.

Functions are covered in length in Chapter 8 of this book; my recommended resource for anyone serious about learning JavaScript.

u/pierotofy · 1 pointr/gis

To start, this line:

if radioanswer == qanswer{

Is not valid JS. You need to put parenthesis:

if (radioanswer == qanswer){

Then radioanswer should be assigned within the function block, not outside of it. Otherwise it will always have the same value.

Please, please do not try to improvise Javascript (even if you are not a developer by profession). You will fall into the many confusing pitfalls of the language. Find some time to read (at a minimum) https://www.amazon.com/JavaScript-Definitive-Guide-Activate-Guides/dp/0596805527/ref=pd_bxgy_14_img_2?_encoding=UTF8&pd_rd_i=0596805527&pd_rd_r=5DC6HMEAZ6MCTJY2YYQQ&pd_rd_w=JasEw&pd_rd_wg=wBgln&psc=1&refRID=5DC6HMEAZ6MCTJY2YYQQ and https://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/ref=sr_1_1?ie=UTF8&qid=1525662051&sr=8-1&keywords=javascript+the+good+parts

It will save you countless hours of troubleshooting.

u/nna12 · 1 pointr/learnprogramming

As /u/mr_stark said you have the interest and love for it which is a big plus. Don't get discouraged, programming is not just about the language or the language. It is about problem solving, collaboration and design.

I always recommend stepping back from the code when you first approach a problem. How would you solve the problem if someone asked you to do it using regular English sentences.

For example "tell me the length of a string"
*Go through each character and add 1 while I have not reached the end

  • return the end result

    Learn your data structures. Arrays,Lists, Hash Tables, Dictionaries they all typed of problems they are good for and types of problem they are horrible for. Learn the difference, and when to use which.

    Once you have these two down, you are now ready for the different algorithms. This is where the design comes in. This book is very good at helping with this. It's old but a very good book.

    Note that as you are learning this you should choose a language and code up the different data structures and do small programs to learn the ideas. This will also teach you the language as you go along. www.coursera.com is great for free courses and resources.

    Once you have the basic ideas you can start getting more in depth courses for the languages you want to learn. For C# I recommend CLR via C# for example for C#.

    Lastly as with most things the only way you will get better is practice practice practice. Start creating apps to help yourself out and automate daily things you do. Start exploring and creating different applications.

    Hope this helps!
    Good luck!
u/fokov · 1 pointr/dotnet

If you are interested, CLR via C# will provide one with a metric fuck-ton of trivia on how it really works. I read the 2nd edition about 7+ years ago, but most of the really trivial stuff fell out of my head. However, a lot of that knowledge isn't needed to actually build a working product.

One reason I like out params is the patterns similiar to bool TryParse(string text, out T value). This way a single if statement can shorten code up considerably if I need to write other conditions limiting the value to perform default or special case logic. The more I can reduce boilerplate/noisy code the better IMO.

u/pngs · 1 pointr/csharp
u/Mr_Ected · 1 pointr/learnprogramming

If you really want to dig into the trenches and learn the ins and outs of C# from a more bottom-up approach, then I can't think of a better book to use than CLR via C# (Richter).

Don't let the table of contents fool you, this is definitely a more advanced text.

If you can work through the whole book and understand it, as well as C# In Depth, then you will definitely have an advanced knowledge of the language.

u/programmingwithwill · 1 pointr/csharp

I will agree that it isn't cheap but if you're serious about your professional development, it is well worth it. If you want to just try it out, they have a 10 day free trial.

To be honest, though, I'm not sure what you mean by "advanced topics and concepts." There are plenty of courses on PluralSight that I would consider advanced but it sounds like there is only one on there that interests you.

Regardless, if you are looking for something more intermediate, PluralSight has you covered. If you're looking for something more advanced than PluralSight can offer, maybe you should look into https://www.amazon.com/CLR-via-4th-Developer-Reference/dp/0735667454

Edit: I'd like to add that http://bafflednerd.com/learn-csharp-online/ was on this subreddit the other day and seems like a pretty thorough list. Free courses and never as good as paid ones, though (in my experience).

u/volandkit · 1 pointr/cscareerquestions

Read some easy beginner's book like Head First C# to get initial grasp of a language and after you finished with it read C# in Depth. If you really want to understand what is happening pick up CLR via C#.
Also always follow Code complete religiously and you will be better than most.

u/kasano · 1 pointr/funny

CLR via C# by Jeffrey Richter, my favorite C# book.

u/kidmenot · 1 pointr/learnprogramming

> I just think that it would be good to know the language better in case I get a job were I need to make desktop apps.

Then I will go with the obvious and suggest Jon Skeet's C# in Depth, I really like the way he explains things. But it's so well-known that odds are very good you will already have checked it out.

Jeffrey Richter's CLR via C# is also a very good resource if you are into lower-level CLR details, which is always good stuff to know.

u/The_Sober_Grudge · 1 pointr/askscience

Generally speaking, "reverse engineering" implies getting an executable (like a .exe file on Windows) and trying to figure out what it does at the level of the source code. Reverse engineering is a long and tedious process that is not as simple as it sounds for several reasons.

The first thing that you have to understand is how a program goes from source code to EXE (since we're going in the opposite direction when we reverse an .exe file). When a program is written in a high level language like C or C++, it can't be run by a computer until it has been compiled, a special process performed by a compiler. Compilers take the source code, and translate it first into a middle language called an intermediate representation that represents the logical structure of the program, and then based on that middle language emit machine code. Machine code (which can be translated into a human readable form called assembly language) is the binary language that the CPU actually uses to do computation - it contains very simple instructions like "move this data to this location in memory" or "add these two numbers together". Most compilers will also make a lot of optimizations in before emitting the machine code - for example, if they see a certain piece of data being accessed and stored unnecessarily, they may move the code responsible for the redundancy to another place in the executable to avoid wasted operations. The compiler will finally output a file called an object file, which contains optimized machine code.

However, this file is generally not executable - it still has to be linked by the linker, (which sometimes automatically runs after the compiler). The linker performs several tasks, like fixing up absolute addressing to ensure that a program can be loaded anywhere in it's address space, as well as providing references to shared libraries. Usually when writing big programs, developers will use already-written code, like the C library or other vendor specific packages, by referencing it in the source code. For example, C source code can use statements like

include <stdio.h>


to indicate that the program includes references to the standard input/output library in the C library, which is used to allow user-provided data and to print data to the screen, among other things. So, it's the linker's job to ensure that these libraries are included in the final executable and that the other object files can reference them correctly. To make matters worse, the linker will build the executable program in whatever file format the operating system uses (PE on Windows, ELF on Linux, and Mach-O on OSX), and these file formats store the program data and code in separate locations. However, the linker handles this cleanly and produces a compiled, optimized, and linked program in the right format, which can then be executed. So that's how it happens normally.

So now, let's do it in reverse. Suppose you have suspicious.exe, a file that you think is malware and you want to find out what it does so that you know whether it's dangerous or not. Suspicious.exe is a compiled and linked executable, and since it was optimized, you don't necessarily have a 1-to-1 correspondence between each machine code instruction and each line of source code (and you don't have the source code anyway). Furthermore, the Intel x86 architecture that most commercial personal computers use in their CPUs uses variable length machine code instructions - some of the instructions will be longer than others, so it is very difficult to look at them in a binary and figure out what is doing what. This is where a disassembler is used - a program that takes a raw binary file and emits human readable assembly language. Because of variable length instructions, some disassemblers even emit the wrong assembly instructions sometimes! However, because the program has to be able to run consistently and reliably when given to the CPU, there is always a way to disassemble it into the correct machine code - it sometimes just takes a few hours (and a headache or two).

Now, you've disassembled the file using a tool like IDA Pro (which can cost hundreds or thousands of dollars, depending on the license), and you have human-readable assembly. So why is it still hard to figure out what the program does? Firstly, any descriptive variable names that a programmer used to make the source code more easy to read are gone because the compiler got rid of them once it generated the intermediate representation - so you don't even know what the various memory references are where data is stored. Secondly, while you can tell where functions begin and end, you can't necessarily tell what they do - they're just blobs of assembly, and sometimes not even that; if the functions were included in a shared library, they'll often be just references to the address in memory where the imported library is placed when the operating system loads the process into its address space (it depends on whether the executable is dynamically or statically linked, but that's a more in depth and tangential discussion). You also don't where important data structures - like strings or pointer tables - are because what the disassembler doesn't recognize as code, it'll just call "data" and leave it at that. Thirdly, most of the data in the program depends on the memory state while it's running, which you can't tell just by looking at the assembly. You need to actually run suspicious.exe.

So you take a look at this mess, ask yourself why you chose this job in the first place instead of being a web developer even though they get paid about the same as you, open another can of Rockstar, and you get to work. Generally, you'll start suspicious.exe in a sandbox environment like a virtual machine using a debugger, which is a special program that will allow you to halt it and examine its memory state, register states, and other activity. As the program executes, you will begin to notice behaviors that resemble C structures - how you actually do this is a huge discussion that people have written entire books about, but suffice it to say for now that it comes with experience. Furthermore, if you use IDA (or keep a notebook), you'll write down lots of notes about the program behavior, and use Microsoft's MSDN pages (or Apple's developer documents or the Linux man pages, depending on what environment your executable runs in). Eventually, whatever it is that you were aiming to find out becomes clear, or you quit out of sheer frustration (but usually and hopefully the former).

Bear in mind that most people don't aim to entirely reverse engineer every bit of machine code in an executable. A lot of it isn't related to what you're trying to discover, and so part of the game is first finding what pieces of code are actually relevant (which you do with a debugger by stopping the program's execution once it starts doing stuff relevant to your reversing purposes), then reversing those little parts of the code.

u/serious_face · 1 pointr/ReverseEngineering

I'm in a similar position (besides having a nice cert ;), and what I'm going through right now is a combination of Lena's tutorials, and Reversing - Secrets of Reverse Engineering. The book actually seems like a really good "foundation" kind of book, since it spends the first 4 chapters or so going over the basics of compilers, operating systems, memory, etc. As for Lena's tutorials, it's hard for me to say because I've only finished a few, but I've heard good things about them. Good luck.

u/robvas · 1 pointr/linux

You need to know a lot of things to be able to figure that kind of stuff out. Not just low-level programming but details about hardware, tricks the developers used to create the product...

These books might be a good start:

Reversing: Secrets of Reverse Engineering

Gray Hat Python - Since you are familiar with Python right now



u/bestseeker · 1 pointr/ReverseEngineering

I'll tell it like it is. Most colleges don't really teach useful things these days in favor of giving you a broad education and emptying your wallet. You'd probably only have one or two courses on reverse engineering, if that. The best thing to do is probably learn it on your own and take whichever major of those you enjoy more. I recommend checking out this book for software RE. http://www.amazon.com/gp/product/0764574817/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=0764574817&linkCode=as2&tag=viewsite-20

u/haxcess · 1 pointr/ccna

I remember this text: http://amzn.com/0123742684

And for the programming side of things:

u/Spektr44 · 1 pointr/webdev

Years ago, when I wanted to go from hacking around in PHP to learning to use the language properly, I found an excellent book that helped a lot: PHP Objects, Patterns and Practice. The author walks you through creating a basic framework of your own. (Personally, I prefer basic things to heavyweight frameworks anyway.) It's a great book, and it seems there was a new edition published in 2010. I would recommend it.

u/growlzor · 1 pointr/PHP

I started with Head First PHP & MySQL when I started years ago. Two books I loved the most though were Beginning PHP and MySQL From Novice to Professional and PHP Solutions Dynamic Web Design Made Easy.

Later this book helped me immensely PHP Objects, Patterns, and Practice.

Ultimately, php.net is your bible and you can learn everything from there alone. Post on forums and ask for help. Try something and stick with it, don't jump around creating dozens of projects but stick with one and expand it.

Also this

u/KoleCasule1 · 1 pointr/csharp

Hehe, thanks for pointing out. I'll definitely read "APP&P" as it's from Uncle Bob and I see people cherishing his work.

Since I mentioned it, I assumed you are talking about Uncle Bob's book: https://www.amazon.co.uk/Principles-Patterns-Practices-Robert-Martin/dp/0131857258

Correct me if I am wrong.

u/Innovashiun · 1 pointr/learnprogramming

For what it's worth, you are up to something. The thing is, however, that in big tech companies they use "Java, C++ or other mainstream" as a placeholder. They won't shut the door in your face if you tell them you're good at C#. As an example look at John Skeet, author of C# in depth who's working at Google now.

Agile principles http://www.amazon.com/Agile-Principles-Patterns-Practices-C/dp/0131857258 and working with Hadoop with .NET http://blogs.msdn.com/b/data_otaku/archive/2013/08/14/hadoop-for-net-developers.aspx but in general, someone can jump back and forth if the need rises.

You're probably looking at something like "I prefer start-ups and mid-sized companies over corporate" and not something language-specific.

u/jacobisaman · 1 pointr/ISTJ

I have been a software engineer for about a year. We use Test Driven Development where I work, and I have found that it really helps me think through the requirements and make decisions about what the software should do one step at a time. I definitely prefer this method to just "feeling it out" like some of the intuitives do.

I have also found it incredibly useful to get familiar with good programming practices and patterns and would recommend stocking up on books and maybe reading them with another person or two for discussion. Clean Code and Agile Principles, Patters, and Practices have been very useful for me. Once you start to get the general patterns down, designing something from scratch isn't such a mind explosion, because you have a general idea of how things should be designed and what "good" software looks like.

u/MadeWithPat · 1 pointr/node

Clean Code is a good one :) The book where he goes into SOLID is the Agile PPP book . I believe he refers to Clean Code as a sort of prequel to Agile PPP.

It sounds like you’re doing pretty well and on the right track. CORS is an area where I’m not especially strong, tbh. I would probably put the api on an api.example.com subdomain, but that’s sheer personal preference.

I’ve spent so much time in .NET recently, it’s nice to jump into a JS discussion. Time well spent, in my mind.

u/banuday17 · 1 pointr/java

Agile Principles, Patterns and Practices in C#. The online version is from the older Java book.

This book is hands down the best book I've read on how to do Object Oriented Programming.

u/gibbons1980 · 1 pointr/csharp

I think learning OOP is a very good idea. There are tons of books on the subject but I would recommend these 2:

Uncle Bob's Agile Principles, Patterns, and Practices in C#

This book will teach you not only about good OOP principles (SOLID principles) but a also a lot about other programming practices such as testing and refactoring.

Sandy Metz's Practical Object-Oriented Design in Ruby: An Agile Primer

Don't worry about being a Ruby book, you should be able to understand the concepts (and learn some Ruby). Sandy ha a very good way of teaching how to think about OOP.

Hope it helps.

PS: I'm curious: what exactly did you struggle with? What made you think you should learn OOP?

u/sh0rug0ru_ · 1 pointr/java

I would suggest reading these books to get a deep understanding of OOP:

  • Agile Patterns, Princples and Practices in C#
  • Growing Object Oriented Software Guided by Tests
  • Clean Code

    Here's a chapter from the Agile PPP book, Heuristics and Coffee, which gives a great overview on how to think in OOP terms. Keep this in mind: OOP is a way of thinking as much as it is a way of programming. OOP lives in the spaces between objects, in the methods, not necessarily the objects!

    Also, note that OOP is a code organization, which really starts to make sense in larger programs. I would suggest writing some larger programs, such as a contact manager, an email client, a chat application, etc. Larger programs will give you a chance to play with technologies such as databases and client/server networking. More stuff to add to the ol' resume.
u/bluelite · 1 pointr/learnprogramming

Programming Pearls was very influential for me. Some of the examples are a bit dated, but the overall messages haven't changed.

u/p100101 · 1 pointr/EDC

I'm upgrading my EDC bag next week to a backpack, and felt that I should share my trusted canvas bag of 10+ years in order to give it a proper send off :(

I love its weathered look, but it simply doesn't fit everything that I need and it's difficult to carry larger items when I'm on my bike.

Canvas Messenger Bag

Blender Bottle

Bern Bike Helmet. Berkeley w/ Visor (not attached)

Anker E7 26800mAh Portable Charger

Ray Ban Aviator Classic

Bose Quiet Comfort 25 Noise Cancelling Headphones

GORUCK Tac Hat (mesh - black)

Rogue Velcro Path

Tech21 Impact Tactical Case - Galaxy s5

Rogue Metal Wallet - Rogue Logo

Leatherman 10 (on keys)

Black Notebook (book notes)

Programming Pearls, Second edition by Jon Bentley

Leather Covered Notebook (work notes)

Brown Notebook (scratch notes)

Precise V5 Pens (blue & black)

u/SantaCruzDad · 1 pointr/C_Programming
u/ashashwat · 1 pointr/learnprogramming

Programming Pearls by Jon Bentley.
You may skip the exercises (as it require programming).

u/Bewilderforce · 1 pointr/learnprogramming

The original book is a great resource simply because it was authored by language creators. There are some fairly mature online resources as well such as the tutorial at cprogramming which should work just fine as a substitute. If you already are familiar with some programming language I would suggest learning the basic syntax of C from an online source (maybe getting used to it a bit) and then picking up a copy of Programming Pearls, it really emphasizes program design and design philosophies.

u/yellowstuff · 1 pointr/finance

It's been a while since I interviewed, and some more specific information about the role would be helpful. But as general advice, you should do the exercises in Programming Pearls, and not as good but still helpful Programming Interviews Exposed. Project Euler also has good programming finger exercises.

If you need to write code on a white board practice that specifically.

u/oilshell · 1 pointr/ProgrammingLanguages

Yeah there was nothing in the talk about it.

As far as I can tell, it's a somewhat silly reference to the fact that the influential book "Modern C++ Design" was written in the C++ 98 era.

This 2001 book advocated a clean break from the C heritage in C++:

https://www.amazon.com/Modern-Design-Generic-Programming-Patterns/dp/0201704315

It's heavy on template metaprogramming. I actually prefer "C with classes" for many problems, but it's it's clear that C++11, 14, 17 are going further in this direction.

And I believe that Immer relies on many features from C++11 and 14. Those features enable C++ the language to delegate all its data structures to libraries, rather than being part of the language.

-----

For a completely different and more useful application of the word "postmodern" in programming, I recommend this paper:

http://www.mcs.vuw.ac.nz/comp/Publications/CS-TR-02-9.abs.html

It's very insightful, fun, and in the 15 years since it was written has become more relevant. I haven't blogged about this, but this kind of thinking underlies the shell and the design of the Oil shell in particular. In particular, in large systems, there is "no grand narrative", and it makes sense to opportunistically use models when they are useful, but throw them out when they are not.

There is a tendency among programming language designers to assume that they are at the center of the universe. A big part of shell is about making existing pieces written in different languages work together.

And that includes the operating system. To me, it's obvious that runtime is more important compile time, and too many programming languages are ignorant of the other enormous piece of code that runs when your program runs -- the operating system.

u/unknownmat · 1 pointr/softwaredevelopment

Could you post a link to the negative response you received? I would be curious to judge it for myself.

There was a fairly strong anti-OO backlash that I would place in the early 00's up to about 2008. The furor has since died down (or at least I'm no longer seeing anti-OO blog posts like I used to). If you're interested I could probably dig up some more, but off the top of my head:

  • Execution In The Kingdom of Nouns

  • Why Arc Isn't Especially Object Oriented - and in particular "the smartest programmers [Graham knows] are some of the least excited about [Object Oriented Programming]".


    Personally, I'm not a huge fan of OOP. It models some problems very well, such as GUI widgets and simulations. But in most domains it tends to result in a bunch of scaffolding that becomes a permanent part of your code base. It is a crutch for when you poorly understand your problem - objects give you something "concrete" to grasp and this is fine for a first pass - but ultimately you should prefer cleaner and simpler abstractions that more closely map to the problem domain.

    I also think that C++ is a horrible language for OOP. It's not flexible enough and thus requires a great deal of biolerplate to achieve object-like behavior. For OO-tasks I prefer to work in Smalltalk-inspired languages like Python or Ruby. In particular, characteristics of "real" OO languages would be: late-bound, dynamically typed, and introspective.

    Instead, when I work in C++ I prefer to use (what I think of as) "modern style" which was first defined (to the best of my knowledge) in Alexandrescu's book, and is perhaps best embodied by the Boost C++ library style. I realize that this is not everyone's cup of tea. But I think that this is the one area that C++ legitimately shines. It is what I call the "no compromise" style of programming - with the help of template meta-programming libraries you can write your code at a very high level of abstraction, and yet compile it down to extremely efficient code as if it were hand-coded in C to do that specific task. It can be pretty amazing, although it can also be (and probably is) a Turing Tarpit.

    EDIT: Not sure why it really matters but: mid-30's, and I work on automotive infotainment systems. C & C++ are the only languages officially supported on the platform, so despite my dislike of C++, I write a lot of it and it is probably my strongest language.
u/Truth_Be_Told · 1 pointr/C_Programming

First note that Career/Job/Market is quite different from Knowledge/Intellectual satisfaction. So you have to keep "earning money" separate from "gaining knowledge" but do both parallely. If you are one of the lucky few who has both aligned in a particular job, you have got it made. Mostly that is never the case and hence you have to work on your Motivation/Enthusiasm and keep hammering away at the difficult subjects. There are no shortcuts :-)

I prefer Books to the Internet for study since they are more coherent and less distracting, allowing you to focus better on a subject. Unless newer editions are reqd. buy used/older editions to save money and build a large library. So here is a selection from my library (in no particular order);

u/thechao · 1 pointr/AskComputerScience

Programming is language agnostic; it sounds like you're looking for breadth rather than depth, so:

u/akevinclark · 1 pointr/cscareerquestions

Kind of dated now but still mind expanding: Modern C++ Design by Alexandrescu. Templates can get pretty intense and let you choose what gets done at compile time.

u/ferruccio · 1 pointr/cpp

http://www.amazon.com/Modern-Design-Generic-Programming-Patterns/dp/0201704315 - amazing book, completely changed the way I write C++ code

u/cheerfulloser · 1 pointr/learnprogramming

The top things that you're tested on during interviews are:

  1. proficiency/skill with your primary programming language
  2. algorithms
  3. data structures

    It looks like you're well on your way to #1. I am not a .NET developer, so can't help much there.

    However, here're my suggestions for #2 and #3

    algorithms - CLRS is a standard book for algorithms in university courses (http://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844). However, I found the book a bit of a dull read. It might be better to start off with this book instead (http://www.amazon.com/Algorithm-Design-Jon-Kleinberg/dp/0321295358)

    Data structures - I don't have a specific book in mind but I suggest looking up Amazon reviews and getting a highly rated book.

    The reason algorithms and data structures are tested heavily is because you want to write an efficient algorithm/solution for your work projects & tasks. Depending on the situation, having a good eye for determining the appropriate data structure and algorithm is a must.
u/JustThe-Q-Tip · 1 pointr/learnprogramming

www.geeksforgeeks.org is nice, in lieu of specific books. Lots of practice problems, lots of explanations, which I think are key to learning the stuff. A bit of linear text can certainly help, in case you want justifications for certain concepts, but you're usually better off keeping that light and as-needed, and jumping into problems as soon as possible. Break your brain and rebuild stronger.

And... https://www.reddit.com/r/learnprogramming/wiki/books

Oh and one text I don't see mentioned is Algorithm Design by Kleinberg and Tardos.

u/PasswordIsntHAMSTER · 1 pointr/cscareerquestions

You're missing concurrent programming, alternative paradigms and algorithms.

u/LazyAnt_ · 1 pointr/cscareerquestions

I just saw your edit. Since you are not looking for books just like Grokking Algorithms, I will suggest another amazing book on algorithms.

https://www.amazon.co.uk/Algorithm-Design-Jon-Kleinberg/dp/0321295358

Algorithm Design by Kleinberg and Tardos. I thoroughly enjoyed it and I highly recommend it to anyone interested in algorithms. One of my favourites.

u/sgt_fred_colon_ankh · 1 pointr/learnprogramming

"Algorithm Design" by Kleinberg and Tardos (https://www.amazon.com/Algorithm-Design-Jon-Kleinberg/dp/0321295358) is a good textbook. It's actually readable. Most algorithms textbooks are more like reference books ... helpful when you already know algorithms and want to look something up, but not helpful to teach it to you.

There are some slides based on the book here (http://www.cs.princeton.edu/~wayne/kleinberg-tardos/) which could be useful too.

u/zaken · 1 pointr/programming

The one we used in undergrad was Kleinberg and Tardos

u/_Valkryst · 1 pointr/learnprogramming

Ignore the book at the following link unless you want to be bored to death. It may be useful if you want to learn a little bit about Greedy Algorithms, Dynamic Programming, etc... and a few problems/solutions for each, but the book is terribly written.

http://www.amazon.ca/gp/product/0321295358

u/mvpete · 1 pointr/cpp_questions

Give the guy a break. He's clearly learning and the last thing someone who is learning needs is to be ridiculed for trying. I get that he's being a bit cocky, but maybe he's coming from a different language, where he was strong, or something and doesn't quite the get the idiosyncrasies of C++. If you put yourself, someone who has some, moderate, maybe even decades of experience in his shoes, you might think twice about being so blatantly disrespectful. You followed it up with good instruction, but why put the guy down? You don't have to be an asshole to help the guy.

As for /u/roflmaohaxorz, you might want to check out some beginner books like Programming: Principle and Practice using C++. Maybe, take a look at using std::string, instead of trying to manage your strings raw. Then I'd suggest reading up on how the standard input and output streams work. Maybe some investigation into primitive data types to understand the difference between arrays, pointers and values. Keep trying, but be modest. Try to understand likely you don't know, what you don't know. Lastly, have fun!

u/cisnotation · 1 pointr/AskReddit

I don't have a book to recomend but I have a book that you should not read. DO NOT USE THIS BOOK It was written buy the creator of c++ himself and it sucks. I think I fell asleep in Stroustrop's lecture while in this intro to c++ class...

u/last_useful_man · 1 pointr/cpp

For what it's worth Stroustrup has another C++ book, /to learn programming with/, ie it goes more gently and has more examples.

I indeed wouldn't try to learn programming with the 3rd edition main C++ book, but then I'm not sure I'd try to learn programming with C++, either (Python). He uses the linked book above to teach, it's probably suitable to learn from.

u/MooseDog00 · 1 pointr/news

My first CS prof, Bjarne Stroustrup, actually did the same sort of thing. (Minus the e-book part)

He told us his book is made a little more cheaply to better be affordable for us. Check out how cheap the 1.2k page book is (Under $50) http://www.amazon.com/Programming-Principles-Practice-Using-C/dp/0321543726

And honestly, the build quality is fine. I paid the same for a 120 page year book and had pages fall out day 1, but this text was lugged around campus and thrown about and had no issues whatsoever. I also got it used...

u/nmtake · 1 pointr/programming_jp

ああーストラウストラップじゃなくてビューティフルコードでしたか
言われてみれば鳥の数がちょっといやだいぶ違うような・・・

https://www.amazon.co.jp/Programming-Principles-Practice-Developers-Library/dp/0321543726/

u/LainIwakura · 1 pointr/learnprogramming

I know you said online, but I'd highly recommend this book- by the creator of C++ himself. (Bjarne Stroustrup)

http://www.amazon.com/Programming-Principles-Practice-Using-C/dp/0321543726/ref=sr_1_1?ie=UTF8&qid=1300905008&sr=8-1

It's not as heavy as one of his other books, and is a good introduction to programming in general.

u/Gunslinging_Gamer · 1 pointr/cpp

Bjarne Stroustrup - Programming: Principles and Practice Using C++ (Amazon Link) would be my first recommendation.

It gives clear and detailed instruction right from the start. It's a lot of work, but it's well worth it. Buy a physical copy if you can; it's far better to work from a book.

u/serados · 1 pointr/gamedev

A proper infix calculator program that can read something like 5*(3.5-1.2)/15+2.9 and give the correct answer isn't simple at all. It requires the creation of a parser, and to write a parser you'll need to know what grammar you're working with. The type of thinking needed to write a calculator is a step up from something simpler like a temperature converter, Tic Tac Toe or even Minesweeper even if it may not seem so.

Bjarne Stroustrup's Programming: Principles and Practice Using C++ devotes two chapters to making a complete console-based calculator with proper error checking and recovery in Chapters 6 and 7, which also happens to be where the difficulty of the book spikes considerably. He doesn't use a stack, which would be conventional for a calculator program, because stacks have not been covered at that point. Instead, he chooses to use repeated pushing and getting from a custom token stream to solve the problem.

If you're looking for a book that teaches you how to program and runs you through the thought process of a programmer as he builds a program, I recommend Stroustrup's book. It's not that suitable for an absolute beginner and his chapter organization seems slightly haphazard, but that doesn't take it away from being an excellent guide. It happens to use C++, but it teaches programming and does not teach a programming language. I suspect a book like that is what you want.

His (deliberately bug-filled as an exercise) solution at the end of Chapter 6 can be found here. Yes, it's hard to understand.

u/memeHUSK · 1 pointr/learnprogramming

I just finished this book and highly recommend it as a starting point.

u/bogo_sort · 1 pointr/cpp_questions

up

dammit. Thanks for taking the time to explain that to me.


This

>is a valid URL. The code doesn't limit the protocol to just "http", anything before a "://" will be accepted.



and that


>getline(inFile, sentence); will discard the ending newline,


are really good to know.


> paragraph.assign(std::istreambuf_iterator<char>{inFile},
std::istreambuf_iterator<char>{});

thx.


This book is like Jesus to those people at learnprogramming however I think I may pick up a different one.

How's this one book

u/apokorney · 1 pointr/learnprogramming

Thanks, I've got Principles and Practice using C++ by Bjarne Stroustrup ordered, however code doesn't exactly match from the texts I have read to VB. I was just trying to get some definitions, so I can recognize how to identify code in the future. Thanks

u/Amorphic · 1 pointr/simpleios

I've seen the following recommended, I've not read them myself yet, so can't comment on how good they are or not:

Objective-C Programming: The Big Nerd Ranch Guide (Big Nerd Ranch Guides)


Programming in Objective-C (4th Edition) (Developer's Library)

u/boom_shaka_lakaa · 1 pointr/AskReddit

I really wish I had started programming earlier. It's something that you easily have the capacity to learn at the age of 15 and you can teach yourself outside of school. I'd recommend getting some books from amazon. If you have a mac, learning iOS app development can be an awesome way to get started. You could get these 2 books (this and this) and be well on your way to developing iphone and ipad apps by the end of this school year.

u/patricklouys · 1 pointr/PHP

If you are only used to CodeIgniter, you probably lack a lot of OOP knowledge. Grab a copy of clean code and go through the clean code talks

u/Mgm_it · 1 pointr/ItalyInformatica

E` sulla mia scrivania da alcuni anni, presenza fissa (rileggo pezzi ogni tanto).

Insieme a lui anche questi:

https://www.amazon.it/Clean-Code-Handbook-Software-Craftsmanship-ebook/dp/B001GSTOAM

https://www.amazon.it/Code-Complete-Developer-Best-Practices-ebook/dp/B00JDMPOSY/

e questo

https://www.amazon.it/Practice-Programming-Addison-Wesley-Professional-Computing-ebook/dp/B00HU50A12/

Non lo sto chiedendo strettamente per me, ma piuttosto per avere una conversazione sull'argomento (e magari per imparare qualche nuovo trucco).

Grazie comunque per aver citato uno dei libri che piu' apprezzo sull'argomento.

u/Ninja_Gah · 1 pointr/gamedev

There is writing readable code, and there is good design & architecture. When you do both it's called writing clean code.

Writing unreadable code does not necessary trap you, it traps your teammates. Build your software with poor design and architecture will trap everyone. Just remember the main purpose of writing clean code is not for yourself, it's for your teammates.

u/netherous · 1 pointr/learnprogramming

Not much to go on. Let's try this.

Do you understand the notion of decomposition? A well-organized program will have many functions, each of which does one thing and does it well. The higher level functions will use these as a toolkit to orchestrate more complex tasks. A program organized in such a way is easier to continue adding to even as it grows large.

Let's have an example. You have made the following lower-order functions in a hypothetical game, each of which does exactly what they advertise:

advanceToNextTurn
setPlayerMaxHealth
setPlayerSpriteGraphics
playSoundEffect

These are simple functions. Now let's make a function that uses them as a toolkit to accomplish a larger task. Let's turn the player into a werewolf.

def changePlayerIntoWerewolf():
setPlayerMaxHealth(player.currentHealth * 1.2)
setPlayerSpriteGraphics("sprites/werewolf")
playSoundEffect("audio/werewolf/howl.flac")
if(player.movementPoints < 1.0):
advanceToNextTurn()

Let's make an even higher-order function that uses this one.

def advanceMoonPhase():
if(moon.phase == 0): # full moon
if not player.inWerewolfForm:
changePlayerIntoWerewolf()
else:
if player.inWerewolfForm:
changePlayerIntoHuman()

Regarding your Roguelike - it's pretty simple as it is. I'm not sure what kind of trouble you have with it. A few hundred lines of code in a few files is not a complex program. You might consider rethinking some of the parts in terms of more stringent modelling of the game elements (for instance, shouldn't you have a Map class with all of the map data and information about which Being is standing where? Your movement methods might take the current game Map as an argument).

Books are always nice. Reading code is important, and there are many good books with excellent examples.

u/DevIceMan · 1 pointr/programminghorror

> 7

This is an anti-pattern. Even if you were going for hyper-performance code (which is a little silly in Java), the Compiler these days is typically very good at optimizing this type of code.

> 13

This guy hates functional programming. If you used a lambda, or Java streams, would you just automatically flunk the class?


From an overall perspective, I'd say this guy hasn't really learned much about computer science (if anything) in the last 10 years. If he intends to be an educator, code style should be based on a real style guide or well known book like:

u/Amimaro · 1 pointr/FreeCodeCamp

Thanks for your feedback and for digging into the code! It was a big help. Also sorry for the late response.

> Only found one 'bug'

I will fix it.

> You also might want to rework your 'blocks' array

You are right, this will make it easier.
I wanted to make the enemies move around the map, maybe this might ease things out.

> readability + maintainability

I agree! I will fix it. Some concepts that you pointed out I remembered (but forgot while coding) from Clean Code (Robert Cecil Martin) about conditional encapsulation and the magical numbers.


u/codysnider · 0 pointsr/phpstorm

Oh, man. I just realized my second comment was providing almost the exact same information as my first comment, rendering it completely redundant. I hope I didn't waste too much of your time reading that.

But, hey, it's not like I littered your codebase with redundant docblocks when a language feature like hinting exists. That would be foolish and would go against the principles of writing clean code.

u/RollingGoron · 0 pointsr/learnprogramming

A couple of questions:

  1. What Phone do you use?
  2. What computer OS do you use?


    If you have a PC, you can only develop for Android.
    If you have a Mac, you can developer for iOS or Android.

    I highly recommend a book over a website. They are much more comprehensive and go into greater detail.

    Mac/iOS uses Objective-C.
    http://www.amazon.com/Objective-C-Programming-Ranch-Guide-Guides/dp/032194206X/ref=sr_1_1?ie=UTF8&qid=1419300572&sr=8-1&keywords=big+nerd+ranch+objective+c

    http://www.amazon.com/iOS-Programming-Ranch-Guide-Guides/dp/0321942051/ref=sr_1_1?ie=UTF8&qid=1419300564&sr=8-1&keywords=Big+Nerd+ranch+ios

    Android

    http://www.amazon.com/Android-Programming-Ranch-Guide-Guides/dp/0321804333/ref=sr_1_1?ie=UTF8&qid=1419300685&sr=8-1&keywords=Big+Nerd+ranch+android

    Big Nerd Ranch books are awesome.
u/serentilla · 0 pointsr/nottheonion

This is why in bookshops you see The Bible, The Definitive Guide and The Bible, the good parts

u/Xen0m0rph · 0 pointsr/Romania

.NET, cool.

Nu subestima niciodata importanta dezvoltarii cunostintelor tehnice. Sunt considerabil mai importante decat acele "soft/social skills" in domeniul asta, mai ales daca vrei sa ajungi departe in directia asta (senior dev, arhitect, CTO etc.). Cu astea incepi intai - daca vrei sa treci spre management in schimb (care deviaza deja de la software design & development cu mult, e practic alta meserie si s-ar putea sa nu-ti placa) atunci poti lucra puternic si la social skills.

Gandeste-te in urmatoarele 6-12 luni cam pe ce ti-ar placea cel mai mult sa te axezi: front-end, back-end, mobile, devops... In functie de alegerea asta stabileste-ti un subset de framework-uri (EF, Web API, MVC, etc.) pe care sa devii foarte versat, sa fii pe ele in cei top 25% (sau chiar 5%!) din compania ta, asa cum zici ca erai si in facultate. O sa dureze, dar merita efortul. Si nu-i lasa pe altii sa aleaga pentru tine pe cat posibil.

Si neaparat, citeste constant carti in domeniu. Nu te limita doar la blog-uri si articole pe net, alea nu mi se par ca sedimenteaza cunostintele asa cum o fac cartile. Citeste cat de des poti carti de inginerie software in general si .NET in particular. Cateva recomandari:

Pro C# 2010 and the .NET 4 Platform

CLR via C#

C# in Depth

Dependency Injection in .NET

Clean Code: A Handbook of Agile Software Craftsmanship

Astea sunt doar cateva, n-are rost sa mai extind lista, sigur vei gasi trimiteri catre alte carti de referinta citindu-le pe cele enumerate mai sus sau din discutii cu colegii.

u/r4and0muser9482 · 0 pointsr/math

Not sure what you mean by CS background, but depending on the book, you may need more books to understand that one.

For introduction to computers and programming I recommend David Harel and some people really dig Jon Bentley. There's probably a ton of other recommendations out there, but ultimately they all lead to the bible :)

So yea, getting some background on programming may be necessary, but not too difficult. I mean, if a highschooler/college freshman can do it, so can anyone, right?

u/gte910h · 0 pointsr/programming

>Classes without template parameters are not in a different type system then those with them.

Many people very strongly metaprogram in C++, using templates to make abstract types that bear no resemblance to traditional C++ classes, doing polymorphism, data hiding and various other cannonical aspects of classes without a class keyword in site. It quite clearly is a different type system, much more esoterically different than the one in ObjC, being compile time. We're not talking "classes with template parameters". It's a second, wholecloth type system. Interfaces (as java would call them) without the interface declaration.

>Also what the hell are "new style" vs "old style" template classes.

An old style template class is a class that works on a datatype or two which is templatized. A new style template class is something out of http://www.amazon.com/Modern-Design-Generic-Programming-Patterns/dp/0201704315 a very popular style in some shops.

>And what the hell are you even talking about with your "weird extra encapsulated ways"?

Class 1 has a private member variable to a second class called a Class1_impl which is a completely different class which implements the internals of Class1. This is an attempt to enforce data hiding from friending.

The reason I listed more than 2 type systems, is because I doubt you can say ALL the listed type systems I have are the same one. If even 2 of them are, C++ has "at least as many" as objective C does (or Java for that matter). If you've NOT encountered these esoterica, I just think you need to work in 2-4 more C++ shops and you definitely will. They're pretty common in my experience.

u/acecool · -1 pointsr/programming

The book that a person should read which has most of the languages mentioned in this article is Seven Languages in Seven Weeks which teaches the basics in Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell

I also want to mention the book Ocaml for Scientists which is unfortanely mis-named in that it does not teach scientific programming but rather general purpose programming aimed at scientists who have trouble implementing good programming practices in whichever programming language they use. Strangely this book is not available on Amazon but only the author's website.

u/rodion_89 · -5 pointsr/javascript

Don't listen to jakelear, w3schools is an excellent resource for beginners.

That said, once you are on your feet and getting deeper into JavaScript check out these books. They are wonderfully useful and informative.

http://www.amazon.com/gp/product/0596517742
http://www.amazon.com/gp/product/0596805527
http://www.amazon.com/gp/product/193398869X