Archive for May 6, 2011
Still trying to dig out from under the grading pile — it’s finals week here at Georgia Tech, and grades are due Monday at noon. My TA for Media Computation data structures had to leave the semester a couple weeks early, so I just finished catching up on all the grading (programming homework, quizzes, and final exam) for that class yesterday. I also have 40 students in a Senior Design class, so I’m deep into reviewing project documentation, design diagrams, and personal reflections on their process.
I’ve had a theme arise from both classes in the last couple days that is worth mentioning here.
Theme: I got a lovely note from one of my MediaComp DS students reflecting on his time in the class. (As a teacher, it’s an enormous boost to get one of these — even when critical, it affirms your job as a teacher: “Someone was listening!”) Against the recommendations of his advisors, he took my class and the follow-up intro to Java course concurrently, which means that he only gets elective credit for my course. But it gave him the opportunity to compare the two courses, which is pretty interesting for me. Besides these two CS courses, he was taking a course in combinatorics. He saw my course as the “glue” which combined the ideas of the three courses.
The concepts you introduced formed essential links with material from my other classes to illustrate the harmony of what I considered three more or less independent studies (for a long time I considered <MediaComp DS class> and <intro-to-Java> very different other than their shared use of Java, with one being the “general programming class” and the other being the “media and simulation programming class”).
What I found most intriguing was that he saw the MediaComp DS course as being the more “theoretical” course. Of course, any data structures course deals with theory issues more than a simple introduction to programming. But because this course included simulation, we also dug into probability distributions and continuous/discrete-event issues which connected to combinatorics and statistics in interesting ways. In a real sense, that made the MediaComp DS course harder than the introduction to Java course.
Recapitulation: One of my Senior Design teams refactored some code for our Physics department. Physics at Georgia Tech uses VPython in several labs. The physicists found that some of the code that the students had to write (to simulate a falling object, to graph data, etc.) was clumsy and had students struggling with parameterization issues.
My Senior Computational Media students, well-versed in HCI as they are, wanted to create a GUI for a Physics simulation. The Physics teachers (to their credit, in my opinion!) insisted on having their students write code. They explicitly wanted their Physics students to deal with “computational thinking” (their term, which may mean something different than others). So, the team created a nice set of objects, rather than the umpteen functions that students had to use previously. The Physics teachers are thrilled — the team did a very good job. But in their reflections, my Seniors are still complaining that they’d prefer to have built GUIs. ”It would have been easier on the Physics students.”
I agree, a GUI-based simulation would have been easier on the Physics students. The students also would have learned less. They would have had less flexibility. The Physics teachers wanted the interface to VPython to be usable — to be understandable and to focus on the Physics and on the representational issues (e.g., how do you want to represent a vector to be useful?). While harder than a GUI, the Physics teachers felt that the code helped achieve their learning goals better. It’s not always about make things easier.