Day 598 of 1000
This is the first in a series of posts on how we taught our children to program, what we did wrong and how we think we could have done better. You can see the introductory post and index to the series by clicking here.
We have two children. Christian was very interested learning to program at a young age. Kelly was not interested at all. We systematically taught Christian how to program as part of his homeschool curriculum so that he was able to get an summer internship as a programmer by the time he was 15. Even though he has sound programming skills, looking back, we think we could have done a better job. Kelly, even though she was disinterested, would have benefited greatly from some computer programming instruction. This series describes what we did well, what we did poorly, and our idea of what we would do if we had to do it over.
We started to teach Christian to program when he was about 11 years old. He actually worked on some operating system stuff both for PC’s and his Palm Pilot before that. Kelly did not start to learn programming until she was 18 (this year) in SAS and Java courses at college with the exception of some work with the R statistical programming language last summer. We think we did a good job with Christian and a horrible job with Kelly even though she is turning into a pretty good programmer. Christan is a proficient programmer in a number of languages including C#, C/C++, Python, Java, and assembly language. He completed one fairly impressive project, a couple of medium size projects, and is currently at work on a technical assembly language program as part of an undergraduate research in Electrical Engineering. Even though Kelly does not want to program for a living, as a statistician, she has seen she needs programming as a skill that will help her. She is pretty unhappy that we did not at least give her some of the basics.
The following is a list of posts I plan to make. The list will probably morph a little as I progress and grow to as long as it needs to be.
- Part 1: Introduction
- Part 2: Working with Linux (Compiling and Linking)
- Part 3: Dillo (Compiling and Linking)
- Part 4: C#
- Part 5: Projects in C, GaugeCam, and PHP
- Part 6: C++, Python, and browsing the web with a dumb phone
- Part 7: Statistical programming in R and SAS
- Part 8: CSC 116 Introduction to Computing – Java at NCSU
- Part 9: A suggested curricula