Learning Resources for Beginners and Intermediates
[Image: myCzqts.png]

Color codes:
  • Yellow = name
  • Yellow bold = link
  • Orange bold = bold text or comment/note
  • Blue = path
  • Green = edit
  • Purple = file extension
Whether you are completely new to the world of programming, an intermediate or experienced programmer, I'm sure you can get something out of the following learning resources that I'm about to write about. I've tested, used and can recommend most of these resources. Most of it comes from first-hand experience. Each learning resource will be accompanied with a feature list and a pros/cons list after the description of the resource.

[Image: logo_blue_dark.png]

And we're starting off with Codecademy.com, which is a well-known website that aims to help beginners learn all kinds of web languages. The website has courses that you can take for specific languages, mostly focusing on web development and not much on desktop development. They offer a variety of custom community made courses as well, which can both be challenging or easy. In my opinion, this is one of the best resources for a beginner although after the first two-three courses, there's not much left to get out of the website. The learning quickly declines after some time as the courses don't teach you advanced concepts, but rather just the bare-bone basics. You could try doing the community courses, but I often found the problem to be that they weren't very well made i.e. they didn't really guide you through (explaining as you go), but rather they gave you a job and expected you to search using Google. Doing it this way is kind of counter-intuitive to what Codecademy stands for as one could say that you wouldn't even need the course as you could just have searched about these advanced concepts yourself, thus making the course completely useless. Another thing to consider is that after you've completed a few courses, you won't really learn much anymore. The information doesn't stick as it's basically as "follow the recipe" type of thing they have going on rather than critical thinking and problem solving. Keep this in mind! Anyway, they have a forum where you can post questions about your course and the specific parts in it. The forum is very user-friendly and there are many people ready to help you out with your problems. They also have some courses that aren't about languages, but rather tools you need as a developer, which I think is really great. For example, they have courses on SQL databases and Git! They offer an upgraded plan (Pro for 19,99$/month), which offers a personal learning plan, access to advisors, projects and quizzes. I haven't personally tried this, so I'd rather not conclude on whether it's worth it or not. Although I will admit that it doesn't look very appealing (to me at least).

  • They offer courses in SASS, JavaScript, AngularJS, React.js, Ruby, Ruby on Rails, PHP, HTML & CSS, Python, Java, SQL databases, learning CLI, Git and more
  • A pro version that offers personal learning plans, access to advisors, projects and quizzes for 19,99$/month
  • Community courses
  • Help forum
  • Great starting point for beginners
  • Many courses for web development
  • Community courses
  • Help forum
  • Courses in Git and SQL databases
  • The learning process quickly starts to decline if you want to learn something more serious
  • Community courses aren't always well made
  • Forum can be quite cluttered at times with many, many beginners asking for help
  • They don't offer much when it comes to desktop development

[Image: Treehouse-Logo-Outlines.png]

Treehouse. I haven't personally used Treehouse myself as I don't think paying for a learning resource is always the way to go, but I do have some friends that have used it and they're telling me good things about it. First off, the pricing is as follows:
  • Basic plan: 25$/mo (7 day free trial)
  • Techdegree plan: 199$/mo (7 day free trial)
The basic plan includes 1000+ video courses, interactive tools, on-demand learning, supportive community of students. The techdegree plan expands upon the basic and includes everything the basic plan has to offer + custom curriculum, a portfolio of 12 real-world projects, exclusive slack channel, peer project review, proctored final exam and official techdegree certificate. I have friends who have tried the basic plan and they only report good things. Learning is easy, the information sinks in easily and instead of just following a recipe, you are learning how to think critically in situations that could be real-world situations. They say it's intuitive and completely worth its price. They have a forum where experts can help everyone, beginners and pros alike. They offer code challenges and quizzes as well. I personally think that by doing hard work, you can do just as well with free online resources. I'm not a fan of paid learning resources, but I do admit that they do make it easier to educate yourself. It offers courses (they call it "Tracks") in web design, rails development, iOS development, Android development, PHP development, WordPress development and starting a bussiness.

  • Big library (1000+ videos)
  • Many "Tracks" or courses
  • Code challenges
  • Quizzes
  • Conferences
  • Workshops
  • Professional help
  • 1000+ video courses
  • Critical thinking and problem solving type of mentality rather than "follow the recipe"
  • Supportive community
  • Real-world situation simulation i.e. problems that could occur in the real world
  • Offers tips and help on how to start a business
  • Paid service with only a 7 day free trial (25$/mo for basic and 199$/mo for techdegree)
  • Learning happens only via videos
  • They don't offer courses or "Tracks" in popular languages such as C++, C#, Java, Python etc.

[Image: CodinGame_Logo_Final_Black.png]

CodinGame is probably one of the best and most fun online resources you can come across. It's completely free and features various types of coding competitions i.e. multiplayer, they offer large scale coding contests, many coding games and challenges, community puzzles, a live on-site IRC chat and much more. This isn't a resource for beginners but more for intermediate coders who want to improve their skills by challenging themselves to complete puzzles or "games". Each puzzle/game has a specific amount of testcases that must be passed in order for you to be able to get a 100% score and get those sweet, sweet achievement points and XP. There are four difficulties: easy, medium, hard and very hard. As you progress through the puzzles and up the difficulty, you'll find yourself raping Google in order to solve some of the problems, which is fine as it's made so you have to search Google. In contrast to Codecademy, CodinGame wants you to use Google and learn that way. It doesn't offer any courses or help videos, so you'll have to do everything by yourself. If you are having trouble, you can go to the IRC chat and ask the friendly community there. They also have a forum if you prefer that. The best part about this whole website is probably the amount of languages they support. The list is long:
  • C
  • C++
  • Java
  • C#
  • PHP
  • Python2
  • Python3
  • Ruby
  • JavaScript
  • Objective-C
  • Go
  • Haskell
  • Scala
  • Perl
  • Dart
  • Bash
  • Pascal
  • Groovy
  • Clojure
  • VB.NET
  • Lua
  • F#
  • OCaml
  • Swift
  • Rust
If this list of language support doesn't turn you on then get the hell out of here.

  • Large scale coding contests
  • Multiplayer (various kinds of coding competitions)
  • Puzzles that will help you learn how to think outside the box
  • Community made puzzles
  • Live on-site IRC chat where you can get help
  • Help forum
  • Achievements and leveling
  • Support for many languages
  • Very friendly community
  • Many puzzles
  • Community puzzles
  • Coding contests
  • Coding competitions (simple multiplayer)
  • Helpful forum
  • Live on-site IRC chat where you can get help
  • Support for many languages
  • Not for beginners
  • It's very cramped on smaller screens

[Image: pe_banner.png]

Project Euler is a website that is filled with mathematical problems that increase in difficulty as you solve them. It goes through many mathematical concepts and requries great problem solving skills in order to be able to progress. You don't submit code on the site, you just submit the result. After you've submitted the result, if it's correct you'll get redirected to a thread specifically made for that problem where you can discuss it, post your solution and/or discuss how to improve your or other's solution. I wouldn't recommend using this website on its own as your main learning resources. Project Euler offers a great deal of problems that help you learn how to solve mathematical problems, but it won't help you learn how to program. As mathematics and prograamming often go hand-in-hand, this is a great resource for tuning and improving your mathematical skills, so that you may be a better programmer. However, using this site on its own is a waste of time in my opinion. It's best used in conjunction with other online resources such as CodinGame.

  • Many mathematical problems starting with very easy and going up to extremely hard
  • Thread for each problem where optimization and better solutions can be discussed
  • It's great for honing your mathematical problem solving skills
  • It's a lightweight website and you can get started in less than 5 minutes
  • Threads for each problem
  • Doesn't teach you programming concepts
  • Can get boring quickly

[Image: title.png]

Rosettacode is much like Project Euler except there's a much more direct focus on programming. It offers a ton of problems to solve, which also include classic and well known programming pitfalls. In contrast to Project Euler, Rosettacode doesn't have anywhere where you can submit code or a result. You have to take care of the result yourself and check if it's correct by looking at the specific problem's page on Rosettacode. The great thing about Rosettacode is that if you can't solve a problem and you give up, you can go to the problem's page and see solutions in many, many languages. From there you can study the solution and try to improve your own. Or you could go to their IRC chat and ask for help. If a specific problem doesn't have a solution in the language you're writing in, you can submit your solution and it be added to the problem page. Like Project Euler, Rosettacode isn't a resource that should be used on its own, but rather in conjunction with another resource, one that is more friendly and intuitive.

  • 1000+ problems
  • Solutions to each problem in as many languages as possible
  • 626 different languages in total across all problems are used
  • An amazing resources for learning the differences between languages and improving your own code
  • It will teach you optimization
  • New problems are added all the time
  • Everyone contributes daily
  • Can't be used on its own
  • Can get boring quickly
  • No help forum

[Image: 1RITQKT.png]

This is a resource specifically for C++ and the only reason I've added it here is because it's a personal favorite of mine. C++ Primer Plus 6th Edition by Stephen Prata is one of my favorite books. As you can probably guess, it's a book specifically about C++. It goes through many easy, medium and advanced subjects that will teach you both programming concepts and how to apply them in C++. Most of what I know about C++ I know because of this book. I can easily recommend this book to anyone who wants to take their programming seriously. You can buy a paperback edition of the book on Amazon for just 32$ or 23£.

  • Complete, integrated discussion of both basic C language and additional C++ features
  • Clear guidance about when and why to use a feature
  • Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time
  • Hundreds of practical sample programs
  • Review questions and programming exercises at the end of each chapter to test your understanding
  • Coverage of generic C++ gives you the greatest possible flexibility
  • Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces
  • After reading this, you will have a greater understanding of programming and especially C++
  • Many examples
  • Thorough explanations
  • Programming exercises and questions after each chapter to test your understanding
  • Coverage of the features introduced in C++11 and how they differ from the previous version, C++98
  • Some people find books to be boring
  • It is quite lengthy and will take time to complete
NOTE: At the time this book was written, C++14 wasn't out. However, C++14 (that came out in 2014) was mainly a technical improvement upon C++11 with a lot of bug fixing and less introducing to new features. A C++17 is coming out in 2017 and is going to introduce a lot of new features.

I hope you enjoyed reading through this thread. There are many, many more resources both online and offline i.e. in real life that you can use to improve your programming skills, but I've used all of these resources (except for Treehouse) and have therefore decided to only talk about them as I can give an honest opinion as to how good they are and what their strengths and weaknesses are. I thought it'd be best to do it this way instead of just posting a long list of online and offline resources. Good luck on your journey to beccome the ultimate master programmer.

07/08/16 - 16:56: Spelling corrections.
07/08/16 - 17:22: Thread formatting.
As am a new programmer, I will be utilising these websites to broaden my knowledge - excellent post - thanks for sharing!:)
another HQ thread by an awesome user. Good job and thanks for sharing!

Forum Jump:

Users browsing this thread: 1 Guest(s)