Today, we’re chatting with Iain Ferguson who – in addition to being IMACS’s senior curriculum developer for the computer science program – is the guy behind the sophisticated technology that runs our online computer programming classes. Iain has taught these courses as well, and so brings with him the experience of having seen what works in the classroom and what doesn’t.
Q: Why does your Introduction to Computer Science course use the Scheme programming language? Isn’t the Advanced Placement exam in Java?
A: We start off with Scheme because it’s the most effective for helping students to understand the fundamental concepts of computer science that are common to all programming languages. And we’re not alone in this choice. Graduates of the some of the top universities, including MIT, Yale, Princeton, Johns Hopkins and UC Berkeley, were first taught to program in their freshman year using Scheme.
What we’ve found over 20 years of teaching this course is that if you throw a new student straight into Java, or whatever language the AP exam covers at the time, he or she can easily get mired in its complicated rules of syntax. If you simultaneously try to make a student learn the fundamentals, which are arguably more important, some of those fundamentals just won’t be understood, or they’ll be understood incorrectly. And so the students try to move on to more complicated programming assignments, and they’re hampered by a false understanding of the underlying abstract thinking.
Scheme’s syntax is simple and natural. So it takes our students very little time to pick it up. They use their mental energy instead on developing a deep comprehension of the the abstract mathematical thinking involved in programming. Applying that way of thinking to concrete computer algorithms is then rather trivial for them.
Q: Beyond doing well on the AP exam, how do you know that this approach of teaching Scheme first is working?
A: We hear from a lot of our former students once they’ve gone on to university about how easy their classes are thanks to what and how they learned here. One of my favorite stories is of a student named Erik who went to Virginia Tech. He was taking Computer Engineering in a class of about 600 students, and the first exam was designed to weed out about half of them. So Erik completed the test in 10 minutes with a perfect score. The next day the professor called him in and accused him of cheating. Well, of course, he hadn’t cheated and when he said so, the professor gave him a similar question that was solved just as quickly. Then the professor wanted to know how it was possible for a freshman to have such a deep understanding. Erik told him about learning to program with Scheme, and that was enough to convince the professor that not only had Erik not cheated but that he was also the strongest student in this class of 600.
Q: If Scheme is so beneficial, why don’t more high schools offer it?
A: Their resources are very limited, especially in this economic environment, and the demands on teachers’ time is rather significant. As with most university-level courses, it’s unrealistic to ask high schools to even consider putting resources towards preparing and teaching a class like this. If you really want to do it at a high level, you need instructors with an extensive background in university-level computer science and extensive training in teaching advanced subjects to young adults. Plus you either have to develop the appropriate curriculum or find it and license it. So you’re looking at a lot of time and expense, both of which are, unfortunately, in short supply at the typical high school.
Sounds like a guy who knows his stuff! What language did you use in your first computer programming class, and did it leave you with confusion or clarity?
P.S. If you’re ever in South Florida and want to play a game of Nim, stop by our offices and ask for Iain. He will destroy you, and it won’t hurt a bit!