Sunday, May 17, 2009

CMU: Semester 1

Somehow, I got buried by the second semester before I had a chance to blog about the first. So, we'll start with the fall...

In the fall, I was 1 of 4 instructors teaching CMU's CS2 course: an introduction to data structures. Compared to my experiences teaching high school, I found this to be less work, but less rewarding. Mostly, this is because I taught from another instructor's materials, to help me adjust to CMU culture. That means, I didn't need to write my own assignments or exams, and I had undergraduate CAs (course assistants) grading for me. I also followed my colleagues' lead, by having each week consist of 3 lectures, and 1 recitation (run by my CAs). Lecturing 3 days a week, I found I had plenty of time to cover the material at a comfortable pace. (However, I often felt I was babbling about data structures to myself, while my students sat silent, tired, and bored.)

Lectures were the one area of the course that I made my own. I left them somewhat open-ended, attempting to draw in the students to influence the direction of the lecture, while I tried to lead them to discover the day's topic. That meant using the whiteboard, instead of relying on canned PowerPoint slides. Unfortunately, the classrooms we use don't have whiteboards...

In my abundant free time, I found I could actually focus my efforts on projects of my own. That meant continued musings about physics. It also included implementing my own virtual whiteboard, which I've used for my lectures both semesters.


Don't tell the CS3 instructors I introduced graphs!

Another project I started work on concerns programming environments for beginners. CS educators are really excited about Alice and Scratch--programming languages that let you drag-and-drop instructions to form programs, thus removing the hurdles associated with typing and syntax errors. My theory is that teachers choose these languages solely for their easy user interfaces, and not based on the merits or drawbacks of the programming languages themselves.

When you want to create a new programming language, you feed its grammar into a tool called a parser generator, and out pops a parser for reading the syntax of your language. What I set out to create is the equivalent tool for drag-and-drop programming, where you feed a grammar into the tool, and out pops a user interface for drag-and-drop programming. My hope is that, if it's easy to make drag-and-drop Python, etc., then maybe teachers won't be locked into using Alice/Scratch for beginners. Anyway, I put together a first draft at such a tool. Hopefully, I'll have the time and motivation to build it in full some day.

Near the end of the semester, I found myself increasingly busy working on our common final exam. I was relieved when, on average, my students scored slightly better on the final exam than students in the other instructors' sections. The common final is one of two means for measuring our teaching success. The other is course evaluations. Although I never directly asked my high school students to rate me, I always had the sense that they really liked my teaching. However, my first batch of college students were much less enthusiastic about me, rating me somewhere between mediocre and good, and were fairly divided. It's not clear how much they were rating my small contributions to the course, or rating the other instructor's assignments and exams, or rating the awkward union of the two, or rating my obvious lack of involvement with the course. Depressingly, some students said that they relied on the other instructors' PowerPoint slides to get them through the course.

During my winter break, I created a couple stereograms, thinking this would be a simple project for students to implement in my spring course. But I scrapped the idea when everyone I know claimed not to be able to see them. :(


Click on the picture for the full size stereogram.


Guess what I watched over winter break.

1 comment: