- Computer Science Placement – For incoming students in the Fall; serves both students and academic advisers.
- Planned offerings of CS courses – forecasts which courses we intend to offer when, several terms in the future, for long-term planning.
- All about CS courses…
- CS courses web page – starting point for course information on the CS web site.
- Overview of CS courses – brief descriptions of all the courses, with a diagram indicating how they all fit together.
- CS section in the St. Olaf Academic Catalog
- St. Olaf Class and Lab Schedule
- Full listing of CS courses – details about each course.
Up next — some coming CS courses:
- CS 241, Hardware Design (HD)
- Spotlight on CS 251, Software Design and Implementation (SD)
- CS 284, Mobile Computing Applications (MCA) (formerly Client-Server Applications)
- CS 300, Topics: Parallel and Distributed Computing (PDC) (formerly Topics: Parallel Computing Systems)
- CS 336, Logic Programming (LP)
- IS 201, Power Computing in All Disciplines/HiPerCiC (HPCC)
- The quick guide to CS advising – a summary of the standard advice.
- To double, or not to double… – Which combinations of CS courses work well taken in the same term, and why.
The Quick Guide to CS Advising
The items below summarize the most important things to know about CS advising, whether you’re a student or an advisor.
- Computer Science (CS) is not the same as programming. CS focuses on the concepts, design, and practices behind computing systems. We use programming as an investigative tool. CS students develop strong technical, programming, and communication skills because those skills are necessary to explore the concepts of computing in depth. Studying CS gives a person deeper understanding of computing systems (like knowing the truth behind what seem like magic tricks); CS informs a person about how to use computers more effectively, and equips a person to make better decisions about computing.
- The introductory course CS 121 (CS1) has no prerequisites. In particular, no prior experience with programming or computer science is necessary. The only requirement for CS1 is good college-level study skills—students need enough discipline to keep current with the daily work.The introductory course CS 125 (CSS) has no prerequisites, other than a comfort with mathematical ideas, and no prior programming or CS experience is necessary. This course focuses on applications to the natural sciences and mathematics, which requires comfort with mathematical ideas, but there are no direct mathematics prerequisites.
- CS 121 (CS1) and CS 125 (CSS) both provide a “hands-on” survey of the recurring concepts of CS, which relate to all forms of computing and remain relevant over time. CS1 and CSS are suitable as standalone courses for persons interested in a liberal-arts style survey of CS. Both courses satisfy the [AQR] graduation requirement.
- The three “second courses” in CS—CS 231 (MFC), CS 241 (HD), and CS 251 (SD)—may be taken in any order. Also, any of these “second courses” can serve as a final course in a satisfactory two-course introduction to CS, with emphasis on mathematics (MFC), hardware (HD), or software (SD).
- Math 232, Discrete Mathematics, counts the same towards prerequisites or a CS major as CS 231 (MFC). In fact, these two courses currently have the same content.
- CS 251 (SD) is the central course in CS at St. Olaf, because SD provides the software development background needed for further study in CS—the same background that is so valuable for computing-related careers and for interdisciplinary applications of CS. The combination of CS1-SD makes for a desirable two-course introduction to CS.
- CS 251 (SD) requires a lot of time, because developing good programming skills requires a great deal of practice. That’s why the combination of SD and its required lab CS 252 (SDL) receives 1.25 credits. Plan for the extra workload when choosing courses taken during the same term as SD.
- To keep your options open for a CS major, finish CS 251 (SD) by the end of your sophomore year, and CS 263 (ESD) by the end of your junior year. The latest possible start on a CS major would require CS 125 (CS1+) in the first term of the junior year, for those with prior C++ or Java programming experience. See the CS program director or Dick Brown to explore options for a CS major.
- CS 263 (ESD) explores the humanities and social-science aspects of CS. Ethical issues are inescapable in any substantial applications of computing. ESD includes a large-scale formal ethical analysis of a real computing system within its actual social setting.
- CS 263 (ESD) satisfies the [ORC] graduation requirement, and it satisfies [EIN] for those who have already completed [BTS-T]. (Note that [BTS-T] is a prerequisite for the [EIN] requirement.)
- St. Olaf’s CS courses are organized into three tiers. For terms offered, see the Planned offerings of CS courses page.
- Foundation courses: CS 121 (CS1), CS 125 (CS1+); CS 231 (MFC), CS 241 (HD), CS 251 (SD). “Breadth-first” introductory and intermediate courses. Major requires 3 or 4 (depending on placement).
- Core courses: CS 253 (ADS), CS 263 (ESD), CS 273 (OS), CS 276 (PL), CS 284 (CSA), CS 333 (TC). These have foundation courses as prerequisites. Together with the foundation courses, these span the discipline of Computer Science. Major requires 4 core courses as described elsewhere.
- Advanced courses: CS 300 (TOP), CS 315 (BI), CS 336 (LP), CS 350 (AP), CS 390 (CAP). These have core courses as prerequisites. Major requires CAP and 2 electives (either core or advanced).
- IS 201, Power Computing in All Disciplines (HPCC), counts as an elective for CS majors who have taken CS 251 (SD), and also satisfies WRI.This project-oriented course focuses on interdisciplinary applications of CS (using the HiPerCiC system), and is being offered in Spring 2012 and Spring 2013.Students with no prior CS can safely take IS 201. Those students make indispensable contributions to HiPerCiC-based interdisciplinary projects, and also pursue a project of their own related to other work in the course. Instead of teaching CS those students with knowledge of non-CS disciplines, we include them in a project team to give feedback and guidance to an interdisciplinary project. See Dick Brown for more information.
- CS 300, Parallel and Distributed Computing (PDC), counts as an elective in the CS major and satisfies the “Systems” core requirement for a CS major. This course, formerly called Parallel Computing Systems (PDC), has CS 251 (SD) as a prerequisite, and focuses on changes in computing (such as multi-core computing and cloud computing) that already affect both computing careers and daily life.
Doubling up on CS courses
Which combinations of CS courses go best together in a single term? This question’s answer depends on the person, of course… But we can make some suggestions based on contrasts among the content of St. Olaf’s CS courses.
- CS 231 (MFC) can be paired with just about any other CS course, because MFC’s mathematical content contrasts with just about any course for which MFC isn’t a prerequisite. Thus, for example MFC and CS 251 (SD) makes a good combination for most people: SD involves a lot of program implementation, and MFC is more focused on theory. MFC also balances well with other implementation-intensive courses, and with the ethics course CS 263 (ESD).
- CS 263 (ESD) can be paired with just about any other CS course that isn’t a prerequisite for ESD, because the ethics/social science emphasis of ESD contrasts with most other CS courses. ESD has a large team project, as do most implementation-oriented courses. However, ESD’s project focuses on ethical analysis, social-science methods, and communication skills, not on programming.
- CS 241 (HD) can be paired with most other CS courses, since it’s emphasis on hardware concepts and structures contrasts with other CS courses, and its programming expectations are moderate. For example, HD and CS 253 (ADS) are often taken together, and HD is a good fit with CS 284 (CSA). Also, HD may be taken as a co-requisite for CS 273 (OS) during the same term.
- The following courses have major emphasis on implementation projects:
- CS 253 (ADS)
- CS 273 (OS)
- CS 276 (PL)
- CS 284 (CSA)
- CS 300 (PDC)
- IS 201 (HPCC) – but only for CS majors with SD. (No programming or CS required for non-CS students)
- Less advanced students may wish to avoid taking more than one of these courses in the same term, while they are first developing their skills with programming-intensive projects.
Director of Computer Science
Olaf Hall-Holt (
firstname.lastname@example.org), RMS 201, x3996