• Overview
• Pedagogy
• CS/Math Placement for Incoming Students
• Check your CS/Math Placement
• Faculty
For many years, our CS curriculum has had a multi-level structure.
A three-course introductory sequence that emphasizes different views of problem solving, each supported by a different programming language.
Several core courses that cover fundamental areas of undergraduate computer science, consistent with national curricular guidelines.
Electives that apply core topics to interesting areas of research and application.
Student-faculty projects that involve students in extended study that include Mentored Advanced Projects and summer research with faculty.
Within this framework, the faculty continually refine courses and the curriculum, in order to keep the curriculum at the cutting edge regarding content and pedagogy. In 2007-2008, this process led to a reordering of topics in the introductory three-course sequence, the addition of new courses, and a refinement of the computer science major to allow somewhat greater flexibility.
The following table provides details of the old and new CS curriculum. A transition page outlines some transitional issues in moving from the old curriculum to the new.
| Curriculum in the 2007-2008 Catalog | Curriculum beginning in 2008-2009 | |
|---|---|---|
| Catalog Description | Major and courses | Major and courses |
| Diagram of Courses | Diagram of Courses before 2008 | Course Diagram 2008-2009 |
| Introductory 3-course Sequence | CSC 151 (functional problem solving with Scheme) | |
| CSC 152 (object-oriented problem solving with Java) | CSC 161 (imperative problem solving with C) | |
| CSC 201 (low-level problem solving with C) | CSC 207 (object-oriented problem solving and data structures with Java) | |
| CS Major Requirements (Summary) | Intro. sequence (CSC 151, 152, 201) | Intro. sequence (CSC 151, 161, 207) |
| "under the hood" course (CSC 211 or 213) | ||
| algorithms (CSC 301) | ||
| programming language concepts (CSC 302) | programming language design and translation (CSC 302 or 362) | |
| project-based course (CSC 223 or 362) | project-based course (CSC 323 or 325) | |
| theory of computation (CSC 341) | ||
| supporting math (Math 218) | math prerequisite (Math 218) | |
| Some Upper-level, Regularly-offered Courses | CSC 205, Computational Linguistics | |
| CSC 211, Computer Organization and Architecture | ||
| CSC 213, Operating Systems and Parallel Algorithms | ||
| CSC 261, Artificial Intelligence | ||
| CSC 301, Algorithms | CSC 301, Analysis of Algorithms | |
| CSC 302, Programming Language Concepts | ||
| CSC 362, Compilers | ||
| CSC 364, Computer Networks | ||
| CSC 223, Software Design | CSC 323, Software Design | |
| CSC 232, Human-Computer Interaction | ||
| CSC 325, Databases and Web Application Design | ||
This document is available on the World Wide Web as
http://www.cs.grinnell.edu/