Here are a list of programming tracks that I would recommended for people who are interested in programming:
Absolute Beginners -
- Scratch (https://scratch.mit.edu) - plug-n-play programming block programming style. The goal is to learn how to reason systematically. Break downing a larger goal into multiple smaller goals and then how to put everything back together. [Learned how to do Flow/Logic/Process Diagram].
Moderate/Beginner -
- C
- I would highly recommended anyone who is interested in programming and specifically embedded programming to learn C from the ground up.
- there's a free online course by Harvard (CS50) on Edx.org - http://www.edx.org/course/introduction- ... ardx-cs50x that I would recommended taking over the summer (or if you have spare time). The course is about 3+ hours of lecture videos, another 1-2 hours of discussion section videos (on how to handle the homework assignment) and there's the homework assignment. The homework is graded by submitting your program to a specific URL.
- Java
- Edx.com also has a 2 parts intro to Java courses -
- part 1 - https://www.edx.org/course/introduction ... it-1-1x-0#!
- part 2 - https://www.edx.org/course/introduction ... mx-it-1-2x
Both of these are more general programming and not specific to embedded programming which does have its own specificity.
More Advanced -
- Learn C the Hard Way - http://c.learncodethehardway.org/book/introduction.html
- Algorithms -
- use whatever programming languages you're most comfortable with and try to implement some of the common algorithms and compare execution time, code flexibility, etc.
- Khan Academy has a intro section into algorithms - https://www.khanacademy.org/computing/computer-science (some of these are already in homework assignment in the CS50x above).
- for those that wants to be hardcore programming - there's the bible for all things algorithms - http://www.amazon.com/Introduction-Algo ... algorithms