Overview of CS Courses
Curriculum diagram and index key
The following diagram summarizes the structure of St. Olaf's course offerings in CS, and also the requirements for a CS major. Each circled code represents a course: the key for these codes serves as an index for accessing course descriptions.

Key
|
Foundation courses -- Introductory
Notes:
The list below organizes courses according to their roles in the CS Major. See the summary of the CS Major for a list of requirements, or look at the curriculum diagram above.
See the Planned Offerings of CS Courses for current plans about which courses will be offered in which term. The course-offering plan is subject to change. See Dick Brown (
rab@stolaf.edu) for the latest information.For more complete descriptions of these courses, see detailed descriptions of CS courses, or click on the links below labelled [More...]
CS 121 -- CS1, Principles of Computer Science
Brief description: Introduction to the discipline, focusing on recurring concepts that are relevant to all forms of computing, and developing good analytical thinking skills. Taught through daily "hands-on" exercises involving the Scheme programming language. [More...]
Prerequisites: None
Note: Satisfies [MAR].CS 225 -- CS1+, Accelerated Principles of Computer Science
Brief description: Accelerated version covering the material of both CS1 and SD, for persons with substantial prior programming experience in C++, Java, or a similar language. [More...]
Prerequisites: Equivalent of high school Advanced Placement credit in Computer Science, or consent of instructor
Note: Satisfies [MAR]; proposed for [WRI].
Foundation courses -- Intermediate
CS 231 -- MFC, Mathematical Foundations of Computing
Brief description: Mathematical topics and skills development required for core and advanced courses in CS, building on the analytical abilities developed in CS1. [More...]
Prerequisites: CS1 or CS1+, or consent of instructor
CS 241 -- HD, Hardware Design
Brief description: Exploration of the internal design of computer hardware, including circuit design at the "digital logic" level, CPU design, comparison of Pentium and other CPUs, assembly language, brief introduction to computer networks. [More...]
Prerequisites: CS1 or CS1+, or consent of instructor
CS 251 -- SD, Software Design and Implementation
Brief description: A study of software design practices that also develops solid programming skills in C++ language (introduced in this course). Includes substantial daily homework; weekly lab meetings; and a structured team project using typical software development methodology. [More...]
Prerequisites: CS1, or consent of instructor
Note: Proposed for [WRI].
Core courses
CS 253 -- ADS, Algorithms and Data Structures
Brief description: Standard algorithms and strategies for organizing data, as used in general software development. [More...]
Prerequisites: SD, or consent of instructor
CS 263 -- ESD, Ethical Issues in Software Design
Brief description: Ethical and social considerations inherent in computing systems, focusing on actual extended case studies and practical models for ethical analysis. Builds on an "insider's" understanding of how software is developed (from SD). [More...]
Prerequisites: SD, or consent of instructor
Note: Proposed for [EIN] and [ORC]CS 276 -- PL, Programming Languages
Brief description: A study of typical features of computer programming languages, together with an ongoing project in which students build a programming language of their own that implements those features. [More...]
Prerequisites: SD and HD, or consent of instructor
CS 284 -- CSA, Client-Server Applications
Brief description: A study of the principles of modern client-server systems, including GUIs (graphics user interfaces), programming with networks, databases, and design of client and server programs, accompanied by a sizable team project that applies those principles. Languages: Java and SQL. [More...]
Prerequisites: SD, or consent of instructor
CS 273 -- OS, Operating Systems
Brief description: Design of computer operating systems, including process management, file systems, input/output, and memory management. Examines the Linux operating system in detail, including source code, as well as design of Windows; projects include modifications of the Linux kernel. [More...]
Prerequisites: SD and HD, or consent of instructor
CS 333 -- TC, Theory of Computation
Brief description: Examination of the theoretical foundations and limitations of computing, applicable to encryption and program design. Finite state automata, complexity, regular expressions, etc. [More...]
Prerequisites: MFC, or consent of instructor
Note: Counts as an elective in the Mathematics major.
Electives and advanced courses
CS 300 -- TOP, Topics in Computer Science
Brief description: Seminar in various topics in CS. [More...]
Prerequisites: Depends on topic.
CS 315 -- BI, Bioinformatics
Brief description: First offering of a team-taught interdisciplinary course in Bioinformatics; one of the profs is an expert from France. Offered in collaboration with Biology and with Biomedical Studies. See also Bioinformatics information page. [More...]
Prerequisites: CS1 and either SD or Biology 125, or consent of instructor. Different people will be bringing different training, interests, and abilities to this interdisciplinary course---we hope for a balance of CS and non-CS students.
Note: This course also counts towards Biology Major, Mathematics Major (applied course), CS Major, CS Concentration, and Molecular Biology Concentration. (!)CS 336 -- LP, Logic Programming
Brief description: Exploring a type of programming that is heavily used in Artificial Intelligence. [More...]
Prerequisites: ADS or PL, or consent of instructor
CS 350 -- ATP, Advanced Team Project
Brief description: Team projects, usually with an interdisciplinary emphasis. [More...]
Prerequisites: SD
CS 390 -- CAP, Senior Capstone Seminar
Brief description: "Capstone" integrative experience, including an interdisciplinary team project. [More...]
Prerequisites: Senior CS major
Note: Satisfies [WRI].
