Computer Science
Search to Grinnell College Frontdoor  
Logo Picture
College Catalog
General Provisions
Organization of the Curriculum
Department of Computer Science
Computer Science

Member of the Division of Science

Henry Walker, Chair, Marge Coahran, Janet Davis, Samuel Rebelsky, John Stone

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 discipline of computer science includes all aspects of the effective use of computers. Core areas within the undergraduate curriculum include multiple views of problem-solving, hardware design, operating systems, data organization (structure) and processing (algorithms), software design, concepts of programming languages, and the theory of computation. Some topics, such as networks and compilers, explore elements of computer systems in more detail, while other areas, such as artificial intelligence, computational linguistics, and simulation, integrate computer science with interdisciplinary studies.

Formal coursework is concentrated within the Department of Computer Science. Introductory courses emphasize multiple views of problem-solving, each with a different supporting computer programming language. All courses combine strong emphasis on basic concepts and fundamental techniques with laboratory work and experimentation. Considerable use is made of the department’s Local Area Network (LAN), which includes more than 70 workstations.

Most students begin with Computer Science 151, although students interested in a general overview of computer science take 105. After consultation with the department, students with advanced preparation might start in 153 or a higher level course.

The computer science major prepares students who plan careers in computer science in the use of computing in other disciplines, in teaching, or in other professions. The curriculum is strongly influenced by national recommendations of such professional bodies as the Association for Computer Machinery, the Computer Society of the Institute of Electrical and Electronics Engineers, and the Liberal Arts Computer Science Consortium. Students regularly supplement this formal coursework with independent projects, internships, and student-faculty research. In addition, students often work with faculty throughout the College on a variety of special projects that involve computing.

The Major

A minimum of 32 credits (at least 28 in Computer Science and at least four in Mathematics). Required are Mathematics 218, one of Computer Science 152 or 153, Computer Science 201, one of Computer Science 211 or 213, one of Computer Science 223 or 362, and Computer Science 301, 302, and 341. Computer Science courses numbered below 151 do not satisfy major requirements.

All majors are encouraged to take statistics (Mathematics 209 or 335-336), Physics 220, and a course in technology and society (such as a foundation course in Technology Studies). Students considering graduate school in computer science should take both Computer Science 211 and 213. Students planning to work in industry should take Computer Science 223 together with coursework in another discipline that uses computing in a significant way. Student considering a career in computing are encouraged to participate in an independent project, internship, or research experience.

To be considered for honors in computer science, graduating seniors, in addition to meeting the College’s general requirements for honors, must demonstrate excellence in the major. The department applies the following criteria:

A. Core Courses of study.

1. Completion of Computer Science 211 or Physics 220, and
2. Completion of Computer Science 213

B. Additional coursework that is not used to fulfill another requirement.

1. Completion of a 200- or 300-level course in computer science, or
2. Completion of a statistics course at the 200 level or higher (Math 209, 309, 335, or 336), or
3. Completion of Math 220 Differential Equations, Math 306 Mathematical Modeling, Math 314 Topics in Applied Mathematics, or Math 321 Foundations of Abstract Algebra, or
4. Completion of Physics 220 Electronics, or
5. Completion of Psychology 222 Industrial Psychology or 260 Cognitive Psychology.

C. Participation in local activities related to computer science, judged to be excellent by department faculty. Such activities might include:

1. Giving talks at Extras sessions, or
2. Doing independent projects (totaling four credits or more) in computer science, or
3. Carrying out research under the direction of a member of the department, or
4. Developing a successful software package with positive assessment by department faculty.

D. Participation in the study or use of computer science outside of the department, judged to be excellent by department faculty. Such activities might include:

1. Achieving a score at or above the 75th percentile on the Graduate Record Examination in Computer Science, or
2. Receiving an award in the Mathematical Competition in Modeling, or
3. Achieving a strong performance in the ACM Programming Competition, or
4. Having a paper accepted by a refereed computer science journal or conference, or
5. Developing a successful software package with positive assessment by outside referees or evaluators, or
6. Contributing to an open source software package or resource, or
7. Carrying out supervised research elsewhere.


105 The Digital Age (Spring) 4 credits

A study of core topics and great ideas in the field of computer science, focusing on underlying algorithmic principles and social implications. Topics may include multimedia and hypermedia, networks, architecture, programming languages, software design, artificial intelligence, databases, cryptography, and the theory of computing. Incudes formal laboratory work. Prerequisite: none. COAHRAN, WALKER.

151 Fundamentals of Computer Science I (Fall or Spring) 4 credits

A lab-based introduction to basic ideas of computer science, including recursion, abstraction, state, information hiding, and the design and analysis of algorithms. Includes introductory programming in a high-level, functional language. Prerequisite: none. STAFF.

152 Fundamentals of Computer Science II (Fall or Spring) 4 credits

Builds upon Computer Science 151 to study object-oriented problem-solving, the design and analysis of common algorithms, fundamental abstract data types and data structures, and elements of testing and verification. Also provides an overview of the field of computer science. Includes team projects and formal laboratory work. Prerequisite: Computer Science 151 or permission of instructor. STAFF.

153 Computer Science Fundamentals (Fall) 4 credits

Study of basic concepts of computer science, with an emphasis on problem-solving techniques from functional and object-oriented perspectives. Functional elements include data types, procedures as first-class objects, recursion, and binding. Classes, objects, and methods are introduced as basic elements of object-oriented problem-solving. Examples of core data types and classes include stacks, queues, priority queues, trees, and lists. Additional topics include the representation of data and some elements of algorithm analysis. Includes formal laboratory work. A student who receives credit for Computer Science 153 cannot receive credit for Computer Science 151 or 152. Prerequisite: Three semesters of high school computer science, or departmental placement, or permission of instructor. WALKER.

201 Memory Management, Data Representation, and Formal Methods (Spring) 4 credits

Study of machine-level representations of data and techniques for managing storage, using formal methods of program design and a low- or mid-level programming language, such as C. Topics include Boolean logic and proof, language semantics, assertions and invariants, numerical approximations and errors, pointers, memory allocation and deallocation, and the run-time stack. Prerequisite: Computer Science 152, or 153, or Computer Science 151 and additional programming experience in an imperative language; or permission of instructor. COAHRAN.

205 Computational Linguistics* (Fall) 4 credits+

An examination of computational techniques for producing and processing text in natural languages and an introduction to the theoretical basis for those techniques, both in linguistics and in computer science. Topics include generative grammars, parsing, algorithms for automatic indexing, information retrieval, and natural-language interfaces. Prerequisite: Introduction to General Linguistics 114, and Computer Science 151 or 153; or permission of instructor. J. STONE.

211 Computer Organization and Architecture* (Fall) 4 credits+

Study of both traditional and alternative computer architectures. Introduction to digital logic, microcode, Von Neumann architectures, data representations, fetch/execute model, RISC/CISC, instruction formats and addressing, machine and assembly language, memory architecture and algorithms, I/O architecture, and elements of distributed systems. Includes formal laboratory work. Prerequisite: Computer Science 201 or permission of the instructor.
COAHRAN, WALKER.

213 Operating Systems and Parallel Algorithms* (Fall) 4 credits+

Study of the principal components of typical operating systems and an introduction to parallel algorithms. Topics from operating systems: storage management, scheduling, concurrent processing, synchronization, data protection, and security. Discussion of models of parallelism and algorithms for problems in such areas as lists, trees, searching, sorting, graphs, geometry, and strings. Includes formal laboratory work. Prerequisite: Computer Science 201 or permission of the instructor. DAVIS, WALKER.

223 Software Design (Fall) 4 credits+

Study of software life cycle and its consequences. Consideration of various algorithms with an emphasis on strategies that can be applied. Emphasis on design, coding, testing, and documenting of large software packages through work on a large project. Prerequisite: Computer Science 152, or 153, or permission of instructor. STAFF.

261 Artificial Intelligence* (Fall) 4 credits+

An introduction to current principles, approaches, and applications of artificial intelligence, with an emphasis on problem-solving methods, knowledge representation, reasoning with uncertainty, and heuristic search. Study of a range of AI approaches, such as rule-based systems, neural networks, and systems for machine learning. Review of several applications areas such as game playing, natural language processing, robotics, theorem proving, and perception. Prerequisite: Computer Science 152, or 153, or permission of instructor. J. STONE, WALKER.

301 Algorithms (Fall) 4 credits+

Study of structures used to organize data and of the algorithms used to manipulate these structures. Assignments to implement data structures and to use them in computer science and other applications programs. Emphasis on mathematical principles behind the data structures. Prerequisite: Computer Science 152, or 153, and Mathematics 218; or permission of instructor. STAFF.

302 Programming Language Concepts (Spring) 4 credits+

Description and analysis of key issues in the design, syntax, semantics, and implementation of programming languages, with examples from several high-level languages, illustrating important paradigms (functional, object-oriented, imperative, declarative). Additional topics may include denotational semantics, type-inference algorithms, program verification, and the lambda calculus. Prerequisite: Computer Science 301 or permission of instructor. STAFF.

341 Automata, Formal Languages, and Computational Complexity (Spring) 4 credits+

Also listed as Mathematics 341. A formal study of computational devices, their related languages, and the possibility and difficulty of computations. Examples are pushdown automata and Turing machines, context-free languages and recursively enumerable sets, and the halting problem and NP-completeness. Prerequisite: Computer Science 152, or 153, and Mathematics 218; or permission of instructor. J. STONE, WALKER.

362 Compilers* (Spring) 4 credits+

Study of traditional and modern techniques for implementation of high-level languages, through either interpretation or translation to low-level languages. Topics include formalisms for describing syntax and semantics of languages, theory of parsing, regular expressions, intermediate languages, and optimization. Students construct interpreters or compilers for high-level languages. Includes formal laboratory work. Prerequisite: Computer Science 201 or permission of instructor. REBELSKY, J. STONE.

364 Computer Networks* (Spring) 4 credits+

This course focuses on the communications protocols used in computer networks: their functionality, specification, verification, implementation, and performance. The course also considers the use of network architectures and protocol hierarchies to provide more complex services. Existing protocols and architectures are used as the basis of discussion and study. Includes formal laboratory work. Prerequisite: Computer Science 201 or permission of instructor. STAFF.


  Academics Admission Alumni Athletics Calendar Catalog Comment Directory Library Offices Students ITS  
Copyright © 2001-2007 Grinnell College Grinnell, IA 50112-1690 641-269-4000 Privacy policy and additional information.