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 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. While CSCI 150 is self-contained, it moves quickly
through issues that students with some programming experience will
have seen before. Students with no prior experience may wish to take
CSCI 140 before starting the 150-151 sequence. Since the requirements
for the major in computer science are substantial, students planning
to major in the discipline are encouraged to begin their coursework
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 this year.
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
140. Introduction to Computer Science
3 hours,
3NS, QPf
Second Semester. This course provides an introduction to programming and algorithmic
thinking. It is aimed at students with little or no prior programming
experience who would like to know how software is developed or who
would like to be able to write short programs for data manipulation.
It is also useful as preparation for students with no programming
experience who want to take the CSCI 150,151 sequence. No prerequisites.
Mr. Geitz
FYSP 155. Information, Knowledge and the Internet
3 hours,
3NS,WR First Semester. For description, please see "First-Year
Seminar Program" in
this catalog. Enrollment Limit: 14.
Mr. Geitz
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: 15.
Mr. Borroni
150, 151. Principles of Computer Science
4 hours,
4NS, QPf
First and Second Semester. These courses introduce students to 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, elementary data structures and mathematical
properties of program solutions. Prerequisite: CSCI 150 is a prerequisite
for CSCI 151. Notes: Students considering a computer science major
are strongly encouraged to take these courses in their first year.
Students may not receive credit for both CSCI 151 and CSCI 160. Enrollment
Limit: 48.
Mr. Bonakdarian
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.
Mr. Donaldson
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. This course
will teach an assembly language using the computer laboratory facilities.
Mr. Salter
215. Cryptography
3 hours,
3NS, QPf Next offered 2006-2007.
241. Systems Programming (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 or CSCI 160 or CSCI 210.
Mr. Bonakdarian
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.
Mr. Bonakdarian
307. Programming Languages
3 hours,
3NS, QPf
Second Semester.
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.
Prerequisite: CSCI 280 or consent of instructor.
Mr. Salter
311. Database Systems
3 hours,
3NS, QPf
Second Semester.
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. Prerequisite: CSCI 275.
Mr. Geitz
317. Computer Architecture
3 hours,
3NS, QPf
First Semester. An in-depth study of the advanced techniques used in modern processors to
achieve high performance. Topics covered will include Amdahl's law, superscalar
and pipelined processors, pipeline hazards, instruction-level parallelism, cache
memory design, and multiprocessor design. Prerequisite: CSCI 210.
Mr. Donaldson
331. Compilers
3 hours,
3NS, QPf 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 for 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.
Staff
341. Operating Systems
3 hours,
3NS
Next offered 2006-2007.
342. Computer Networks
3 hours,
3NS, QPf
Next offered 2006-2007.
357. Computer Graphics
3 hours,
3NS
Next offered 2006-2007.
358. Computer Animation
3 hours,
3NS, QPf
First Semester. This is a programming-based introduction to the theory and practice of 3D
digital modeling and computer animation. Topics will include traditional animation
techniques such as storyboarding, keyframing and tweening, as well as digital
techniques for modeling, lighting, tracking and simulation. Prerequisites: MATH
232 and CSCI 151, or consent of the instructor. Notes: CSCI 272 and 280 are helpful
but not required. Taught in alternate years only.
Mr. Geitz
360. Bioinformatics
3 hours,
3NS Next offered 2006-2007.
364. Artificial Intelligence
3 hours,
3NS
Next offered 2006-2007.
365. Advanced Algorithms
3 hours,
3NS
Next offered 2006-2007.
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.
Mr. Geitz
401. Honors
2-4 hours,
2-4NS Honors sponsored by Mr. Bonakdarian, Mr. Borroni, Mr. Donaldson, Mr. Geitz,
and Mr. Salter. Consent of instructor required.
995. Private Reading
1-3 hours,
1-3NS Private readings sponsored by Mr. Bonakdarian, Mr. Borroni, Mr. Donaldson,
Mr. Geitz, and Mr. Salter. Consent of instructor required.