Grinnell’s CS Department
Prospective students regularly ask me why they should study CS at Grinnell rather than one of our peer institutions, like Carleton or St. Olaf or Oberlin. As I say in my essay on studying cs at liberal arts colleges vs. large universities, I think all of our institutions provide a similar strong core CS education. I also very much respect the colleagues I know at these institutions, and I think most students would be lucky to study with them, just as they would be lucky to study with Grinnell’s faculty.
So, in answering the
Grinnell or X? question, I prefer to say,
institutions provide excellent CS educations. I don’t know all of the
details at X, but I can tell you many things that I think make Grinnell’s
CS education excellent. This isn’t to say that our peers don’t provide
these things. This isn’t to say that our peers don’t provide other
things that we lack. Each prospective student should make their own
decision on what they value (and, as I say in the more general essay,
I don’t think you should make your decision based on the CS department).
Here are some of the things that make Grinnell’s CS department excellent.
Our students. We have an awesome group of students. They are friendly, collaborative, diverse (in many senses of the word), active, and creative. I think our majors provide a welcoming environment in our department. They also work hard, and support each other as they work hard. They take initiative, whether it is in doing outreach to K-12 students, or developing a student-run application development group, or running a startup weekend, or just arranging study breaks. They also don’t focus on just CS; not only do we have dual majors with lots of different departments (Theatre, Studio Art, Art History, Chemistry, Mathematics, History, Philosophy, and Political Science, to name a few), our students are also active in music, theatre, activism, and leadership across campus. You would be hard pressed to find a better set of colleagues.
Our primary teaching methodology is
active learning. We believe
that you learn best by doing, not by listening. So, we structure our
introductory curriculum in what we’ve generally called
and which people more recently seem to be calling
the flipped classroom.
In a typical class session, we assume that students have done a short
reading in advance, and we spend most of class time with students working
in pairs or small groups on a series of problems, while the faculty and
some student mentors wander through the room asking questions, making
comments, and providing guidance. And this model isn’t new; we’ve been
using it for over twenty years. We also try to carry this model through
many of our upper level classes. We do a bit more lecture there, but we
also do a lot of collaborative problem solving and discussion. That also
means that we regularly embrace group projects - we think students
learn to communicate better in group projects and we know that
world CS always involves collaboration. Our focus on collaborative
learning also means that we regularly embrace group projects. We think
students learn to communicate better in group projects and we know that
real world CS (and, I expect, most real-world projects of any sort)
always involves collaboration.
Our introductory curriculum. I’ve already noted that we use
a workshop-style approach. We also structure our curriculum to
expose students to different ways of thinking of problem solving.
Most institutions use one or two languages and one or two models of
computation; we use three models of programming (functional, imperative,
and object-oriented) and three programming languages (Scheme, C, and
Java) in the first three classes. This approach helps students realize
that there are very different ways of thinking about problem solving.
I’ll admit that I’m proud that we’ve been teaching functional programming
in the first course for about twenty years, and it is just now becoming a
hot topic. We are clearly ahead of the curve.
Research opportunities. We try to give our students opportunities to do research. The most common forms are through summer Mentored Advanced Projects (MAPs) and Mentored Introductory Projects (MIPs), in which students work in small teams on faculty research projects. In most summers, we have between one and two dozen students working on these projects, with funding from Grinnell. We also provide students with opportunities during the semester and help them find opportunities beyond Grinnell. Students regularly publish papers (with faculty co-authors) in national and international conferences, in journals, and in edited volumes.
Other extra-curricular opportunities. We run a weekly reading group,
CS Table, that considers a wide variety of topics, from community-based
libraries, to issues of race and gender in computing. In those
discussions, that include students, faculty, and staff, we draw on
readings that span the gamut from recent academic papers to classics to
’blog postings. We host a weekly seminar series, that we call
extras (it’s usually on thursday, but not always). We send our
students to a variety of conferences, not only when they are presenting,
but also when we think there is a benefit to attending (and we can find
money to send them). For example, we sent over a dozen students to the
2015 Grace Hopper Celebration of Women in Computing, and a similar number
to the 2015 Richard Tapia Celebration of Diversity in Computing. Our
students also provide opportunities for each other. Grinnell’s AppDev
team, which builds mobile applications for the campus community, was created
by students and is still run by students.
Our emphasis on diversity. Computers are changing the world. As a department, we feel that we have a responsibility to make sure that the people who build these technologies represent a diverse set of interests and backgrounds. So we work to provide a department that is open to many different kinds of students. We must be doing something right: We have over 35% women majors (compared to a nationwide average of under 20%), we have large numbers of international students, and we have comparatively high numbers of first-generation students and domestic students of color. Our LGBTQA students tell me that the department is welcoming. (I will admit that I don’t try to track all of these categories.) Of course, we are still supportive of majority students. I think we do a good job of being welcoming to all. (Well, I’ll admit that CS requires enough mathematics that we may seem unwelcoming to the mathematically challenged, but we do our best to be supportive, and I think mathematical ability should be independent of all of the other characteristics that I’ve mentioned above.)
Our curriculum. (My colleague, Henry Walker, would be unhappy if I did not mention this.) We have a strong program that emphasizes core issues. And we’ve worked hard to craft the program so that it fits well within national guidelines. In fact, our program is one of only four exemplars used in the recent IEEE/ACM recommendations for undergraduate CS education .
Our faculty. I feel privileged to work with colleagues who are passionate about teaching, creative (and even groundbreaking) in their research, concerned about their students, and interested in the world beyond computer science. They, like our students, help make our department great.
Everything else about Grinnell. I’ll eventually write other essays about the ways the College uses its resources, the benefits of an individually mentored curriculum, the support for creative teaching, and the many other things that make Grinnell great. While they are not specific characteristics of our department, they make us an excellent place to study CS.
Some things I’ve missed. I have no idea what these are, or I would not have missed them. But I know that I have not covered everything I appreciate about our department and so I leave this category at the end.
As much as I love our department, I don’t think it’s the reason that you should choose to study at Grinnell. You should choose an institution based on more than what one major is like. Choose it based on whether it will challenge you, whether it will support you, and whether it will provide you with a set of peers that will help you thrive.
 The Joint Task Force on Computing Curricula Association for Computing Machinery (ACM) and IEEE Computer Society. Computer Science Curricula 2013 Curriculum Guidelines for Undergraduate Degree Programs in Computer Science. December 20, 2013. https://www.acm.org/education/CS2013-final-report.pdf
Version 1.0.1 released 2017-05-23.
Version 1.0.2 of 2018-02-25.