[an error occurred while processing this directive]

Table of Contents

Academic Life
A St. Olaf Education
The 4-1-4 Calendar
Academic Resources
Majors and More
Graduation Requirements
Campus Facilities

Academic Regulations
Entering St. Olaf
Transferring to St. Olaf/Transferring Courses
Registering for Courses
Special Registrations
Successful Study
Counting Courses and Credits
Academic Status
Curricular Regulations and Advice
Records/Policies
Leaving St. Olaf

The Academic Programs
How to Use This Catalog
Africa and the Americas
American Conversations
American Racial and Multicultural Studies
American Studies
Ancient Studies
Art and Art History
Asian Conversations
Asian Studies
Biology
Biomedical Studies
Chemistry
Chinese
Classics
Communication and Theater
Computer Science
Dance
Economics
Education
English
Environmental Studies
Family and Social Service
Family Studies
Fine Arts
Foreign Languages Across the Curriculum (FLAC)
French
German
Great Conversation
Hispanic Studies
Historical Perspectives
History
Integrative Studies, Center for
Interdisciplinary Fine Arts
Interdisciplinary Studies
Japanese
Linguistic Studies
Management Studies
Mathematics
Media Studies
Medieval Studies
Middle East Studies
Molecular Biology
Music
Neuroscience
Nordic Studies
Norwegian
Nursing
Philosophy
Physical Education
Physics
Political Science
Psychology
Religion
Romance Languages
Russian
Russian and Central European Studies
Social Studies Education
Social Work
Sociology/Anthropology
Spanish
Theatre
Statistics
Women's Studies

International and Off-Campus Studies
Overview
Programs Led by St. Olaf Faculty
Study/Service Programs
Student Teaching Abroad
Interim Courses
Semester and Year-Long Programs

Special Programs
Education Put to Work
Pre-Professional Preparation

Admissions and Financial Aid
Admissions Procedures
Financing Your Education
Financial Aid Program

Life Outside the Classroom
Residential Life
Student Services
Co-Curricular Activities

People
Board of Regents
Emeritus Faculty and Staff Members
Faculty, 2000-01
Administrators, 2000-01

Facts and Figures
History and Heritage
Recent Statistics

College Calendar
2000-2001 College Calendar
2001-2002 College Calendar
2002-2003 College Calendar

Computer Science

http://www.stolaf.edu/depts/cs/

Director, 2000-01: Richard A. Brown, Mathematics, computer science, distributed systems

Faculty, 2000-01: Steven McKelvey, Mathematics, operations research, wildlife modeling; Richard J. Allen, Mathematics, logic programming, intelligent tutoring systems; Matthew Richey, Mathematics, computational mathematics, software engineering

The Computer Science Concentration at St. Olaf is a six-course program that may be earned in conjunction with any academic major. By means of an individualized contract system, the concentration conforms to individual interests and maintains flexibility to evolve along with the world of computing, while focusing on enduring fundamental principles that apply to all computing systems.

Each course emphasizes principles of computer science, always reinforcing concepts with applied programming exercises. Students practice and develop written and oral communication skills. Forward-looking computing technology is explored throughout the concentration curriculum. Internships and other connections with industry forge links between the academic program and contemporary practical applications of computer science.

The complete concentration satisfies basic entry requirements for most graduate programs in computer science. However, the St. Olaf Computer Science Concentration focuses on bringing a liberal-arts understanding of computer science principles -- reinforced by up-to-date applied experiences -- to students in all disciplines, whatever careers they pursue in a world of ever-advancing computing technology.

General Education Credit

Computer science courses that fulfill general education requirements are listed in the Class and Lab Schedule.

Prerequisites

Prerequisites for computer science courses are found in the course descriptions.

REQUIREMENTS FOR THE CONCENTRATION

A Computer Science Concentration is arranged by an individual contract between a student and the Computer Science faculty. This provides some latitude for choice according to personal preference. For example: Art majors might include independent projects in computer graphics as part of their concentrations, or a Psychology major might participate in a research project in cognitive science, artificial intelligence, or human-computer interaction. Computer science courses taken as part of a semester in Budapest, Hungary, are frequently included in contracts; and internships in industry are strongly encouraged for all concentrators. The contract system also allows the Computer Science faculty to update the curriculum easily as the field of computer science evolves, without affecting students who have already declared concentrations.

A concentration in Computer Science normally includes Computer Science 172, 272, 274, 372, 376, and an approved sixth course. The sixth course may be the seminar Computer Science 378, or a project or off-campus experience such as those above other than an internship. Except for Computer Science 378, the choice of the additional course must be approved as such in advance by the director of the Computer Science concentration. Contracts that differ from this pattern will be considered on a case-by-case basis.

Special Resources

St. Olaf was among the first of four-year colleges to use the UNIX operating system (1975) and to join the Internet network (1988). This tradition of exploring new computing technologies firsthand continues today. For example, St. Olaf was among the first liberal-arts colleges to vigorously pursue the World Wide Web networked information server.

Computer science courses are supported by a dedicated network of Sun UNIX workstations and PCs with Linux and Windows, equipped with high-performance color graphics, all fully connected to the Internet network. Some courses and projects have access to specialized equipment in various departments across the campus.

COURSES

172 Principles of Computer Science

Fundamental concepts of computer science, introduced using an interactive programming environment (Scheme dialect of LISP language). Organized around three approaches to programming: functional, imperative, and object-oriented programming. Problem-solving and algorithm development, programming style and documentation, recursion, iteration and loop invariants, elementary algorithm analysis, object-oriented programming, applications. No prerequisites.

272 Software Design and Implementation

Object-oriented programming, software design and development of software applications in a compiled imperative object-oriented programming language (C++). Mastery of programming fundamentals, memory management, and sound software design concepts, including modularization, encapsulation, incremental software development, specification, documentation, and the software lifecycle; introductory implementation of linked lists; capstone team project. Prerequisite: Computer Science 172.

274 Computer Organization

An introduction to the low-level operation of computers for students having high-level programming experience. Introduction to digital logic, machine organization, operating system interface, low-level structure of software systems, comparison of computer architectures, computer networks, current and future trends in computer design. Representative experience with assembly programming. Prerequisite: Computer Science 172 or permission of the instructor.

294 Internship

Intermediate-level version of Computer Science 394.

298 Independent Study

372 Data Structures

A higher-level treatment of structuring concepts for data and algorithms, presented in an object-oriented software design context (languages C++ and Java). Stacks, queues, lists, trees, graphs, and hash tables, including (for example) binary trees, AVL trees, heaps, etc.; standard searching and sorting algorithms, with performance analysis; additional topics such as data compression. Concepts applied in a series of team programming projects. Prerequisite: Computer Science 272 or permission of the instructor.

376 Programming Languages

Design and implementation principles of high-level programming languages. Syntax, semantics and common language features explored and implemented in an ongoing individual project of building a language interpreter that incorporates each feature. Prerequisites: Computer Science 272 and 274, or permission of the instructor.

378 Seminar in Computer Science

Recent and planned topics include principles of operating systems, relational database systems, event-driven programming (client/server and graphic user interfaces), computer graphics, artificial intelligence, logic programming. Prerequisites: depend on topic; generally includes Computer Science 272 and other course.

394 Internship

Experiences in computer-industry positions. Projects have included implementation of solid modeling (NURBS), documentation, business applications of computing, applications of computer graphics in medical research, team programming. Internship experiences (whether for credit or not) are strongly encouraged for anyone considering a career in computing.

398 Independent Research

Recent projects have involved team software development, graphics user-interface (GUI) programming, real-time computing, logic programming and intelligent tutoring systems, relational data bases, computer networks, and operating systems.