Josh Dybnis on 13 Sep 2003 04:03:23 -0000


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [ALACPP] Advice for a teacher, please


It's impressive that the school has set up a multi-year curriculum. It
sounds like the problem is that most students don't make it past the
first year. Now I don't have enough information to know why that is, I
would guess that the students are not having much fun. It could be
because the way it's taught (the right teacher can make sex education
into a boring class for high-school students), but I think your gut
feeling is right. Doing a year of C is probably killing their
enthusiasm. Kids are motivated by results, and C is so low-level that
it takes too much work to get results they will recognize. Give them
something they can have fun learning. Find out what they use their
computers at home for. Then find the programming tool that makes it
easiest to build the kind of software they use. If they all do file
sharing, teach them Java and have them build their own file-sharing
system. If they play games, teach them a graphics framework like SDL
with Python and have them build a game. If all they use on their
computers is MS Office, for doing their homework (not too likely,
but...), then have them build a word processor. If your students are
motivated to spend two years programming, they will have no problem at
all picking up everything for the AP in their senior year.

Now I'm going to take the position of defending the C class. There are
some basic concepts students should get down which apply to both C and
C++. Like how the stack works, the difference between stack and heap,
pointers, and others. These are hard concepts to get, and there is
nothing in C++ that makes them any easier, but there is plenty in C++
that will muddy things. Doing C first and then C++ gives students a
chance to see these fundamental concepts in a simpler context first.

A big side benefit of doing C then C++ is that it gives them the
opportunity to understand a high level system (C++) by mentally
translating it into a lower level system (C). C++/C is not the only way
to do this. It could be any high-level/low-level combination:
C/assembly, Basic/C++, lisp/lisp (but I digress), etc. If they miss out
on this, they will be missing out on the big picture in computers and a
practical skill.

-Josh Dybnis
_______________________________________________
alacpp mailing list
alacpp@xxxxxxxxxxx
http://lists.ellipsis.cx/mailman/listinfo/alacpp