[Edu-sig] High School Programming for Newbies
M Holthouse
mholthouse at westwood.k12.ma.us
Sat Feb 26 16:04:27 CET 2005
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
More information about the Edu-sig
mailing list