Skip to main content

A report from the Summer 2017 CS Department workshop

Yup, that’s right. I was in two workshops last week. One was a workshop on letterpress. The other was the CS department’s workshop. In the former case, I was a participant in the workshop. In the latter, I ran the workshop. And so I am writing the summary of the workshop for those who funded it [1].

From: Samuel A. Rebelsky
To: Our wonderful funders
Re: Report on Summer 2017 CS Department Workshop
7 August 2017

We very much appreciate your support for the CS department workshop of 31 July to 4 August 2017. This report summarizes the discussions, conclusions, and plans from that workshop.

We had five primary goals for the workshop: To consider issues related to the experience of second-year students in the department, to consider exit interviews with our seniors, to begin planning for our self study and decennial review in 2018-19, to explore ways to address the effects of our significant enrollment pressures, and to consider issues of inclusion in the department. As is often the case, these goals intersect in many ways, for example, exit interviews tell us about the experiences of students, and questions about the second-year student experience are likely to be important in our review. We also had a number of lesser, also interrelated goals, that we considered as part of the workshop. I report on them in the sections below. I can also provide more detailed notes for each day of the workshop, if you would prefer.

As part of the workshop, we reviewed the following documents:

  • The reviewers’ report from our last external review.
  • The department’s response to that report.
  • Approximately fifty exit interviews from 2016 and 2017.
  • The department’s student learning goals.
  • The department’s curriculum description.
  • The College’s guidelines and template for external reviews.
  • Historical enrollment data.
  • Budget data, including individual spending on peer educators (mentors, evening tutors, individual tutors, and graders).
  • A document prepared by Jerod Weinman that models faculty needs based on major requirements and historical trends (e.g., about 1/3 of students who take CSC 151 become CS majors).
  • Portions of ACM/IEEE 2013 Computing Curricula, our professional societies’ guidelines for undergraduate programs in computer science. (We are one of the exemplar programs listed in those guidelines, but we still find it valuable to review them.)
  • A reading on pair programming and Jerod Weinman’s notes to his students on pair programming.
  • A variety of other notes and class handouts.

Our agenda was necessarily malleable. We adjusted topics and length as we went, as investigations of one area often raised new issues or complexities.

Summaries of Selected Discussions

Introductory sequence

We spent a significant amount of time on the second and third courses in the major, CSC 161, Imperative Problem Solving and Data Structures and CSC 207, Object-Oriented Problem Solving and Algorithms. These are the two primary gateway courses to the major. Most majors take CSC 207 in their second year. About one-third of majors take CSC 161 in their second year.

We entered the workshop with some concerns about the transitions between CSC 161 and CSC 207, between CSC 207 and CSC 301, our upper-level course in Algorithms, and between CSC 161 and CSC 211 and CSC 213, our mid-level courses on systems. Considering those transitions was a focus of our discussion, which required close discussion not only of what is taught in each course, but also what subsequent courses expect from prior courses.

Our discussions led to two primary conclusions. First, we realized that most of what we expect from each course in subsequent courses is covered in the prerequisite courses. The issue seems to be more that students need a bit more reinforcement of their learning. We should also ramp up the difficulty in CSC 301, since the transition issues from CSC 207 to CSC 301 seems to be that the common material in those two courses is sometimes covered at the same level. Second, we decided to include a unit on graphs in CSC 207 in addition to CSC 301. We have generally counted on MAT 218 to cover graphs, but the new model for MAT 218 means that they are not necessarily covered. We have always covered them in CSC 301, but usually expect some basic knowledge.

I will note that our review of exit interviews suggests that our introductory sequence is already quite strong; many graduates identified it as a highlight of our curriculum.

Pair programming

One of the strengths of our introductory sequence is that we regularly rely on pair programming in those courses. Pair programming is a practice in which two programmers work together on problems. Most typically, one takes the role of driver, the partner takes the lead in coming up with solutions or ideas, and the other takes the role of navigator, someone providing feedback and guidance. We regularly switch roles, either during class or between classes. We also regularly switch pairs, so that students have an experience of working with a variety of different students. Although pair programming is a professional practice, we employ it primarily to organize learning, rather than to develop programming skills.

There are many values to the use of pair programming in our curriculum. Here are some. It builds students’ ability to work with others. It makes students more productive, because it really is the case that two heads are better than one. It regularly exposes students to other ways of thinking. It helps build community in the department. It exposes them to an important professional practice.

Unfortunately, pair programming is associated with some of the difficulties in our department. Some students, particularly early in their careers, do not treat their partners with appropriate respect. This issue most significantly affects students traditionally underrepresented in the discipline. Interestingly, the issue seems to be more pronounced in CSC 161, the second course, rather than CSC 151, the first course.

Those experiences, along with some notes from exit interviews which, while largely positive about pair programming, raise some similar issues, suggest that we need to revisit how we present and conduct our pair programming work.

We did observe from both exit interviews and our own experiences that, while there are flaws in our pair programming process, that process does build a sense of respect between students and an understanding of appropriate behavior that we can rely on in the upper-level classes. Hence, some of our discussion addressed the issue of students who place out of the introductory sequence and therefore lack the behavioral growth that happens in the introductory sequence.

Our primary conclusions were that we need to be a bit more intentional about describing and enforcing pair programming practices not just in CSC 151, but also in CSC 161, CSC 207, CSC 211, and CSC 213. In addition, we plan to post a poster summary of good pair programming practices in our primary computing classrooms; those posters should be in place by the beginning of the semester. One of us plans to try Pair Contracts in their class. One plans to have students read aloud statements from prior students about their experiences, both positive and negative, with pair programming.

The role of mathematics in CS

Computer science is a mathematical discipline. In recent years, we have changed our mathematics requirement from MAT 218, which also required MAT 215, MAT 133, and MAT 131, to MAT 218 or the new MAT/CSC 208, Discrete Structures, along with one other course in Mathematics or Statistics numbered over 131. The primary rationales for the change were to reduce the burden on CS majors and to provide more flexibility because Statistics can be as valuable to some CS majors as Calculus II and Linear Algebra.

However, the change has had an impact on the more mathematical upper-level courses. We have a dichotomy between students with strong mathematical skills who feel that the courses are insufficiently mathematical and the students with weaker mathematical skills feel overly challenged by those courses.

We did not come up with any solutions to this issue. There is some hope that we can tune the curriculum of MAT/CSC 208 to help address the differences. I expect that this is one issue that we will return to as part of the self-study and external review.

Handling enrollment pressures

As you may know, the department is dealing with significant enrollment pressures. We have gone from 13 majors in the class of 2015 to 51 in the class of 2019. With the Trustees and President having placed a cap on the number of tenure-line faculty at the College, we need to be more creative in how we address this problem.

Jerod developed a variety of mathematical models to explore the number of majors we can handle with our current number of faculty and the number of faculty needed for different numbers of majors. I can provide those to you separately if you’d like.

Our exit interviews suggest that our students are also worried about these pressures and their effects on not only the strong sense of community within the department, but also the wellness of their faculty.

The department also considered a number of approaches to take if we cannot obtain sufficient resources. I find all of them unacceptable, but they may nontheless be necessary. We anticipate discussing those with the Dean and, possibly, with the President.

Additional issues raised in discussions and exit interviews

We noted that many of our students, particularly those from underrepresented groups, suffer from imposter syndrome. We are considering ways to address this issues.

The most common theme on the exit interviews was the role of CSC321/22, our upper-level software design courses. Students saw potential value in the courses (and some indicated that they were among the most valuable courses), but many objected to the model of the course, which emphasizes You get out of this course what you put into the course, rather than regular formal feedback. Those teaching the course will explore ways to provide that feedback as a check on the student work.

Students found attendance at the Richard Tapia Celebration of Diversity in Computing and the Grace Hopper Celebration of Women in Computing. Our HHMI grant has helped many students experience these opportunities and we will need to find other mechanisms for support.

Our peer education program is working quite well. Students report benefits from both being and having peer educators. Our new Peer-Education Coordinator is making the program even better.

While ethics plays a clear role in our curriculum, we should explore ways to give it an even more central role.

Students would like more chances for professional development, such as mock interviews and opportunities to meet with alumni. Some spoke particularly positively about the career fair associated with the CS Reunion.

Selected plans and outcomes

Plans already implemented or soon to be implemented

  • Add a unit on graphs to CSC 207. This change will begin this fall. We will need to adapt CSC 301, Algorithm Analysis, to accommodate not only this change, but the differences in student background it implies for the next few years.
  • Remove the unit on program correctness from CSC 207 to make room for the unit on graphs. Add it to CSC 301.
  • Develop additional curricular materials to support pair programming.
  • Add more formal review of student work in CSC 321/22.

Relatively straightforward tasks

  • Rename CSC 161 to Imperative Problem Solving and Memory Management.
  • Rename CSC 207 to Object-Oriented Problem Solving, Data Structures, and Algorithms.
  • Change the prerequisites of CSC 341 to require CSC 207 rather than CSC 161.
  • Create a poster to address issues of imposter syndrome.

Additional plans

  • Work with the SEPC to support/enhance the sense of community in the department. More regular notices of community events, such as weekly study breaks is one easy approach. Re-starting our CS Buddies program, which pairs upper-level students with first-years, will take more effort.
  • Work with students to create more community activities. These include student-run sessions for programming challenges, student-run reading groups, and outreach activities (e.g., the Drake Library Code Clubs).
  • Revisit prerequisites for other upper-level courses.
  • Revisit our learning goals for majors.
  • Further explore whether mathematics should be one of the core issues for our external review.
  • Work with the Dean and President to ensure that we have sufficient resources to support our students, both majors and non-majors, and to identify what approaches to take if we don’t.
  • Seek additional support for bringing students to Tapia and GHC.
  • Work with CLS on professional development opportunities for our students.

Final thoughts

Thank you once again for your support of this workshop. The department had useful and, in many cases essential, discussions throughout the workshop. I expect that it will have a significant impact on our department.

[1] We would have held the workshop whether or not we got funding. But it was nice to have a lunch together and some snacks and a bit of a stipend.

Version 1.0 of 2017-08-07.