Showing posts with label cs2. Show all posts
Showing posts with label cs2. Show all posts

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!

Friday, March 6, 2009

0 Programming & Problem Solving through Think-Alouds

"Teaching programming and problem solving to CS2 students using think-alouds."
Naveed Arshad, Lahore Uniersity of Management Sciences, Pakistan

In this project, "students learn the skill of problem solving by closely observing an experienced programmer." They found this approach to be "extremely effective ... particularly for female students."

After ten weeks, students were asked to complete an anonymous survey about problem solving ability and effectiveness of the pedagogical instruments. 120 students (30 female).
  • 61 percent - agree comfortable solving problems
  • The effectiveness of instruction varied based on several factors including gender and agree/disagree to statement.
  • ....
What is think-aloud problem solving? Whatever comes to your task while performing this task, say it out loud. This practice demonstrates the thought process that is involved in problem solving.

Advantages
  1. students learn a variety of ways to solve programming problems;
  2. code writing
  3. (and something else ...)
Conclusions and future work
  • Think-aloud is a powerful pedagogical approach
  • has to be used with other pedagogical tools
  • choice of person who performs think-aloud problem solving is critical