Saturday, April 17, 2010

CMU: Year 2

Apparently, I haven't blogged about my life in a long time, so here's a summary of the past year.

Summer 2009
Graded AP exams for a week. Then spent a few weeks preparing for a one-week workshop on Principles of Computation for area high school math/science teachers. This meant putting together four 90-minute lectures for an audience that wasn't necessarily interested in computer science, so I stressed out quite a bit about how to make my talks relevant to them. The talks were on recursion (not my choice), how computers work (in which I ran over my audience), information and randomness, and cryptography (these last two went very well). In the middle of the workshop, it really felt like the teachers were "getting" that computer science is so much more than programming. Unfortunately, we muddied that message by also teaching programming later in the workshop, and so an overwhelming number of the teacher's presentations on the last day focused on programming.

Thankfully, I've been able to re-use pieces of those lectures quite a bit in the past year, starting with the CS4HS workshop, in which I gave a guest lecture on randomness and then cryptography to an audience of enthusiastic high school CS teachers. I then co-lead a one-week workshop for AP Computer Science teachers. This was a lot of fun, and much less stressful than the first workshop. I was a little nervous, given that some of the attendees had been teaching AP computer science for much longer than I have. But I think the workshop proved to be valuable, even for veteran teachers. I did feel bad for those teachers who had very little Java experience, because it takes far more than a week to learn enough Java to teach the AP course well. (I would love to see the AP exam back off on teaching so much Java, so that more schools could offer the course--especially in lower income areas.)

I spent the last weeks of the summer writing a paper about the high school network protocol course I created. The paper got very positive reviews, so I got to present it at the SIGCSE conference in March. I thought it was really cool to lecture about networking to a big room full of networking professors, when I've actually never even taken a networking course.

In the background of all this, there were a lot of very bad things going on in my department. The dept held a meeting to determine which teaching track jobs to eliminate, apparently putting me in the "maybe" category. Also, I tried to convince my group that we could better serve students who only take 1 semester of CS by teaching them about digital representations, the Internet, exponential growth, etc., instead of emphasizing Java-specific minutia and object-oriented programming. This discussion turned frustrating fairly quickly.

Meanwhile, the department appointed a committee to replace the introductory CS curriculum, and actively prevented the teaching track faculty from informing the process. By a fluke, I happened to be at work one day when my boss was unable to attend one of these committee meetings, and I happened to attend the meeting when the committee was beginning to discuss our CS1 course. I was asked to write a proposal for what I would do in CS1. But my proposal (less programming, more CS, use Python) was apparently not what the committee wanted to hear, and it was mocked mercilessly in the following meeting. In email, I spoke out strongly against the whole process, and was thankfully never invited back again. Nonetheless, sometime in the fall, the committee announced that, starting in the fall of 2010, CS1 will be taught in Python, and will introduce bigger CS ideas.

Fall 2009
I taught CS1 in the fall to four sections of 30 students. With so few computer labs in the Gates building, I was forced to teach in a lecture hall 3 days a week, and have students program on computers just once a week. I decided to use the extra lecture time to present bigger CS ideas on Fridays. These were mostly well received, but were seen as disconnected from the course.

It turns out that the fall semester CS1 students are very different from the spring. Two thirds of my fall semester students planned to take CS2, as opposed to just one third in the spring. This meant that my fall students were much stronger programmers, and much more engaged in the course. I gave large assignments, and my students ate up everything. Overall, I had a blast with that group, I received stellar scores on teaching evaluations, and my students earned the highest average on our common final exam.

And it was at about that moment when my department announced that 9 of my colleagues' contracts would not be renewed, that those of us that remained would soon be teaching 200+ students each semester, and that we would continue to be treated as second-class citizens. Thus, a great semester ended on a big downer.

Spring 2010
In light of the direction my department was moving, I decided to try out teaching larger CS1 sections: two groups of 60 students. I got a killer schedule, with my first class after 1pm. But on the day before classes, a visiting instructor quit. My boss picked up that section, and decided to use my course materials, which was a little stressful for me. Then, in the middle of the first day of classes, I suddenly felt very sick, went home immediately, and ended up going to the hospital, probably with some GI virus. I got sick again a couple weeks later, which luckily coincided with a few snow closings.

It turns out there's a huge difference between teaching 30 students at a time and teaching 60. I tried calling out all 60 names on the first day, but it took so long I never did it again. It took me weeks to learn the students' names, and I wouldn't have learned them at all if it weren't for attending the 30-student recitations and helping students in lab. I delivered lectures in long wide rooms, with the students sitting between me and the doors. My students clearly felt anonymous, and would often come to the first few minutes of class and then get up and leave--something that had never happened to me before. I frequently found students working on laptops, reading books, doing other homework, etc., during class. The students were sitting so far away from me, that they would start up conversations with each other during class, and I often had to stop and ask them to quiet down. I felt like I was just standing at the front of the room speaking as if from a textbook, while my students came and went and ignored me.

Then my boss offloaded his section onto me. So, suddenly I was teaching 180 students, with class every other hour, and managing 11 course assistants. And having barely learned the names of the first 120 students, I didn't even bother learning the next 60. Students would say hi to me in the hall, and I had no idea if they were even in my class. Students from the previous semester would say hi, and I couldn't remember their names.

Not surprisingly, more students meant many more cases of inappropriate collaboration. This drained all my time, and I felt like I was constantly meeting with the students who were blowing off the course, instead of working with the ones who were trying hard and needed help. I began to wish my assignments were more open-ended, so that it would be easier to identify cheating cases. Also, my colleagues kept reminding me of how soft my course was. So, in week 8, I decided to have students program an arcade game. I had done this sort of thing the previous semester, but this time I removed a lot of hand-holding from the assignment: no more examples of test code, no more telling them how to break down each task into simple methods, no more providing method signatures. For the first third of the course, very few students had come into lab for help. But on this assignment, the lab was absolutely packed. Stopping by lab, I felt like I was walking through an impoverished third world country, with 50 students in a 30-student lab, every seat filled and students sitting on the floor everywhere, every hand up and desperate, saying, "Dave, just one thing. Just one quick question ..." The lab was still packed even a couple days after the assignment was due, with so many students still struggling to finish it. And although the students scored very well on the following quiz, morale had sunk to the point where I lost my class, and I've never really won them back.

About 20 of 180 students have dropped the class. Those that remain are becoming very strong programmers. I still don't know names in one section, and they hate me. As usual, the sections that meet later in the day are going much better. At this point, we've got one more assignment to go, and then this bad semester will come to a close. I'm hoping for some better news on the final exam, but I expect very little from evaluations.

No comments:

Post a Comment