Sunday, April 15, 2012

A New Syllabus: Alternate Approach to CS1 and CS2

Executive Summary: I'm considering a complete rework of my syllabus and teaching methodology. The result will be pretty much no lecturing during class times. It would also do away with pencil and paper tests and quizzes. Those would be replaced with electronic exercises, oral exams, and other different formats for assessment.

I've mentioned a few times earlier that I am considering making some very significant changes to my teaching style for next year. Some of this is prompted by the fact that having the book and making the videos for it automatically opens some new doors. Other influences come from things like KhanAcademy and various other things I have seen, heard, and read related to delivery of content as well as my own thoughts on pedagogy. Let's be honest, the goal of teaching is to get things into the student's heads. Those things are a combination of knowledge and tools to deal with the knowledge. I really think that technology is opening new doors in this area. That has given me some thoughts, and I wanted to jot some down here with the hope of getting a critique from current and former students as well as anyone else who has an interest.

The reality is that the general form of my syllabus for most of my programming based courses has changed little in the last 11 years. The details of numbers of assignments have changed and I introduced the "Interclass Problem" a few years back (which I think works really well), but a student who took my courses in 2001 would not notice a significant difference between what they were handed on the first day of their course and what we look at online at the beginning of my current courses. For Fall 2012 I am seriously considering blowing that all up.

Change Can Be Scary
One of the reasons I haven't changed my syllabus much is that change is scary. The general structure has served me well. I've tried some different experiments in courses, including expecting students to read and understand before showing up. That one failed miserably. However, it was something I could easily alter mid-flow because the syllabus hadn't been altered significantly. The syllabus is a contract with students. Once laid out, it needs to be followed. Making serious changes to it isn't something a teacher does lightly.

Of course, change isn't optional. We have to do things to adapt to the new realities of the world around us. I feel like the time has come to make some serious changes to every aspect of my teaching, changes that are substantive enough that it will also alter my syllabus. I want to rework not only how material is presented and interacted with, but how evaluation happens.

No More Lectures
The change I have been considering for a while is to stop lecturing in class. I enjoy lecturing. I think I'm fairly good at it. I've come to realize that it is not the most efficient medium for content delivery, and that technology is providing alternatives. As such, I plan to switch to an inverted lecture where students watch videos and read, then show up to class and code to solve problems. This is similar to my earlier, failed experiment with reading before class. I'm hoping the video lectures can make it successful this time. The real goal here is to spend more time in class having students do things and giving me the ability to critique what they are doing.

An End of Paper Quizzes and Tests
This fall I got rid of the paper "Minute Essays" because Google Forms gave me a better way to do them. I said I would love to get rid of paper quizzes and tests as well, but I didn't feel I could. Lots of my quizzes and tests involve students drawing things out like trees and lists. Even when they aren't required, they are helpful for partial credit. I am starting to think that it is time to look at other ways of assessment and to break free of paper. The goal here isn't really getting rid of paper. That is just a nice side effect. The goal is to improve learning and assessment while making life easier on me as well. Putting all of those together makes things more efficient. As I argued in my last post, I think that education really needs to drive for this goal, less we become the next market to be dramatically disrupted.

Getting rid of quizzes and tests in their current form is going to require some more interesting technology. In this case, Google isn't going to write it for me. Thankfully, I'm a CS professor who loves to code, so I just need a good idea of what the software needs to do and I can write it myself. I don't want to go the route of multiple choice tests. I tried using Moodle style quizzes for Astronomy to "verify" that students were reading. I need something that goes well beyond that. Mainly, I need something that is specific to CS and coding.

I see two main aspects to this software. First, it needs to evaluate code. Evaluating the functionality of code is fairly easy and has been done by a lot of tools before. I don't know of one that currently exists for Scala, but I don't see that as a big problem, I can certainly write one. The other thing that has to be addressed is the drawing. What hit me today is that I can certainly set up an environment that has the types of tools needed for drawing the things I expect students to draw, along with the ability to record not only the final drawing, but the steps in between, so I can replay their steps. For me, that makes this potentially more useful and informative than just paper.

What is more, the same system can inevitably be augmented for exercises and might even be able to do automatic checking of correct vs. incorrect procedure. That would allow me to take the time to focus more on things that are incorrect and work with those students to fix the problems. Again, this is an overall benefit. It makes me more efficient and hopefully improves student learning at the same time.

What About Tests?
I'm still a bit up in the air on the tests. I could certainly use the software just described for that type of evaluation. However, there is a part of me that really wants to do oral exams. I have never done them before, because they don't scale well. That part won't change. However, I picture them happening outside of class time. Imagine setting up appointments for them during the semester whenever you are ready to display mastery of a certain set of skills. I'd also like to find ways to possibly do take-home exams that works well. This is an area I'd love feedback on if anyone has ideas.

Variable Pace: Students Running Ahead?
In an earlier post I mentioned the idea of open ended courses. I think the format described here lends itself to that. If quizzes and tests aren't done in class on specific days, students have a lot more control over when things are completed. I can image some students, especially those with background knowledge, finishing all material early. I can also see students who struggle with one or two areas taking more time on those.

On the whole, I see these as positives. However, there is one thing that I worry about, what becomes the value of attending class? The shared class time has to follow a certain schedule. That would be my expected pace for the course. I would be throwing out problems following that pace. Students who get further ahead typically won't have a need to come to class. (Though their presence could be helpful in having them help teach others.) Those who fall too far behind won't be able to do what we are doing. Maybe that isn't so different from how things work now, other than the fact that now the assessment happens in class and is locked to the normal pace. What would be the implications of reducing the strength of that bond?

If you have any thoughts, please comment. If I am going to jump off into a completely new course format, I want to have lots of input and try to be as prepared as possible for what might happen.