(Part 2) Top products from r/learnprogramming

Jump to the top 20

We found 307 product mentions on r/learnprogramming. We ranked the 1,804 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

Top comments that mention products on r/learnprogramming:

u/CSMastermind · 4 pointsr/learnprogramming

I've posted this before but I'll repost it here:

Now in terms of the question that you ask in the title - this is what I recommend:

Job Interview Prep


  1. Cracking the Coding Interview: 189 Programming Questions and Solutions
  2. Programming Interviews Exposed: Coding Your Way Through the Interview
  3. Introduction to Algorithms
  4. The Algorithm Design Manual
  5. Effective Java
  6. Concurrent Programming in Java™: Design Principles and Pattern
  7. Modern Operating Systems
  8. Programming Pearls
  9. Discrete Mathematics for Computer Scientists

    Junior Software Engineer Reading List


    Read This First


  10. Pragmatic Thinking and Learning: Refactor Your Wetware

    Fundementals


  11. Code Complete: A Practical Handbook of Software Construction
  12. Software Estimation: Demystifying the Black Art
  13. Software Engineering: A Practitioner's Approach
  14. Refactoring: Improving the Design of Existing Code
  15. Coder to Developer: Tools and Strategies for Delivering Your Software
  16. Perfect Software: And Other Illusions about Testing
  17. Getting Real: The Smarter, Faster, Easier Way to Build a Successful Web Application

    Understanding Professional Software Environments


  18. Agile Software Development: The Cooperative Game
  19. Software Project Survival Guide
  20. The Best Software Writing I: Selected and Introduced by Joel Spolsky
  21. Debugging the Development Process: Practical Strategies for Staying Focused, Hitting Ship Dates, and Building Solid Teams
  22. Rapid Development: Taming Wild Software Schedules
  23. Peopleware: Productive Projects and Teams

    Mentality


  24. Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency
  25. Against Method
  26. The Passionate Programmer: Creating a Remarkable Career in Software Development

    History


  27. The Mythical Man-Month: Essays on Software Engineering
  28. Computing Calamities: Lessons Learned from Products, Projects, and Companies That Failed
  29. The Deadline: A Novel About Project Management

    Mid Level Software Engineer Reading List


    Read This First


  30. Personal Development for Smart People: The Conscious Pursuit of Personal Growth

    Fundementals


  31. The Clean Coder: A Code of Conduct for Professional Programmers
  32. Clean Code: A Handbook of Agile Software Craftsmanship
  33. Solid Code
  34. Code Craft: The Practice of Writing Excellent Code
  35. Software Craftsmanship: The New Imperative
  36. Writing Solid Code

    Software Design


  37. Head First Design Patterns: A Brain-Friendly Guide
  38. Design Patterns: Elements of Reusable Object-Oriented Software
  39. Domain-Driven Design: Tackling Complexity in the Heart of Software
  40. Domain-Driven Design Distilled
  41. Design Patterns Explained: A New Perspective on Object-Oriented Design
  42. Design Patterns in C# - Even though this is specific to C# the pattern can be used in any OO language.
  43. Refactoring to Patterns

    Software Engineering Skill Sets


  44. Building Microservices: Designing Fine-Grained Systems
  45. Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools
  46. NoEstimates: How To Measure Project Progress Without Estimating
  47. Object-Oriented Software Construction
  48. The Art of Software Testing
  49. Release It!: Design and Deploy Production-Ready Software
  50. Working Effectively with Legacy Code
  51. Test Driven Development: By Example

    Databases


  52. Database System Concepts
  53. Database Management Systems
  54. Foundation for Object / Relational Databases: The Third Manifesto
  55. Refactoring Databases: Evolutionary Database Design
  56. Data Access Patterns: Database Interactions in Object-Oriented Applications

    User Experience


  57. Don't Make Me Think: A Common Sense Approach to Web Usability
  58. The Design of Everyday Things
  59. Programming Collective Intelligence: Building Smart Web 2.0 Applications
  60. User Interface Design for Programmers
  61. GUI Bloopers 2.0: Common User Interface Design Don'ts and Dos

    Mentality


  62. The Productive Programmer
  63. Extreme Programming Explained: Embrace Change
  64. Coders at Work: Reflections on the Craft of Programming
  65. Facts and Fallacies of Software Engineering

    History


  66. Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software
  67. New Turning Omnibus: 66 Excursions in Computer Science
  68. Hacker's Delight
  69. The Alchemist
  70. Masterminds of Programming: Conversations with the Creators of Major Programming Languages
  71. The Information: A History, A Theory, A Flood

    Specialist Skills


    In spite of the fact that many of these won't apply to your specific job I still recommend reading them for the insight, they'll give you into programming language and technology design.

  72. Peter Norton's Assembly Language Book for the IBM PC
  73. Expert C Programming: Deep C Secrets
  74. Enough Rope to Shoot Yourself in the Foot: Rules for C and C++ Programming
  75. The C++ Programming Language
  76. Effective C++: 55 Specific Ways to Improve Your Programs and Designs
  77. More Effective C++: 35 New Ways to Improve Your Programs and Designs
  78. More Effective C#: 50 Specific Ways to Improve Your C#
  79. CLR via C#
  80. Mr. Bunny's Big Cup o' Java
  81. Thinking in Java
  82. JUnit in Action
  83. Functional Programming in Scala
  84. The Art of Prolog: Advanced Programming Techniques
  85. The Craft of Prolog
  86. Programming Perl: Unmatched Power for Text Processing and Scripting
  87. Dive into Python 3
  88. why's (poignant) guide to Ruby
u/the_omega99 · 18 pointsr/learnprogramming

>I do have a textbook called "C: A modern approach" by King, but like I said before, I think it focuses more on the coding aspect.

Most books that focus on C are going to be about learning the language. If you want to learn low level stuff, you need to find books that focus on them (and they'll usually incidentally use C). The language itself is quite small and minimalistic in what it can do. Most heavy handed things like networking and GUIs require interaction with the OS.

Eg, if you wanted to do networking, you could use the Windows API or the POSIX socket API (POSIX being the standards that *nix systems follow -- and certain versions of Windows). Or you could use a higher level library like curl for cross platform support (and a wealth of nicer features).

>Can somebody please guide me on where to start?

Firstly, as much of a linux fanboy I am, I do want to make sure you know that you don't need to use Linux for any of the other things you wanted to learn (low-level programming, command lines, networking, etc). In fact, my OS class mostly used Linux, but we started out with a project using Windows threads (I guess the prof wanted us to see the difference from POSIX threading).

All that said, I do think Linux is something you'd want to learn and that a lot of low level things just seem more natural in Linux. But I'm biased. Linux fanboy, remember?

I'd start with downloading a Linux OS. Doesn't really matter which. I'd recommend going with Ubuntu. It's the most popular, easiest to find help with, and seems to be what most web servers are running, to boot. You can play around with the GUI for a bit if you want. It won't feel that different. Modern OSes sort of converged into the same high level ideas.

My favourite book for getting into the command line ever so slightly touching the low level aspects of OSes is Mark Sobel's A Practical Guide to Linux Commands, Editors, and Shell Programming. It will include some basic knowledge of Linux, but mostly focuses on the command line. But this is very useful because not only is the command line very practical to learn, but you'll end up learning a lot about Linux in the process (eg, by learning how everything is a file, how pipes work, etc). And arguably the command line a super big part of Linux, anyway. It makes sense as the first step.

Now, for the next step, you need to know C very well. So finish with your class, first. Read ahead if you have to. Yes, you already know if statements and functions and all, but do you understand pointers well? How about function pointers and void pointers? Do you understand how C's arrays work and the usage of pointer arithmetic? How about how arguments are passed to functions and when you'd want to pass a pointer to a function instead? As a rough skill testing question, you should implement a linked list for arbitrary data types with functions such as prepending, appending, concatenating lists, searching, removing, and iterating through the list. Make sure that your list can be allocated and freed correctly (no memory leaks).

Anyway, the next step is to learn OSes. Now, I said OSes and not Linux, because the Linux OS is a bit constrained if you want to learn low level programming (which would include a knowledge of what OSes in general do, and alternatives to OSes like Linux). But never fear, pretty much any OS book will heavily use Linux as an example of how things work and consequently explain a great deal of Linux internals. I can't recommend a class because mine was a regular university class, but Tanenbaum's Modern Operating Systems is a good book on the subject.

In particular, you can expect an OS class to not merely be focused on building an OS yourself (my class worked on aspects of OS101 to implement portions of our own OS), but also on utilizing low level aspects of existing OSes. Eg, as mentioned, my class involved working with Linux threading, as well as processes. We later implemented the syscalls for fork, join, etc ourselves, which was a fascinating exercise. Nothing gets you to understand how Linux creates processes like doing it yourself.

Do note, however, that I had taken a class on computer architecture (I found Computer Organization and Design a good book there, although note that I never did any of the excerises in the book, which seem to be heavily criticized in the reviews). It certainly helps in understand OSes. It's basically as low as you can go with programming (and a bit lower, entering the domain of computer engineering). I cannot say for sure if it's absolutely necessary. I would recommend it first, but it's probably skippable if you're not interested (personally, I found it phenomenally interesting).

For learning networking, Beej's book is well written. You don't need to know OSes before this or anything.

u/sarpunk · 3 pointsr/learnprogramming
  • I second the other comments about practice & sticking with projects. Perfectionism can be a great thing, but if it keeps you from finishing a project, let it go. The first iterations of your projects don't have to be perfect - just getting through them will help you grow.

  • Procrastinating on homework assignments will also tank your grade (been there, done that), even if the material seems easy - some programming assignments just take loads of time.

  • It sounds like you're still in school, so you'll probably be exposed to lots of different languages and paradigms, and that's a good thing. If you're going to insist on perfection in personal projects, though, it might be easiest to focus on one area, like halfercode suggested.

  • Finally, for reading material: It sounds like you don't need any basic intros, so look for advanced tutorials to new languages you want to learn, or just read the language documentation. This is a pretty good competency matrix to rate yourself against - if something looks unfamiliar, browse through the wiki page. Other great books: Computer Systems: A Programmer's Perspective - doesn't assume a ton of prior knowledge, but gets to a fair amount of depth pretty quickly. There are also really cool systems programming labs. Matt Might's list of everything a CS major should know is really comprehensive, with lots of reading material referenced. If I were you, I would focus specifically on the Data Structures & Algorithms and Theory sections, supplementing with practical projects.

  • As for projects: Start small, no matter the final size of the project. Focus on getting out a minimal example of what you want to do before you worry about what the UI looks like or perfect functioning.

    tl:dr Practice & perserverence are the main points. No one is really any good at programming until they've got a few years of churning out code, so don't get discouraged. Finally: don't let the breadth of the computer science/software world overwhelm you. Focus on small pieces, and in a few years you'll have learned more than you would have expected.
u/sessamekesh · 2 pointsr/learnprogramming

In almost every field, you're going to end up dealing with groups of things - lists of contacts, groups of users, categories of billing items, whatever. Having a deep understanding of arrays vs. (hash) sets vs. (hash) maps is huge, by far that's the most common decision I make on a day-to-day basis.

I think it's worthwhile to expose yourself to a bunch of specialized algorithms and data structures. You don't need to study them all super in-depth, but reading about them and maybe hacking them out in Python/Java/C++/whatever is a great learning exercise. I personally like "The Algorithm Design Manual" by Steven Skiena, (EDU PDF, Amazon). It's on the dry side, but it categorizes algorithms into a handful of types (sorting, graphs, combinatoric search, etc) which makes it great reference material for learning.

A handful of useful exercises, maybe useful:

  • Quicksort (and why is it faster than a trivial sort like selection sort? Explain it like I'm five)
  • Caching! Also, how it makes pure functions preferable to unpure ones for expensive code.
  • Implement a Fibonacci function, and describe why the recursive solution is terrible (hint: draw out each function call for a number like 10). This is a great exercise in runtime analysis. Implement it better and know why your second shot is better.
  • Graphs manage to sneak into all sorts of places - knowing Dijkstra's algorithm by heart probably isn't important, but being comfortable with graphs is valuable. Many problems can be thought of as transforming data from group A and B into C, and thought of as information travelling through a graph, being changed at each node. The graphics pipeline used for 3D graphics is a fun example of an application of this idea.
u/Handsdowndopestdope · 3 pointsr/learnprogramming

Hey man. I'm currently doing what you are trying to do. I'm in my 4th-ish month now and having a blast. Right now I'm diving into javascript and I'm finding that that's where I'm having the most fun. Even though it's a fun time, I have to stay disciplined because sometimes I do fall off the horse. I try to make sure that I am studying 5 times a week 8 hours a day, but I don't always hit that mark. Pretty much trying to make it a full time job. I feel like I'm not quite job ready yet, maybe 2-3 months of learning and building projects. Thats the thing, just keep building websites. Here's a list of project ideas and follow FreeCodeCamp and do their challenges.

I recommend looking at FreeCodeCamp. Its free and they have a good curriculum and the best part are the Javascript challenges and mini projects they have you do and there is a pretty solid community and Gitter chat. Check out Jon Ducketts HTML & CSS and Javascript Books. Eloquent Javascript, from what I'm told, dives into JS a little deeper and I'm reading that currently. Lastly, I would also subscribe to something like Treehouse. It's $25 per month and they have a huge library of videos that are pretty good.

edit: I want to add also that there really are a ton of resources out there. So if one of the resources I suggested doesn't work for you, dont sweat it, you will be able to find another. But I do recommend learning from multiple resources instead of just leaning on one.

It can be kind of overwhelming diving into all of this stuff so please feel free to ask if you have any questions. Feel free to PM any time

u/TonySu · 1 pointr/learnprogramming

Probably start with Artificial Intelligence: a modern approach. This is the state of the art AI as of 2009, of course in AI years that's ancient history but it's background you must know if you're serious about AI.

Following on from that you have the very popular statistical techniques, you can read about these in Pattern Recognition and Machine Learning. These are a wide range of statistical models and algorithms that allow machines to infer, classify and predict. Another very important concept is Chapter 14 on combining models. IBM's Watson for example uses a complex network of "simple" models who combine their answers to form the final responses.

From all the techniques in the previous book, neural networks from Chapter 5 have become the most popular and powerful. These are covered in Deep Learning, and are currently the cutting edge of machine learning. They are extremely general models that seem to be highly successful at a range of tasks. In particular their popularity comes from their amazing accuracy in image recognition, which really challenged past algorithms.

Ultimately nothing you can learn from anyone is sure to bring you close to sci-fi AI. The techniques to produce such an AI eludes even the foremost experts. You may also become disillusioned with your dream as you realise just how mechanical and constrained AI is. I personally think we'd have better luck genetically engineering intelligence in a random animal/insect than creating true intelligence in silicon and circuits.

u/last_useful_man · 2 pointsr/learnprogramming

I have to say linux profiling has seemed to me to be a fast-moving target, meaning you'll get scattered results if you search. But, there's this which seems up-to-date: http://en.wikipedia.org/wiki/Perf_%28Linux%29

Then there's Ulrich Drepper's 'What every programmer should know about memory' (long series, but worth skimming at least, if your code is memory intensive. At least read about cache-coherency and cache-lines): http://lwn.net/Articles/250967

But the biggest thing is to get the algorithms right. Sounds like you want image-processing books. Also, GPUs are just absolutely the right place to do this stuff, and there are probably libraries already out there for it; speaking of which, did you know about OpenCV? It even has some stuff implemented on the GPU (as CUDA). I root for OpenCL, but the fact is, almost everything out there, libraries, and books, is written for CUDA.

> All the software is written in C++: I am interested in unlearning bad habits and writing better and easier to maintain code.

I suggest Effective C++ if you haven't read it yet. Also, Herb Sutter's 'Exceptional C++' series (a 'digest' version is C++ Coding Standards: 101 Rules, Guidelines, and Best Practices).

Never read it myself, but I hear 'Code Complete' is good. Maybe, too, Martin Fowler's Refactoring book - it shows lots of little awkward, problematic patterns and what to do about them, with good discussion. Each cleanly separated out - it will refer back and forth, but you can read the bits one-at-a-time. Good bathroom reading :)

Re: algorithms: Ugh, I don't know. It sounds like you'll want some metric data structures, dealing with space as you do. There's http://www.amazon.com/Foundations-Multidimensional-Structures-Kaufmann-Computer/dp/0123694469, and I don't know what else, maybe some Knuth? But probably, you should learn undergraduate-level data structures and algorithms, Big O stuff. Any used CS Data Structures + Algorithms book should help with that.

Do not fear spending money, as a former boss said, "books are free" ie they pay for themselves if they save you an hour's debugging later. Good luck!

u/Adams_Apples · 1 pointr/learnprogramming

My recommendation is that you learn the C programming language well before attempting to learn Objective-C. There are tons of online and text resources for learning, the one most used by university C programming courses is this text:

http://www.amazon.com/Programming-Modern-Approach-2nd-Edition/dp/0393979504/ref=dp_ob_title_bk

Ideally you should get a copy of this or another good learning text, but again, if money is an issue there are resources online for learning.

Here's a good site with lots of videos: http://www.lynda.com/default.aspx
Also this: https://www.udemy.com/c-programming-for-beginners/

And there are resources online that are totally free as well, although they aren't typically as comprehensive and may require a bit more initiative on your part, a quick google search will give you several examples.

With all that said, I'll go ahead and answer your questions, with the understanding that if you just try to dive right into Objective-C it might not work so great for you. This is going to be over your head, so don't get discouraged by it, just remember, we all started somewhere, good luck learning programming!

> 1.) What is a property?

A property is an attribute that the system automatically creates standard accessors (methods to get an attribute) and mutators (methods to change an attribute). Properties also allow you to specify atomicity (a specifier that guarantees thread safety at a small performance cost) as well as reference strength (strong adds 1 to reference count, weak does not). There is more to them than this, this is just a brief overview answer.

> 2.) Why do you need both a public and private API? How do you determine what goes in which?

Public simply means things that you want exposed outside of a class, whereas private are things that only the class should see. By doing this, you can convey to programmers who use your class how the class should be used, as well as restrict access only to attributes that the user of the class needs. This concept is called encapsulation, and is a key concept in object-oriented programming.

> 3.) What is an argument?

An argument is a variable or object that the calling function supplies to the called function. It is the primary means of passing information from one function to another function.

> 4.) What is a heap and a stack? What does it mean when objects "live in the heap"? (Do they live in condos? Is it a quaint suburban community?)

The heap is a block of memory that can be allocated as a program is running. In Objective-C, all objects reside on the heap, because of the way the Objective-C runtime works. In contrast, the stack is statically (compile-time) allocated memory. Primitive types such as int or char are statically allocated.

> 5.) So classes are the .h and .m files in Xcode?

The files with the .h extension contain the interface of a class, which is the file that other classes using this class import. The files with the .m extension contain the implementation of a class, which is where the details of how a class's methods are outlined. This separation exists to simplify linking of files when a program is compiled, as well as to facilitate precompiled libraries (where only the header is visible as source, the implementation is provided as a binary).

> 6.) What do all the differet colored text in Xcode mean?

In Xcode, go to Xcode > Preferences > Fonts & Colors

> 7.) Why are some things capitalized and others are not in Objective C code?

As you learn programming, you'll learn that good programmers adhere to conventions when writing code. The specific reasons why things are named the way they are will come to you as you learn, just bear in mind that good code that follows recommended guidelines is easier for other programmers to work with, your colleagues will thank you for doing it right!

u/protein_bricks_4_all · 3 pointsr/learnprogramming

There's OO design, and there's particulars as to how to implement things in C++. I'm totally with unapersson as to, that the Os you make are as often conveniences or design helpers as representing real world objects. Ie that it's implementation objects. I don't remember how much OO design advice Effective C++ has, but it's a good book to get someone to intermediate C++ programmer. C++ Coding Standards by Herb Sutter and Andrei Alexandrescu talks at a fast clip about a lot of taste and design issues; I haven't looked at the 3rd edition of Eff. C++ but, from earlier editions, the difference is that Coding Standards is more dense, and sophisticated; Eff. C++ more basic (from what I can see, Coding Standards does cover the same material as Eff C++, but in a very compressed form, only the most minimal discussion; maybe not what you want when you're seeing the material for the first time.

As for pure OO design, I've heard that straight-up Grady Booch is still the best, but I have no experience of it.

I will say, if you want to be good at C++, you'll have to spend money on books (but get your company to buy them perhaps - compared to programmer time, books are free), and time on reading them; there are a lot of best-practices, technicalities and real pitfalls that are not immediately obvious.

edit:

> Also, should I be studying data structures/algorithms in unison with OOP?

Definitely. Have you learned the basics, stack, tree, queue, hash tables (or set, map, vector, unordered_set, unordered_map)? You /must/ know these. (priority_queue and list too, less so maybe.) If you can though I'd read (somehow) about other data structures, spatial ones especially in your case; they can really make your program more efficient and thus able to do more.

edit edit:

I have to say, the above books are for long-lasting code; probably for games your best bet is to look at how other programmers write their games (smaller, simpler, even in other languages - it can be hard to understand large, sophisticated codebases) and, just the necessary experience you gain from writing your own.

u/[deleted] · 1 pointr/learnprogramming

With Eclipse there is a plugin for C/C++ development, same with netbeans, you also have visual studio, dev bloodshed, and a variety of text editors to choose from. I personally just use a text editor and compile in the command line which is really easy, but if you don't feel comfortable with than just try out some IDE's and see which one you like best. Eclipse isn't your only option. Try googling C++ IDE's and you should be able to work something out for yourself. In terms of C++ with eclipse, I haven't used it in a while, but you should be able to download the necessary plugin/extension directly from your IDE. Again, quick google search should sort this out for you.

In regards to game development, C++ is an industry standard cause of DirectX, but don't limit yourself to one language just because it is a standard. Plenty of awesome games have been written in a bunch of different languages so just try something out and see what works best for you. There is a bunch of great resources out there for beginners who want to learn programming AND really basic game development at the same time. This one is free: http://inventwithpython.com/ Also make use of your interactive tutorials out there like on codecademy.com

This is the book I started with and I thought it was great: http://www.amazon.com/Python-Programming-Introduction-Computer-Science/dp/1590282418/ref=sr_1_1?s=books&ie=UTF8&qid=1346873688&sr=1-1&keywords=python

Edit: Did I seriously just get downvoted for answering someone's question? really /r/learnprogramming I tell someone to check the sidebar in one thread and get downvoted, so then I answer a question instead and I get downvoted. At least be consistent.

u/10_6 · 19 pointsr/learnprogramming

Nice curated list, but I'd recommend adding a few more interview prep sites from this list:

The 10 most popular coding challenge websites for 2017

Because I would definitely recommend someone to check out TopCoder, Coderbyte, and Codewars if they are preparing for an interview.

Here are a few resources I've also used when preparing for interviews (taken from previous comments of mine):


  • Read the Algorithm Design Manual.

  • Go through some of the challenges on this interactive python algorithms website.

  • Practice coding simple and then more advanced algorithms on sites like Coderbyte (my site) and HackerRank which provide good explanations and solutions as well. Here's a list of popular coding challenge websites in 2017.

  • Read as many algorithm explanations and code examples as you can on GeeksforGeeks.

  • Try and implement basic algorithms yourself like: shortest path, minimum spanning tree, DFS + BFS, tree traversals, different sorting algs, min/max heap, etc. and learn about their running times (big-o).

  • Look at some interview questions posted on careercup and try and understand how other users solved the questions. Like this example.

  • Aside from coding challenge sites, try and solve common coding interview questions you find online such as this list.
u/PrincessSmaug · 1 pointr/learnprogramming

I, too, am learning partially through Free Code Camp. What's great about them is that they give you (a) a structure of topics to learn in a certain order, and (b) actual projects to work on.

What you cannot do is learn exclusively through FCC. I see them as a starting point. They will link you to MDN documentation in their challenges, but don't rely on those either. MDN is written for people who already have some familiarity with JS and may not be readable if you do not already understand the basics of JavaScript.

If you're looking to stay with free resources, try looking up YouTube videos that have a high number of views and positive ratings. I stumbled on this channel and have used it a few times. YouTube videos will help you see exactly what the code is doing.

If you're willing to pay for a book, I have found Jon Duckett's JavaScript & jQuery book very helpful. Also try checking out his HTML & CSS book, though I haven't used it much as I am already pretty familiar with HTML (less so CSS, but I am familiar enough with the basics to rely on Google for anything else I need).

Feeling overwhelmed at FreeCodeCamp doesn't mean you'll never learn the concept. What it does mean is that you need to take a step back and really learn the concepts by checking out as many outside resources as you can, then go back to their challenges and complete them.

Good luck :)

u/Unsounded · 2 pointsr/learnprogramming

These are good, but I would say they're actually better for learning C++ rather than branching to higher level concepts. C++ is one of the easiest languages to implement best practices with and it's intuitive if you're a good programmer. The language and standard itself promotes cleverness and conciseness.

Some books I would suggest for branching to higher level C++ would be Effective C++ and More Effective C++.

Both are wonderfully written and relevant across standards. It focuses on bigger picture C++ rather than exactly current standards.

u/SanlyBowitz · 1 pointr/learnprogramming

You're in luck! I think you'll find more than enough self-taught programmers both in this subreddit and in the industry. Programming is a valuable skill to have in just about any field, so kudos to you for taking the initiative to learn.

If you want to learn Python, but don't have much/any programming experience, I would highly recommend Python Crash Course from No Starch Press; It will teach you everything you need to get started, and will give you plenty of exercises and projects to get some hands-on practice.

If you're planning on using Python for any scientific applications, you've picked a great language for it. Python has sets built in, and has some great libraries like numpy, scipy, matplotlib, and jupyter for more advanced operations and data visualization.

After you're comfortable in Python, I would recommend learning R, which is language designed specifically for use by statisticians.

Good luck!

u/S4ved · 1 pointr/learnprogramming

My professor recommended the book "Modern Operating Systems" for one of our classes. It's certainly not for everyone, the class was split about 50/50 on whether they absolutely hated it or loved it. There are copies to be found online if you're interested in checking out the writing-style, but I seriously recommend buying it if you do enjoy it as it is clearly a product of passion.

It's been an absolutely fantastic resource to me and although, as the name implies, it mostly focuses on operating systems, they manage to strike a seemingly perfect balance between explaining concepts of operating systems while still giving a thorough review of what role the actual hardware plays in the mix and how that works as well.

u/beyond-antares · 1 pointr/learnprogramming

This is a popular topic but I don't often see a comprehensive answer. I'm by no means an expert and currently learning myself.

There's two key stepping stones before jumping into AI, that being learning Python and data science. Python has wide support and a host of libraries reflecting the latest research on AI development.

There is also R, Octave and Java depending on the libraries you're looking to use, but they aren't nearly as popular as python. Note that if you want to embed your AI scripts into web apps or apps, then you'll need to learn javascript and java respectively.

The best resources for Python are

  1. Automate the Boring stuff - Al Sweigert

  2. Hitch hikers guide to Python

  3. Dive into python

    Great resources can be found here:

    The next step is to get a brief grasp of data science. You can learn these from:

  4. www.datacamp.com for Python and R

  5. Coursera course on data science

  6. Udemy courses in Python and R (Note these would most likely be paid courses so wait for the monthly discounts to kick in to purchase them for $10-$15)

    I wouldn't recommend codeacadmy since it's dated written in Python v2.x whereas Python 3.6x is more widely used

    Then I would consider AI Specific courses found online. Theres two routes again here, there's the heavily academic route that delves into the theory and mathematics then there;s the practical route. Depends on the speed and pace you want to learn at because it's a massive field.

    Theoretical

  7. Udacity - Introduction to Artificial Intelligence (standford course)

  8. Coursera - Andrew Ng's Deep Learning specialization course. Note the course uses octave which is similar to Matlab style programming. The courses when accessed individually are for free or you can pay for a certification.

  9. Various lectures on youtube for MIT and Stanford's Artificial Intelligence courses.

  10. A really good text book to check out is Artificial Intelligence - A modern Approach. AI was traditionally scripted in Lisp or prolog. This has been coverted into Python over here

    Practical:

  11. Krill Ermenko - AI, Machine Learning and DEEP Learning from A-Z

  12. Fast.ai Dives into keras a top level library
u/AlmondRoast · 0 pointsr/learnprogramming

If you're mainly interested in Java, I would recommend Effective Java by Joshua Bloch. It's a great guide with recommendations for best practices in the language.

For C, the best book is The C Programming Language by Kernighan and Ritchie. I would recommend that you read that before ever looking at C++ because C++ is based on C. In fact, it's such a great book that I would recommend reading it before you read anything else on any language. You can skip the file system and Unix stuff though.

For C++, I have never found a good beginner book, so my suggestion would be that after you read the above C book, read the stuff in this tutorial and then read Effective C++ by Scott Meyers. It's another best practices book.

For Python, I've heard good things about Learning Python but I don't really know. I actually found it more useful to just go through the Python tutorial and then start making fun little scripts.

Hope that helps!

u/Wiggledan · 3 pointsr/learnprogramming

Definitely the 2nd edition. The primary difference to my knowledge is that the 2nd edition is revised to conform to ANSI standards, but other than that it's the same.

Like /u/ixAp0c said, it is an old book, so some of the things they do aren't necessarily modern practices or perfect. You should look into debuggers like GDB or Visual Studio to always run your programs through. There's even stuff like memory leaks which can affect the performance of your programs without you knowing. You can't detect these leaks easily unless you use a tool like Valgrind to specifically point them out for you.

Honestly, if you want the most comprehensive, up to date book on the subject that will involve minimal Googling or external research, it's probably C Programming: A Modern Approach, 2nd ed. It's large and versatile, whereas K&R is short and concise.

u/akame_21 · 5 pointsr/learnprogramming

Despite their age, the MIT lectures were great. If you're good at math and enjoy proofs this is the class for you. Same thing with the CLRS book. One of the best books on DS & Algos out there, but it's so dense it'll make your eyes glaze over, unless you love proofs and highly technical reading.

To get your feet wet, Grokking Algorithms is a good book.

A lot of people recommend Princeton's Algorithm Course. I took Algorithms in school already, but I'm probably going to take this course to round out my knowledge.

EDIT: special shout out to geeks for geeks. Great Website

u/phao · 3 pointsr/learnprogramming

It's good to point out that all of these things are my opinions and not facts written in stone. However, I've seen others who share my point of view.

Teaching C++ correctly is an incredibly difficult task. It's difficult to overemphasize how difficult it is. Java not as much, but if put in contrast with JS and Python, it'll seem way more difficult.

((begin edit)) And just to be clear, I really meant teaching, and not learning. Although I believe learning C++ is more difficult than learning Java, JS or Python, I was referring to teaching. Instructors have to decide which languages to teach. Choosing C++ adds a large burden for them to deal with. Choosing JS on the other hand, doesn't add as much (it's a lot less in fact). ((end edit))

There are many issues which contribute to that. Here are some of them:

  • The language syntax/semantics is one of them (a huge reason for C++).
  • Another one is the way code in these languages is expected to be written (a huge one for Java, but also for C++). An example of this second point is teaching how OO code is usually written in java. For example, you look at a java code base, you'll find application of many of the known GoF patterns. Design patterns examples in Java present or not, a book on Java has to cover how OO code is written in it, which takes a while to teach since it's not as straightforward as it is doing the analogous in JS or Python.
  • A third point is teaching static typing right. It turns out this can mess with someone's head as a beginner. I believe static typing helps, but there is a considerable learning curve to it.

    The fact that you can run JS in a browser is a big win. You can almost readily teach people how to do graphics apps (canvas for example), which makes learning much more interesting. Since that's not the case for python, I'm not sure this is a good reason, but the places which pick JS consider this sort of thing.

    The issue is that a beginner python/JS programmer can do a lot more than a beginner C++ or Java programmer. When you go to intermediate levels, people in the js/python area will seem to have a unfair advantage IMO.

    I happen to know these languages (let's quote that "know" a few times since we're talking about C++ here =D), and my opinion is that in most of the cases, C++ and Java aren't needed. In fact, for most cases, I believe JS is the way to go these days.

    Just to be clear again, though, I'm only talking about my experience, and the cases that I've seen/worked with.

    About learning resources...

    For java, I firmly believe you can learn lots from the online tutorials (http://docs.oracle.com/javase/tutorial/). They're pretty good.

    For C++, I'd recommend you the two books by the creator of the language. One teaching programming concepts using C++, and the other being kind of a "user friendly manual for C++".

  • http://www.amazon.com/The-Programming-Language-4th-Edition/dp/0321563840/ - The C++ Programming Language (4th Edition)
  • http://www.amazon.com/Programming-Principles-Practice-Using-Edition/dp/0321992784/ - Programming: Principles and Practice Using C++ (2nd Edition)
u/KittyCaughtAFinch · 1 pointr/learnprogramming

I was in your situation a few months ago! I finished Codecademy and didn't know where to go next. I did Shay Howe's HTML/CSS course, which was great because you follow along step-by-step, but are continually building one project so you end up with something nice. Now I'm working through a free Udacity course (not sure yet whether I'd recommend it) and then I'm going to try the Code Camp or Odin Project like a few people here recommended. Also, I bought myself this book, its awesome.

u/asthasr · 1 pointr/learnprogramming

This is the example that helped me understand recursion.

def sumlist(xs=[]):
if xs == []:
return 0
else:
return xs[0] + sumlist(xs[1:])

This is a recursive summation function. There are better ways to do it, but this is the most readable. Basically, it will return 0 if the list is empty; otherwise, it adds the current headof the list xs[0] to the value returned by the application of the function to the tail of the list xs[1:].

x = sumlist([1, 2, 3]) # 0 - Initial call.
xs == []? nope # 1 - Check terminal condition.
1 + sumlist([2, 3]) # 1 - Add current head (1) to value of next call.
xs == []? nope # 2 - Check terminal condition.
2 + sumlist([3]) # 2 - Add current head (2) to value of next call.
xs == []? nope # 3 - Check terminal condition.
3 + sumlist([]) # 3 - Add current head (3) to value of next call.
xs == []? yes # 4 - Check terminal condition.
0 # 4 - Return 0.
3 + 0 # 3 - Higher frame: add 3 to 0.
3 # 3 - Return 3.
2 + 3 # 2 - Higher frame: add 2 to 3.
5 # 2 - Return 5.
1 + 5 # 1 - Higher frame: add 1 to 5.
6 # 1 - Return 6.
x = 6 # 0 - Assign the result of the recursion to x.

If you're interested in this, the book The Little Schemer is pretty good.

u/YuleTideCamel · 1 pointr/learnprogramming
u/wrouzhul · 8 pointsr/learnprogramming

Ooooh you're a super new :)

Many people hate it but w3schools can get you started:

u/samort7 · 257 pointsr/learnprogramming

Here's my list of the classics:

General Computing

u/dmazzoni · 2 pointsr/learnprogramming

Artificial neural networks are great, but keep in mind that they're just a means to an end. The best way to learn them is to go through a good textbook or online course where you'll try them out on good examples that have been designed specifically to be good for beginners.

To a professional, you don't start with the tool and search for a problem - you start with a problem and figure out the best tool. Sometimes that tool is neural networks, but probably 99% of the time it's not. Even when the right tool is "machine learning", there are a lot of machine learning techniques other than ANNs.

As a beginner, the best thing you can do is start by learning about machine learning in general. You can't properly use ANNs if you don't understand the principles of machine learning in general, which is what the book or course I linked above will give you.

​

u/Butter_sc0tch · 7 pointsr/learnprogramming


Senior dev here who is on the other side of things. One way to approach these situations is to try and approach the problem more from the business case. I’m not sure of your work culture, but you should be bought in as to why a deliverable is time sensitive and what there is to gain by delivering this week vs a week or two later. If people don’t have reasons, they need to be held more accountable for the longer term delivery. Tech debt is a slow killer. You’d be surprised with how much you can push back:
How is this feature being measured?
What is success criteria?
What are the next steps if successful? If unsuccessful?
What are we not doing in order to do this task? Is this the most impactful thing we can spend our time on?

Also, understand that any system is due for a rewrite every 4 years or so. No matter how clean you write, you’ll eventually have to refactor anyway. You defiantly want to maintain something workable, but keep in mind there is no such thing as a permanent solution.

And finally, Great book ok how to make small iterative improvements as you go.
Working Effectively with Legacy Code https://www.amazon.ca/dp/0131177052/ref=cm_sw_r_cp_api_i_Td0QDbFQKYV3T

u/Bizkitgto · 13 pointsr/learnprogramming

I'd start with Harvard's CS50 on edx, it's the best course you'll find anywhere bar none. The instructor, Dave Malan is world class. The first half of the CS50 lectures are on C and on youtube. There's also r/cs50.

Also, the Richard Buckland lectures are all up in youtube as well, really good intro to C programming. People love this guy!

Here is the Aalto C Programming MOOC based on K&R.

You can learn C, all you need is a text editor (like notepad or sublime), and the terminal/command line. You don't need any internet connection whatsoever.

I recommend getting this book C Programming: A Modern Approach, it's great for beginner's, and you can try going though the examples. You can also try going through all the problem's in K&R's C Programming (what many refer to as 'The C Bible') book if you want to be a C Ninja.

Here is a guide on how to compile C programs on a Linux system.

You can find used copies or PDF's of these books online if you don't want to pay full price. I like having a hard copy in front of me when learning as I can flip back and fourth quickly.
Since you want to learn C - you should read K&R's The C Programming Language (the bible for C) at some point.

u/Osempu · 1 pointr/learnprogramming

Hi i personally loved Web Design with HTML, CSS, JavaScript and jQuery Set. Have really good examples and easily explained concepts which i think is cornerstone for programming itself. Also don't get discouraged if you don't remember things, is totally normal that you have to go and look for definitions, code snippets, etc . The more you code the more you learn, as easy as that, remember that and your life will be a lot easier. Happy coding!!!

Edit: Also practice, practice and practice more. Here's a link to my favorite coding challenges page.

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/khedoros · 3 pointsr/learnprogramming

Jumping into C++ as a first programming language, especially with the kind of impatience that you seem to feel. I might characterize a few programming languages in this way (It's an old joke to talk about how to shoot yourself in the foot in various languages):

C will allow you to aim the gun at your foot and pull the trigger with no complaints. C++ will let you aim the gun and fire, without telling you that it was aimed at your foot the whole time. Java will warn you repeatedly as you aim the gun, warn you as you pull the trigger, and shoot you in a single toe.

C++ is a complicated language. Yes, it's powerful, but it's powerful in ways that you may not need, writing business apps. Python isn't a bad idea, if you want to work more on the web side, or write automation scripts. Java and C# would both be good options if you want to develop applications (C# especially, provided you want to do development on Windows).

If you're determined to jump in the deep end, consider this book. It's written by the original designer of C++, and it's written as a programming primer for beginners. It doesn't include the C++11 features (the most recent update to the language), but it ought to cover everything before that.

But, seriously: Slow down. You can learn the basic syntax of a language in a few weeks, and you can start feeling reasonably comfortable within a few months. You won't be as competent of a programmer as you feel like you are for a long time, though, and rushing through things isn't the way to get good.

u/solid7 · 1 pointr/learnprogramming

> Hey /r/learnprogramming i've browsed this subreddit a couple times and completed, and started a few courses like Codecademy... I'm looking to get some sort of job in this type of field by next year.

You should be aware that that's a pretty aggressive goal. Consider that people spend 4+ years of their life, full time, at a university, and are only then burgeoning on qualified for an entry level web-development position.

> if not, I will still want to hear what you guys recommend on what I should do to progress

At this point in your life, focus on learning stuff that interests you. If that's technology: great. If you are interested in technology, you could do worse than learning the syntax of one (or hell, even a few) different programming languages. You sound like you're already well on your way here.

> I'm also very interested in machine learning, so if you can recommend a path to learning it

Heh.. learn computer science first ;P. You'll also need to learn some limits/infinite-series, linear alegbra, calculus, and probability/statistics. At 15, that will keep you damn busy. If you're really motivated, pick up a copy of Russel and Norvig's very excellent book. That should give you some idea of what you're getting yourself into.

Lastly and most importantly, screw everything I just said along with what I (or anyone else) thinks. If you really want to learn something, do it. At the end of the day, it's on your shoulders, regardless of how insurmountable the task actually is.

At 10 years of age, I learned x86 assembly programming because I really wanted to write computer viruses. Everyone I asked told me that (assembly) would be way too hard for a kid. Screw all those people, I did.

u/caindela · 1 pointr/learnprogramming

I don't know much about Codecademy, but honestly I would start with something more general.

If you want to get a degree in CS, start with the popular books that they assign for first year CS students and go into it in as much detail as you can (and do all the problems). Python Programming: An Introduction to Computer Science is a very well-received book in a language that I would recommend.

It takes a lot of discipline for a high schooler to actually sit down and work through a book like this, but I think it's the way to go. You truly can't cut any corners if you really want to learn anything.

u/HumanSuitcase · 2 pointsr/learnprogramming

With c++ you're probably going to have to get a pretty thick book for it. Don't let this derail you from doing it. In fact I highly suggest learning lower level languages first. Specifically C but C++ is probably a good middle ground if you're going to other languages like java. I recently went back to University to learn CS/IA. Most of the programming that I've "learned" at University is based strongly off of C and because of my strong programming experience in C since I was about 14 I've had literally zero problems getting full points on all of the assignments I've submitted for grading up to this point. Now, the downside to almost a decade of on and off C experience is that I pull so much from C that it makes Object Oriented Programming like java some what of a mind bender for me, but for the most part I can get through it pretty easily.

I recommend Stephen Prata's C++ Primer Plus (only because his C primer is absolutely fantastic) He relates things really plainly and meets students on their level in regards to really difficult concepts like pointers.

u/YourTechnician · 1 pointr/learnprogramming

ok so at school we worked with Big Java . Good book for beginners but it doesn't seem as comprehensive. Thinking in Java is the best book in my opinion, it is covers an insane amount of topics, but it is more of a challenge in case you have a short attention span (it tends to be more serious than the others, rendering it more boring in return).
Now in case you want something more playful Head First Java is a fun one, it uses pictures , and jokes and uses day to day examples in order to make things stick better to your brain. In case you find that kind of stuff better, than it is recommended, but it does cover less than both of the predecessors.

For later inquires, you can check out the books on this list

u/enelsk · 4 pointsr/learnprogramming

Hi there,

If your primary interest is in blogging, I would recommend an existing platform like Ghost to get you up and running quickly. However, it sounds like you're more interested in web programming, with blogs being an interesting application.

These days, a lot of web applications are written with scripting languages, primarily Python, Ruby, or Javascript[1]. Each of these have many web frameworks to help you write your server application, but the big ones are:

  • Ruby: Ruby on Rails
  • Python: Django
  • Javascript: Express.js

    If you're already familiar with one of those languages, obviously you should heavily consider exploring its frameworks. Alternatively, you should research the languages and their frameworks on a high level and get an understanding of their core differentiating features before choosing one.

    Personally, I'm a lover of JS and node since that allows you to write your entire stack in Javascript, but there are those in this subreddit who call me a fanboy :)

    Regarding your client, any behavioral logic is going to be done in Javascript, the markdown will be in HTML, and your layout and style will be in CSS [2] - no way around that, so you better get familiar.

    Excellent intro to modern HTML/CSS

    Excellent intro to Javascript

    [1] Javascript executes in a unique server environment via Node.js, utilizing Chrome's v8 JS engine.

    [2] Of course there are languages like Coffeescript and Compass that compile to JS and CSS, this is probably beyond the spirit of the question.
u/Idoiocracy · 2 pointsr/learnprogramming

I also recommend the C Programming: A Modern Approach by K.N. King. It's considerably longer than Kernighan & Ritchie's book, but does provide more explanation which can be helpful for a beginner. A Modern Approach is considered one of the best starting C books among those who read it. Your local library might have a copy of both if you want to read them cheaply.

If you wish to start with Python instead, a good book is Python Programming: An Introduction to Computer Science by John Zelle.

u/ramwolf · 1 pointr/learnprogramming

Python is the best place to start I think. Its syntax is super easy and it helps you think systematically and gives you a good introduction to how to code. This is the book that I read and it was fantastic.

http://www.amazon.com/Python-Programming-Introduction-Computer-Science/dp/1590282418

After a little python intro then I'd move on to java

u/white_nerdy · 1 pointr/learnprogramming


What you need to learn depends on exactly what you want to do. If you want computer assistance to help you beat your best friend at correspondence chess, then getting AI to work for you may be as simple as buying or downloading a ready-made off-the-shelf program.

AI is a very broad label that applies to a lot of different things. If you want to write your own chess-playing program, then you need to know about binary trees, depth-limited depth-first search, alpha-beta pruning, and heuristics. These things are great for playing chess and other games that resemble it, but are rather useless for other things that people also call "AI", like computer vision or natural language processing.

My advice is to start by learning programming, practicing your programming skills on less challenging problems, and then working up to whatever you want to do. This subreddit's FAQ will help you.

Alternatively, you can buy a good introductory AI textbook, such as Artificial Intelligence: A Modern Approach. However, before you buy an expensive textbook, be warned: If you don't already have a decent grasp of how programming works, the information is likely to be somewhat overwhelming and not very useful.

u/abstractifier · 22 pointsr/learnprogramming

I'm sort of in the same boat as you, except with an aero and physics background rather than EE. My approach has been pretty similar to yours--I found the textbooks used by my alma mater, compared to texts recommended by MIT OCW and some other universities, looked at a few lists of recommended texts, and looked through similar questions on Reddit. I found most areas have multiple good texts, and also spent some time deciding which ones looked more applicable to me. That said, I'm admittedly someone who rather enjoys and learns well from textbooks compared to lectures, and that's not the case for everyone.

Here's what I gathered. If any more knowledgeable CS guys have suggestions/corrections, please let me know.

u/Watabou90 · 1 pointr/learnprogramming

If you want x86 assembly, this book is very good: http://www.amazon.com/Computer-Systems-Programmers-Perspective-Edition/dp/0136108040/ref=dp_ob_title_bk/180-6741587-3105245

I'm talking an assembly class this semester that involves writing assembly from scratch and this book (which is required for this class) is a lifesaver because the professor isn't that great at summarizing the important points.

I think it's a good book. It starts easy and it has a lot of exercises that have answers on the back of the chapter so you can check your answers pretty easily.

u/eric_weinstein · 5 pointsr/learnprogramming

Seconding The Pragmatic Programmer and Cracking the Coding Interview. I'd also recommend:

  • Code Complete: verbose and somewhat self-congratulatory, but extremely good.
  • The Mythical Man-Month: a little dated and weirdly religious at times, but has great insights into how software problems are actually people problems and how large projects are (mis)managed.
  • Design Patterns: a.k.a. the Gang of Four book. This one's a classic.
  • Pro Git: you mentioned version control systems. IMHO, you should learn Git if you don't know it, and this book is a great resource.

    If you let us know which languages you primarily write, I can probably recommend some good language-specific titles, too.
u/donquez · 2 pointsr/learnprogramming

In terms of practical, professional skills, here are a few I would recommend:

  • The Pragmatic Programmer - writing non-trivial applications requires discipline and a practical mindset. This book is frequently recommended to new programmers as exposure to how think about and approach software development.
  • Head First Design Patterns - schooling introduces you to OOP, but design patterns really highlight the strengths of object orientation. The Gang of Four book is also recommended, but I feel like the Head First book is more approachable.
  • Working Effectively With Legacy Code - You didn't mention if you're coding professionally, but I think the above two books are applicable to someone who wants to take their work to the next level. If you are looking to work in software development, you're going to encounter a lot of legacy code - code that is poorly designed or hasn't evolved well with the application. This book gives you methods for recognizing and untangling the mess.

    For more tailored recommendations, where do you feel that you're weak? There are plenty of college textbooks that can introduce you to algorithms, but if you have an end-goal in mind, you can really focus your learning. Work on some tougher projects than you're used to, and study open source code that does interesting things.
u/ryanklee · 2 pointsr/learnprogramming

The Little Schemer. After you read that book, in addition to having had a car load of fun, you'll be pretty good with recursion, which is all that book basically teaches. It's pretty slim, around 100 pages IIRC. You could knock it out in under two weeks if you worked at it. Man, I love that book.

u/reddilada · 1 pointr/learnprogramming

I'm a big fan of K&R C, but if you're looking for something more modern and detailed, take a look at King's C Programming: A Modern Approach, 2nd Ed.. Also check out /r/C_programming.

I'm going to agree with /u/veggietoshi about your list. It won't kill you to read them but I think you'll appreciate their contents more after you have a little coding under your belt. Many are great books, but perhaps a quick read first and then go back to them later for more detailed understanding.

u/magus517707 · 4 pointsr/learnprogramming

Everyone keeps mentioning programming language resources, but I have yet to see any one mention any algorithm sources. Honestly learn how to develop algorithms, they are language agnostic. And you can practice them on paper. Good luck on your endeavor.

I haven't read this yet, but have heard good things.

https://www.amazon.com/gp/aw/d/1848000693/ref=mp_s_a_1_1?ie=UTF8&qid=1496313668&sr=8-1&pi=AC_SX236_SY340_FMwebp_QL65&keywords=The+Algorithm+Design+Manual&dpPl=1&dpID=41s5pnqOlyL&ref=plSrch

u/Genie-Us · 9 pointsr/learnprogramming

Eloquent Javascript

You Don't Know Javascript

Wes Bros (not all are free, but lots are and he has lots on Youtube. if you want some of the paid ones, there are ways, Yarrrrrr. But if you can, buy it as it's not that expensive and he's a kick ass teacher. If you can't afford them, yarrrrrrrr! Then when you get a job, go and buy them so you're not a dick.

Advent of Coding - Great fun, you'll likely only get the first few to start, but you can read other's code to see how "professionals" do it.

There are a number of other sites for coding practice like... I think... leetcode? Something like that. Codewars. There's a ninja themed one as well. Do a couple google searches and you should have tons.

Oh, and the book JavaScript and JQuery: Interactive Front-End Web Development is a great book for starting out, it's dry as hell, but it's full of everything you want to know. The link is not an affiliate or whatever, I get nothing, just read it.

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/Haatveit88 · 1 pointr/learnprogramming

I understand how you feel, honestly - as someone who did poorly in school, and I am somewhat dyscalculic, I really feel like I can relate!

The important thing for you, in my opinion, based on your explanation there, is to look for learning materials that suit you. Some people learn easily from really academic materials, some (like me) don't - and fortunately, there are lots of materials out there trying different approaches to teaching this kind of stuff. It gets easier as you go, as well - once the ball starts rolling you find it much easier to grasp future concepts. I got a massive 1300 page book called "An introduction to Algorithms" many years ago... Introduction my arse. It might as well have been alien language to me. But now, years later, I can actually understand its contents. It definitely was not an introduction (but it is a great book, both physically and literally).

A few recommendations for actual introductory books on these subjects:

"A Common-Sense Guide to Data Structures and Algorithms" by Jay Wengrow (2nd Edition coming 2020)

This book says the following in the opening chapter:

>"The problem with most resources on these subjects is that they're...well...obtuse. Most texts go heavy on the math jargon, and if you're not a mathematician, it's really difficult to grasp" . . . "Because of this, many people shy away from these concepts, feeling like they are simply not 'smart' enough to understand them."

It's not a perfect book, but it goes into a lot of basic data structures and explains them in a not-insane way. It helped me a lot! Understanding not just how they work, but why they are useful, is so helpful.

"Grokking Algorithms: An illustrated guide for Programmers and other curious people" by Aditya Y. Bhargava

A similar book, however, more algorithm and less data structure focused, and it goes into somewhat more depth, although usually the extra material is considered optional. The author here expresses a similar concern that books and learning materials on these concepts are often very hard to understand, and it need not be that way!

You can learn these things, you just need to find the right book/method that works for you! It can take some searching to find it. I know from experience!

Read the books, try to implement some of their concepts, and then try applying those things to real problems (i.e. from HackerRank or similar sites, try more than just HR). Read the book again. Repeat. You will understand a bit more each time. That was what worked for me, at least.

u/CrPlunk · 1 pointr/learnprogramming

taken from one of my Comments in regards to a suggested python book book: thread

>I recently bought this book(LPTHW), and Decided to return it after reading this thread and instead bought Python Crash Course.It includes a Game, a WebApp, and a Data Visualization Program as final projects that you can do in any order! Python crash course unlike the former covers code in python 3.0, and (when needed) addresses python 2.7 differences.
i have yet to really start in on it as I'm currently Learning C# but comparing the two i would say this book is Much more beginner friendly (LPTHW is actually a little condescending) what i appreciated most about Python crash course is at the end of each chapter he gives you multiple ideas for simple programs so you can start coding from memory right away! this is the most important thing a book can teach you, i think!

Python is what i wish i had started in as its sooo much less typing, but you still learn everything all of the other languages will use just with different names.
switching to java or C# would only take a few days but i suggest you finish at least one book in one language before branching out!

Python crash course is a great source and very highly rated on amazon

u/Venerous · 1 pointr/learnprogramming

To answer your questions in the other comments, no language requires pre-requisite knowledge in another. You can sufficiently learn from the ground up with basically any language, including C++, it's just a matter of how... painful... you want it to be. I don't think anyone would advise you starting in Assembly, for example. C++ isn't usually recommended as a first-time language, but that being said it's still definitely possible. A lot of people recommend Bjarne Stroustrup's (the creator of C++) book for first-timers who want to get started with C++. Though it's a massive tome.

Personally, I think that regardless of whether or not you're going to have an easier time learning one language before another, you'd be better off getting started with the language you eventually want to end up in... so if that's C++ for you, go for it.

u/KobayashiDragonSlave · 28 pointsr/learnprogramming

Not OP but I discovered this book 'Grokking Algorithms' from a fantastic youtube channel 'The Coding Train'. The book explains a lot of the algorithms and data structures that I am learning in my first sem of CS at school. This thing even has the stuff that I am going to learn in the next semster. I found this book much more fun than my monotonous textbooks.
If anyone wants to get a good grasp of the fundamentals of A&DS this is a great starting point and then move on to MOOCs by famous Universities. MIT's A&DS was the one that I used. Dunno if it's still available on YouTube because I remember that OCW courses were removed or something?

Link

u/xovertheyearsx · 0 pointsr/learnprogramming

I'd suggest getting a book if you've never programmed before. Any tutorials online will give you a hint/clue and get you started, but the rest is up to you.

C++ Primer Plus is a good start: http://www.amazon.com/Primer-Plus-Edition-Developers-Library/dp/0321776402

If not, then you can use references like ianhedoesit suggested. This site is pretty cool and they provide tutorials for a lot of common programming languages:
http://www.tutorialspoint.com/computer_programming_tutorials.htm

u/Gankbanger · 1 pointr/learnprogramming

The short answer:

Try this book

Oracle's Java site is a pretty good resource too.

Now the long answer, you probably do not want to hear:

The amount of time and effort you will invest in your education will probably reflect on the level of professional you will become. Learning a programming language is just a small part of the knowledge you need to acquire to become a good software developer. Just like learning to operate a video camera will not make you a successful filmmaker.

Although school is not the only way to become a programmer, it forces you to visit a vast pool of concepts including design, testing, analysis, algorithms, data structures, memory management, concurrency and many more. This exploratory process forces you to take a peek on many areas of software development that you will likely never visit otherwise; this is an important exercise not only to be successful at this trade, but it will also help you discover new areas of interest.

If time is not on your side, at least try to emulate a college curriculum when doing your online self training. Do not stop at learning the language, dig much deeper.

u/denialerror · 2 pointsr/learnprogramming

>How does one make a structural change in a project that is this entagled and big?

Slowly, and with a lot of tests. If you want a book recommendation, Working Effectively With Legacy Code by Michael Feathers is the Bible on this subject. The key takeaway is that code should be considered legacy if you can't make changes to it confidently. The only way you can be confident is if it is well tested.

I would also say that although it is very tempting to look at a poor codebase and try and make it better, ask yourself if there is value in doing so first. Focus on what is going to add value in the immediate future.

u/dev_bry · 12 pointsr/learnprogramming

You've already done the first step: admitting that college can only teach the fundamentals while the rest of the things you need to know, you will learn while working.

With that out of the way, here's the next step: apply the Joel Test to your new employer.

If it gets an 11 or 12, you'll be fine. Find a senior developer there to mentor you and you'll be a decent software engineer in 1 - 2 years.

Otherwise, while you might learn a lot of new stuff in your first job, they might be inadequate, outdated, or outright incorrect. In this case, plan an exit strategy ASAP so that you can leave to another company that has a much higher score in the Joel Test. In this fast paced software industry, it makes no sense to spend 5 years in a company where you'd only get to grow the same amount as another guy who just spent 6 months in a better company.

Next step: read. No, not those "Teach yourself [insert language that will be deprecated in 2 years] in 24 hours" books - find the books that teach software engineering, lessons that don't get outdated. Here's the usual suggestions:

u/the_cunt_muncher · 1 pointr/learnprogramming

I started out learning by reading this book, HTML and CSS. Then I did a bunch of free tutorials on Tutsplus.com as well as watch a bunch of YouTube videos. After that I went back and bought another HTML/CSS book but it was more "textbook" like so I could learn it further in depth.

After this I had enough skill to get hired at a company doing HTML/CSS work, it wasn't great pay but it was a job and it allowed me to further learn on the job.

Then I did the same thing with Javascript, using this book first, Javascript & JQuery, followed by free tutorials online, then purchasing a more "textbook" type book on the subject.

Also for some of the "textbook" type books I ended up buying, I just recently got a membership card at my local library and they had those book there so if I'd known that when I was learning I could have checked out those books for free, so check and see what your local library has.

Also another thing I did was check out my local community college, they had really cheap classes that I ended up taking online.

u/aMonkeyRidingABadger · 10 pointsr/learnprogramming

I would emphasize the end of /u/razeal113's post. Don't reinvent the wheel. Learn from those who came before you by studying common algorithms.

MIT's algorithms course, 6.006, is a good introduction to the concepts that are important to analyzing and applying algorithms and it also introduces many important algorithms. You can watch the lectures and access the course material for free.

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/lecture-videos/

If reading is your thing, I like Skiena's Algorithm Design Manual. It's not too dense and has war stories where you can read about how the algorithms have been used to solve real problems.

http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693

Whatever your goal with programming is, there's a good chance that it won't involve inventing new algorithms; instead, nearly everything you do will involve recognizing how to apply and/or adapt an algorithm you already know to the problem you're trying to solve. The more algorithms you already know, and the more comfortable you are with them, the easier it will be to recognize and apply.

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/huck_cussler · 1 pointr/learnprogramming

Computer Systems: A Programmer's Perspective is the one we use at my school, and it is pretty awesome. It's engaging and entertaining inasmuch as a book on systems programming can be. There are tons of exercises and there is a website where you can work on lab assignments that the authors created.

u/youngoli · 2 pointsr/learnprogramming

As everyone said, start with a book. C++ has a lot of cool features and a lot of really advanced things can be done with it, but before you start with any of that you're gonna need to learn the basics. It took me a year to understand most of the "basic" C++ concepts, so don't expect to have the quick learning curve that you would get in Python/JS.

However, I also strongly recommend you start by learning C before C++. I feel that C++ has too many advanced features wrapped around C, and you get into that confusing situation where a lot of C++ expects you to know how the low-level stuff works (especially memory allocation), while at the same time hiding it so much that you probably won't learn it. I suggest picking up some highly rated book on C and learning everything until you at least know how pointers and dynamic memory allocation work. Then you're free to go crazy with the C++.

PS: I recommend this book:
http://www.amazon.com/C-Programming-Modern-Approach-2nd/dp/0393979504/

u/kidsincatacombs · 8 pointsr/learnprogramming

JavaScript and jQuery by Jon Duckett

Amazing book for anyone starting JavaScript and jQuery. Great examples and clear explainations. Wish Duckett wrote more JS-related books. I'd buy them all!

u/kraven867 · 9 pointsr/learnprogramming

Colt Steele's web developer bootcamp on Udemy is a great one! You can get it for $10 currently, sale is for 2 days only though. It honestly depends on your price range and if he wants something physical like a book, or a course. If a book, is a good one there's plenty other ones too.

Again, it depends on the price range ultimately.

u/colonelflounders · 1 pointr/learnprogramming

I haven't done much with C++ so I don't know how much has changed. Everything that was part of the ISO 98 standard should still be applicable though some bits may have been deprecated since 2011. As far as idiomatic C++ goes, I don't know if that has changed much either. I own the fifth edition of this, which helped get me started with programming in general. I never ended up finishing it, but it was pretty good. My one complaint is the chapters can be super long.

u/idontcare1025 · 1 pointr/learnprogramming

Programming: Principles and Practice Using C++ is a great book on C++ that doesn't assume as much programming experience as C++ Primer. While the Primer is pretty good, if you haven't done much programming before C++, I would recommend Principles and Practice.

u/abcininin · 1 pointr/learnprogramming

You gotta start somewhere! I'm glad that you are taking the programming classes. Programming is fun, and challenging, you'll see. For starts, just go through your course and pay close attention to (a) algorithms and (b) data structures. If you find it hard to understand, just come back here or go r/learnpython. We are here to support you. Also, if you prefer books, i recommend this one - he talks through the concepts from problem solving and steps through psuedo-code before writing a functioning program. If you prefer an online experience, try all the easy problems on leetcode, don't get intimidated if you don't get the solutions, don't be afraid to peek at hints and solutions.

u/pythonaut · 2 pointsr/learnprogramming

I recently bought C Programming: A Modern Approach, and it has been fantastic. It has a lot of exercises in each section, and an extremely helpful Q&A section for each chapter that clarifies a lot of common problems. It's easily the best programming book I've dealt with so far, though really I've only been through four or so.

u/mad0314 · 2 pointsr/learnprogramming

I think it would be a good exercise to learn something new and then go back to your old projects and apply them. For example, learn about testing and go back to your calculator and try to get a good chunk of it under tests (another good resource is Working Effectively with Legacy Code, which covers getting projects under tests when they don't have any). Then learn about CI/CD, which use tests, and make a build pipeline for your calculator. Then read Clean Code, read about architectures and patterns, and see if you can improve your architecture. This is just an example, but any of those could give you good talking points if interviewers ask about your projects.

u/maxinfet · 1 pointr/learnprogramming

Yeah I own http://www.amazon.com/gp/product/0321992784?psc=1&redirect=true&ref_=oh_aui_detailpage_o09_s00 and have been working through it but I was hoping someone might know of a good tutorial that glosses over the hello world parts of tutorials and moves forward with using pointers (I mean like the pointer opperator "<-"), header files and other C++ features and syntax.

u/perladdict · 4 pointsr/learnprogramming

Well in that case, if you haven't already make sure to look into Computer Architecture, Assembly Language (I don't recommend actual assembly try something like MIPS), and Digital Logic. Those all really helped me when I was learning OS's and stuff past trivial C programs. Keep in mind that they rarely DIRECTLY helped me, moreso they helped me to understand some of the more advanced topics that build on the lower levels of the system. They should help you to understand more of control flow down to the instruction level and help you to understand why some solutions are implemented through hardware and some through software.

With all that said, my recommendation is really cliche. But if you want to learn advanced operating system concepts then I recommend: Modern Operating System Concepts.

That is a newer edition but you'd be fine going with a cheaper used edition that's older. If it's not sold out this link on thriftbooks is a good place to look. Second Edition

u/mobusta · 1 pointr/learnprogramming

S.O. has a list of books:
http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list

Both options appear to be well-received.

Personally, I learned C++ initially with this book as it was the class textbook:

http://www.amazon.com/How-Program-Early-Objects-Version/dp/0133378713?ie=UTF8&keywords=deitel%20c%2B%2B&qid=1465331530&ref_=sr_1_2&sr=8-2


Maybe you can pick from the list for the introductory stuff, and pick up Effective C++ by Scott Meyers for recommendations and best practices after you are more comfortable with C++.

http://www.amazon.com/Effective-Specific-Improve-Programs-Designs/dp/0321334876?ie=UTF8&keywords=effective%20c%2B%2B&qid=1465332161&ref_=sr_1_2&sr=8-2

u/YvesSoete · 2 pointsr/learnprogramming

Hello, Get the K&R book and read it twice. You'll do good. Good luck.

Another really good book on C is this one: C Programming: A Modern Approach by K N King (Author).

http://www.amazon.com/C-Programming-Modern-Approach-2nd/dp/0393979504/ref=sr_1_1?ie=UTF8&qid=1425256918&sr=8-1&keywords=C+Programming%3A+A+Modern+Approach

Yves Soete

u/IRLeif · 2 pointsr/learnprogramming

Thanks! Just to make sure, do you mean these two books?

  • Introduction to Algorithms
  • Algorithms

    If so, I'm glad you mentioned those. Both of them are already on my to-read list, but they were further down than Knuth's work. Since, as you say, they might better for starters, I'll check those out first.

    By the way, I have also heard some good things about this one:

  • The Algorithm Design Manual

    Have you any experience with that book? It's also on my to-read list.
u/jesyspa · 2 pointsr/learnprogramming

In any case, first of all, make sure you're comfortable in Python before you move on anywhere. Once you're happily writing programs, get A Tour of C++ and see if you like it. If you do, get C++ Primer or PPPUC++ and work through those. My main concern would be that the C++ course may be teaching highly outdated material, and may be of very little use for actually learning C++. If that's the case, knowing a little more beforehand will make it much easier to not grow jaded and resentful.

u/Steve_the_Scout · 2 pointsr/learnprogramming

I've been writing C++ for about three years now, so I'm mostly familiar with C++11 (one of the newer updates that added quite a bit of functionality and sort of "updated" the language to make it more modern), though there are definitely people with way more experience in it than me on here.

C++ is a language with a very steep initial learning curve that drops drastically once you understand the basic concepts and write a few programs to practice the concepts involved. If you feel like it's too difficult at some point, take a break, then come at it from a different approach (and of course write a few tests to make sure you're getting it). This applies to other languages almost equally, of course.

You should try to learn C++11 (and C++14, a minor update) more than older variations of the language because it added quite a bit to make it easier to read and write with.

Online guides for C++ tend to be outdated or just plain wrong, it's actually one of the few languages with that quality (although that's changing slowly). It's best to get a book like The C++ Programming Language or Programming Principles and Practice Using C++ (which I would recommend for you over the former, which is actually more of a reference book). By the way, they're both authored by the initial creator of the language, so they also explain some of the design choices and details of the language which may or may not help you better understand it.

Beyond that, just do what's suggested for any other programming language (look at references, read actual programs written in it, etc.)/

u/Lericsui · 26 pointsr/learnprogramming

"Introduction to Algorithms"by Cormen et.al. Is for me the most important one.

The "Dragon" book is maybe antoher one I would recommend, although it is a little bit more practical (it's about language and compiler design basically). It will also force you to do some coding, which is good.


Concrete Mathematics by Knuth and Graham (you should know these names) is good for mathematical basics.


Modern Operating Systems by Tennenbaum is a little dated, but I guess anyone should still read it.


SICP(although married to a language) teaches very very good fundamentals.


Be aware that the stuff in the books above is independent of the language you choose (or the book chooses) to outline the material.

u/nonkeymn · 11 pointsr/learnprogramming

leet code is a great place for practice problems


For algorithms this book is great
https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/ref=sr_1_9?keywords=algorithms+book&qid=1554149281&s=gateway&sr=8-9

Also, if you are looking for a software engineering role you will also need to brush up on high level design like this video:
https://www.youtube.com/watch?v=KmAyPUv9gOY

u/cparen · 6 pointsr/learnprogramming

Taking in mind that you may not have access to a computer:

If you've got no background already, I'd recommend The Little Schemer / The Seasoned Schemer books as they teach programming as if it were arithmetic, so it can be studied without a computer, working out the examples with pencil and paper or just very carefully in your head -- the examples are all very small, and worked through step by step. It moves very slowly though.

If you're looking for something more advanced, there is Structure and Interpretation of Computer Programs (SICP) which again takes a mathematical approach to computing, so the examples are meant to be just as well worked out like algebra as they are put into a computer. It helps a lot to have a computer, but I had fun working through it on a long plane flight, taking notes and working through the code on paper.

SICP's examples can all be worked through on a single sheet of paper, but ramp up quickly in difficulty, so they can definitely keep you busy.

u/ixAp0c · 1 pointr/learnprogramming

While books are great to read, you should do a bit more research on good books for the topic you want to learn (their intended audiences, what they cover, learning approach, etc.) before jumping the gun and spending $70 on some books you might never finish.

Also, I'd be wary of a 390 page book that covers C++ and Game Programming (might be a bit terse, or not cover enough programming concepts, etc). Maybe you should take a look at the book written by the creator of C++.

And I recommend figuring out a career path, it might be a bit much to learn about web development / web programming and also learn about systems / application programming at the same time. It's better to specialize in one language and be an expert than to be a novice in many.

u/WillCraig_ · 2 pointsr/learnprogramming

You are pretty much wasting you time with Python if you want to become a web developer. Maybe later in your career you can learn Python for more advanced concepts but if you are a novice programmer and you know that you want to learn how to make websites, then just go for Javascript, HTML, and CSS

Here are 2 books that I really like (They have a really good aesthetic too)
https://www.amazon.com/Web-Design-HTML-JavaScript-jQuery/dp/1118907442/ref=sr_1_fkmr1_2?ie=UTF8&qid=1484694500&sr=8-2-fkmr1&keywords=html+and+ccs+books

u/ahhcarp · 2 pointsr/learnprogramming

I just bought Python Programming: An Introduction to Computer Science 2nd Edition.

I'm only a chapter into it, but it is basically an introduction to programming using Python 3. I essentially bought it based off the Amazon reviews, but it looks good so far (obviously taking into account that I'm barely into it so far.) I was going to school for web development and web design, but I found that many of the web development classes were along the line of "Here is someone's code. Now lets make it work for us." which doesn't teach the basics of programming if I need to do it myself. I'm currently taking some time off school to do some other projects and some basic learning about programming.

Chapters:

  1. Computers and programs
  2. Writing simple programs
  3. Computing with numbers
  4. Objects and graphs
  5. Sequences: strings, lists, and files
  6. Defining Functions
  7. Decision Structures
  8. Loop structure and booleans
  9. Simulation and design
  10. Defining classes
  11. Data collections
  12. Object-oriented design
  13. Algorithm design and recursion

    EDIT: Once you've read a book on basic programming (I see a recommendation for Code Complete too), you can search /r/python and there are several threads with free online resources to learn python more in-depth.
u/SQLSavant · 2 pointsr/learnprogramming

Some of these are directly related to programming and some are not but are additional reading that touch on skills that most every programmer should have some concept or idea of.

I've read all of these at some point throughout my career and can attest to their usefulness. Here's my personal list:

u/munificent · 3 pointsr/learnprogramming

I've heard good things about The Algorithm Design Manual. I personally really got a lot from Algorithms in a Nutshell. As the name implies, it's a small book, but quite good.

I know you requested data structures, but the two subjects are closely intertwined: a given data structure often exists to support an algorithm and vice versa.

u/teeceli · 4 pointsr/learnprogramming

Same thing happened to me at my last job. I was actually led to believe in the interview that it was a job relevant to my experience but I quickly learned on day 1 that it wasn't. Read as much as you possibly can in your free time for a while, you would be amazed at how quickly you can pick things up. Three books I recommend as a crash course are:

u/Grel · 6 pointsr/learnprogramming

While I have not read it, I hear great things about The Little Schemer

The Little Scheme on amazon

I used SICP which can be found here. It is really great!

u/Andrew_Hager · 7 pointsr/learnprogramming

Try the book "The little schemer"

The Little Schemer - 4th Edition https://www.amazon.com/dp/0262560992/ref=cm_sw_r_cp_apa_i_OST2Db7M254TR

I couldn't wrap my head around anything past very basic recursion. Once I had completed this book, I felt like I had a fairly solid understanding of the topic. Well worth the money, in my opinion.

Edit: As a side effect, you learn a little scheme which happens to be a very fun language.

u/MITranger · 4 pointsr/learnprogramming

I really like /u/razeal113 's comment. That's a good algorithm for finding a good algorithm. Starting out with brute force isn't necessarily bad, as it at least gives you a jumping board to start optimizing. The only thing I would add is to increase your knowledge and toolbelt. You can gain a lot of inspiration and learn "how to think" by learning, analyzing, applying, and modifying all the awesome algorithms already out there. Here are some resources:

MOOCs.

u/iDontDoMeth · 2 pointsr/learnprogramming

Jon Duckett, who wrote the HTML & CSS book you bought (which is the best in my opinion) also just released his JavaScript book, which I am excited to read. Once you get a grasp on it, I would read JavaScript The Good Parts, by Douglas Crockford, who works for ECMA and helped write the language.

u/carpet_munch · 2 pointsr/learnprogramming

Python Crash Course seems to be cool for getting started with Python. Once you know some basics, start trying to solve problems on sites like hackerrank or codingame and see where you might need to fill in the blanks. Think of things you want to program, or make clones of existing applications. Once you get started and work on some projects, the learning will happen naturally because you'll constantly be looking things up to help you solve your problems. Just stay away from copy/paste of other people's code. At the very least, type any code you need to borrow out yourself and comment it to show yourself you understand what it is doing. Best of luck.

u/anonymousdeveloper · 1 pointr/learnprogramming

Code academy is not job training, it's an introduction to syntax.

For instance, after finishing their Ruby course, you will know how to work with strings and vectors and so on, but without more knowledge, you wouldn't even know how to start to build a Ruby application. If shown an existing Ruby program you might be able to read a bit of it and change some stuff here and there, but you would be far from any significant changes.

I, as a full stack developer, don't use Code Academy as a learning resource but as a refresher course kind of thing. When I haven't been using bootstrap too often, I go do the code academy course and relearn the basics in order to smoothly transition into using it on my own.

Better alternatives would be an actual book. Go to the library or a book store and find an introduction to web development book. I've heard that this is a pretty good book, http://www.amazon.com/HTML-CSS-Design-Build-Websites/dp/1118008189/ref=sr_1_1?ie=UTF8&qid=1448997572&sr=8-1&keywords=html+for+beginners.

Edit: Beyond the absolute basics, Code Academy (and other things like it, FCC for example) are basically useless.

u/aroras · 14 pointsr/learnprogramming

doing this line by line with as we speak with this amazing book. It definitely helps!

u/tenpairsofsocks · 18 pointsr/learnprogramming

Taking a course will definitely help and I have a few book suggestions.

Intro to Algorithm
This is pretty much the holy grail on algorithms, used in many college CS courses.

Skiena's Algorithm Design
My personal favorite. Combines his Ph.D experience with real world problems.

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/glhanes · 1 pointr/learnprogramming

In addition to going out and actually getting your hands dirty as others have suggested, make sure that when you're doing it, you're using the best design principles you can muster.

Also, do some reading! There are lots of good books out there that can help you learn common conventions and good design principles.

I'm going through Effective C++ right now, and I've learned more about how to write C++ in the first quarter of the book than I had in the previous 2 years of my life.

Effective Java is a good source, too, but obviously it's going to depend on which framework and languages you're using. Either way, though, you'll learn a lot of essential concepts for how to write maintainable code and prevent common design mistakes.

Also, if you're planning on writing a lot of Object Oriented code, read up on Object Oriented Design Principles/Patterns. Even if you never use them, other people will. If you start working in bigger codebases, you'll see them in action, and it'll make learning the code a whole lot easier if you're familiar with the patterns they're using.

u/evholyfields_ear · 1 pointr/learnprogramming

You can check out this tutorial, helped me while I was learning. If you could share your code, that would be helpful too. This book also has an excellent explanation.

u/Is_that_bad · 2 pointsr/learnprogramming

Programming: Principles and Practice using C++.
Buy this book or get a used version if you can or borrow it from the library. The book is very well written with a lot of exercises at the end of each chapter, which if you complete will get you a good grasp of C++. As for software, install MS VC++ express, it's free.

u/nso95 · 1 pointr/learnprogramming

This book is fantastic and beautiful.

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/brockitoff · 1 pointr/learnprogramming

I am a fan of these. I keep them on my desk for quick access but I think they would make good study material as well! I would also take a look at the related books on the page and read some reviews.

u/Yawzheek · 2 pointsr/learnprogramming

I have this book, and it's pretty incredible. Detailed, but still brief enough.

It also has a few incredibly difficult challenges. Most of them are exercises that require some level of thought. Many introductory books are content with going to the very last chapter with slightly evolved "Hello world." Mr. King didn't write one of those books.

It's not online, and it doesn't teach the latest standard (C11), but it's a pretty incredible book and I highly recommend it.

u/Bifrons · 2 pointsr/learnprogramming

I used an earlier version of this in my first C programming class: http://www.amazon.com/C-Programming-Modern-Approach-2nd/dp/0393979504/ref=sr_1_1?ie=UTF8&qid=1311251965&sr=8-1

It was ok, but I find myself referring to the K&R book more on projects. It's just better in every way. Not that the first book was bad by any means.

I don't know if this is good, but here's a free book: http://beej.us/guide/bgc/ It's by the same guy who did the Beej's guide to Network Programming (http://beej.us/guide/bgnet/), which I highly recommend if you want to get into network programming at any point. This book was instrumental in me passing my network programming class.

Second, don't use an IDE like Eclipse. Use a text editor (my preference is VIM) and GCC. You'll learn more. Once you get the basics down, then learn an IDE.

Finally, as Madsy9 pointed out, look into revision control (Git, Subversion, CVS, etc) at some point. However, I would learn a bit about the language first before using revision control. In my CS curriculum, we didn't touch revision control until Operating Systems in my third year. Previously, we learned C and simple data structures (linked lists and the like) before touching revision control. Then again, CS != Software Engineering, so I could have been taught completely wrong on this.

u/0b_101010 · 9 pointsr/learnprogramming

Hi! I recommend the following books:

u/pushme2 · 2 pointsr/learnprogramming

To be honest, I would suggest some other book first (kochan and king are good enough), then reference/read that book if you have problems or just want to say you read it.

K&R is old, and while still mostly accurate, and can teach you C, there are books that are better suited for teaching people learning C in this century. One thing that the newer books lack usually is explaining old stuff. For example, many books don't sufficiently explain how the input and output buffer works.

I do think it's a good idea for people actually doing stuff with C to eventually read K&R, but starting from the basics, you might want a gentler approach.

u/EnigmaticSynergy · 2 pointsr/learnprogramming

You'll have to learn HTML first, and incorporate styling [CSS] soon after and from there expand your knowledge of using both synergistically. I recommend this book:
http://www.amazon.com/HTML-CSS-Design-Build-Websites/dp/1118008189/ref=sr_1_1?ie=UTF8&qid=1409625374&sr=8-1&keywords=html+book
Afterwards, find out what type of functionality you're going towards [Canvas games (you don't know what I mean yet), social platforms, blogishness, etc.]. That will determine what javascript aspects you should be serious about after learning the basics. Look up 'Professional Javascript for Web Developers'. It's a damn good introduction for going from beginner to cool-guy. Have fun, I myself am a 14 year old on the web-dev journey. Also, even though I'm not in complete support with their methods, make a Stack Overflow account. It'll have the answers to all your questions, and if not, ask it! If you want more info on anything just ask me.

u/dogewatch · 7 pointsr/learnprogramming

The Grokking Algorithms Book is good for beginners or for those who want a fun refresher. Obviously not too much depth but teaches it in a nice illustrated way. Code is also available on github.

u/MoTTs_ · 1 pointr/learnprogramming

Books by Stroustrup, the creator of C++, have review questions, drills, and exercise at the end of each chapter. And as a bonus, Stroustrup is a very wise programmer to learn from.

u/dermesser · 2 pointsr/learnprogramming

If you look for literature: Andrew Tanenbaum has written some books, especially Modern Operating Systems (http://www.amazon.com/Modern-Operating-Systems-4th-Edition/dp/013359162X, but please don't buy it on Amazon, go to your local dealer or library). Tanenbaum's books and operating system Minix were also inspiration and help for Linus Torvalds when starting Linux.

To get back to technology :P

I personally didn't find assembler actually interesting because it's too low-level (you have to do too much work to achieve anything), so I didn't actually learn it (although I am able to roughly understand some disassembled code). My feeling regarding the bashing of C is that many people are afraid of it – because it is too complicated, or too dangerous, or they don't understand pointers or whatever, so they talk negatively about it. C is anything but archaic, it is essential to modern computing. The same with C++: Many people hate it (although many of them don't even know it) because they don't understand its concept: That you may do anything, but that you are responsible for it. The language gives you an amount of power not provided by languages like Python, Java or C#. They reverse this fact and say things like "duh, memory leaks" or "duh, segmentation fault" – just because they were bad programmers at the time they tried C++ and didn't manage to accomplish anything but segmentation faults. C++ is in fact the most complex language currently available, I can't think of another language requiring such a high skill level for safely writing production apps.

u/ModeratelyFloats · 1 pointr/learnprogramming

Udemy Course.
Book by the Creator of C++.
The Cherno C++ youtube playlist.

Cherno is more gaming focused but has in depth tutorials right from the get go. Its dense. The book is thorough and a bit out of date but the main concepts still apply iirc. Udemy is a free course that handles most of the fundamentals.

u/redditfend · 1 pointr/learnprogramming

There is this awesome book called Grokking Algorithms.

This should help you really well. Every concept is taught in a clear, concise manner with lots of illustrations.

u/Medicalizawhat · 3 pointsr/learnprogramming

Read Clean Code and build a non trivial project using the principles from that book. You'll learn a lot.

Maybe read an Operating Systems book, pick a subsystem you find interesting and try to understand how Linux implements it.

Learn about git and source control.

Contribute to open source projects you find interesting.

Try setting up a server and configuring it to do cool stuff.

Basically, identify something that you don't know much about and dive deeper, or just write lots and lots of code.

u/mucus · 1 pointr/learnprogramming

You can have a go at the book Artificial Intelligence: A Modern Approach by Russel and Norvig, it's fairly accessible and it's a fun read.

u/mamser102 · 1 pointr/learnprogramming

i really like the book project based learning python, it was really fun to follow.

https://www.amazon.com/Python-Crash-Course-Hands-Project-Based/dp/1593276036

u/Viginti · 1 pointr/learnprogramming

Some have mentioned in replies to my post that the algorithms presented in the book are either too abstract or simple. To that I say read this, grokking algorithms: An illustrated guide for programmers and other curious people https://www.amazon.com/dp/1617292230/ref=cm_sw_r_cp_apa_KG7CAbE9E4243. It's written well and explains some more complex ideas in an easy to understand manner .

u/Aflixion · 1 pointr/learnprogramming

Meyers' Effective (Modern) C++ really is a good place to start, assuming he understands the basic syntax and concepts. The basics of C++ don't change just because there's a new standard out. Start with Effective C++ to get the basics quirks of the language down then go to Effective Modern C++ to add in the new things from C++11 and C++14.

u/peacegnome · 3 pointsr/learnprogramming

I haven't used it yet, but if the reviews and his html/css book are any indication this would be an amazing book.

u/absolutionx · 1 pointr/learnprogramming

If you're just starting to program I would highly recommend python along with the book Python Programming: An Introduction to Computer Science.

Python has a very easy and simple syntax so you can spend more time learning the fundamentals of programming instead of focusing on getting the syntax correct.

u/hewhomustbenamed · 3 pointsr/learnprogramming

Umm....if you want to do that...then write a simple program to lets say sum 10 numbers in C. Now , compile this file and "step" through the program in gdb....as you will see each assembly line executed you will have an understanding of whats going on.

However , for some sanity please refer the Intel manual or use this book (there might be other references as well) ... http://www.amazon.com/Computer-Systems-Programmers-Perspective-Edition/dp/0136108040


There's a free beta edition somewhere...and you will need Chapters 2 and Chapters 3. One full day read both of them thoroughly..and you"ll be golden. Let me know how it goes.

u/alexanderleon · 1 pointr/learnprogramming

The bootstrap you'll use to run your tests will come together and that part will be easy soon enough. Writing testable code will take longer to grock completely. You will learn how to write [SOLID] (http://en.wikipedia.org/wiki/SOLID_(object-oriented_design) code.

I'd start with the Michael Feathers book.

Stick to it. You will be a far better programmer for the effort.

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/The_New_34 · 2 pointsr/learnprogramming

Java: A Beginner's Guide

For someone who does not know much about computers at ALL, this may be a bit challenging at first, as it doesn't go into much detail about downloading the JDK (if you wish to use it and not an IDE) and some issues about javac and java not working (again, this is only an issue in cmd/powershell if you're not using an IDE).

I would also recommend this html, css, javascript, and jquery bundle

The two books can also be bought individually


EDIT: Specified the downsides of the Java book a little more

u/ImperialRenaissance · 4 pointsr/learnprogramming

This is a very dense book, but is undoubtedly the best for learning C++ and I would argue programming in general. Just be aware, as with learning the 'vanilla' version of any programming language, you may feel dissatisfied with still not being able to do too much, and while the book does introduce GUI programming with C++ with the Fast Light Toolkit, I would suggest learning SFML or even how to use C++ within the Unreal Engine to truly motivate you.

Remember that there is no utility in learning a programming language in of itself, only in being able to actually do something with it.

u/PicklesInParadise · 1 pointr/learnprogramming

I haven't read it in years, but I remember The C Programming Language being very useful.

If you want to learn more about the low level details of how computers work in general, I own the following books and recommend them:

---

u/asimshamim · 1 pointr/learnprogramming

This is a pretty well regarded book.

It was the book they used in my C++ course in my Object Oriented Course Sophomore year.

/u/CS_noob_student posted a list that include this!

u/donpissonhospitality · 1 pointr/learnprogramming

this is what i used for html and css, i think it lays everything out very easily for a beginner, i just got the JQuery/JS book, and its also good

u/simcaster · 1 pointr/learnprogramming

I'm a big fan of The Algorithm Design Manual. It covers a lot of stuff and is pretty readable.

u/michael0x2a · 4 pointsr/learnprogramming

This is probably a better question for /r/cscareerquestions.

I'd also recommend reading through Working with Legacy Code -- you can find a decent summary of it here.

u/Girl_in_Canoe · 2 pointsr/learnprogramming

HTML and CSS: Design and Build Websites

It really simplifies the process and teaches you everything step by step and has a really great design.

u/quantumproductions_ · 1 pointr/learnprogramming

Hello, this book will make you smarter, I promise

https://www.amazon.com/Little-Schemer-Daniel-P-Friedman/dp/0262560992

Source: I program professionally for almost a decade now

u/cismalescumlord · 17 pointsr/learnprogramming

It's not cheap, but C Programming a modern approach is very good.

All you need to get started is a text editor and a compiler. Which ones they are depends on your platform.

u/sslimee · 1 pointr/learnprogramming

No, don't look into it lol I'm in a similar situation as you and the HTML & CSS book by Jon Duckett is helping me out a lot! Check it out here: http://www.amazon.com/HTML-CSS-Design-Build-Websites/dp/1118008189#immersive-view_1421509903370

He also has a JavaScript & jQuery book as well that you can get once you start learning JavaScript.

u/Maindric · 3 pointsr/learnprogramming

Programming: Principles and Practice using C++ 2nd Edition is made by the creator of C++ himself. This book is meant for first year computer science students to learn to program via C++. There are sections within the book that cover GUI and other UI conventions, however it focuses mostly on programming principles. It is a great book to introduce yourself to Programming and C++.

u/Dansio · 2 pointsr/learnprogramming

Then learning Python would be very useful for you. I have used the book called Automate the Boring stuff (Free).

For data science and machine learning I use: Data Science from Scratch and Hands on Machine Learning with Scikit-learn and Tensorflow.

For AI I have used Artificial Intelligence: A Modern Approach (3rd ed.).

u/0x7E3 · 2 pointsr/learnprogramming

Two commonly recommended books on this topic are The Dinosaur Book and Modern Operating Systems. For something a little more concise (and free) you could try Operating Systems: Three Easy Pieces.

For an actual course, you could try Computer System Engineering from MIT Open Courseware.