The Blogg

August 15, 2006

Teaching Experience

Filed under: Personal — chadhogg @ 12:02 pm

Through this summer I had an unusual and valuable opportunity to teach a course at Lehigh, CSE271: Programming in C & the UNIX Environment. I found the experience quite rewarding, but I am glad it is finished now. The process of preparation for a class is far more time-consuming than I ever imagined, although I definitely did not work in the most efficient manner possible. I found that I was most comfortable and (I think) effective when teaching at the blackboard without a strict script. I kept myself to the discipline of making slides, however, for the benefit of students who might not be able to make it to class or who wanted to later review what we discussed. There is quite a difference between knowing something well enough to do it and being sure what you are teaching is strictly true. Although I made a few typographical errors, I wanted to make sure my knowledge was of the latter type when making up slides.

I asked my students to fill out a survey at both the beginning and the end of the class, rating statements from 5 “strongly agree” to 1 “strongly disagree”. The results are summarized below:

Statement Avg. Before Avg. After
I am a good programming in at least one general-purpose programming language. 4.4 4.6
I am a good C programmer. 3.0 4.4
I am a competant UNIX system user. 3.0 4.6
I am a competant UNIX system administrator. 2.0 2.6
I am competant at shell scripting. 1.8 4.0
I am comfortable performing interactive debugging of C programs. 2.0 3.8
I am comfortable typesetting text in TeX or LaTeX. 1.0 3.8
This course is important to being a good computer scientist. 4.0 4.2
This course teaches employable skills. 4.6 4.8
I know how to find information I don’t have about UNIX commands or C. 4.6 5.0
I understand how statements in a high-level language correspond to changes in the machine state. 4.0 4.6
I already know/knew most of what will be/was taught in this course. 2.0 2.6
I prefer to use techniqes such as pair programming over working by myself. 2.6 2.8
I am glad I took this course. N/A 5.0

Based on these statistics, I would have to rate the course as a qualified success. There was marked improvement in the three main thrusts of the course: UNIX usage (3.0 -> 4.6), C coding (3.0 -> 4.4), and shell scripting (1.8 -> 4.0). However, at the end of the course, students found that less of the material was new to them than expected (2.0 -> 2.6). Although all students were (apparently) glad they took the course, this would indicate some level of dissatisfaction.

At the end, I also asked the students to rate each of several activities that were part of the course from 5 “very helpful” to 1 “not helpful”. The results are summarized below:

Activity Avg. Answer
Slideshow lectures 4.4
Examples on blackboard / in terminal 4.6
Lab sessions 3.2
Programming assignments 4.6
Example solutions to assignments 4.0
Textbooks 3.4

It seems that everything is helpful for someone. I suspect that few students actually did the reading assignments in the textbooks, which is frustrating. I suppose they need be no more than references if all important material is covered in lecture, but I still think they are (unfortunately) quite necessary. It seems that my effort in producing slides was appreciated, and will need to be continued in the future. I agree with the students that I did not handle the lab sessions well. They usually ended up being the last thing I prepared for a class, and that often meant just copying something that had been done in years past.

I also asked students for sections of the course that they felt we did not cover adequately, and got the following responses:

  • gdb – I would have liked more instruction in it
  • networking
  • general knowledge on certain topics
  • socket programming
  • Perl & BASH scripting

Networking (aka socket programming) is decidedly outside the scope of this course. I did cover a very broad overview of this topic on the last day so students would at least know where to look for more information, but I believe it would be inappropriate to spend significant time on this topic when there is an entire course devoted to it. I strongly agree that I did not do an adequate job with scripting. Part of this was due to time pressures, and part to my own lack of knowledge in this area. It is probably the thing I would overhaul the most if offered the opportunity to teach this course again.

Similarly, I asked students for sections of the course that we gave too much emphasis to:

  • C – the whole first two or three weeks
  • general C syntax, control, etc
  • LaTeX
  • the beginning
  • some of the intro material, like basic UNIX commands

I find this to be both true and a bit frustrating. I also felt as though we should have been able to breeze through the introductory material more quickly, and I suppose I should have based on the survey responses that professed a reasonable programming competancy. I was hesitant to not cover the basics, however, because a real understanding of them is essential before any advanced material can be understood. During the second week of the course, I sent this message to all students:

We had much difficulty interactively writing functions on the blackboard today. I can think of two possible explanations for this. The first is that we are not, on average, comfortable enough with the constructs of the language to do this. The other is that students are not participating out of boredom or disdain for the exercise. (I will admit, I have been known to fall into both categories as a student.) With no evidence otherwise, I must take the safe route and presume that the former is true. If otherwise, please let me know, and we will move along more quickly.

I received no response from this email, and students did not generally become more willing to participate in class, so I continued slowly moving through the introductory material. Perhaps a better solution would have been to plow forward and ask students who did not understand the early material to see me in office hours for remedial help. (On that note, I held office hours 12 times during the session, for 2 hours each time. I had someone show up exactly once. Several students did, however, frequently make appointments with me outside these scheduled times to discuss their work. I had specifically juggled my office hours so that they would work for everyone, but oh well.)

Finally, I asked for general comments and criticism that would help me to be a better instructor in the future. Responses to that were:

  • I felt the first assignment was way too much work for the amount of new material that it had.
  • more but smaller programming assignments
  • I think you did very well and I enjoyed your course. I found it very interesting and learned a lot.
  • It’s a summer course so it’s hard to judge. Usually summer courses are faster & easier (less programming)
  • My suggestion is more programs in the upper-middle half of the semester & not one due after the finals week is over.
  • You did an excellent job w/ teaching & were helpful/reliable when answering questions/concerns

Scheduling programming assignments was especially challenging. In retrospect, it would have been nice to do more and smaller things, but it was difficult to do so while including the later material. If we did not spend so much time on introductory material, of course, this would be easier. In general, I think scheduling programming-intensive courses during a 6-week mini-semester is a poor choice. A reasonable deadline for an assignment in a normal course would be a week or two. Translating that to the summer session, I would need to assign projects and have them due two days later. Unfortunately, that simply isn’t fair to the students. This is why I tended towards large assignments with at least a week between when the material necessary to complete them and the due date. I am not sure how I would restructure this in the future, but I agree that it should be somehow different.

Despite the work, this experience has only increased my certainty that I would like to teach as a career. It has been a very rewarding 6 weeks and, if given the opportunity, I will definitely do it again.

1 Comment »

  1. [...] behind without in the process leaving them all behind where they should be. I have already had one experience teaching, and at the time I definitely catered too much to the students who were not well prepared, [...]

    Pingback by The Blogg » This Is What Is Wrong With Colleges Today — August 27, 2008 @ 8:11 pm

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress