course catalog


contact us



In this Department


 Other Links

Computer Science

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.

In 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.

Advanced 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.

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 as freshmen, taking Computer Science 150 and 151 during that year along with Mathematics 133 and 220.

Students 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."

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 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/).

Minors. The Computer Science Program offers two minors, one in Computer Science and one in Third Stream Computing.

Courses 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.

The 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.

The 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 of HTML coding and significant Javascript programming skills. 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. Koch.

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 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

Courses in Third Stream Computing
(Computing in the Liberal Arts)

The 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 basis.

100. The Internet and Beyond 3 hours
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. This course or 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.
Sem 1 CSCI-100-01 Tu 3:00-4:15 Mr. Koch Limit: 93
Lecture Laboratories
CSCI-100-02 Th 1:30-2:45 Mr. Koch Limit: 31
CSCI-100-03 Th 3:00-4:15 Mr. Koch Limit: 31
CSCI-100-04 Th 4:20-5:35 Mr. Koch Limit: 31

101. 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 (HTML and/or XML), and the use of a scripting language (Javascript). 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: 45.

Sem 1 CSCI-101-01 TTh 1:30-2:45 Staff

221. Object-Oriented Computing 3 hours

3NS, QPf
Next offered 2002-2003.

235. Computer Application Development 3 hours
3NS, QPf
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), Javascript, Dynamic HTML, and other current web development 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.

Sem 2 CSCI-235-01 Tu 3:00-4:15 Mr. Koch Limit: 62
Lecture Laboratories
CSCI-235-02 Th 3:00-4:15 Mr. Koch Limit: 31
CSCI-235-03 Th 4:20-5:35 Mr. Koch Limit: 31

299. Seminar: Mind and Machine 3 hours
Next offered 2002-2003.

339. Projects in Computer Application Development 3 hours
3NS, QPf
Course in advanced web site design and development. Focus on database programming for web sites using Active Server Pages (ASP) scripting with VBScript and Javascript server-side and client-side scripting. Capstone course for the Third Stream minor. Prerequisites: CSCI 235 and Consent of instructor required.

Sem 2 CSCI-339-01 W 7:00-9:30 p.m. Mr. Koch

back to top

Courses in Computer Science

CSCI 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 Stream listings.

150, 151. Principles of Computer Science 4 hours

4NS, QPf

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: 70.

Sem 1 CSCI-150-01 MWF 9:00-9:50 Staff

CSCI-150-02 M 1:30-4:30 Staff Limit: 25
CSCI-150-03 Tu 1:30-4:30 Staff Limit: 25
CSCI-150-04 Tu 1:30-4:30 Mr. Salter Limit: 20
Sem 2 CSCI-151-01 MWF 9:00-9:50 Staff

CSCI-151-02 M 1:30-4:30 Staff Limit:

CSCI-151-03 Tu 1:30-4:30 Mr. Salter Limit:

210. Computer Organization 3 hours
3NS, QPf

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.
Sem 2 CSCI-210-01 MWF 2:30-3:20 Mr. Salter

275, 280. Algorithms, Structures and Abstractions 4 hours
4NS, QPf

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 Limit:

CSCI-275-02 W 1:30-4:30 Mr. Karro Limit: 25
CSCI-275-03 Th 1:30-4:30 Mr. Karro Limit: 25
Sem 2 CSCI-280-01 MWF 10:00-10:50 Mr. Karro Limit: 50
307. Programming Languages 3 hours

307. 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

311. Database 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

313. Human 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 instructor.

Sem 1 CSCI-313-01 MWF 3:30-4:20 Mr. Salter

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.
Sem 1 CSCI-331-01 MWF 9:00-9:50 Mr. Donaldson

341. Operating Systems 3 hours

Next offered 2002-2003.

342. Computer Networks 3 hours
3NS, QPf

Next offered 2002-2003.

357. Computer 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

362. Advanced 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 280.

Sem 2 CSCI-362-01 MWF 11:00-11:50 Staff

364. Artificial 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 the instructor.

Sem 2 CSCI-364-01 MWF 3:30-4:20 Mr. Salter

365. Advanced 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 the instructor.

Sem 1 CSCI-365-01 MWF 11:00-11:50 Mr. Karro

383. Theory of Computer Science 3 hours
3NS, QPf

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 hours

Honors sponsored by Mr. Donaldson, Mr. Karro, Mr. Koch, Mr. Salter, Mr. Wong, and Staff.

Consent of instructor required.

995. Private Reading 1-3 hours

Private readings sponsored by Mr. Donaldson, Mr. Karro, Mr. Koch, Mr. Salter, Mr. Wong, and Staff. Consent of instructor required.

back to top