David Malan on Teaching Computer Science

Three of us from U Prep attended a talk by David Malan, noted Harvard computer science instructor, at the UW school of Computer Science and Engineering. Malan walked the audience through noteworthy insights gained from teaching one of Harvard’s most popular courses, CS 50. The course has received national attention for making computer science accessible to both computer science majors and non-majors.

The national story on Malan has emphasized his personal magnetism and engaging presentation style, but Malan took his talk in a completely different direction. He presented a systems analysis of the course, students, and content, emphasizing the structural conditions that the teaching team has designed to support student success. Malan hardly mentioned his distinctive lecture style at all, instead noting that the team has reduced weekly lecture time in the course. Anyhow, only 70% of the students watch the lectures, increasingly on video as the term progresses. The core of the class, Malan states, is student work on authentic problems.

The keys to CS 50′s success, according to Malan, are the huge team of teaching fellows and alumni who provide small group and individual instruction, the focus on “memorable moments” during lectures, and the two capstone events that ground project development within a highly social, memorable context. The course provide 100 Teaching Fellows for a student enrollment of 700, and course alumni volunteer further support. Most students spent 10-20 hours per week working on the course, and a small number fall outside of that range, above or below.

Malan believes in mental reference models for concepts in computer science. At the start of the course, students build programs using Scratch (I thought that was for fourth graders!), providing a visual reference point for later programming in code. Lectures include kinesthetic demonstrations, during which students stand on stage and represent such concepts as bits in a byte or iterations of a binary search.

Later in the course, assigned problems become more challenging and complex, allowing students to engage with them at their level of mastery. Cryptography, digital forensics, spellcheck, breakout, a stock trading game, and a virtual drive through campus stretch students’ skills and knowledge. All this in a single semester course? No wonder students do so much work each week.

Malan underscored what we have also found the most interesting challenge in teaching computer science: how to engage and effectively teach students with novice, moderate, and significant experience in the field. Computer science is based on abstract principles of logical and sequential reasoning. These can pose a significant challenge to new students in the field, and yet tracking alone only serves to reinforce perceptions that only a small number of people can master computer science. We are working hard to develop the teaching techniques to make computer science accessible, relevant, and understandable to all, since computer science is now important and useful in all fields of study.