Excellent resources to take you from novice programmer to expert

Hi all,

I’d highly recommend some courses at coursera that can take you from complete novice to fairly skilled programmer in a brief period of time. These are courses I wish I had available to me for free when I was learning to program, will cut your learning time drastically.

First course

Learn to Program: The Fundamentals

This course will teach you all of the basic concepts of programming using python - variables, functions, parameters, looping, testing, documenting, and give you some familiarity with some basic data types (int, float) and more advanced data types (string, list, dictionary). Also will teach you some useful functions that will help you with more quickly learning and using python (dir, help)

The second course, which is a follow on to the first course is

Learn to Program: Crafting Quality Code

https://class.coursera.org/programming2-001/class/index

This will teach you more advanced testing, give you a formula for algorithm design, teach you how to create your own classes/types.

Next I’d recommend learning about algorithms and data structures,

Algorithms Part I

https://class.coursera.org/algs4partI-002/class/index

This is an extremely accessible course teaching you many fundamental algorithms and data structures.

Algorithms Part II
https://class.coursera.org/algs4partII-001/class/index

The second course teaches more algorithms that you will find useful.

Note that both of the above two courses use java as the teaching language, but they should be fairly understandable to you once you have finished the first two python courses, since programming is programming.

Next you can learn parallel programming on the GPU.

Heterogenous Parallel Programming.
https://class.coursera.org/hetero-2012-001/class/index

The GPU programming course uses CUDA a variant similar to C.

There are two other Algorithms courses available - taught by a different instructor. The lectures are far more focussed on theory and proofs. Unless you have a strong formal maths background I wonldn’t advise taking them since they largely cover the same ground as the above two courses, but with a formal proof focus.

I’ve included them here for completeness.

Algorithms: Design and Analysis, Part 1
https://class.coursera.org/algo-003/class/index

Algorithms: Design and Analysis, Part 2
https://class.coursera.org/algo2-2012-001/class/index

The first four courses all have very reasonable learning curves. You can probably start implementing your own tools or making tweaks to existing tools after the first course, but you will be able to implement fast tools after the algorithms course.

After the above courses you can also explore more programming topics, such the as the excellent Neural Networks for Machine Learning,
https://class.coursera.org/neuralnets-2012-001/class/index

Here are more useful resources - a list of common error messages and the most frequent causes of them (can help you to debug your program more easily)

https://www.edx.org/courses/MITx/6.00x/2012_Fall/wiki/6.00x/common-errors/

and a list of idioms that show the ‘python way’ of doing things, that will increase your code readability

https://www.edx.org/courses/MITx/6.00x/2013_Spring/wiki/6.00x/python-idioms/

These courses can be completed relatively quickly,

I watched the lectures at a playback rate of 2.7x in VLC media player (any faster and the video becomes distorted), and was able to go through the first programming course quite quickly (4 hours or so?).

Since you are probably new to programming the assignments will likely take you longer, and you might have to watch at a slower playback rate to get full comprehension, but the courses can be done quite quickly - perhaps even a newbie could finish a course in 1 hour of watching and coding each day for a week.

and this is free? 'cause there’s a sign up button… why not just video tutorials?

Yes these are free, as with many free resources they require signing up to view content.

The quality of the teaching and the course design is excellent. You can ‘just watch the video’ if you are so inclined, although the brief quizzes, and programming assignments help to ensure the knowledge is cemented in your brain.

I’m not sure what you mean by ‘why not just video tutorials’ - there really aren’t any comparable resources of the quality available. If you are talking about Blender tutorials for scripting - most of them will teach you bits and pieces of knowledge - enough to ‘hack together something’ simple, but with the above tutorials you can learn good programming skills and valuable programming concepts. Ie algorithm knowledge allows you to code things fast that you might not have been able to code at all (or would be so slow that could only handly trivially small meshes).

+1 from me. They are wonderful resources for learning programming. The Learn to program series covers basic stuff. The videos are not too long and can just be watched quickly if one has basic programming knowledge. The algorithms courses were really interesting and i learnt a lot from them. I am currently waiting for heterogeneous computing and algorithms design part 2 courses to start :slight_smile:

EDIT: I would like to add edx.org and udacity.com which offer good courses as well.

i was just skeptical 'cause of the registration requirement, but if it’s free then it’s great!

Hi CoDEmanX,

The course is free the sign up button does not ask for money or credit cards etc.

and watching the intro the course on Algorithms looks real good.

jarope

A few more useful resources

codingbat.com
http://codingbat.com/python

This a a bunch of really simple python problems (ie one or two line solutions for almost everything).
It covers very fundamental understanding of using python, good simple practice that you should be able to breeze through.

Note that the solutions he provides for things aren’t very ‘pythonic’ ie he often uses ugly code that instead of using max, min, and other convenience functions writes out long hand clunky comparisons functions. So try and solve the problems, but don’t pay much attention to his solutions :slight_smile:

Next is an online book

Problem Solving with Algorithms and data structures
http://interactivepython.org/courselib/static/pythonds/index.html

This covers the same algorithms and data structures as the course, but the implementations are all in python. And it has practive problems if you are so inclined.

After you have enough data structures and algoriths under your belt you can tackle ‘checkio’.

http://www.checkio.org

Checkio is a game where you have to solve problems using python. Most of the solutions will require real programming and often you will make use of the algorithms and data structures from above, or need to solve algoritms on your own. Many of these problems are non trivial in the amount of time it will take you to solve them (ie you can easily spend a few hours or quite a few hours solving, debugging, etc.) If you can do a few of the problems from the book above, or can get a hundered or so points on checkio, you are probably ready to tackle a problem in blender.

+1 from me too. my friend recently told me about coursera. I watched the videos. they are wonderful.