Computer Science in the Academic Catalog

Vital Elements of Grinnell's Computer Science Curriculum

AI with Henry Walker

Grinnell's computer science curriculum has several special strengths, including:

Problem-Solving Perspectives

Computer science recognizes at least 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:
    Supported by such languages as Scheme, LISP, ML, Miranda
  • Imperative Paradigm:
    Supported by such languages as Pascal, C, FORTRAN
  • Object-Oriented Paradigm:
    Supported by such languages as Smalltalk, C++, Java
  • Logic Paradigm:
    Supported by such languages as Prolog, Gödel
Intro. CS with Janet Davis

Since different approaches have advantages for different problems, people involved with computing should be comfortable with several of these paradigms.

Grinnell's introductory courses provide students with considerable practice and insight for each of these approaches early in the curriculum, introducing the functional, object-oriented, and imperative paradigms.

Core courses in theory and systems

Grinnell's curriculum identifies both theory and systems as core areas, and the overall curriculum has achieved international recognition for four-year, undergraduate computer science programs.

  • Algorithms and theory: All majors take two foundational courses:
    • Analysis of algorithms
    • Automata, formal languages, and computational complexity
    Systems: All majors take at least one systems course; both of the following are strongly recommended
    • Computer organization and architecture
    • Operating systems and parallel algorithms
Intro. CS with John Stone

Software development project(s)

People use computers because they can provide services and help in the solving of problems. Thus, many courses and much research throughout the College utilize various aspects of computing. The computer science curriculum includes two upper-level courses with a strong software-development orientation.

  • Software development principles and practices examines methodologies for the effective development of large-scale software packages.
  • Team software development for community organizations provides students experience applying principles to actual projects that serve needs of clients within the community.

Electives provide options and flexibility

The computer science curriculum includes several electives, in addition to courses already mentioned. Students choose electives as well as foundational courses, as they work with their adviser about appropriate alternatives to support their interests and career goals. The following list of electives illustrates the range of topics offered regularly.

  • Artificial intelligence
  • Computer vision
  • Computer networks
  • Computer security
  • Human-computer interaction
  • Computational linguistics
  • Implementation of programming languages
  • Learning from alumni
  • Thinking in C and Unix