We talk about the C++ programming language, which has become an industry standard for application programming (system programming is not that far off, the standard here being C++'s cousin C). Since we are at it, we shall also talk about programming style and good programming practices.
To make learning C++ fun (and more useful), all but the most trivial programming done throughout the course will actually make some sense in other respects than merely helping you to learn the language. Specifically, we shall consider implementations of algorithms (such as sorting, parsing, compression) and data structures (stacks, queues, trees, graphs, etc.) that are common place in practice.
Time permitting, we shall also discuss abstract data types (together with their implementation) and more advanced algorithms, though these will mostly be delegated to the assignments.
We thus base the course on the following rough (i.e., subject to change) outline. Note that this outline is not necessarily in chronological order; for instance, the programming process shall be discussed as soon as you have enough base knowledge to be able to understand it.
|Introduction, rules of the game, etc||1 week|
|Elementary C++ programming||2 weeks|
|Arrays, pointers, and structures||3 weeks|
|The programming process (specification, testing, debugging, maintenance)||1 week|
|Advanced types, classes||2 weeks|
|The C++ preprocessor||1 week|
|Advanced classes, templates||2 weeks|
|Advanced topics||1 week|