by Frank Ong, Electrical Engineering and Computer Sciences
Teaching Effectiveness Award Essay, 2017
The undergraduate digital signal processing class, EE123, was a class that introduced mathematical theory about data processing together with a series of hands-on programming assignments. These programming assignments were based on real-life applications and demonstrated the principles behind, for example, sonar detection, radio transmission, and image compression. I enjoyed the class when I took it as an undergraduate, and enjoyed teaching it as a graduate student. Spring 2016 was the third time I taught the class as a GSI.
From my experience in previous years, one difficulty I knew I was going to face was how to engage students in their programming assignments and encourage them to recognize the importance of hands-on skills. In the past years when I taught the class, students appeared to focus mostly on the theory part of the class. Most of them completed their programming assignments, but did not understand why they were guided to implement their program in this particular way. Their lack of understanding often showed in their final projects, in which little guidelines were provided and creativity was encouraged. Many struggled in their final projects, showing a disconnect between their completion of the assignments and their hands-on skills.
To make sure students had necessary hands-on skills for their projects, I decided to change the submission process last year: instead of submitting programming assignments online, students had to do checkoffs with GSI’s during class, office hours and discussion sessions. Each checkoff consisted of two or three oral questions, so it would not be a burden to the students. I designed the questions such that students would explain their reasoning behind their program and hence encourage them to understand the logic behind their program implementation. The feedback I heard from the students was also used to incorporate in the next programming assignments to emphasize parts that they missed.
To encourage students to spend more time developing their hands-on skills, I also added additional real-time, interactive interfaces to the assignments. These additional parts required little to no efforts from the students but allow them to better interact with the programs they had already had. For example, in one of their labs, students were asked to detect packets sent from airplanes, called ADS-B, from radio signals collected from software defined radios. In the past years, students were able to implement programs that could detect a few packets and then they would submit their assignments. Last year, I added an interface on top of their program that could plot the location of the airplane, which was decoded from the packets student extracted, on a map. What happened next was surprising to me: even after the assignment deadline, I still saw students pointing their radio antennas up the sky, outside the department building, to detect packets from airplanes. Students would even compete with their friends and modify their programs to detect more packets. It was clear that they were having fun while spending more time implementing better signal processing methods.
During the final project demos from last year, I saw remarkable improvements in student’s hands-on skills compared to previous years. Even the instructor, Professor Michael Lustig, agreed. Almost all demos were performed successfully. Students were able to explain the reasoning behind their implementation choices clearly. Their project demos were also fun to watch. (https://inst.eecs.berkeley.edu/~ee123/sp16/projectVideos.html). I believe the combination of assignment checkoffs and improved interactive programming interfaces had helped the students value the importance of hands-on skills and spend more time on developing them.