1. Review of C basic syntax, compilation, linking, libraries, etc.
2. Defining and implementing classes, constructors, destructors etc.
3. Member functions, virtual functions, pure virtual functions
4. Argument passing variations (by value, by pointer, by reference)
5. Managing dynamic memory (new, delete)
6. Inheritance and subclassing
7. Using common tools, gdb, make, gprof, valgrind, emacs etc.
8. Floating Point precision and numerical analysis
9. Introduction to Templates, including data structures and algorithms in the Standard Template Library
10. Parallel processing and concurrency
12. Smart Pointers
Typical Programming Projects:
1. One dimensional and two dimensional Fast Fourier Transforms, using the Cooley-Tukey algorithm
2. Matrix multiplication using dynamic memory allocation for arbitrary sized matrices, and efficient representation for sparse matrices.
3. Wireless path loss computation through free space and obstructions.
4. Shortest path discovery with obstacles.
5. Image filtering and noise reduction in images.
6. Optimal path planning with environmental constraints given at run-time.
7. Localizing an arbitrary object in a visual image
8. Optimal (and non-optimal) search for solving a problem with multiple solutions