Description of the
Computer Science Curriculum
Grinnell's computer science curriculum includes courses at several levels:
Computer science recognizes four problem-solving approaches as being
fundamental to work in the discipline. Each approach involves a distinct
way of thinking, and each is supported by a range of computer languages.
These paradigms may be outlined as follows:
Functional Paradigm: computation is described by defining functions and
applying functions to information and to other functions.
Supported by such languages as Scheme, LISP, ML, Miranda
Imperative Paradigm: computation is described by simple operations
(input, output, mathematics) and control structures that sequence the
Supported by such languages as Pascal, C, FORTRAN
Object-Oriented Paradigm: computation is described by creating
objects and setting up communication between those objects.
Supported by such languages as Smalltalk, C++, Java
Declarative Paradigm: computation is described by a series of facts in
some logical system.
Supported by such languages as Prolog, Gödel
Since different approaches have advantages for different problems, people
involved with computing should be comfortable with several of these
paradigms. Thus, Grinnell's first courses in computer science (CS 151-152
or CS 153) introduce three problem-solving paradigms: the functional,
imperative, and object-oriented paradigms.
CS 151-152: CS 151 introduces one approach (functional programming
with Scheme) and some imperative programming. CS 152 builds on this
experience by considering object-oriented paradigm with Java. Together, CS
151-152 provide students with multiple views of problem solving and with
experience with two important programming languages.
CS 153: CS 153 combines major elements of CS 151-152, assuming
students already have a familiarity with imperative programming (in some
language) and some acquaintance with elementary data types. With this
initial background, students finishing CS 153 will have a similar
problem-solving background to those completing CS 151-152.
Grinnell's core computer-science courses cover fundamental areas of the
discipline, as identified in national
In addition, students should have experience with at least one major
project. Such a project provides perspective on material from other
courses, includes collaboration and teamwork as vital components, and
emphasizes oral and written communication skills. Students gain experience
with such work through independent projects with faculty, interactions with
departments throughout the campus, and specific courses work.
Project-based courses include CS 223, Software Design, and CS 362,
Algorithms (CS 301),
Computer Organization and Architecture (CS 211),
Operating Systems (CS 213),
Programming Languages (CS 302), and
Theory of Computation (CS 341).
Courses Beyond the Core
Elective courses build upon the core -- expanding Grinnell's computer
science curriculum in several significant areas. Specific courses include:
Students also frequently engage in a variety of independent projects and
special topics courses. In the past, this work has included study of the
Computational Linguistics (CS 205),
Artificial Intelligence (CS 261),
Compilers (CS 362), and
Computer Networks (CS 364).
|Software Engineering ||Font Recognition|
|Data Communication and Local-Area Networks ||Computer Simulation|
|Formalizations of Natural Languages ||Language Analysis|
|Artificial Intelligence and Scheme ||Neural Networks|
|C Programming and X-Windows ||Logic and Languages|
|Artificial Intelligence and Theorem Proving||Expert Systems|
|Computational Linguistics ||Databases|
|Software Design and Implementation ||Interprocess
|Software Optimization ||Pattern Recognition|
|Parallel Algorithms ||Denotational
|Mail Client Development ||Game Design|
In addition, 7-12 students have worked worked on research projects with
computer science faculty each of the last several summers.
Courses for Non-Majors
Most students at Grinnell use computers for such activities as e-mail,
surfing the World Wide Web, and word processing. The campus contains
hundreds of workstations throughout the dorms and academic buildings, and
students have unlimited, free use of these facilities. In order to help
students become comfortable with the hardware and software available,
Grinnell's Computer Services Department conducts many non-credit workshops
on specific software packages and techniques.
Beyond this general level of computer usage, the Mathematics and Computer
Science Department offers two courses which help students increase their
abilities to utilize computers in helping to solve problems and their
understanding of computers:
Math/CS 103, Problem Solving and Computing, emphasizes the nature of
problem solving, which readings covering problem-solving techniques, an
introduction to programming, and the analysis and solving of problems.
CS 105, An Algorithmic and Social Overview of Computer Science,
reviews core topics and great ideas in the field of computer science,
focusing on underlying algorithmic principles and social implications.
Grinnell's computer science curriculum is strongly influenced by
recommendations of the Liberal Arts Computer
Science Consortium and ACM -- the
Association for Computing Machinery.
The Liberal Arts Computer Science Consortium is an active group of faculty
from liberal arts colleges and has been meeting to discuss curricula for
over a decade. Over the years, the group has produced two major curricular
Over the years, the ACM and the IEEE Computer Society have collaborated
on more general collections of guidelines:
Norman E. Gibbs and Allen B. Tucker, "A Model Curriculum for a Liberal Arts
Degree in Computer Science", Communications of the ACM, Vol. 29,
No. 3, March 1986, pp. 202-210.
Henry M. Walker and G. Michael Schneider, "A Revised Model Curriculum for a
Liberal Arts Degree in Computer Science", Communications of the ACM,
Vol. 39, No. 12, December 1996, pp. 85-95.
ACM/IEEE-CS Joint Curriculum Task Force, Computing Curricula 1991.
ACM/IEEE-CS Joint Curriculum Task Force Report. ACM Press and IEEE
Computer Society Press, 1991.
ACM/IEEE-CS Joint Curriculum Task Force, Computing Curricula 2001.