Tuesday, October 6, 2009

0 David Malan and CS50

Today I attended a talk at Carnegie Mellon University. The presenter was David Malan - a Harvard lecturer of Computer Science. About three years ago, Dr. Malan inherited the School's CS50 course (http://www.cs50.net/). Here is the course description, taken from the CS50 website.

Introduction to the intellectual enterprises of computer science and the art of programming. This course teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, encapsulation, data structures, databases, memory management, software development, virtualization, and websites. Languages include C, PHP, and JavaScript plus SQL, CSS, and XHTML. Problem sets inspired by real-world domains of biology, cryptography, finance, forensics, and gaming. Designed for concentrators and non-concentrators alike, with or without prior programming experience.
Since inheriting the course, Dr. Malan has made CS50 a "sexier" and more attractive course for students across disciplines at Harvard. Here are a few stats about the class:

  • Enrollment is up 168% since 1989; In 1989 there were about 150 enrolled in the class, in 2000 there were about 260 and in 2009 there are about 350 students currently enrolled in CS50.
  • Mainly sophomore students; primarily because Harvard freshman are inandated with general education requirements.
  • 71.5% of the students have no prior coursework in CS.
  • Gender: In 2007 women made up about 29% of the students; 2008, women made up 38% of the students.
  • From 2007 to 2008, there was increase of about 50 student enrollment, of which, most were women.
  • Workload: <5>
There were a few things that stood out about this course
  1. Dr. Malan videotapes his lessons and provides them for the students
  2. His pedagogical approach targets learners of various styles through the use of Scribe notes, lecture, recitation (led by undergraduate students), bulletin board, course website and code walkthroughs.
  3. There are approximately 60 undergraduate students serving as teaching fellows (paid) or course assistants (volunteers)
  4. He uses Scratch (developed at MIT's media lab) to introduce computational thinking and programming concepts during week 0; then translates Scratch to C for the students. He says this helps to reduce the cognitive load (eg. little distractions, students can focus on the concepts that matter). This technique, he states is "pedagogically useful."
  5. He provides a "regular" version of each homework assignment and a "hacker" version - for students who desire a little more challenge (no extra points)
Here is a sample of the topics he covers week by week (syllabus - pdf):

week 0 - multi-threading, events (Scratch)
week 2 - stacks, frames, scope, arrays, cryptography, strings, command line arguments
week 3 - search, sort, asymptotic notation, recursion, sorting & debugging
week 4 - structures, dynamic memory allocation, stack/heaps, pointers
week 5 - input/output, forensics, linked lists, stacks, queues
week 7 - bitwise operations, hash tables, trees & binary search
week 8 - TCP/IP, HTTP, XHTML, PHP, SQL
week 9 - DOM, CSS, Inheritance, JavaScript events, AJAX
week 10 -Preprocessing, compiling, assembly, linking, CPUs
...

The number of topics and content that he covers during a semester is AMAZING!! How do you do it, when most students have no prior programming experience? Scratch in week 0 to students proficient and advanced in hash tables, trees, binary search, Web design and AJAX in week 12?? Must be excellent teaching, relevant & engaging curriculum.

All of his lectures are available on itunes and the course website is accessible to the public.

Great talk and an interesting twist on teaching computer science - in his words, "Making it sexier" (I <3 it!) Read the blog, visit his website, download lectures as podcasts, learn something about making CS fun!

0 comments:

Post a Comment

Note: Only a member of this blog may post a comment.