Recently, my older son showed interest in learning programming. We’ve started our lessons a few weeks ago and I plan to publish my write-ups for each lesson as I create them. Currently, my plan includes the following topics (the order and content might change):
- Hello, World
- Variables and Operators
- Conditional Execution: if / else. Debugging.
- Loops: while and for
- Loops: Lunar Lander Game
- Source Control System: GIT
- Functions And Header Files
- Defining your own types: struct
- Three Ways To Pass Parameters to a Function
- Drawing on the console
- Defining your own types: classes
- Arrays
- Program Complexity and Performance
- Arrays: Game of Life
- Strings
- Strings: another way (std::string)
- Reading and writing files
- Networking: Client
- Networking: Server
- Networking: HTTP server
- Pointers and managing memory
- Lists
- Lists: the other way
- Data structures: maps, hash maps, …
- Inheritance
- Inheritance: Chess Game
- Divide and Conquer: Interface and Implementation
- Icing on the C cake: preprocessor, stdio.h, do {} while, switch, …
- Icing on the C++ cake: exceptions, templates, …
- Processes and threads
- Synchronization: mutexes, critical sections, …
- Performance And Optimizations
- External libraries
- UI: Win32 API – Window Loop
- UI: a better way (wxWidgets)
- UI: Chess Game
- Databases and SQL
- Operating System, Drivers and Hardware
- Linux/Unix
- Linux/Unix: GTK/Gnome
- Compilers
- Compilers: Antlr
- Compilers: Let’s invent a new language! (LOGO like?)
- Product Management 101
- Data formats: XML, JSON, …
- Cryptography: hashes, encryption, PKI
- Java
- Java – Medium Size Project (TBD)
- HTML, CSS, JavaScript
- PHP
- PHP – Web site project (TBD, something for the school?)
- Project management 101
- Objective C and iPhone/iPad
- iPhone or iPad app (TBD)
- C#
- C# – Medium Size Project (TBD)
- Programming robots
This course should take 1.5 – 2 years of once a week lessons with 5-6 hours of homework per week. I am very excited and I hope my son will not lose his interest in the middle of it.