What is Computer Science?
A task force of the Association for Computing Machinery, the
professional society for academic computer science, has recently
issued a report on the core of the discipline. This report provides
the following short definition:
"The discipline of computing is the systematic study of algorithmic processes that describe and transform information, their theory, analysis, design, efficiency, implementation, and application. The fundamental question underlying all of computing is, "What can be (efficiently) automated?" (Report of the ACM Task Force on the Core of Computer Science, New York, The Association for Computing Machinery, 1989.)Computer science is not programming! Of course, most computer scientists are adept programmers. Most of our courses teach programming techniques along with other material. Our courses emphasize concepts, not programs. The main focus of Computer Science is the study of problem solving. In computer science courses we discuss all aspects of problem solving, from carefully stating problems so that they have well-defined solutions, to design strategies that will lead one step by step to solutions, to analytical techniques that allow one to evaluate and compare solutions. Along the way our students become skilled programmers, because programming is the medium that we use to discuss these concepts. Computer science is an attractive discipline for anyone interested in learning techniques for stating, solving, and analyzing problems.
Academic Programs
Major and Minor Requirements
Requirements for the Minor in Computing in the Liberal Arts
The Minor in Computing in the Liberal Arts consists of at least 15
hours of courses selected from the list below. Three of these courses
are required: CS 102, CS 235, and CS 339. In special cases a student
can transfer up to three credit hours, not listed below, from another
department or program to this minor if the instruction involved is
computer intensive and relevant to the student's area of expertise,
and if the Computer Science Program approves the transfer. Advanced
Placement credit may be applied to this minor in appropriate
situations.
Courses for the Minor in Computing in the Liberal Arts:
Requirements for the Minor in Computer Science
Computer Science courses that are applicable to the minor are listed
below in section 6 as Courses in Computer Science.
The minor consists of five such courses, including at least one course
numbered 300 or above.
A typical minor includes CS 150, CS 151, CS 275, either CS 210 or CS 280, and an additional 300-level course that reflects the interests of the student. Although they are not explicitly required, Mathematics 133 and 220 are taken by most students to satisfy the prerequisites for CS 275.
Requirements for the B.A. in Computer Science
Courses that are applicable to the major are listed below in
section 6 as 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 towards the major. In addition, majors are required to
successfully complete Mathematics 133, 220, and 232. Students may
substitute Mathematics 331 for one of the elective 300-level computer
science courses.
Beyond the Requirements: How to prepare for the hereafter
Many of our students eventually attend graduate school in computer
science. A Bachelor's degree in computer science is essentially a
programming degree; it gets one jobs in programming and system
administration. A Master's degree is a design degree; with it one can
get jobs as a software designer or as a project leader. A doctorate
is a research degree; it is necessary for those who want to develop
new techniques and new hardware. Note that in computer science many,
if not most, of the researchers are employed outside of academia. A
Ph.D. in computer science will not lock you into a job as a college
professor, though that is an option as well.
Even if you choose not to attend a graduate program, as a professional computer scientist you will be expected to keep up with the changes in your field. Computer science is possibly the most rapidly evolving of all the professional disciplines. Today's research will be mainstream information in a few years. To remain current you must be well-grounded in the discipline. This suggests three principles for planning a major:
Those planning to attend graduate school immediately after Oberlin should try to gain as much experience as possible. The Honors program is particularly useful for applicants to graduate schools, and entrance to this program requires completing a substantial number of advanced courses by the end of the junior year. Graduate programs are placing an increasing emphasis on research experience for their applicants. The Honors program is one way to acquire significant research experience. Another way is through summer internships and research programs, such as the NSF-sponsored REU (Research Experience for Undergraduates) programs. Those students who are considering graduate work in computer science should begin discussions with the faculty on how to best prepare themselves early in their Oberlin careers.
The Honors Program
Each spring the Program invites juniors to apply for the Honors
program by proposing a research project to be conducted under the
direction of a member of the faculty. Honors candidates spend their
senior years working on these projects. A thesis describing the
honors project is expected of each student. An informal presentation
on the project is given to the Program faculty in January, and a
public lecture on the project is given at the end of the spring term.
At the end of the year an examiner from outside the College is invited
to give the Honors candidates both a written examination and an oral
examination over undergraduate computer science. After consulting
with this examiner, the Program faculty assign degrees of Honors, High
Honors and Highest Honors to those candidates found worthy.
The Honors project is expected to be an intense, demanding project -- a focal point of the student's career at Oberlin. Most projects combine theory, design, implementation and analysis; they are not just large programming projects. Many factors are considered in the Program's decision of who to invite into the Honors program; among these factors are grades in computer science courses, overall grade point average, and a general evaluation of each student's ability to sustain interest in a difficult project for nine months or more. Of course, we evaluate the proposed project in terms of both its feasibility and its inherent interest. Those interested in Honors should arrange to complete most of the requirements for the major, including at least two or three advanced courses, by the end of the junior year.
The following is a list of topics of some recent honors theses:
The Student ACM Chapter
The Association for Computing Machinery (ACM) is the dominant
professional organization for computer scientists. Oberlin has a
student ACM chapter, which all of our majors are encouraged to join.
The chapter organizes talks through the ACM's Lectureship Program,
disseminates technical information, and provides discounts on
subscriptions to ACM journals and conference registrations. For more
information, talk to any of the chapter members, or to Rhys Price
Jones, the faculty advisor to the chapter.
Student Groups
There are two groups of students that manage software on the computer
science systems. The ``gnusoft'' group supervises, updates, and installs
the products of the Free Software Foundation, such as gnu-emacs, our
main text editor. The ``public'' group installs and maintains
software of interest to students, such as our games directory.
Advanced students (sophomores and up) can join these groups by
sending mail to gnusoft and public.
The ACM Programming Context
Each year the ACM and AT&T sponsor regional and international
programming contests. In these contests teams of student programmers
attempt to solve a series of problems; the results are graded on both
speed and accuracy. Oberlin usually has a local contest to determine
the team which is sent to the regional meet. In 1982 and 1990 Oberlin
won the East Central Regional contest; we have had three teams go on
to the international contests. In 1993, having placed second in the
East Central regional contest, Oberlin went on to earn sixth place in
the International Contest.
Miscellaneous Information
Computation Facilities
The Computer Science Program makes a wide range of equipment and
software available to students. We currently have DECsystem 5000/200
and 5000/260 file servers supporting over 10 Gigabytes of disk space.
We have an Omron Luna 88K parallel machine with 4 Motorola 88100 RISC
processors. Our student laboratory has over 20 workstations by
vendors such as DEC, Sun, Hewlett-Packard/Apollo, and Silicon
Graphics. We have inkjet and laser printers, and a Polaroid CI5000
film recorder. All of our equipment is connected to our campus
network, from which you can reach the Internet and the universe
beyond.
All of this equipment is available to all of our students. We view the computing environment as supporting our educational program, and try to put as few restrictions as possible on student use of the system. However, with over 250 users it is necessary to have a few rules. These are the major ones:
Research Opportunities
There are a number of opportunities for students to participate in
research projects in computer science. Successful experience with
such projects is attractive to both graduates schools and employers;
students are encourage to explore these possibilities.
Non-Local Jobs
Computer science students are fortunate in having programming skills
that are in demand in the workplace. Finding any job takes time and
effort, but with persistence many of our students have found summer
jobs that make use of their skills, pay well, and provide good
experience. Our graduates have had similar experiences in looking for
professional employment. There are three offices on campus that may
be of help to those looking for either summer or long-term jobs. The
first place to visit is obviously the Office of Career Development and
Placement. Perry Boyle, who directs the College's Business
Initiatives Program, has many contacts in industry and has been of
great help to our students. The Alumni Office is sometimes able to
put students into contact with Oberlin alumni who have positions to
fill. This can be especially useful to those looking for summer
internships.
One item that students often overlook is getting recommendations from summer employers. The Career Development Office has forms for this purpose, and will keep letters on file for you. If you have a summer job that uses your skills in computing, and if you have reason to believe that your supervisor is happy with your job performance, you should ask that supervisor to write a letter of reference for you at the end of your period of employment. You may decide later to not use the reference; the important thing is having the option. It is virtually impossible to obtain a meaningful letter of recommendation from a former supervisor who has not seen you in six months or more.
Local Jobs
During the academic year the Computer Science Program hires students
to act as graders, tutors, system administrators, and consultants.
The pay for these jobs is comparable to that for most student jobs;
the work is educational and a good experience. In addition to being a
source of income, assisting with a course can be a valuable learning
experience. One way to make yourself known to the faculty is to do a
reliable, conscientious job as a grader or assistant.
Graduate Programs
Many of our majors go on to graduate school in computer science,
sometimes immediately upon graduation, and sometimes after several
years of work experience. There are a few things you should know
about graduate programs in computer science.
Computer Science Department Foobar University Wherever, USA 7FF4358Ashould get to the appropriate person. This can be a form letter; it will probably be read only by a secretary. Early in the fall you should start narrowing your list of schools; by November you and your advisor should have settled on the list of schools to which you will apply. Do not make this list too short. If you can afford it (application fees are in the $25 to $30 range), apply to 5 or 6 schools, or even more. This will allow you to apply to a few schools that you do not expect to get into, as well as your main choices and a safety school.
CS 102. Computer Concepts and Applications
An introduction to Macintosh application development, using
the Hypercard/Hypercard system. Offered every fall.
CS 110. Fifth Generation Computing
A survey of recent efforts to design machines for logic programming.
Prerequisite: CS 101, or consent of the instructor. Offered
occasionally.
CS 115. Cryptology
A study of secret codes and their relationship to computers. Offered
occasionally.
CS 135. Object-Oriented Programming
An introductory course in object-oriented programming, using the
language C++. No prerequisites. Offered every fall.
CS 157. Introduction to Graphics
An introductory course in computer programming with an emphasis on
computer graphics. No prerequisites. Offered occasionally.
CS 185. Colloquium: The Limits of Computation
An introduction to programming, the theory of computability, and
consideration of social aspects of technological advances. No
prerequisites. Offered occasionally.
CS 235. Computer Application Development
A course in developing computer applications using high-level
languages or authoring systems. Prerequisite: CS 102 or the ability
to program in HyperCard, and the consent of the instructor. Offered
every spring.
CS 299. Seminar: Mind and Machine
An exploration of topics in artificial intelligence, cognitive
psychology, philosophy of mind, and linguistics. Prerequisite:
consent of the instructor. Offered alternate years.
CS 339. Projects in Computer Application Development
A seminar-like course in which software availability in various areas
of the liberal arts are studied and in which each student develops and
presents to the class a sophisticated computing application in some
specific academic area. Offered alternate years.
CS 150. Computer Science I
An laboratory-based introduction to the field of computer science.
The laboratories are used to teach programming in C. This is the
standard introductory course for the major. No prerequisites.
Offered every fall.
CS 151. Computer Science II
A laboratory-based continuation of CS 150, again using the language C.
Emphasis is on data structures and advanced programming techniques.
This is the standard second course for the major. Prerequisite: CS
150 or CS 135. Offered every spring.
CS 210. Computer Organization
An introduction to computer architecture. Required for the major.
Prerequisite: CS 151. Offered every fall.
CS 268. Software Development
A laboratory course in which students learn advanced principles of
software design while working on a large programming project.
Prerequisite: CS 151 and CS 275. Offered occasionally.
CS 275. Computer Science III
A rigorous study of algorithms and data structures using the Scheme
programming language. Required for the major. Prerequisites: CS 151.
Offered every fall.
CS 280. Computer Science IV
A continuation of CS 275, with an emphasis on the principles of
programming languages. Prerequisite: CS 275. Offered every spring.
CS 299. Seminar: Mind and Machine
An exploration of topics in artificial intelligence, cognitive
psychology, philosophy of mind, and linguistics. Prerequisite:
consent of the instructor. Offered on alternate spring semesters.
CS 331. Compilers
A laboratory course on compiler design. Students write a compiler for
a language developed for this course. Prerequisite: CS 210 and CS
275. Offered on alternate fall semesters.
CS 341. Operating Systems
An advanced course on operating systems and systems programming.
Prerequisites: CS 210 and CS 280. Offered on alternate fall
semesters.
CS 357. Computer Graphics
An advanced course on graphics programming. Prerequisites: CS 151, CS
275, and Mathematics 232. Offered on alternate spring semesters.
CS 364. Artificial Intelligence
A study of the techniques currently being used in programs that mimic
human behavior. Prerequisite: CS 280. Offered on alternate spring
semesters.
CS 368. Senior Laboratory
This is a topics course usually involving a large programming project.
The prerequisites vary with the topics. Offered occasionally.
CS 383. Theory of Computer Science
A course in the study of computability and decidability. Required for
the major. Prerequisite: CS 280. Offered every spring.
CS 386. Advanced Concepts in Programming Languages
A course in formal semantics, the theory of types, and type
inference in programming languages. Prerequisite: CS 280. Offered on
alternate spring semesters.
CS 401. Honors
This course is open only to those who have been invited into the Honors
program.
CS 995. Private Reading
Private readings are used both for individual programming projects and
for readings in material not covered in regular courses. Because
these are very demanding in terms of faculty time, not all requests
for private readings can be granted. Reading courses require the
consent of both the instructor and the Program Director.
Rhys Price Jones 223C King, x8697
Principles of programming languages, genetic algorithms, strategies
for game playing, conflict resolution, parallel processing,
implementation of functional and declarative languages.
Christian Koch 223D King, x8831
Computing and cognitive science in the context of the liberal arts,
natural language computing, artificial intelligence.
Fritz Ruehr 120B King, x8539
Type systems, lambda calculus, functional programming, language
design, user interfaces.
Richard Salter 223B King, x8095
Artificial intelligence, functional and logic programming, semantics
and types, programming languages.
Last Modified Apr 20, 1995 by
webmaster@cs.oberlin.edu