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


CS1  CS 121, Principles of Computer Science [ brief | detailed ]
CS1+  CS 225, Accelerated Principles of Computer Science [ brief | detailed ]
HD  CS 241, Hardware Design [ brief | detailed ]
SD  CS 251, Software Design and Implementation [ brief | detailed ]
ADS  CS 253, Algorithms and Data Structures [ brief | detailed ]
ESD  CS 263, Ethical Issues in Software Design [ brief | detailed ]
OS  CS 273, Operating Systems [ brief | detailed ]
PL  CS 276, Programming Languages [ brief | detailed ]
MCA  CS 284, Mobile Computing Applications [ brief | detailed ]
TOP  CS 300, Topics in Computer Science [ brief | detailed ]
PDC  CS 300, Topics: Parallel and Distributed Computing brief | detailed ]
BI  CS 315, Bioinformatics [ brief | detailed ]
TC  CS 333, Theory of Computation [ brief | detailed ]
LP  CS 336, Logic Programming [ brief | detailed ]
ATP  CS 350, Advanced Team Project [ brief | detailed ]
CAP  CS 390, Senior Capstone Seminar [ brief | detailed ]
ID259  ID259, HiPerCiC Collaborative Web Applications [ brief | detailed ]

Foundation courses — Introductory

  • Notes:
  • CS 121 — CS1Principles 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 [AQR].
  • 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 [AQR]; proposed for [WRI].

Foundation courses — Intermediate

  • CS 241 — HDHardware 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, and machine-level implementation of popular high-level programming languages.[More…] Prerequisites: CS1 or CS1+, or consent of instructor
  • CS 251 — SDSoftware 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 — ADSAlgorithms 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 — ESDEthical 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 273 — OSOperating 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 276 — PLProgramming 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 — MCAMobile Computing Applications Brief description: Introduction to Java programming, SQL databases, and related technologies through hands-on experience creating Android apps. Includes a final team project. [More…] Prerequisites: SD, or consent of instructor
  • CS 333 — TCTheory 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 — TOPTopics in Computer Science Brief description: Seminar in various topics in CS, most recently in Parallel Computing Systems. [More…] Prerequisites: Depends on topic.
  • CS 300 — PDCTopics: Parallel and Distributed Computing  Brief description: Concepts, practical experience, and project with multicore, cluster, and map-reduce cloud computing. [More…] Prerequisites: SD.
  • CS 315 — BIBioinformatics 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 — LPLogic 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 — ATPAdvanced Team Project Brief description: Team projects, usually with an interdisciplinary emphasis. [More…] Prerequisites: One CS core course with implementation
  • CS 390 — CAPSenior Capstone Seminar Brief description: “Capstone” integrative experience, including an interdisciplinary team project. [More…] Prerequisites: Senior CS major Note: Satisfies [WRI].
  • ID 259– ID 259HiPerCiC Collaborative Web Applications Brief description: Creating custom software to support the research and/or teaching of professors in non-CS “domains” (disciplines) of application, using the HiPerCiC software framework. See also ID 259 information page[More…] Prerequisites: Consent of instructor. Different people will be bringing different training, interests, and abilities to this interdisciplinary course, which includes CS students with SD and domain students having no prior experience with CS. Note: This course satisfies [WRI], and counts as an elective in the CS Major.