Programming Curriculum

The profile of a programming curriculum largely depends on personal preferences and interests of the student. We started very early, at the age of 8. As a result, I was able to introduce concepts in a very "clean" and elegant programming environment of C++.  We were not distracted by personal hobbies or preferences that my kids developed a few years later.
I decided to focus on Object Oriented programming from the very beginning. I believe that teaching procedural programming develops wrong approaches to writing algorithms.

My kids watched me spending long hours writing code at home. This probably made them think that software development is a “regular” kind of a job i.e. there is no barriers of entry. My boys just wanted to emulate their father.
We started learning programming at the age of 8. At this age they became reasonably comfortable with the keyboard and spelling of basic English keywords like: for, while, writeln, etc.
I told my kids that programming is a very important aspect of the curriculum. They probably did not understand what I meant. However, when I started talking about video game programming – they got my message. Suddenly object oriented programming and 3D modeling became exciting topics. My sons started asking me about good text books for learning programming.
I decided to skip the traditional procedural introductory material. We jumped right into object oriented style of programming using C++. I decided against spending time on typical beginner tools like Alice or Logo. I have to admit that I was a little surprised how easily they understood the concepts like classes, objects, inheritance or polymorphism.
After several years of programming my kids are able to dive into quite complex programming environments. One of my boys became very interested in Minecraft programming using Java and Forge. This is a very challenging combination of tools and libraries managed in a Java environment. My other son is more interested in 3D graphics and uses Blender to develop his animations and small interactive simulations and games.

 I this blog I will be posting materials that we use in our curriculum. I will also discuss effectiveness of various approaches to teaching programming.

The primary text books for my sons was (and still is) Starting out with C++. From Control Structures through Objects by Tony Gaddis published by Addison Wesley 2009. We use the 6th edition which is not as expensive as the most recent ones.
 
The question of computer graphics

Computer graphics is (one of several) the rocket science fields of computer science. It is really hard field, very mathematical in nature. I'm talking here about building 3 dimensional environments, image processing, virtual reality programming etc.

Some of the highest paying jobs are in the field of computer graphics. Obviously, the digital entertainment industry heavily relies on computer graphics. Virtual reality is another big technology that is just around the corner.

Oculus Rift Virtual Reality Goggles
 
On the side note, building web sites is heavily using graphics, but it is usually a 2-dimensional (flat)  environment. I consider this field to be a different animal with separate set of development challenges.
 
In our curriculum we started very slowly with a Java-based programming environment called processing.org
 
The graphical libraries packaged in Processing are very convenient to use and allow for a very quick generation of graphical content.

OpenGL is another important technology. We use it paired with C++ as a module imported into our programs.


We are using the freeglut  (open source version of OpenGL Utility Toolkit (GLUT)), which integrates well with our MigGW gcc compilers.
http://freeglut.sourceforge.net/


Entering the computer graphics field is hard. Therefore, we use basic geometry book that focuses on fundamental 2-dimensional geometrical concepts and provides programming examples in the C language: Computational Geometry in C 2nd Edition, Joseph O’Rourke, Cambridge University Press, 1998
 

 

 





No comments:

Post a Comment