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)
-
- Course number: CS 121
- Status:
Offered each Fall and Spring and often in Interim.
- Prerequisites: None.
- General Education: [MAR/AQR].
- Role in major requirements:
Foundation course.
- Knowledge units:
PF1 PF2 PF3 PF4 PL7 SE10
- Revised model curriculum: Computer Science I
- Description:
A survey of fundamental concepts of
Computer Science through an interactive
exploration of the Scheme programming language,
organized around three
approaches to computer programming: functional, imperative
and object-oriented programming. Topics covered
include problem-solving and algorithm
development, basic data structures, programming style and
documentation, recursion, iteration and loop
invariants, elementary algorithm analysis, concepts of
object-oriented programming and applications.
Prerequisites: none.
- Comments:
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. |
|
|
|