|
|
|
|
In this Department
|
|
|
|
|
|
Catalog
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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 as freshmen, taking Computer
Science 150 and 151 during that year along with Mathematics
133 and 220. Students with significant prior programming
experience are strongly encouraged to begin their CS study
immediately with Computer Science 160. Persons taking 150
in the second semester may want to enroll in 160 the following
semester.
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 (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
proper 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 web site (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 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
Alpha Server 1200 5/400 Unix server and on the CS Program's
Windows domain 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.
100. The
Internet and Beyond 3 hours
3NS
First 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. 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: 40.
101. Introduction
to Computers and Computing 3 hours
3NS
Second Semester.
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: 40.
221. Object-Oriented
Computing 3 hours
3NS,
QPf
235. Computer
Application Development 3 hours
3NS,
QPf
Second Semester.
Students learn multimedia application development in the context
of the Internet and web site development. Development systems
used will focus on Flash5 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:
31
299. Seminar:
Mind and Machine 3 hours
3NS
339. Projects
in Computer Application Development 3 hours
3NS,
QPf
First Semester.
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.
Mr. Koch
|
|
back to top
|
Courses in Computer
Science
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). 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:
44.
Mr. Gegg-Harrison,
Mr. Donaldson
160. Advanced
Principles of Computer Science 4 hours
4NS,
QPf
First Semester.
Algorith design and problem solving using the Java programming
language. Topics include object-oriented programming (inheritance,
ploymorphism, 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). Students may not receive credit
for both CSCI 151 and CSCI 160. Prerequisite: Consent
of instructor.
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.
215.
Cryptography
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++ Apls. 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.
275,
280. Algorithms, Structures and Abstractions 4
hours
4NS,
QPf
First (275)
Second (280) Semester. 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; algorithmic design and analysis; data structure
design. Prerequisite:
CSCI 151 or consent of the instructor. Co-requisite:
MATH 220. Enrollment Limit: 50.
307.
Programming Languages 3 hours
3NS
309.
VLSI Physical Design Automation 3 hours
3NS
First Semester.
A survey of the computational problems arising in the process
of designing computer chips, and of the solutions commonly
used to solve these problems in industry. Topics covered
will include the circuit partition problem, placement and
routing for both application-specific and field-programmable
logic devices, and those parts of computational geometry
that can be used to model aspects of design problems (e.g.
steiner trees and convex hulls). No background in electrical
engineering or computer architecture will be needed, but
the student must have a basic understanding of algorithms
and algorithmic analysis (as provided in CS280). Prerequisites:
MATH 220, CSCI 280. Enrollment
Limit: 20
311.
Database Systems 3 hours
3NS
313.
Human Computer Interaction 3 hours
3NS
317.
Computer Architecture
331.
Compilers 3 hours
3NS,
QPf
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 process management,
interprocess communication, memory management, and file
management are included. The Unix operating system serves
as a case study. Given in alternate years only. Prerequisites:
CSCI 210 and CSCI 275 or consent of instructor.
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. Case studies
will include the Internet and Novel NetWare. If it can be
arranged, a small laboratory will be dedicated to this class
for experimentation. Prerequisites:
CSCI 210 or consent of the instructor.
Mr. Salter
357.
Computer Graphics 3 hours
3NS
Second
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. Given in alternate years only.
Prerequisite:
MATH 232, CSCI 151, or consent of the instructor. CSCI
275 and 280 are helpful but not required.
360.
Bioinformatics 3 hours
3NS
Second
Semester. An overview of the computational problems arising
in the analysis of DNA. Topics covered will include those
of sequencing and sequence comparison, DNA arrays, alignments
and gene prediction. Using mathematical representations
of the problems, and internet data bases to provide actual
data, students will examine and algorithms and develop
programs to solve relevant problems. No background in
biology or genetics is needed, but the student must have
a basic understanding of algorithms and algorithmic analysis.
Prerequisites:
MATH
220, CSCI 280. Enrollment Limit: 20
362.
Advanced Software Development 3 hours
3NS
First
Semester. An advanced study of object-oriented software
design and implementation. Topics include design patterns,
UML diagrams, design by contract, software life cycles,
verification, testing, and debugging. Students will build
a large-scale computing application utilizing team development
techniques. Prerequisite:
CSCI 280.
364.
Artificial Intelligence 3 hours
3NS
366.
Logic Programming 3 hours
3NS
Second
Semester. An introduction to the theoretical foundations
of logic programming. Topics include predicate calculus,
unification, resolution, negation, automated theorem proving,
implementation of logic programming languages, and applications
of logic programming. Logic programming languages such
as Prolog and _Prolog will be covered in detail.
Prerequisite:
CSCI 280.
383.
Theory of Computer Science 3 hours
3NS,
QPf
First
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.
401. Honors 2-4
hours
2-4NS
Honors
sponsored by Mr. Donaldson, Mr. Gegg-Harrison, Mr. Karro,
Mr. Salter. Consent
of instructor required.
995. Private
Reading 1-3 hours
1-3NS
Private
readings sponsored by Mr. Donaldson, Mr. Gegg-Harrison,
Mr. Karro, Mr. Koch, Mr. Salter. Consent of instructor
required.
|
|
back to top
|
|
|
|
|
|
|
|