Computer Science
CALENDAR  |  NEWS  |  PEOPLE  |  A-Z  |  HOME
 
Teaching wiki
Computer Science
Program description
Academics
People
Activities
Beyond St. Olaf
Direct links
Why CS at St. Olaf?
CS Talks
Courses
CS Advising Information
Internships

Computer Science Program
Department of Mathematics, Statistics, and Computer Science
Old Music Hall
St. Olaf College
Northfield, MN 55057-1098
(507) 646-3113
(507) 646-3116 FAX
cs@stolaf.edu

Richard Brown, Director
cs-director@stolaf.edu

Donna Brakke,
Academic Administrative Assistant
brakke@stolaf.edu


 

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) (*)
Theory of Computation (TC) (*)
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)
Bioinformatics (BI) (*)
Logic Programming (LP) (*)
AP_title (AP)
Senior Capstone Seminar (CAP) (*)

Individual course descriptions

General comments

  • Course numbers are changing effective Spring 2004. So, both old and new numbers are listed below for existing courses. We will refer to courses by their abbreviations (e.g., CS1 or SD) rather than their numbers.

  • 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)


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 curriculum: Computer 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:
    • 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
  • Prerequisites: CS1. Students with especially strong or especially weak mathematical skills should check with the instructor..
  • General Education: None.
  • Role in major requirements: [MAR/AQR]; may be offered for [WRI].
  • 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 and calculus, or consent of 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. The calculus prerequisite is a level requirement; the course does not use the content of calculus directly.

Hardware Design (HD)

  • Course number: CS 241
  • Status: Offered each Fall
  • Prerequisites: CS1.
  • General Education: None.
  • Role in major requirements: Foundation course.
  • Knowledge units: AR1 AR2 AR3 AR4 AR5 AR6 AR7 AR8 AR9 PL2
  • Revised model curriculum: Computer 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:
    • We changed the title of this course (from Computer Organization, for CS 274 in the existing numbering) to identify a balance between Computer Science principles, mathematics, hardware and software among the introductory courses and to emphasize that this course (unlike SD, Software Design and Implementation) considers design principles without providing direct hardware implementation experiences.

Software Design and Implementation (SD)

  • Course number: CS 251
  • Status: Offered each Spring semester.
  • Prerequisites: CS1.
  • 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
  • Prerequisites: SDL.
  • 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.

Theory of Computation (TC)

  • Course number: CS 333
  • Status: Offered alternate years in the Spring. Next offering Spring 2009.
  • Prerequisites: MFC.
  • General Education: None.
  • Role in major requirements: Core course.
  • Knowledge units: AL5 AL6 AL7 AL9
  • Revised model curriculum: Foundations 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.

Algorithms and Data Structures (ADS)

  • Course number: CS 253
  • Status: Offered each Fall semester.
  • Prerequisites: SD (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.
  • Prerequisites: SD (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
  • Prerequisites: SD (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 2008.
  • Prerequisites: SD (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 curriculum: Programming 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 2008.
  • Prerequisites: SD (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 curriculum: Sequential 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 2009 (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:

    Recent and planned topics include parallel algorithms (Interim 2009), computer graphics, relational database systems, artificial intelligence, mathematical computing. Prerequisites depend on topic; they typically include SD (or CS1+ and another course.

  • Descriptions for example topics:
    • Parallel Algorithms
      • Prerequisites: SD.
      • General Education: None.
      • Knowledge units: AL4, AL11, AR2, AR7, AR9, OS3, NC1, SE12, CN1, CN4
      • Brief description

        Design and implementation of parallel algorithms. This course starts with an introduction to principles of parallel algorithms, then develops depth in the topics of distributed computing and high-performance computation. Exercises and projects make use of St. Olaf's Beowulf clusters, and will build on the particular interests and experience students in the class.

    • Database Systems
      • Prerequisites: ADS.
      • General Education: None.
      • Knowledge units: IM4 IM5 IM6 IM7 IM9
      • Brief description

        A survey of database systems at levels ranging from SQL users and database administrators to design and implementation of database management systems (DBMS). The relational model, relational queries the SQL database query language, logical and physical database design, relational algebra and calculus, disk and file organization, indexing, query evaluation, security, transaction processing, crash recovery.

  • Comments:
    • Frequently offered TOP topics may ultimately become independent courses offered in alternate years, following the pattern of OS.

Logic Programming (LP)

  • Course number: CS 336
  • Status: Offered alternate years in the Spring. Next offering Spring 2008.
  • Prerequisites: ADS 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 2008.
  • Prerequisites: Two or more core courses, 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: Two or more core courses, 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 curriculum: Project
  • 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:


       Feedback We'd love to hear from you: inquiries, corrections, broken links, comments, suggestions---whatever! Send e-mail to cs@stolaf.edu.


Previous page St. Olaf Computer Science home page Next page
Description of the CS program
Academics:  courses, advising, major requirements, etc.
Courses
Listing of CS courses
People involved in the program:  faculty, students, others
Projects, events, etc.
External connections:  internships, jobs, St. Olaf hiring, etc.