Science encompasses both the theoretical and the practical
aspects of the study of computers and algorithmic processes.
Students majoring in computer science at Oberlin are prepared
both for further graduate studies in the discipline and
also for careers in the industries and businesses that actively
recruit computer scientists with a liberal arts background.
Computer Science at Oberlin is taught within the context
of a liberal arts degree, with emphasis on the lasting principles
of the discipline rather than on specific training in particular
tools and techniques. The CS Program stresses the fundamentals
of computer science while maintaining a highly current and
relevant curriculum utilizing state-of-the-art methodologies
addition to the major and minor in computer science the
department also offers an innovative minor in "Third Stream
Computing" which stresses computer application development
and information technology management in support of academic
majors other than traditional computer science. Some courses
in the Computer Science curriculum qualify for inclusion
in the Cognitive Sciences Concentration. More detailed information
about the Computer Science major and minors can be found
below and information about the Cognitive Sciences Concentration
can be found in that section of this course catalog.
Placement. Students who have received a score of 4 or
higher on the Advanced Placement AB examination in Computer
Science will be awarded four hours of Oberlin College credit.
Students seeking placement for established computer science
experience are encouraged to discuss their situation with
the Program Chair.
Course Sequence Suggestions. Students who wish to begin
their study of computer science will normally elect Computer
Science 150, the first course counted toward the major or
minor in computer science. Since the requirements for the
major in computer science are substantial, students planning
to major in the discipline are encouraged to begin their
course work as freshmen, taking Computer Science 150 and
151 during that year along with Mathematics 133 and 220.
who are interested in developing significant computer skills
but are not interested in computer science per se are advised
to start with one of the 100-level courses listed in the
section "Courses in Third Stream Computing."
Computer Science courses that are applicable to the major
are listed below in the section "Courses in Computer Science."
The major consists of 10 such courses, including Computer
Science 210, 275, 280, and 383 and at least three other
computer science courses numbered 300 or above. Private
Reading courses for fewer than three hours do not normally
count toward the major. Each Private Reading course that
is meant to count toward the major is subject to prior approval
by the CS faculty. In addition, a student is required to
successfully complete Mathematics 133, 220, and 232. Students
may substitute Mathematics 331 for one of the elective 300-level
computer science courses. More information about the Computer
Science major can be found on the CS Web server (http://www.cs.oberlin.edu/).
The Computer Science Program offers two minors, one in Computer
Science and one in Third Stream Computing.
that are applicable to the minor in Computer Science are
listed below in the section "Courses in Computer Science."
This minor consists of five such courses as specified below.
One of these courses must be at the 300 level.
minor in Third Stream Computing is especially designed for
students from all departments and programs in the College
who want to use computers as a tool in support of some academic
major other than computer science. It is meant primarily
for the student who is interested in developing significant
computer application development skills - particular web
site design and development skills - but who does not have
the time or desire to take the more technical and complex
course of studies needed for the computer science major.
"Third" in "third stream" comes from designating traditional
computer science per se as first stream and computer literacy
as second stream. Third Stream courses offer more substantial
computing skills than is usually the case with "second stream"
courses while not being as technically and mathematically
rigorous as with "first stream" courses.
Third Stream minor consists of 15 credit hours selected
from the courses listed below. Three of these courses (nine
hours total) are required: CSCI 100 or 101, 235, and 339.
The CSCI 100 or 101 requirement can be waived if the student
can demonstrate that he or she has learned a high level
A fourth course, CSCI 221, is also highly desirable, but
not required, of all students planning to take CSCI 339.
A student can transfer three to six additional credit hours
into the minor from another department or program (a) if
the instruction involved is computer intensive, (b) if it
is relevant to the student's area of expertise, and (c)
if the Computer Science Program approves the transfer. Three
credits earned in more advanced courses from the major curriculum
in computer science may also be transferred to the minor
with Program approval. Advanced Placement credit may be
applied to this minor in appropriate situations. More detailed
information on this minor is available from the Third Stream
WWW web site (http://www-ts.cs.oberlin.edu/) or from Mr.
Program. In the spring of the junior year, students
may apply for admission to the Computer Science Honors Program
by submitting a proposal for a project they will undertake
in their final year. Admission to the program will be based
on performance in classes as well as the quality and feasibility
of the proposal. Those admitted to the program will normally
elect three or four credit hours of independent work (Computer
Science 401) each semester under the direction of a faculty
supervisor. Both theoretical investigations and actual implementations
are appropriate as honors projects..
students take a comprehensive examination, with both written
and oral parts, at the end of the senior year. This examination
is normally administered by a scholar from outside the College
and is designed to test the candidate's mastery of undergraduate
Term. Some members of the computer science faculty will
be available during Winter Term to sponsor student projects.
Winter Term is an ideal time to learn new computer languages,
to work on major programming projects, or to approach areas
of computer science that are not covered by regular courses.
Students are encouraged to begin thinking about Winter Term
projects early in the fall semester.
Equipment. In addition to using the computer laboratories
maintained by the College Computing Center, the Computer
Science Program maintains two computer teaching labs of
its own in the King Building exclusively for the use of
CS students. Both of these labs feature late model Pentium-class
computers running both Linux and Windows operating systems.
Altogether there are 45 workstations in two labs, 25 in
one lab and 20 in the other. Students receive accounts on
the CS Program's Alpha 1200 5/400 Unix server and the CS
Program's NT servers thereby affording them complete access
to all College and CS networking services.
back to top
in Third Stream Computing
(Computing in the Liberal Arts)
required first course for the Third Stream minor is either
CSCI 100 or CSCI 101. One or the other of these courses is
prerequisite for CSCI 235. CSCI 115 Cryptology, CSCI 145 Computer
Based Approaches to the Analysis of Language and Literature,
and CSCI 157 Introduction to Graphics are offered on an occasional
Internet and Beyond 3 hours
hands-on course in Internet web site development. Primary
emphasis is on each person building a complex web site focused
on some area of academic interest and competence using (a)
the HTML mark-up language (b) programs supportive of web site
scripting language, with strong emphasis on the latter. About
CSCI 101 is required for the minor in Third Stream computing
and one or the other is prerequisite for CSCI 235. Preference
given to those intending to minor in Third Stream computing.
Enrollment Limit: 93.
1 CSCI-100-01 Tu 3:00-4:15 Mr. Koch Limit:
Introduction to Computers and Computing 3 hours
The course will cover server-client networks, database systems,
spreadsheets, web site creation, the use of a markup language
The students' lab assignments and final project will allow
them to explore these areas using Macintosh and/or Windows
computers and software. This course or CSCI 100 is required
for the minor in Third Stream computing and one or the other
is prerequisite for CSCI 235. Preference given to those intending
to minor in Third Stream computing. Enrollment Limit:
1 CSCI-101-01 TTh 1:30-2:45 Staff
221. Object-Oriented Computing 3 hours
Application Development 3 hours
Students learn multimedia application development in the
context of the Internet and web site development. Development
systems used will include, but not be limited to, Flash5,
Macromedia Director (emphasizing Lingo and digital video),
tools. Second of three required courses for the Third Stream
minor. Prerequisites: CSCI 100 or CSCI 101 and consent of
instructor. Preference given to those intending to minor
in Third Stream computing. Enrollment Limit: 62.
2 CSCI-235-01 Tu 3:00-4:15 Mr. Koch Limit:
3:00-4:15 Mr. Koch Limit: 31
4:20-5:35 Mr. Koch Limit: 31
Mind and Machine 3 hours
in Computer Application Development 3 hours
Course in advanced web site design and development. Focus
on database programming for web sites using Active Server
and client-side scripting. Capstone course for the Third
Stream minor. Prerequisites: CSCI 235 and Consent
of instructor required.
2 CSCI-339-01 W 7:00-9:30 p.m. Mr. Koch
back to top
Courses in Computer
368 Senior Laboratory and CSCI 386 Advanced Concepts in Programming
Languages are offered on an occasional basis. CSCI 299 Seminar:
Mind and Machine may be taken for credit towards the major
in Computer Science. The course description is under the Third
150, 151. Principles of Computer Science 4 hours
These courses introduce students to the design and implementation
of programs, algorithms, and data structures. State-of-the-art
object oriented techniques using design patterns and UML
diagrams are used to create large-scale programs that are
flexible, extensible, robust and correct. Students are introduced
to some of the most important and frequently used data structures:
arrays, vectors, lists, stacks, queues, trees, heaps, hash
tables and files. Other topics covered include analysis
of algorithm complexity, animations, simulations, multi-threading
and inter-computer communications. Students considering
a computer science major are strongly encouraged to take
these courses in their first year. Prerequisites:
CSCI 150 is a prerequisite for CSCI 151. Enrollment Limit:
Sem 1 CSCI-150-01 MWF 9:00-9:50 Staff
CSCI-151-02 M 1:30-4:30 Staff Limit: 25
CSCI-151-03 Tu 1:30-4:30 Mr. Salter Limit:
Organization 3 hours
introduction to computer architecture and assembly language
programming. This course describes the organization of computers
at the digital logic, register transfer, and instruction
set architecture levels. Emphasis is placed on the design
of a CPU and on the role of the CPU within a computer system.
The course will teach an assembly language using the computer
Sem 2 CSCI-210-01 MWF 2:30-3:20 Mr.
280. Algorithms, Structures and Abstractions 4
Taken in sequence, these two courses provide a one-year
introduction to intermediate and advanced topics in computer
science, including functional programming (higher-order
functions, recursive data structures and recursive algorithms);
imperative programming (state, mutable data structures and
imperative algorithms); objects, classes and templates;
type systems; procedural, data and control abstractions;
basic algorithmic analysis; advanced data structure design.
Prerequisites: CSCI 151 or consent of the instructor.
Co-requisite: MATH 220.
Sem 1 CSCI-275-01 MWF 10:00-10:50 Mr. Karro
Programming Languages 3 hours
This course will address advanced topics in programming
languages, including a survey of different programming paradigms
(functional, imperative, logic, etc.), the theory of data
types, and semantic models (operational, axiomatic and denotational).
The course will include significant hands-on experimentation
(i.e. programming) in different paradigms to illustrate
theoretical concepts. Prerequisites: CSCI 280 or
consent of instructor.
Sem 1 CSCI-307-01 MWF 1:30-2:20 Mr. Salter
Systems 3 hours
This course examines the logical organization of databases:
the entity-relationship, network, relational, and object-oriented
models, and their languages. Other topics include security
and integrity: concurrency control, and distributed database
systems. Prerequisites: CSCI 275.
Sem 2 CSCI-311-01 MWF 9:00-9:50 Mr. Donaldson
Computer Interface 3 hours
In this course we will survey the various components and
techniques of Human-Computer Interaction. Starting with
a look at some basic capabilities of people, we will look
at the design of everyday objects to motivate the design
of computer interfaces. We will explore various techniques
for bringing users into the design-loop as we learn about
basic user interface design tools. Finally, we will study
evaluation techniques to help understand if our designs
are effective. We will use these approaches in several class
projects as we iteratively design, evaluate, and build user
interfaces. Prerequisites: CSCI 280 or consent of
Sem 1 CSCI-313-01 MWF 3:30-4:20 Mr. Salter
331. Compilers 3
A laboratory course on translating programs to machine language.
Emphasis will be given to the four main steps of compilation:
lexical analysis, parsing, type checking and code generation;
some attention will also be paid to code optimization. Alternative
strategies will be considered
each of these steps. Each student will write a compiler
(approximately 4,000 lines of C code) for a language developed
for this course. Given in alternate years only. Prerequisites:
CSCI-210 and CSCI-275 or consent of the instructor.
Sem 1 CSCI-331-01 MWF 9:00-9:50 Mr. Donaldson
Systems 3 hours
Next offered 2002-2003.
Networks 3 hours
Next offered 2002-2003.
Graphics 3 hours
An introduction to the theory and practice of computer graphics.
Topics include graphics hardware, 2D and 3D transformations,
perspective displays and clipping, hidden surfaces, color
and shading, lighting models, splines, and fractals. This
course emphasizes algorithms and techniques for 3D image
synthesis. Given in alternate years only. Prerequisites:
Math 232, CSCI 151, or consent of the instructor. CSCI 275
and 280 are helpful but not required.
Sem 2 CSCI-357-01 MWF 1:30-2:20 Staff
Software Development 3 hours
This course will cover advanced topics in object-oriented
software design and implementation, including design patterns,
static and dynamic UML diagrams, software life cycles, testing,
and debugging. Component-framework systems will be used
to create robust, flexible and extensible programs. Technologies
such as Jini and JavaSpaces will be explored. Students will
build a large-scale distributed computing application utilizing
team development techniques. Prerequisites: CSCI
Sem 2 CSCI-362-01 MWF 11:00-11:50 Staff
Intelligence 3 hours
A study of the techniques currently being used in programs
that mimic intelligent or human behavior. Topics include
production systems, search strategies, resolution theorem
proving, rule-based deduction and plan-generating systems,
and knowledge-representation techniques. Advanced programming
techniques will be taught, but elementary experience with
LISP or Scheme languages is required. Given in alternate
years only. Prerequisites: CSCI-280 or consent of
Sem 2 CSCI-364-01 MWF 3:30-4:20 Mr. Salter
Algorithms 3 hours
An examination of the traditional design of sequential algorithms,
and the theoretical basis behind the different approaches.
Topics will be selected from: divide and conquer, greedy
and dynamic approaches to algorithmic design; Master's theorem
and algorithmic analysis; sorting and searching; graph algorithms;
flow algorithms; string matching; computational geometry.
Prerequisites: MATH 220 and CSCI 280 or consent of
1 CSCI-365-01 MWF 11:00-11:50 Mr. Karro
of Computer Science 3 hours
A study of computability, enumerability, and decidability
from a machine approach (finite state automata, push-down
automata, Turing machines), a language approach (regular
grammars, context-free grammars, unrestricted rewrite systems,
the Chomsky hierarchy), and the recursive function approach.
In the final weeks of the semester, the theory of NP-Completeness
will be discussed, along with the notion of reductions and
Cook's theorem. Prerequisites: MATH 220 or consent
of the instructor.
Sem 2 CSCI-383-01 MWF 2:30-3:20 Mr. Karro
401. Honors 2-4
Honors sponsored by Mr. Donaldson, Mr. Karro, Mr. Koch,
Mr. Salter, Mr. Wong, and Staff.
Consent of instructor required.
Reading 1-3 hours
Private readings sponsored by Mr. Donaldson, Mr. Karro,
Mr. Koch, Mr. Salter, Mr. Wong, and Staff. Consent of
back to top