One of the best perks of working in an academic institution is that I’m surrounded by people who are so driven by learning that they spend their entire day focused on it. While you might think that I’m talking primarily about my colleagues, in the vast majority of cases that also describes my students. In fact, I could argue that some of my students are more focused on learning than some of my colleagues. If you come to see yourself as the source of knowledge rather than as the convener of a learning situation you can easily disconnect from your own personal development. I’m happy to say that I don’t think that’s the case for most of my colleagues, and it’s most certainly not the case for me. My students help me to learn not only about myself but also about computer science, and I’m grateful for that.
Sometimes in the process of taking a class with me my students share ideas that stun me with their brilliance, making me wonder how I didn’t see the idea in the first place. To give the most recent example I need to explain the collaboration policy in my classes. Academic Integrity violations are a huge problem in the introductory Python courses, in part because Python has simple syntax, because students are accustomed to being allowed to look up answers online, and because there are so many sites that publish code even for problems that are clearly homework. To discourage students from copying code from online sources and also to allow them to benefit from collaboration, I’ve developed a policy that allows students to work with a small number of their classmates. The catch is that they have to document the collaboration, and in a fairly detailed way. “I worked with person X on problem Y” isn’t sufficient. Students hate doing the documentation. Every assignment I have to nag someone about a missing or insufficiently detailed description of their collaboration.
On the most recent assignment one of my students had a brilliant, and yet completely simple, solution to the documentation. At the top of the file he wrote a couple of sentences describing the people with whom he worked. Then in his code he wrote comments surrounding the code on which he had collaborated with someone. The comments were in essence markers indicating the start and stop locations for the code that he developed in collaboration with others. In looking at it I had a perfectly clear picture of the extent and level of his collaboration, and yet I think it was also fairly easy for him to put it together. I have absolutely no idea why I never thought of this approach, but now that I’ve seen it I plan to direct every student who collaborates on their assignments down that path. The idea is simple but completely transforms something that I’ve struggled with for years. And I am fairly sure I will never forget the student who showed it to me.