Computer Science

Why take courses in this discipline?

Computer science (CS) includes all aspects of the effective design and use of computer systems. Core areas within the undergraduate curriculum include multiple computational models for problem-solving, data organization (structure) and processing (algorithms), hardware design, operating systems, software design, and the theory of computation. Some topics, such as programming languages, networks, and security, explore elements of computer systems in more detail, while other areas, such as artificial intelligence, computational linguistics, human-computer interactions, and computer vision, integrate computer science with interdisciplinary studies. The computer science major prepares students for careers in computer science, in the use of computing in other disciplines, in teaching, or in other professions.

How does the discipline contribute to the liberal arts?

Courses in computer science focus on quantitative reasoning through principles of logic and problem-solving paradigms. With a variety of laboratory experiences, students experience elements of the natural sciences by connecting observations with experimentation and relating concrete empirical information to abstract models. Through formal proof, client software documentation, and ethical analyses, students hone their skills in communication/writing in a variety of modes.

How does a student get started?

  • Almost all incoming students should start in CSC 151, whether or not they have a background in computer science.
  • The CS faculty are happy to discuss individual cases.
  • MAT 131, or equivalent, is recommended in the first year.

Functional Problem Solving (CSC 151) begins a three-course sequence that introduces three contrasting views of problem solving. It develops the functional model of computation, using the Scheme programming language. The second course, Imperative Problem Solving with Lab (CSC 161), presents the imperative paradigm with C. In the third course, Object-Oriented Problem Solving, Data Structure, and Algorithms (CSC 207), students develop skills in algorithm and data structure design and analysis while learning object-oriented programming in Java.

Students who are mainly interested in a broad overview of computing may prefer to start with The Digital Age (CSC 105), which introduces the core topics and great ideas of computer science, focusing on underlying algorithmic principles and social implications.

Students are encouraged to consult computer science faculty to discuss placements and courses. Students in introductory CS courses should feel free to consult with their instructors on their academic plans. Alternatively, students are encouraged to reach out to the current department chair for assistance. Because Grinnell's introductory sequence is somewhat unique, the department often negotiates special arrangements for students with a prior background. Such students are particularly encouraged to meet with faculty as soon as possible.

Students interested in computer science are highly encouraged to join the csstudents mailing list (login required) to receive news about department events and programming.

AP/IB Credit

A score of 4 or 5 on the AP computer science A or computer science principles exam, or a score of 5 on the IB computer science exam would count for four credits in the science division (not providing credit toward the major). Most students who gain AP/IB credit start in CSC 151, but as mentioned above, some students have an additional background that warrants an alternative placement as determined by consultation with computer science faculty. A mark of B on the Cambridge A-level exam for computer science would count for four credits toward the computer science major; however, those credits would be canceled upon successful completion of either CSC 151 or CSC 161. Therefore, students with credit for the computer science A-level exam may wish to consider beginning with CSC 207.

Courses in Computer Science

All Courses in Computer Science

Regular 200-Level Courses

  • Object-Oriented Problem Solving, Data Structures, and Algorithms (CSC 207)
  • Discrete Structures (CSC 208)
  • Computer Organization and Architecture (CSC 211)
  • Operating Systems and Parallel Algorithms (CSC 213)
  • Human-Computer Interaction (CSC 232)
  • Artificial Intelligence (CSC 261)
  • Computer Vision (CSC 262)

Regular 300-Level Courses

  • Analysis of Algorithms (CSC 301)
  • Programming Language Implementation (CSC 312)
  • Software Design and Development (CSC 324)
  • Automata, Formal Languages, and Computational Complexity (CSC 341)

Recent Special Topics

  • Advanced Operating Systems
  • Network and Matrix Computations
  • Human-Centered Programming
  • Algorithms, Ethics, and Society
  • Computational Methods in Industry
  • Game Design and Programming

Sample Four-Year Plans for a Computer Science Major

First Alternative, Including MAT 218 (Discrete Bridges)
Year Fall Spring
First

CSC 151

MAT 131

CSC 161

MAT133

Second

CSC 213

MAT 215

CSC 207

MAT 218

Third off-campus study CSC 341
Fourth

CSC 301

CSC 324

CSC Elective

Although students are advised to start early when possible, there are many ways to complete a major in computer science. The following four-year plan illustrates that students can start computer science in the second semester, participate in off-campus study, and still complete the major. We have also had students complete the major while taking the first course in their third semester and, in the rare case, in the fourth semester.

Second Alternative, Including CSC/MAT 208 (Discrete Structures)
Year Fall Spring
First MAT 131

CSC 151

STA 209

Second CSC 161

CSC 207

MAT/CSC 208

Third

CSC 324

CSC Elective

off-campus study
Fourth CSC 301

CSC 341

CSC 211

Declaring a Major

The Department holds an information session for prospective majors every spring, usually in early- to mid-February. Students will hear about the advising practices of all faculty taking advisees at the information session. After the information session, we ask all declaring students to complete a form to indicate their advisor preferences and then assign an advisor to every interested second-year via a lottery. We advertise this information session to all second-year students enrolled in computer science classes during the spring semester, but all Grinnell students are welcome to attend. Because of our high advising loads we generally do not permit students to declare a computer science major before their fourth semester, although we can assign temporary advisors for international students who must declare a major before a credit-bearing internship.

Off-Campus Study

The most common off-campus program attended by computer science majors is the Aquincum Institute of Technology (AIT) in Budapest, Hungary. With courses emphasizing computer science, software engineering, creative design, and entrepreneurship, students can take up to two courses counting toward the major and choose from among several electives unavailable at Grinnell. Other recommended programs with elective courses that count toward the major include DIS Copenhagen, Vrije Universiteit Amsterdam (through IES Abroad) and Goldsmiths, University of London (through Arcadia University).

It is possible to find other off-campus programs offering computer science courses, especially those that count toward the major’s elective requirement. You can find more information about specific programs by consulting Off-Campus Study in Computer Science.

Contributions to Other Majors/Concentrations

Courses in computer science contribute to a major in:

Courses in computer science contribute to concentrations in:

Department Events and Opportunities

The Department of Computer Science has an active cadre of student peer educators who assist other students enrolled in classes by serving as course mentors, drop-in tutors available in computer labs, or individual tutors for regular support.

The department organizes a weekly seminar series (CS Extras) with presentations by computer scientists from Grinnell and nearby colleges or universities and hosts informal lunch gathering (CS Table) to discuss social issues in computing.

The College’s student chapter of the Association for Computing Machinery (ACM) organizes regular events.

The Girls Who Code club organizes on-campus events to promote an inclusive community in the department. The club is open to all, but is geared toward women interested in computer science. 

Volunteers typically run a weekly after-school code club at the local public library for primary and middle school children.

Each year the department announces winners of:

The Robert N. Noyce Senior Student Award is given to a senior who has made the greatest contribution to the use of computer-based technology while a Grinnell student. This award recognizes not only individual accomplishments but the breadth and depth of the student's contribution.

The Henry M. and Theresa P. Walker Endowed Prize for Excellence in Computer Science is given annually to a graduating computer science major who has demonstrated excellence in computing and technology as an undergraduate and who shows substantial promise for continued contributions to computing and technology in the future.

We use cookies to enable essential services and functionality on our site, enhance your user experience, provide better service through personalized content, collect data on how visitors interact with our site, and enable advertising services.

To accept the use of cookies and continue on to the site, click "I Agree." For more information about our use of cookies and how to opt out, please refer to our website privacy policy.