Listing of CS courses

Index

Note: New courses are indicated with an asterisk (*)

Principles of Computer Science (CS1)
Accelerated Principles of Computer Science (CS1+) (*)
Mathematical Foundations of Computing (MFC) (*)
Hardware Design (HD)
Software Design and Implementation (SD)
Software Design and Implementation Lab (SDL) (*)
Algorithms and Data Structures (ADS)
Ethical Issues in Software Design (ESD) (*)
Operating Systems (OS)
Programming Languages (PL)
Client-Server Applications (CSA) (*)
Topics in Computer Science (TOP)
Topics: Parallel and Distributed Computing (PDC) (*)
Bioinformatics (BI) (*)
Theory of Computation (TC) (*)
Logic Programming (LP) (*)
Advanced Team Project (ATP) (*)
Senior Capstone Seminar (CAP) (*)
Power Computing in All Disciplines (HiPerCiC)

Individual course descriptions

General comments

  • The “knowledge units” cited below refer to specific disciplinary recommendations in Computing Curricula 2001, the most recent joint undergraduate curricular recommendations of the professional societies for Computer Science (CS). Knowledge units beyond the minimum recommended for a CS major appear in slanted font.
  • The “revised model curriculum” designation refers to Walker and Schneider, A revised model curriculum for a liberal arts degree in Computer Science, Communications of the ACM, December 1996.
  • All courses are 1.0 St. Olaf credit unless indicated below.

Principles of Computer Science (CS1)


Power Computing in All Disciplines (HiPerCiC)
  • Course number: IS 201
  • Status: Offered in Spring 2011 and Spring 2012.
  • PrerequisitesSD for CS students; prerequisites for non-CS students determined by instructor and faculty collaborators..
  • General Education: [WRI].
  • Role in major requirements: Elective.
  • Knowledge units: (for CS students) PF5 NC1 NC2 NC5 HC1 HC2 HC4 HC5 HC6 HC8 IM1 IM2 IM3 SP2 SE4 SE7 SE9 CN1 CN4
  • Revised model curriculum: Elective
  • Description:A project-based course in which interdisciplinary teams create web-based software systems that each provide a convenient user interfaces to high-performance computations of interest to students and faculty in an application area. Teams will be co-supervised by a CS professor and a professor in another discipline; CS students will implement the software in consultation with non-CS students and faculty, using the HiPerCiC (High-Performance Computing in the Classroom) framework; non-CS students will study the role of CS and high-performance computing in society; and all students will study project management practices.
  • Comments:
    • Offered through the Center for Interdisciplinary Studies.

Accelerated Principles of Computer Science (CS1+)
  • Course number: CS 225
  • Status: Offered by arrangement in the Fall.
  • Prerequisites: Advanced placement or substantial prior programming experience in C++ language, or consent of instructor.
  • General Education: [MAR/AQR].
  • Role in major requirements: Foundation course.
  • Knowledge units: PF1 PF2 PF3 PF4 OS5 PL6 PL7 SE1 SE3 SE4 SE5 SE7 SE8 SE10 SP3 (union of knowledge units for CS1 and SD)
  • Revised model curriculumComputer Science I and II
  • Description:An accelerated course accomplishing the combined goals of CS1 and SD, for students with sufficient prior C++ programming skills. Includes a weekly laboratory meeting and a team project experience. Prerequisites: Advanced placement or substantial prior programming experience in C++ language, or consent of instructor.
  • Comments:
    • Offered through Fall 2008.
    • This course addresses the needs of students who have substantial programming experience in C++ or Java prior to enrolling at St. Olaf, such as students with Advanced Placement credit. The material of CS1 is new to these students, both in terms of concepts and programming language; however, such students can master this material more quickly than beginners. Also, these students do need little or none of the introduction to C++ programming included in SD, although they have not had the team project experience and exposure to ethical considerations that appears in that course. CS1+ serves such students by exploring CS1 material at approximately double pace, then treating C++ briefly and turning to a team project in the style of SD.

Mathematical Foundations of Computing (MFC)
  • Course number: CS 231
  • Status: Offered each Spring
  • PrerequisitesCS1. Students with especially strong or especially weak mathematical skills should check with the instructor..
  • General Education: [MAR/AQR]; may be offered for [WRI].
  • Role in major requirements: Foundation course.
  • Knowledge units: DS1 DS2 DS3 DS4 DS5 DS6 AL5
  • Revised model curriculum: compare to Discrete Mathematics
  • Description:A presentation of mathematical topics that form an essential background for the study of Computer Science. Functions, relations, basic logic, predicate calculus and formal reasoning, verification of programs, proof techniques, basics of counting, graphs and trees, discrete probability, introduction to computability. Prerequisites: CS1. Students with expecially strong or especially weak mathematics backgrounds are encouraged to check with the instructor.
  • Comments:
    • The goal for MFC is to create a sufficient prerequisite for TC (and revisions to ADS). This goal is accomplished in part by taking advantage of the mathematical reasoning skills developed in CS1 (or CS1+), particularly those involving verification of programs.
    • MFC includes a gentle introduction to mathematical proofs. Mathematics majors can use the course as a “warmup” for transition courses Math 244 and Math 252.
    • MFC counts towards the Mathematics major as well as the CS major.

Hardware Design (HD)
  • Course number: CS 241
  • Status: Offered each Fall
  • PrerequisitesCS1.
  • General Education: None.
  • Role in major requirements: Foundation course.
  • Knowledge units: AR1 AR2 AR3 AR4 AR5 AR6 AR7 AR8 AR9 PL2
  • Revised model curriculumComputer Organization and Architecture
  • Description:A structured descriptive survey of the organizational principles of computer hardware, emphasizing tradeoffs among architectural choices and representative examples. Virtual machines, overview of computer organization, forms of parallelism, machine-level representation of data, memory organization, digital logic, functional organization, microprogrammed and RISC architectures, performance enhancements and alternative architectures, assembly level machine organization and programming, architecture of networks and their protocols. Prerequisites:CS1, or consent of instructor.
  • Comments:
    • Newly expanded emphasis on understanding of machine-level implementation of standard features of five popular programming languages, beginning in Fall 2010.
    • Exposure to multicore programming included, beginning in Fall 2010.
    • This course is an entry point to the major for students with advanced placement in computer science.

Software Design and Implementation (SD)
  • Course number: CS 251
  • Status: Offered each Spring semester.
  • PrerequisitesCS1.
  • General Education: None.
  • Role in major requirements: Foundation course.
  • Knowledge units: SE1 SE3 SE4 SE5 SE7 SE8 SE10 OS5 PL6 SP3
  • Revised model curriculum: intersects with Computer Science II
  • Description:An introduction to the structure and creation of computer software, using C++ programming language and emphasizing object-oriented programming and software lifecycle methodology. Includes a weekly laboratory. Concepts and skills are applied in a team project based on the “waterfall model” of software development. Object-oriented programming, specification, high-level memory management, indirect addressing, formal methods, tools including UML, team software process, requirements analysis, software design strategies, elementary ethical analysis of software systems. Prerequisites: CS1, or consent of instructor.
  • Comments:
    • Must be taken together with the laboratory SDL: sign up for SD and for one section of SDL in the same semester.
    • The combination of CS1 and this course constitutes a two-term introduction to Computer Science that includes a survey of disciplinary principles, a solid foundation in computer programming (in two contrasting programming languages), participation in a team project based on sound software development methods, consideration and elementary analysis of ethical and social issues in computing, satisfying multiple general education requirements. This combination functions as a service sequence for students in other majors who may seek an introductory background in Computer Science for application to computing projects or out of general personal interest. If you intend to take two CS courses, CS1 and SD provide the best balance of concepts, practical skills, and insight into the world of computer software. See the reasons to take SD for more information.
    • Besides serving non-majors, SD also opens the most doors for further study in CS. See prerequisites for the courses below.
    • Planning note: This course doesn’t introduce as many new ways of thinking as CS1, but learning to program well requires a lot of “time on task” for homework and assignments related to the separate laboratory meeting. Be sure to allow for this extra time demand in schedule planning.

Software Design and Implementation Lab (SDL)
  • Course number: CS 252
  • Status: Introduced as a separate course Spring 2005
  • Credit: 0.25
  • PrerequisitesSDL.
  • General Education: None.
  • Role in major requirements: Foundation course.
  • Knowledge units: See SD
  • Revised model curriculum: See SD
  • Description:Students investigate the implementation of software using strategies and concepts presented in SD, explore standard technologies for creation and management of multi-module software systems and carry out stages of a life cycle-based team software project, through hands-on computational exercises and with direct support provided in a small group context. Prerequisite: concurrent registration in SD.
  • Comments:
    • Required laboratory for SD: sign up for SD and for one section of SDL in the same semester.

Algorithms and Data Structures (ADS)
  • Course number: CS 253
  • Status: Offered each Fall semester.
  • PrerequisitesSD (or CS1+).
  • General Education: None.
  • Role in major requirements: Core course.
  • Knowledge units: AL1 AL2 AL3 AL8 NC7
  • Revised model curriculum: overlaps with Computer Science II and Sequential and Parallel Algorithms
  • Description:A study of standard data structures and algorithms with emphasis on implementation experience and complexity analysis. Algorithmic strategies, fundamental computer algorithms, stacks, queues, lists, trees, hash tables, specialized trees (e.g., binary, AVL, B-trees), heaps and priority queues, compression and decompression. Prerequisites: SD or CS1+, or consent of instructor.
  • Comments:
    • The description above refers to the existing course CS 372. In future offerings, emphasis on algorithm analysis will gradually increase. Beginning in 2005-06, MFC or comparable mathematical background will become an additional prerequisite to support this change.

Ethical Issues in Software Design (ESD)
  • Course number: CS 263
  • Status: Offered each Spring.
  • PrerequisitesSD (or CS1+).
  • General Education: [ORC], [EIN].
  • Role in major requirements: Core course.
  • Knowledge units: SP1 SP2 SP3 SP4 SP5 SP6 SP7 SP8 SP9 HC1
  • Revised model curriculum: not required
  • Description:An exploration of ethical and social considerations inherent in computer software systems, focusing on actual extended case studies and practical models for carrying out ethical analyses. History and social context of computing, methods and tools of analysis, professional and ethical responsibilities, risk and liabilities of computer-based systems, intellectual property, privacy, computer crime, economic issues in computing, foundations of human-computer interaction. Prerequisites: SD or CS1+, or consent of instructor.
  • Comments:
    • While other courses in the curriculum raise general awareness of ethical and social concerns in computing and may involve elementary analysis of ethical impact, this course examines such issues more formally and in depth. The CS1+/SD prerequisite not only takes advantage of the introduction to ethical and social matters present in those courses, but also enables more extensive exploration of those issues, since students are knowledgeable about the practice and methodologies of team software development.
    • This course carries [ORC] and [EIN] general-education credit. To receive the [EIN] credit for CS 263, the [BTS-T] requirement must be satisfied before or during the term in which you take CS 263.

Operating Systems (OS)
  • Course number: CS 273
  • Status: Offered alternate years in the Fall. Next offering Fall 2009
  • PrerequisitesSD (or CS1+) and HD (HD may be taken concurrently with OS).
  • General Education: None.
  • Role in major requirements: Core course.
  • Knowledge units: OS1 OS2 OS3 OS4 OS5 OS6 OS7 OS8 OS12
  • Revised model curriculum: overlaps with Sequential and Parallel Algorithms; elective
  • Description:A study of the features of modern operating systems, including detailed examination of Linux and other example systems. Projects range from system-level programming to kernel modifications. Operating system principles, implementation as system calls, process scheduling and dispatch, inter-process communication, low-level memory management, device management, file systems, security and protection mechanisms, scripting. Prerequisites: HD and either SD or CS1+, or consent of instructor.
  • Comments:

Programming Languages (PL)
  • Course number: CS 276
  • Status: Offered alternate years in the Spring. Next offering Spring 2010.
  • PrerequisitesSD (or CS1+) and HD.
  • General Education: None.
  • Role in major requirements: Core course.
  • Knowledge units: PL1 PL3 PL4 PL5 PL8 PL9 PL10 PL11
  • Revised model curriculumProgramming Languages and Systems
  • Description:An implementation-oriented examination of features commonly found in computer programming languages. Students construct their own interpreters for an example programming language incorporating the various language features they study throughout the course. Programming language semantics, programming language translation, implementation of control structures and memory structures, abstraction mechanisms, language translation systems, types. Prerequisites: HD and either SD or CS1+, or consent of instructor.
  • Comments:

Client-Server Applications (CSA)
  • Course number: CS 284
  • Status: Offered alternate years in the Fall. Next offering Fall 2010.
  • PrerequisitesSD (or CS1+).
  • General Education: None.
  • Role in major requirements: Core course.
  • Knowledge units: PF5 AL4 OS3 OS4 NC1 NC2 NC3 NC4 HC2 GV1 GV2 IM1 IM2 IM3 IM12 SE2 SE6
  • Revised model curriculumSequential and Parallel Algorithms
  • Description:A survey of the technologies represented in networked software systems that include graphics user interfaces (GUIs) and databases (DBs) based on the client-server model, with a team project to design and build such a system for an interdisciplinary application. Graphics user interface (GUI) systems, designing and building GUI applications, event-driven programming, using APIs, use of database systems via query languages, embedded queries, data modeling, models and design of client-server systems, concurrency, communication and networking, creation of network-based applications, network security, team programming methodologies, ethical analysis. Prerequisites: SD or CS1+, or consent of instructor.
  • Comments:
    • The project in this course uses “agile” software design methods.
    • This course incorporates a wide variety of topics required in Computing Curricula 2001 that were absent in earlier undergraduate curriculum recommendations. The team project provides a focal point for this course, unifying many disjoint topics into a cohesive whole.

Topics in Computer Science (TOP)
  • Course number: CS 300
  • Status: Offered alternate years in the Interim. Next offering Interim 2011 (Parallel Algorithms)
  • Prerequisites: varies, always including SD (or CS1+).
  • General Education: None.
  • Role in major requirements: Elective course.
  • Knowledge units: Variable, depending on the topic involved.
  • Revised model curriculum: elective
  • Description:Current topic is Parallel and Distributed Computing (PDC, Spring 2013). Prerequisites depend on topic; prerequisite for PDC is SD.
  • Descriptions for example topics:
    • Topics: Parallel and Distributed Computing
      • PrerequisitesSD.
      • General Education: None.
      • Knowledge unitsAL4, AL11, AR2, AR7, AR9, OS3, NC1, SE12, CN1, CN4
      • Brief descriptionDesign and implementation of parallel computing systems. This course starts with an introduction to principles of parallel algorithms, then develops depth in the topics of distributed computing and high-performance computation, including MPI and map-reduce computing. Exercises and projects make use of St. Olaf’s Beowulf clusters and “manycore” computers, and will build on the particular interests and experience students in the class.
  • Comments:
    • Frequently offered TOP topics may ultimately become independent courses offered in alternate years.

Bioinformatics (BI)
  • Course number: CS 315
  • Status: Offered alternate years in the Spring. Next offering Spring 2010.
  • PrerequisitesCS1 and one of SD, Bio 125, or Mathematics major.
  • General Education: NST-B.
  • Role in major requirements: Elective course.
  • Knowledge units:
  • Revised model curriculum: elective
  • Description:This course provides an introduction to the field of bioinformatics. Topics will include sequences of DNA and RNA and the “central dogma;” comparing sequences, predicting sequences, predicting species; computational techniques such as substitution matrices, sequence databases, dynamic programming; and bioinformatics tools such as FASTA and BLAST. Programming in Perl language will be introduced and used in the course. Besides presentations on bioinformatics, breakout sessions will give additional CS background to biology students, and additional biology background to CS students. Coursework will include team projects in interdisciplinary groups of four. Prerequisites: CS1 and one of SD, Bio 125, or Mathematics major, or consent of instructor.
  • Comments:
      Counts towards CS major, Mathematics major, Biology major, and Biomolecular Science concentration.

Theory of Computation (TC)
  • Course number: CS 333
  • Status: Offered alternate years in the Spring. Next offering Spring 2011.
  • PrerequisitesMFC.
  • General Education: None.
  • Role in major requirements: Core course.
  • Knowledge units: AL5 AL6 AL7 AL9
  • Revised model curriculumFoundations of Computing
  • Description:A study of formal languages, automata and other topics concerned with the theoretical basis and limitations of computation. Automata theory including regular languages and context-free languages, computability theory, complexity theory including classes P and NP, cryptographic algorithms. Prerequisites: MFC, or consent of instructor.
  • Comments:
    • Although the “revised model curriculum” strongly recommends a course such as this, Computing Curricula 2001 deemphasizes this purely theoretical material, largely in favor of concepts surrounding the technologies behind contemporary web-based applications, which are presented in CSA. This major proposal offers both courses as core options, thus representing each viewpoint without increasing the number of required courses while giving students choices according to their interests.

Logic Programming (LP)
  • Course number: CS 336
  • Status: Offered alternate years in the Spring. Next offering Spring 2011.
  • PrerequisitesADS or PL.
  • General Education: None.
  • Role in major requirements: Elective course.
  • Knowledge units: IS1 IS2 IS3 IS4 IS5
  • Revised model curriculum: elective
  • Description:Students learn a style of programming based on first order predicate logic. Topics include declarative programming, Horn clauses, declarative and procedural semantics of logic programs, relations clauses, goals, backtracking, and resolution. Programming projects and exercises use Prolog, the most significant logic programming language. Additional topics include the relationship of Prolog to logic and applications to artificial intelligence. Prerequisites: ADS or PL or permission of instructor.
  • Comments:


Advanced Team Project (ATP)
  • Course number: CS 350
  • Status: Offered alternate years in Interim. Next offering Interim 2010.
  • Prerequisites: One CS core course with implementation, or permission of instructor.
  • General Education: None.
  • Role in major requirements: Elective course.
  • Knowledge units: Variable, depending on the project involved.
  • Revised model curriculum: elective
  • Description:Team research and/or development project (typically 3-4 students per team), including full documentation of all stages of project planning with review and revision conducted using an established software development methodology. A research paper, poster, etc., on the results will ordinarily be produced. Projects frequently are interdisciplinary in nature, in consultation with faculty and/or students in other fields and taking advantage of the particular backgrounds of team members. Prerequisites: One core course in CS with implementation, or consent of instructor.
  • Comments:

Senior Capstone Seminar (CAP)
  • Course number: CS 390
  • Status: Offered every Fall.
  • Prerequisites: Major in Computer Science, ordinarily with senior standing, together with completion or concurrent enrollment in the four required core courses; or consent of instructor.
  • General Education: [WRI].
  • Role in major requirements: Capstone course.
  • Knowledge units: Variable, depending on the project involved.
  • Revised model curriculumProject
  • Description:Class members will participate in a team research project, including full documentation of all stages of project planning with review and revision and a thorough ethical and social impact analysis, and all will contribute to the production of one or more papers, posters, etc., on the results. Projects will frequently be interdisciplinary in nature, in consultation with faculty and/or students in other fields and taking advantage of the backgrounds of the seniors themselves. Prerequisites: Major in Computer Science, ordinarily with senior standing, together with completion or concurrent enrollment in the four required core courses; or consent of instructor.
  • Comments: