Re: [Edu-sig] High School Programming for Newbies
Joe's email got me thinking about the difference between "programming" and "computer science" courses at the high school level. I teach a one semester "Intro to Computer Science" elective, and then organize independent study programming projects for those who want to take the AP Java course the following year. The CS course is loosely based on the Dale & Lewis "Computer Science Illuminated" text, and I like the approach of progressing through * binary data representation (since it ties in some of their useless math - 2^n, log base 2, etc), * digital logic (with Boolean algebra and building with modules), * simple computer architecture illustrated with a machine language simulator, * assembly language with the PEP7 simulator introducing conditionals and very simple loops (which also touches on addressing and memory management), * C as a "higher level language" with data types and more complex looping * Python for "real programming", including primitive graphics with Zelle's package ...and then an overview operating systems, databases, networks, and AI This is an elective targeted mostly at juniors, but due to our relatively small size (800 students) and various scheduling constraints, I get a variety of students, many of whom are not dying to learn this stuff. Our goal is not to make them programmers in 20 weeks, but to give them a reasonable overview of the field so they can decide if they want to pursue (parts of) it more, and regardless of that make them more intelligent users of computers, better able to work with "computer people". The mix of other topics also lets some of the kids who are not natural programmers get their legs under them before jumping into the programming deep end and feeling left behind. Although not intentional, the progression of languages ends up being a real sales pitch for Python ("Wow, this is easy!"), and many of the programming-oriented students end up doing a final project with pygame. I've had students who later had to deal with C++ tell me they were happy to have had the brief (~2 week) intro to C, and often those who end up taking a Java course appreciate having been exposed first to other languages so they're not intimidated by the rather cryptic magic overhead of Java. Object-oriented purists object to this bottom-up approach, of course, but I find that the digital logic section where we build one bit adders and then replicate and assemble them to build 16-bit versions, and similarly, turn gobs of SR flip-flops into simple memories is a great way of introducing modularity and encapsulations, perhaps because it's less abstract than the top-down software focused approach. There's more info up on my class web site westwood.k12.ma.us/~mholthouse; I wonder if anyone has some experience with both approaches and has any experience to share? -Mark Holthouse
participants (1)
-
M Holthouse