Skip to main content

Exploring a CS major (2016 Version)

Research evidence suggests that Grinnell second-year students struggle with senses of academic identity. Much of the infrastructure that helped them in the first year is gone; they are (or feel) less able to make mistakes; and they have to figure out what direction they will take, represented most clearly by their choice of major. To help students during this difficult time, Grinnell has started asking each department to provide a short presentation and discussion on the major. I will admit to some frustration with that request, since many of the things that they ask us to talk about come up in CS Extras or CS Table (or both), but I also accept that this kind of session can be valuable to many students.

These are my notes for this year’s session, held on Tuesday, 2016-10-25. I took the notes to prepare for the session, ran the session without the notes, and then edited them to make my essay of the day.


Welcome to this academic planning session about the Grinnell Computer Science major. As I expect most of you know, I’m Sam Rebelsky, chair of the Computer Science department. I hope this session helps you as you consider whether or not a computer science major is right for you.

You should note that we have a variety of snacks on the side of the room. The variety is intended to be representative of the many things you can do with a Computer Science degree.

Here’s a quick overview of the session.

First, each faculty member will spend a few minutes introducing themselves and their teaching and scholarly interests.

Next, we will have the members of the SEPC introduce themselves and indicate why they chose (or plan to choose) a CS major.

After that, I’ll give a quick overview of the CS curriculum (there are handouts!) and some of the things you can do with a CS major.

Finally, we’ll break out into small groups for casual conversations. Our goal is that we finish the first part of the program in about thirty minutes so that you have ample time for discussion. [Reality: It took us a bit over 35 minutes.] You should also feel free to chat with any of us in our offices.

I’ll note that we have CS table at noon in which students will be talking about their experiences at the Grace Hopper Celebration of Women in Computing. I’d encourage you to attend that, too. It’s in the middle public dining room on the second floor of the Marketplace. We will do our best to wrap up by 11:45 so that folks have time to get over to the dining hall. [Reality: We succeeded.]


Faculty Introductions

I’ll go first. Hi, I’m Sam Rebelsky. This is my twentieth year at Grinnell. I have taught almost everything in our curriculum. However, my favorite courses to teach are: CSC 151, where I get to expose students to the wonder that is CS; CSC 207, which is when I think you really start to learn the best parts of CS (algorithms, data structures, analysis, and larger-scale program design); and CSC 301, which returns to many of the key topics from 207. I also like CSC 282, a one-credit course in which I get to emphasize things I would hope every computer scientist (or at least computer programmer) should know.

These days, my primary research has to do with considering the ways in which we can encourage people underrepresented in the discipline to study CS. Because computer technology is changing the world, I feel that I have a moral responsibility as a CS educator to ensure that a broad variety of people develop that technology. Beyond that, I also look at some issues at the intersection of CS and the arts and I’m responsible for the software we use in CSC 151.

[Remaining faculty speak.]

[Sam pretends to be Jerod.]

[Sam reminds students that we’re hiring this year.]


SEPC Introductions

[Most of our SEPC forgot to come, so we rely on MK to talk about almost everything. Fortunately, MK has done a lot of things within the department, and could talk more broadly.]

[We also had Sarah Dahlby Albright, our peer education coordinator, introduce herself and her roles.]


About the Curriculum

People choose to study CS for a variety of reasons. Some find passion in the problem-solving aspect of CS; you get interesting problems and you develop processes that can build solutions. Some find joy in the construction and creativity; a lot of computer science is about building things, which I think of us a basic human activity. I get the same joy out of writing programs that I get out of making sculptures. Some appreciate the possibility of making an impact; computer programs can change the world. And, I will admit, some choose CS because it promises better career options.

Grinnell’s CS curriculum not only reflects professional guidelines for an undergraduate CS education, but also serves as one of only a few designated exemplars.

Let’s consider the diagram of the CS major. (I apologize in advance to those who are visually impaired or color deficient.)

At the center, you’ll see three blue bubbles that represent our introductory sequence. CSC 151, CSC 161, and CSC 207 are the core of our curriculum. They teach three different models of problem solving, and ground those three different models in three different programming languages: Scheme, C, and Java. As I noted earlier, CSC 207 is the course where you really learn to be a computer scientist. (I’ve had some students go on to graduate school in CS with just the intro sequence under their belt, and they noted that they were better prepared with that sequence than many of their peers who had a full undergraduate major from another institution.)

Every computer scientist should be able to build a large piece of software. We offer a pair of 2-credit courses, CSC 321 and CSC 322, to guide you through those issues. CSC 321 provides an overview of practices, principles, and tools. CSC 322 serves as a corresponding practicum, in which you develop software for a local nonprofit.

Every computer scientist should also have deep understanding of the theory underpinning our discipline. CSC 301 teaches you some of the key literature of CS - the classic algorithms and data structures that underpin much of what we do. As importantly, it teaches you how to design and analyze your own algorithms and structures. CSC 341 encourages you to think more deeply about what it means to compute, and even gives you the opportunity to ask What is computable? (No, we don’t ask more philosophical questions, like Is love computable? Rather, we ask questions that seem to be more directly about computation, such as Can you write a program that determines whether any other program will finish or run forever?

To study these, and other issues in computer science, you need appropriate mathematical background, including the ability to construct proofs. We require either MAT 218 (Various Titles) or MAT/CSC 208 (Discrete Structures), to help you develop that ability.

We know that students are better served if they have some understanding of what’s happening under the hood. Hence, we require that students either take CSC 211, Computer Architecture, which explores the low-level design of computers, or CSC 213, Operating Systems, which explores the operating system, the software that manages all of the other software on the computer.

Finally, we expect that every major will have somewhat different interests, and so we allow students to choose from a variety of additional courses for their final four credits in the major. In addition to the courses listed on the sheet, we have a variety of special topics courses.


Applying CS

What do students do with CS degrees? A large number pursue professions related to computing: They become developers (at startups, at the big four, at industries across the country), project managers, testers, and more. Others apply their problem-solving skills in other arenas: They become teachers, physicians, helicopter pilots, or even professional comedians. A few go on to graduate school to explore issues in more depth.

Again, feel free to talk to any of us if you have more questions.


Version 1.0.1 of 2016-10-26.