Computer 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 and tools. More
detailed information about the Computer Science major and minor can
be found below. Information about the Cognitive Sciences Concentration,
which also involves computer Science courses, can be found in that
section of this course catalog.
Advanced Placement. Students who have received a score of 4 or 5
on the Advanced Placement AB examination in Computer Science or a
6 or 7 on the International Baccalaureate Higher Level examination
are normally awarded eight hours of credit equivalent to Computer
Science 150 and 151. Students who have received a score of 3 on the
AB examination, a score of 3 or higher on the A examination, or a
5 on the International Baccalaureate Higher Level Examination in
Computer Science are normally awarded four hours of credit equivalent
to Computer Science 150 and are encouraged to enroll in Computer
Science 151 or 160 in their first semester. In some cases the advanced
placement examination booklet may be reviewed by the Computer Science
faculty before credit is granted. Other students with exceptional
backgrounds who believe that they have sufficient preparation to
elect courses for which Computer Science 150 or 151 are prerequisite
should consult with the director of the Computer Science Program
to discuss appropriate placement.
Entry-Level 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 in the first year at Oberlin,
taking Computer Science 150 and 151 during that year along with Mathematics
133 and 220. Students with significant prior programming experience
should consult with a faculty member to determine an appropriate
introductory course.
Students who are interested in developing significant computer skills
but are not interested in computer science per se are advised to
enroll in one of our 100-level non-major courses when offered.
Major. 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
complete successfully 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 (www.cs.oberlin.edu/).
Minors. The Computer Science Program offers a minor in Computer Science.
Courses that are applicable toward this minor are the same courses
listed in the section "Courses in Computer Science." The
minor consists of five courses drawn from this listing. One of these
five courses must be a 300-level course.
The Third Stream Computing minor, which has been offered in the past,
will not be offered in 2004-2005.
Honors 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.
Honors 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 computer
science.
Winter 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.
Computing Equipment. In addition to using the computer laboratories
maintained by the College Center for Information Technology (CIT),
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 Intel based computers running
both Linux and Windows operating systems. Altogether there are 44
workstations in two labs, 24 in one lab and 20 in the other. Students
receive accounts on the CS Program's Sun Fire 280R Unix server
and on the CS Program's Windows domain servers thereby affording
them complete access to all College and CS networking services.
100. The Internet and Beyond
3 hours
3NS
Second Semester. A 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 construction (e.g. PhotoShop, Dreamweaver), and (c) the
Javascript scripting language, with strong emphasis on the latter. About one-half
the course deals with Javascript. Enrollment Limit: 32.
Staff
FYSP 155. Information, Knowledge and the Internet
3 hours
3NS,WR Next offered 2005-2006.
299. Seminar: Mind and Machine
3 hours
3NS
Second Semester. An interdisciplinary exploration of how we think and how machines "think".
Contributions to our understanding of the mind from artificial intelligence,
neural networks, cognitive psychology, philosophy of mind, linguistics, and neuroscience
will be covered. The course will be focused around three questions: How do we
study the mind? How can the mind be modeled? Do machines have a mind? No background
in computer use, programming or neuroscience is required. However, students with
a background in any or all of these areas will find this course useful and are
encouraged to enroll. Note: Open to students from all departments and programs
at all class levels. Enrollment Limit: 18.
Mr. Borroni.
150, 151. Principles of Computer Science
4 hours
4NS, QPf
First and Second Semester. These courses introduce students to the major concepts
of algorithm design and problem solving using a computer. Students are introduced
to the fundamental concepts of programming and the object-oriented programming
methodology using the Java programming language. Topics in CSCI 150 include basic
data types and their operators, classes, control structures, recursion, exception
handling, and input/output. Topics in CSCI 151 include object-oriented problem
solving (inheritance, polymorphism, and design patterns), elementary data structures
(lists, stacks, queues, hash tables, binary trees, binary search trees, and binary
heaps), and mathematical properties of program solutions (program verification
and the analysis of algorithm complexity). Note: Students considering a computer
science major are strongly encouraged to take these courses in their first year.
Prerequisite: CSCI 150 is a prerequisite for CSCI 151. Enrollment Limit: 48.
Mr. Geitz
160. Advanced Principles of Computer Science
4 hours
4NS, QPf
First Semester. Algorithm design and problem solving using the Java programming
language. Topics include object-oriented programming (inheritance, polymorphism,
and design patterns), elementary data structures (lists, stacks, queues, hash
tables, binary trees, binary search trees, and binary heaps), and mathematical
properties of program solutions (program verification and the analysis of algorithm
complexity). Note: Students may not receive credit for both CSCI 151 and CSCI
160. Consent of instructor required.
Staff
210. Computer Organization
3 hours
3NS, QPf
Second Semester. An 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 laboratory facilities.
Mr. Salter
215. Cryptography
3 hours
3NS, QPf Next offered 2005-2006.
241. Systems Programing (C/C++ Programming)
3 hours
3NS, QPf
First Semester. This course will consider the C programming language and its
relationship to the Unix operating system. It will also introduce the C++ language
and focus on differences between the Java and C++ applications. Some Unix system
programminig issues will also be included. The course will require a significant
amount of programming. Prerequisite: CSCI 151, CSCI 160, or CSCI 210.
Staff
275. Programming Abstractions
4 hours
4NS, QPf
First Semester. Programming language fundamentals are studied as abstract concepts
using the programming language Scheme. Included are the notions of closures,
first-class data structures, procedure and data abstraction, object-oriented
programming, continuations, compilation and interpretation, and syntactic extension.
Some advanced control structures such as coroutines and asynchronous interrupts
may also be included. Prerequisite: CSCI 151 or consent of the instructor. Co-requisite:
MATH 220. Enrollment Limit: 48.
Mr. Salter
280. Introduction to Algorithms
3 hours
3NS, QPf
Second Semester. Students will be introduced to the fundamentals of data structure
and algorithm analysis and development, with an emphasis on applications to real-life
problems. Students will both study the basic techniques of the field from a theoretical
perspective and study how to adopt those techniques in order to solve real problems
in simple, efficient ways. Knowledge of discrete mathematics is necessary; knowledge
of the C++ programming language is strongly recommended. Note: CSCI 280 no longer
includes instruction in the C programming language. For this see CSCI 241. Prerequisite:
CSCI 275. Co-requisite: MATH 220. Enrollment Limit: 48.
Staff
307. Programming Languages
3 hours
3NS Next offered 2005-2006.
311. Database Systems
3 hours
3NS Next offered 2005-2006.
331. Compilers
3 hours
3NS, QPf Next offered 2005-2006.
341. Operating Systems
3 hours
3NS
First Semester. The theory of operating system fundamentals and a survey of operating
system functions. Concepts and techniques of concurrent programming are covered,
relevant to the design of operating system kernels. Such functions as memory
management, processor allocation, and device management are included. The Unix
operating system serves as a case study. Prerequisites: C language experience;
CSCI 210 and CSCI 275, or consent of the instructor.
Staff
342. Computer Networks
3 hours
3NS, QPf
Second Semester. Networks are a central part of any modern computing system.
This course will first consider the design of contemporary local and wide-area
networks in terms of their abstract layers (i.e. the TCP/IP and OSI reference
models) and then focus on actual implementations of those layers. The course
will include a study of the protocols used in the Internet. Prerequisite: CSCI
210 or consent of the instructor.
Staff
357. Computer Graphics
3 hours
3NS
First Semester. 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.
Prerequisite: MATH 232, CSCI 151, or consent of the instructor. Note: CSCI 275
and 280 are helpful but not required. Taught in alternate years only.
Mr. Geitz
360. Bioinformatics
3 hours
3NS Next offered 2005-2006.
364. Artificial Intelligence
3 hours
3NS
Second Semester. 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.
Prerequisite: CSCI 275 or consent of the instructor. Note: Taught in alternate
years only.
Mr. Salter
365. Advanced Algorithms
3 hours
3NS
First Semester. 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 the instructor.
Staff
383. Theory of Computer Science
3 hours
3NS, QPf
Second Semester. 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. Prerequisite: MATH
220 or consent of the instructor.
Staff
401. Honors
2-4 hours
2-4NS Honors sponsored by Mr. Geitz, and Mr. Salter. Consent of instructor required.
995. Private Reading
1-3 hours
1-3NS Private readings sponsored by Mr. Geitz, and Mr. Salter. Consent of instructor
required.