Sunday, February 10, 2013

Essential Questions of an Advanced Programming Course

I have been following Grant Wiggins' blog for a few months now and familiarizing myself with the fundamentals of Understanding by Design (UbD). It has not been a rigorous scholarly investigation, but I have enjoyed reading Wiggins' posts and thinking about how they connect with my experience and expertise. A fundamental tenet of UbD is what they call "backward design," which is the idea that you start by defining your outcomes and then build lessons and curricula to support that. While this may seem obvious to some, my experience resonates with the claim of Wiggins and McTighe, that many (or most) teachers start with the content and focus on how to cover it. This is certainly true in higher education, where the "covering content" is tends to dominate curriculum discussions, and "teaching a book" is an established part of our discourse.

Two days ago, Wiggins posted On geniune vs. bogus inquiry—using EQs correctly, the continuation of a series of posts, this one focusing on Essential Questions (EQs). I found the essay particularly thought provoking as I am currently looking over several syllabi in my department: Computer Science 1, Computer Science 2, Advanced Programming, Discrete Mathematics, and Introduction to Algorithms. The Foundations Curriculum Committee is looking over some assessment data to determine whether we need to shift emphasis in any of these courses or articulate their objectives more clearly.

The Advanced Programming course in particular falls under my purview. For those who don't know, this is a home-grown course designed around a specific set of problems: students coming from the intro courses (CS1–2) are generally ill-prepared for medium-scale collaborative project-work in the upper level of the curriculum. All students take a year-long project-based senior capstone course, in which they work in teams with a community partner, but this is at the end of the curriculum, so there's a gap in the middle where faculty who want to do project-based learning had been left in the lurch. Enter CS222: Advanced Programming. The syllabus for the course identifies learning objectives regarding interactive debugging, testing, build configurations, and projects of significant size; a revision proposed for next academic year includes more specific learning objectives regarding test-driven development, distributed version control, code review, object-oriented design, and model-view separation. We have been teaching this course for about three years, and I think the results have been positive. The major hurdle we face, internally, is educating the other faculty about how they can take advantage of what the students learn in this course, but I'm hoping to address that in a colloquium presentation this semester.

Reading Wiggins' essay made me reflect on the fact that the tools and techniques described in the syllabus answers. What are the essential questions of our Advanced Programming course? I was so inspired by this issue that I posted a link to the essay and some provocative questions for alumni to Facebook... on a Friday night, where it was quickly lost, and hence my migration to a longer form here.

In a bit of casual reflection, here are some essential questions that I am considering:

  • How do small teams of developers coordinate activity?
  • Is it sufficient for a program to be syntactically correct and meet functional requirements, or is there more to the definition of rightness?1
  • What does it mean to be "professional" in software development?
  • How does a Computer Science professional use ubiquitous and chaotic information to be a lifetime learner?
This is my first time trying to articulate Essential Questions in the tradition of Understanding by Design. I would love to hear what students, alumni, and software development professionals think about these questions. If you have a contribution, please leave a comment!

I chose not to use the word "correctness" because I'm dealing with practical development issues, not theoretic program correctness.


  1. I am teaching almost exactly the same course, for the same reasons, this semester for the first time. I am sort of feeling my way through this. I'd love to discuss our courses!

    1. I hope to put together a CCSC paper about the experience thus far, but I haven't put pen to paper yet.

      I will be at SIGCSE if that's a good time to meet up. Drop me an email, and we can sync up, either in person or digitally.