Practical programming

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):

  • 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.

 

 

This entry was posted in Practical Programming. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>