Course Objective Achievement (Follow Up)

I’ve written previously about teaching COGS 18, an introductory programming course at UC San Diego here and here. After the success I had noted in 2020 with more students reporting they had achieved the more vexing course objectives (debugging, command line, best practices), I wanted to see where things stood after teaching this course all three quarters this past 2020-2021 academic year.

Course Objectives

As noted elsewhere, I set out with six course objectives:

  1. Program at an introductory level in the Python programming language
  2. Read basic Python programs, recognizing the structures they use and be able to explain how they work
  3. Solve basic problems using programmatic solutions
  4. Write and debug small Python programs
  5. Execute Python programs on your local computer, using notebooks and the command line
  6. Describe and implement best practices in Python, keeping in mind that programming is done by and for humans

Overall Comfort

First, across six quarters, here are students’ responses at the end of the quarter with their comfort level in Python. 1 here indicates “What’s Python?” and 5 indicates “I could teach an intro Python class!” Among 979 students across six quarters, most students are achieving a 3 or higher, which is what I would expect from a student after taking this course.

Course Objective Attainment

At a more granular level when I ask students “Check all that apply: After taking COGS 18, which of the following skills do you feel you possess?” and then list each of the course’s course objectives (in addition to a “None of these” option), the plot below summarizes the average across students each quarter for each course objective:

In the figure above, we see that in a typical quarter all students achieve at least one of the course objective. We also see that students typically are more comfortable programming, reading, writing, debugging, and problem solving than they are implementing best practices or working in the command line (things we focus on in the last three weeks of the course).

Debugging

The first two quarters I taught this course, I realized that students were struggling with debugging skills. To address this, I made two changes in Spring 2020: 1) I did way more live coding, including making mistakes, discussing them and how to address them focusing on issues students tend to make and 2) Moved the debugging lecture from week 7 to week 3. Hopefully these two changes are what explain the 10% increase we see in students saying they are comfortable debugging.

In coming quarters, staff and I have discussed moving it even earlier and giving more practice will help students with their debugging skills further.

Room For Improvement

Previously I had patted myself on the back a little bit about how I was doing a better job achieving the harder to attain course objectives (best practices, command line); however, as we see above and as highlighted below, in the most recent quarter, Sp21, the numbers have almost reverted back to what students reported in Spring 2019

What Does This Mean?

I have a number of hypotheses.

The first is the fact that Spring 2021 was our fourth quarter learning remotely. Students had been learning online for more than a year. I saw attendance dip. I saw engagement decrease, particularly in the last few weeks of the course. In fact, many students didn’t do the command line or code style/testing labs where they would have gotten the most practice with these topics. Of course, this is what I hope is going on, as it’s not indicative of issues with the course/my teaching and because when we return to campus in the Fall (fingers crossed!) this will take care of itself, if this is truly what was going on.

Second, I worked with an undergraduate student to start digging into these data a bit more this past quarter, and one of the points he made after looking at the data was that the wording is confusing in a number of these course objectives and students may not know what they mean, highlighting “keeping in mind that programming is done by and for humans” as being potentially confusing. I’m going to revisit my course objectives and ensure that the wording is clear and the objectives all reflect the goals I have for students in COGS 18.

Third, the major and year of study breakdown of students enrolled in this course has varied a ton from one quarter to the next. I’ll delve into these data soon to determine whether this is something that needs further addressing.