Step 52: Review CS1 Goals (Part 2)

The more I started thinking about this blog post several days ago, the less happy I was with the goals that I listed last time. The goals themselves were not the issue – I still think they are appropriate – but I realized that these goals did not directly drive what I did in class. Instead, each of those goals break down into subgoals, which is often the level I aim for.

About two years ago, when I was part of a summer workshop series for grad students who want to stay in academia, I created a hierarchy of goals for computer science. I remembered that the spreadsheet existed, but never found time to refer to it in the chaos of the semester. Comparing that spreadsheet with the list from the last post, the goals here are more in line with the ones provided by the LACS consortium.

Regardless, here’s the list of what I created from two years ago. Some of them are skills:

  • debugging
  • test-driven development
  • version control

Others are concepts:

  • structural abstraction
  • procedural abstraction
  • functional decomposition
  • space-time tradeoff

And finally some discipline-wide things:

  • connections with other disciplines
  • connections with the non-technological real world

I had not written this list for CS1, but writing this post I am surprised how deeply these themes run, and how early in a computer science curriculum they occur.

Sorry about the short post for today, but next week I will actually talk about how I attempted some of these this semester.

Step 52: Review CS1 Goals (Part 2)

Step 51: Review CS1 Goals

It has been a hectic semester developing a new CS1 course, but now that the semester is over, it’s time to go back and figure out how I can improve. This post will be the first of three planned posts on this topic, which will follow backwards design by first looking at the goals, then the activities, and finally the concrete changes to be made. In this post, I want to revisit the goals I had listed in the syllabus and assess whether they are valid and complete. The goals will then serve as the context for understanding the teaching evaluations and for assessing the success of the course.

The syllabus for the course has this short list at the beginning:

At the end of the course, you should be able to:

  1. write small (if not always efficient) programs of your choice
  2. participate in computational research
  3. solve real-world problems using programming
  4. learn a new programming language after some experimentation

I still find all of these goals appropriate, despite the wiggle room in defining “small” programs and in the “some” amount of experimentation. I would say “small” here is on the order of 100 lines of code, which is enough to do some significant work even with a little fluff in the code. As for learning a new language, I don’t think it would be unreasonable for students to gain basic knowledge of a new language in two weeks, as long as they avoid memory management or data structures. I have not tried to measure either of these metrics directly, but writing out the specifics gives a better idea of what the goals were.

Similar ambiguities exist with goals #2 and #3, but my first reaction is that these two goals are ambitious. Goal #2 was one of the driving motivations for redesigning the computer science curriculum, and refers to non-computer-science research where students might need to modify or adapt existing scripts. Depending on the complexity of and documentation for the scripts, I would again put a two-to-four week time frame for this task, with additional time if the script is in a new language.

The difficulty of goal #3 depends on the scale of the “real-world problem”. The thinking behind this goal is that solving real-world problems is the behavioral proxy for identifying information structures – to decide when a collection is needed or when defining classes is a good idea. In other words, this goal tries to measure computational thinking. Again, I don’t expect the solutions to be elegant, and will likely have copied-and-pasted code instead of loops. Goals #2 and #3 would be a stretch for a portion of students, but I think they are valuable for communicating high expectations.

In sum, the goals that I listed are slightly vague but seem reasonable for CS1. A harder question to answer is whether the course should have additional goals. One approach is to consider my implicit goals when I wrote the homeworks and labs, most of which require finding and understanding documentation as well as debugging. These might be better called “skills” than goals, although the difference is blurry. There were more explicit lessons about the pitfalls of computer science as well, such as the representation lab. While the idea is important, I am less inclined to call it a goal as much as a cautionary tale. A final non-goal that my thoughts continually return to is that of building a community around computer science. Again, I am unsure whether this is a goal – at least, it’s not a learning goal for students to “achieve”, but a side-objective for me as the instructor.

Setting these pseudo-goals aside, are there goals that I am missing? What are the general learning goals of CS1 anyway? In their model curriculum, the LACS consortium lists the following:

  • To introduce students to two distinct problem-solving paradigms: functional programming and object-oriented programming.
  • To introduce students to the mathematical tools and foundations of computer science.
  • To instill in students an appreciation for the interplay of theory and practice in computer science.
  • To make students think about the ethical and social issues of the software systems they build.

I find it curious that these goals are phrased as the instructor/course acting on the student, and not as students taking action. Despite my previous disagreements with the LACS model curriculum, I have no strong objection to these goals. My only complaint is that these are even less precise than the goals I adopted. Since these goals seem to be about course content, I will not concretize the goals.

Next week, I will evaluate the degree to which my course has achieved both my four goals and the four goals from LACS.

Step 51: Review CS1 Goals

Step 50: Deconstruct “Work-Life Balance”

Before I talk about how I negotiate my work-life balance, I should preface this by saying that I am coming from a position of relative privilege: I’m young, single, with no elderly parents or young children to care for, nor am I particularly concerned with starting a family. I’m lucky to have landed a tenure-track position in a very supportive department. Very few people are offered the choices I have, and many people face much tighter constraints than I do. I am writing this partially because I’ve never explored my own stance, and partially because I think more stories of work-life balance can’t hurt. I don’t think what I say here will work or apply to everyone, and sometimes I can’t decide if it’s even a good idea – but it is my current answer to work-life balance.

Now that the disclaimer is out of the way, I will start by saying that the standard narrative around work-life balance has never appealed to me. Some (maybe a lot, or even most) of it might be due to my life stage and life goals: not having a significant other means I only have to set time aside for myself. But I’m not sure that’s the whole story. I disagree with the portrayal that people work themselves to death as an escape. So much of the narrative is around making the most of your waking hours, or being protective of your research time and keeping work in the office. I am not saying these are bad ideas, but I’ve always felt like they’re addressing the wrong question, as though we’re trying to increase driver awareness by making stop signs redder. It could help, but it’s completely the wrong scope to be looking for a solution.

All the links in the previous paragraph were from the first page of search results for “academic work-life balance”. One of them hints at my view on the issue. After recording how his time is spent for a week, the author Chris Buddle notes that he

excluded time writing blog posts and other social media. This is… because I’m not certain how to classify this kind of outreach activity – it’s almost too fun to call work!

I think this is fundamental to my worldview: I find the distinction between work and play to be sufficiently blurred that “balance” doesn’t apply. A while back I read an article about “work-life integration”, which is better, but still implicit is the idea that work and life are separate. Even while in college I have had this debate with my dad, who is fond of “work hard, play hard” and “no pain, no gain”. I remember an email I sent to him in 2011, where I wrote that “work can be fun and play can be constructive”. To be fair, that was less true in the later parts of grad school, but I think the unwillingness to pigeonhole work and play has stayed with me to this day.

It’s easy to think of events that are neither purely academic nor purely pleasure. One of my colleagues ran a cognitive science film series this semester, and I went to a number of them. I can’t speak for my colleague, who had to order food and figure out what films to show, but I can’t say that I was working when I went to the screenings – even though there were students and we often talk about the (inaccurate) cognitive science in the film afterwards. Or, from the other side, for leisure reading I just finished Maggie Berg and Barbara Seeber’s Slow Professor: Challenging the Culture of Speed in the Academy, which is clearly relevant for my job – so is it on the work side or the life side of the balance? Similarly, I check my news feed both at home and in the office. Some of my feeds are web serials I read for fun, while others are blogs on computer science education I read for work (and even then…), and of course some web comics are both.

I doubt it’s uncommon for academics to consume media about their discipline in their free time. I feel computer science takes this one step further, because programming is fundamental to the discipline but can also be a hobby on its own. I wrote my autograder over winter break, and while the motivation was definitely because of my job, I also found the problem solving tremendously rewarding. Or more recently, the final project for my class was to write a course catalog web app, so I joined in to make my own – and I would in fact say this was closer towards play than work. In both of these cases, my job provides constraints that actually make these projects interesting, and indeed, these projects would not exist if I wasn’t in this position. Conversely, code that I have written for fun (like my PEG parser) have been useful in creating pedagogical tools (like this Bayes net pseudo-language).

My last example where cleanly separating work and life doesn’t make sense is student interactions. There are certainly student meetings that are entirely work, when they are asking for an extension or for leniency on their grade. But more than a couple interactions are not. I don’t ask about my students’ post-graduation plans because my job requires me to, but because I am genuinely curious about their goals and where life will take them. The line blurs further if I am talking to a student about philosophy or design; some of it could be construed as the professorial role of encouraging intellectual interests, but these conversations are honestly not that different from those I have with friends outside of academia. (What can I say, I have intellectual friends.) I can have hours-long conversations about some of these shared passions, and while I hesitate to call classify that time as “work”, it is also clear that it impacts my “professional” relationship with my students.

I don’t want to overstate my views: there is definitely work that I do not enjoy doing, and which I only complete because it is part of my job. But I do find pleasure in a significant part of my duties, sometimes even in lecturing on particular topics (and, by extension, preparing for those lectures). All the examples I have given are activities that are both work-related and pleasant. At the core of all this is that talking about work-life balance is presenting a false dichotomy, the incorrect assumption that work and life are mutually exclusive and necessarily in conflict. I have always enjoyed teaching – some might say that it’s a calling – and I even wrote my teaching philosophy about how teaching has been a major part of my young-adulthood. You don’t “balance” that – you can only make sure that there are more enjoyable parts than unenjoyable parts.

Let me end with one more anecdote. A friend recently observed how much time I spend doing work-related things (“working”) and warned that I should take care not to burn myself out. They asked me what I do in my down time, when I brought up that I take the time to write in my journal. When my friend learned that my journal often contains thoughts about classes and students, however, they then suggested that journaling doesn’t count. This puzzled me, since I have kept a journal for over a decade, and I have always written about friends, feelings – and yes, classes and grad school and work. It struck me that perhaps one reason work-life balance is hard is because people try to draw hard boundaries between the two, that leads them to conclude even personally rewarding pursuits is work and should be reduced or abandoned.

EDIT 2016-05-13: It occurred to me that this post may be taken in the wrong way – that by saying that work can be fun, I am further perpetuating the culture of academic overwork. That is not my intention. Rather, I hope to broaden the conversation around work-life balance by pointing out that the distinction between work and play is not black and white. At the very least, I feel that this blending of work and life is under-represented in discussion, even though it may not be possible or desirable for everyone.

Step 50: Deconstruct “Work-Life Balance”

Step 49: Respond to Neil Postman’s Teaching as a Subversive Activity

Teaching as a Subversive Activity on Goodreads

I first heard of Neil Postman while taking a psychology class in grad school, when we read an excerpt from his Amusing Ourselves to Death. I don’t remember anything form that excerpt at all, but somehow came away with the image of Postman as someone who has thought deeply about technology and its impact on society and education. Keeping in mind that Teaching as a Subversive Activity was written in 1969, I first thought that the book would be a Seinfeld is Unfunny version of the now-popular idea that education should be relevant and applicable to the student. Although the book emphasizes that education should follow the interests of the students (and not adhere to any fixed content that the teachers believe “must” be taught), that is where the similarity ends.

Instead, the focus of the book is much broader – it’s about getting students to question everything, and along the way understand the inadequacies of language to communicate exactly what we mean. Postman in fact argues that “there can never be any other kind of subject matter” outside of “the responses of the learners to the questions they confront”. In one example, the students spent two weeks discussion what education means, why teachers are correct, whether correctness depends on context, and what separates the “language of science” from others. This implicitly demolishes any disciplinary boundaries, while keeping the medium of language in the spotlight. To quote:

If one accepts the rather obvious fact that language is almost always produced by human beings for human purposes to share human meanings… then the study of language is inseparable from the study of human situations… In studying about how language works, one has available all the possible forms of human discourse to examine.

I will be honest: this is one of those crazy ideas that feed my guilty pleasure, and reminds me of my own view about the computer science patterns as materialized in libraries (unrolled linked lists) and traffic lights (semaphores). One could take the first sentence in the quotation above, substitute “information” for “language”, then apply it as is to computer science as the study of the organization and processing of information. I am fond of these types of broad framings that have the potential to enrich students’ worldviews, and I wonder why I don’t emphasize this more (if at all) especially at the beginning of the semester. For cognitive science, both semesters this year we started by challenging students to bring up topics that we cannot relate to the discipline (broadly construed); while this is different from driving home the pervasiveness of cognitive science, it is at least a step in that direction. For computer science though, I’m not sure I can even explain to students what I mean by “information”, so any such anchoring is more difficult.

Postman suggests that this “inquiry method” (one much more inquisitive than what I’ve previously called by the same name) can be applied from kindergarten to graduate school. I noted by that sentence, “I worry that the answer here is that any class in a traditional curriculum is fucked.” That is, as long as my job is to pigeonhole students into one of A, A-, B+… at the end of the semester, I don’t know how to incorporate this kind of broad education into the classroom. At best, you can assign a grade based on the number of “good” questions that the student generates over the semester, but that seems contrived, and besides, how would that work in the context of a “computer science” course? Some suggestions that Postman leaves at the end of the book have become popular in less radical proposals, such as refusing to give student answers, or to become aware of our own biases in teaching.

Perhaps, despite how such a method of teaching can (or should) be applied everywhere, the best place for it remains an English course, where students are evaluated by their communication of ideas, where the exact content of those ideas may not matter (except that the content must exist). On reflection, it’s interesting that we leave these sort of “critical thinking” skills to be taught in English. It’s not that they are not used in other classes, but we very rarely address it as such, and yet they are of course essential to writing. I have wanted to teach in Oxy’s Core writing program since I first heard about it, but the lack of computer science faculty means that my teaching obligations remain within the disciplines. Still, I think a first-year course on writing would be a great place try the inquiry method and see what comes out.

Step 49: Respond to Neil Postman’s Teaching as a Subversive Activity