Computer Science Curriculum

Pedagogical philosophy

Broadly speaking, the CS program’s pedagogical philosophy is to support the inquiry of students in contexts that make sense to them.  Students learn well by working together on team projects. The abstract concepts of computer science are more compelling when they advance some goal that is shared by a group of peers, and where abstractions are connected to accessible artifacts.

In the early courses of the curriculum, projects are often small, enabling a student or team to verify or correct their understanding of a fundamental concept quickly.  The end of the Software Design course marks the first extensive team project, comprising the final third of the course.  On reflection, many students have described this project as a defining moment, where they prepare themselves to invest in other team project experiences throughout the curriculum.

In the middle of the curriculum, students plunge into areas that require more background.  Here they become acquainted with standard core topic areas in computer science, such as algorithms, systems, languages, and theory, which they will need to take on projects with more impact. At St. Olaf, we include computing ethics among the required core topics, focusing on a practical method of socio-technical analysis.

The upper-level curriculum includes the Senior Capstone — a one-semester course that features a modest team research project, an ethical analysis of that project, and multiple forms of communication about students’ work throughout the project.

Together, the determination and creativity of our students, combined with specific knowledge of the faculty in their respective research areas, help to create an effective learning community.

CS major

The major begins with foundation courses that present fundamental skills and an introduction to CS problem solving through hands-on experience. The foundation and subsequent core courses are intended to span many of the expectations for an undergraduate computer science major curriculum set forth in the ACM/IEEE 2013 guidelines, and advanced courses and electives provide options for depth. Several themes appear throughout the major: breadth-first introductory courses; team collaboration (often interdisciplinary) and project-based learning; development of communication skills; thoughtful, structured analysis of ethical and social issues in computing; and undergraduate research, beginning with project-building skills in early courses and continuing through advanced experiences such as the CSCI 390 Senior Capstone Seminar.

A student arranges for a computer science major by completing an individual plan in consultation with a computer science faculty member or CS program director.

“New” CS major (Class of 2025 and beyond)

Note: Class of 2023 and 2024 students may also choose to pursue the “new” major under certain circumstances.

Required CS courses (6 courses):

  • Introductory course in CS (either 121 or 125) or prior relevant experience,
  • Introduction to Data Structures in C++ (CSCI 221),
  • Hardware Design (CSCI 241),
  • Software Design (CSCI 251),
  • Ethical Issues in Software Design (CSCI 263),
  • Analysis of Algorithms (CSCI 353).

Required mathematics courses (2 courses):

  • Linear Algebra (MATH 220),
  • Discrete Mathematical Reasoning (MATH 234).

Upper-level electives (3 courses):

“Old” CS major (Class of 2024 and prior)

Foundations (5 courses):

  • Introductory course in CS (either 121 or 125) or prior relevant experience,
  • Linear Algebra (MATH 220), and a subsequent proofs course,
  • Hardware Design (CSCI 241), and
  • Software Design (CSCI 251) and its accompanying lab (CSCI 252).

Core courses in standard CS topics (4 courses):

  • Algorithms and Data Structures (CSCI 253),
  • Ethical Issues in Software Design (CSCI 263),
  • a language course (one of CSCI 276, 379, 333, or 336),
  • a systems course (one of CSCI 273, 284, or 300-topics course in PDC).

Electives (2 courses):

  • can include second courses in language or systems,
  • a level III topics course (such as Robotics), or
  • courses from outside of CS including a physics course (Electronics), a math course (Computational Geometry), and an MSCS course (ADM); and

Capstone (1 course):

  • the senior-level capstone integrative experience.