Upcoming Courses



Interim 2009
Spring 2009

Here are the CS courses that will be offered in Interim and Spring 09. All courses satisfy requirements for the CS major; other ways they can be used are indicated below. For more information, check with Dick Brown (rab@stolaf.edu, SC 312, x3860) or see the CS website www.cs.stolaf.edu

Interim 2009

CS 300, Topics: Parallel Computing Systems [TOP]

Beowulf clusters, distributed computing, MPI, Map-Reduce/Hadoop and webscale computing... What are all of these things, and why are these topics so "hot" right now? These are some of the same techniques that Google and Yahoo! use to provide incredibly fast and thorough search engines, or that researchers use to explore high-performance scientific computing. CS 300 will give an introduction to the concepts and techniques of parallel computing systems, providing both the big-picture ideas and some hands-on experience, then finishes with a team project that gives you a chance to apply these techniques to a realistic problem of your own.

Prerequisite: CS 251 or CS 225, or permission of instructor. Instructor: Brown

Spring 2009

CS 121, Principles of Computer Science [CS1]

The standard introductory course in CS. We survey the fundamental concepts of computer science, with hands-on programming assignments on our unique Scheme-powered wiki system. There are applications to web pages, sounds and music, graphics and drawing, and a final team animation project that can be uploaded as your own YouTube video! We're offering three sections this term at different times.

Prerequisites: None. Also satisfies: MAR/AQR. Instructors: Allen, Hall-Holt, Woo

CS 231, Mathematical Foundations of Computing [MFC]

This is really a Mathematics course---it counts towards a Mathematics major (elective) as well as including the mathematics necessary for a CS major. (Mathematics students: Think of this as a gentle introduction to proofs, something you might take before ERA or Abstract.)

Prerequisites: CS 121 or permission of instructor. Also satisfies: MAR/AQR, Math major elective, Linguistics elective. Instructor: Brown

CS 251, Software Design and Implementation [SD]

If you're interested in knowing how to build software, this is the course for you. Students learn the powerful and widely used C++ language---a skill you can write down on your resume---and learn standard software development practices that are used by most software companies. You apply those methods in a final team project. Requires the .25 credit lab course, CS 252, to be taken at the same time.

Prerequisites: CS 121 or permission of instructor. Instructor: Hall-Holt

CS 263, Ethical Issues in Software Design [ESD]

St. Olaf integrates ethics throughout the CS curriculum, including this course in computing ethics, because the ways that computers are programmed and used has a huge impact on real people. Besides becoming aware of these ethical issues (such as quality of life, intellectual property, accessibility for all as well as security, privacy, reliability), this course applies those concepts to a real software system. Teams of students carry out structured ethical analyses of those system throughout the term.

Prerequisites: CS 251 or permission of instructor. Also satisfies: EIN, ORC Instructor: Brown

CS 333, Theory of Computation [TC]

TC (like MFC) is actually a Mathematics course. The topic is about the theoretical possibilities and limitations of computing. Starting with a mathematical definition of language, we come to conclusions about what can and cannot be computed, and about how quickly various computations can be carried out. There are loads of practical applications to computing, ranging from language translation to pattern matching and general algorithm development.

Prerequisites: CS 231 or sufficient mathematical experience. Also satisfies: Mathematics major elective, Linguistics elective. Instructor: Richey

CS 336, Logic Programming [LP]

Logic programming is a widely used paradigm for programming, in which one provides "if-then" rules for a computation, then has an "inference engine" program deduce the targets of that computation. This "theorem proving" approach is quite practical for many kinds of problem, such as artificial intelligence, computer algebra and geometry systems, and other areas where the final approach is not known in advance.

Prerequisites: CS 253 or 276, or permission of instructor. Also satisfies: Linguistics elective. Instructor: Allen