Programming+Education

=Free/Inexpensive Online Education in Computer Programming=

Books

 * Read Write Web lists some C and C++ books available for free online.
 * Learn Python the Hard Way is available for free in HTML online. They also sell pdf and print copies.
 * FreeProgrammingresources has lists of free tutorials and free books.
 * Intel's The Software Vectorization Handbook shows how to optimize multimedia, engineering, scientific, etc. programs from sequential code to vectorized code to make best use of MMX, SIMD, Altivec, etc. types of instructions. This book is marketed to compiler makers as well as programmers of applications that would benefit from such instruction sets.

Webinars/Tutorials

 * Introduction to Object Oriented Programming in C++ Tutorial

Courses

 * Object Oriented Programming in C++ class from the University of Southern Queensland, Australia.
 * Free computer science classesfrom ArsDigita University. They also sell the lot on DVDs. Note that they have stopped shipping DVDs, and now instead ship on SD flash card or USB thumb drive.
 * Object Oriented Program Design is a course largely about Java
 * list at intelligentedu.com
 * Computer Science unplugged
 * MIT OpenCourseware
 * 6.033 Computer System Engineering
 * 6.088 Introduction to C Memory Management and C++ Object-Oriented Programming,
 * 6.096 Introduction to C++
 * 6.092 Introduction to Programming in Java
 * 6.092 Java Preparation for 6.170
 * 6.170 Laboratory in Software Engineering
 * 6.831 User Interface Design and Implementation
 * 6.189 Multicore Programming Primer
 * 18.337J / 6.338J Applied Parallel Computing (SMA 5505)
 * 6.189 A Gentle Introduction to Programming Using Python
 * 6.251J / 15.081J Introduction to Mathematical Programming
 * 6.094 Introduction to MATLAB
 * 6.837 Computer Graphics

Articles

 * Comment your code! Read the Fine Art of Commenting.
 * Efficient C Code for ARM Devices gives some ideas to think about regardless of architecture you are targetting.
 * Mentor has an article about Abstracting Device Driver Code for porting, testing and reuse.

DVDs
= =

APIs

 * OpenMP is an API for shared memory access in parallel programming.

Other Resources

 * Coding Standards and Style Guides. These are subsets of the respective standard languages, intending to make "dangerous" standard language items illegal, in an effort to minimize the opportunities for bugs to occur in the first place.. They are much like an extended linting process.
 * Misra C is an automotive industry subset of C++ language intended to by definition reduce the opportunities for bugs to occur compared to standard C.
 * Misra C++ is the C++ equivalent of Misra C.
 * JSF++ is the Joint Strike Fighter Air Vehicle C++ standard, similar in concept to Misra.
 * HICPP Is High Integrity C++ coding standard, again similar in concept to Misra and JSF++.