815 North Broadway
Saratoga Springs,
New York, 12866
SKIDMORE PHONE
518-580-5000
Computer Science
Chair of the Department of Mathematics and Computer Science:
Mark Hofmann
Mathematics and Computer Science Faculty:
Professors: *Robert DeSieno, R. Daniel Hurwitz, Mark E. Huibregtse,
Alice M. Dean, Gove W. Effinger
Associate Professors: Richard Speers,
Pierre von Kaenel, Mark Hofmann, Una Bray, David C. Vella
THE COMPUTER SCIENCE MAJOR: Students majoring in computer
science fulfill the departmental requirements by completing
the following:
1. Required computer science courses:
CS106, 206, 318, and 330
2. Required mathematics courses: Any one of the following
chosen in consultation with the student's advisor: MA111,
113, 200, or MS104.
4. Electives: Three CS or MC courses at the 200 level or above.
(Currently this includes CS276, 321, 340, 371, 372, 381, 382,
and MC302, 316. CS276 and 376 may be taken more than once
for credit if offered with different topics.) For one of the
three electives the student may instead take, with permission
of the department, a course in another discipline that has
substantial computer science content (for example, PY207 Workshop
Physics or MB319 Management Information Systems).
Courses counting toward the major
may not be taken satisfactory/unsatisfactory.
HONORS: Students wishing to qualify for departmental honors
in the computer science major must:
1) complete all departmental requirements for the computer
science major and have a grade point average of 3.5 or higher
for all course work (MA, MC, and CS) taken in the department,
together with PY207 if taken as an elective with permission
of the department;
2) have a grade-point average of 3.0 for all course work taken
at Skidmore;
3) file with the department, by the end of the official add-drop
period of the spring semester of the senior year, a declaration
of intention to qualify for honors; and
4) submit an honors thesis or project to be read by a review
committee, and give an oral presentation of the thesis or
project to the department. The review committee will evaluate
the thesis or project to determine if it is of the exceptional
quality which merits honors; the committee's recommendation
will be submitted to the department for final adjudication.
THE COMPUTER SCIENCE MINOR: Students
minoring in computer science fulfill the departmental requirements
by completing CS106,
206,
MC115,
and three additional CS or MC courses, at most one of which
may be at the 100 level, and at least one of which must be
at the 300 level. For one of the three additional courses
the student may instead take, with permission of the department,
a course in another discipline that has substantial computer
science content (for example, PY207
Workshop Physics or MB319
Management Information Systems).
Students interested in learning how to use computers to solve
problems in the quantitative disciplines should consider the
courses: CS102,
103,
106,
MS104.
NOTE: Courses numbered CS102 through CS382 and MC115, 302,
306, and 316 have as a prerequisite QR1 or permission of the
department. CS 102. COMPUTING
IN CONTEXT 3
A set of courses exploring interesting applications of computing
in a variety of disciplines. These courses are primarily intended
for students who wish to satisfy the QR requirement and enhance
their abilities to apply computing to the solution of quantitative
problems. Courses including the following are offered periodically
depending on faculty availability. (Fulfills QR2 requirement.)
A. Electronic Spreadsheets
in the Sciences. In this course,
students use electronic spreadsheets to build quantitative
models of natural systems studied in biology, chemistry, and
physics. This course helps students understand quantitative
description of natural phenomena, develop ability to use computational
methods for describing those phenomena, enhance their understanding
of experimental design, and become aware of the limitations
in modeling of natural systems.
B. Robot Design. A hands-on introduction,
using ideas from programming, artificial intelligence, and
physics, to introduce concepts of robot design. The course
explores philosophical, programming, and engineering issues
related to the design of robots. Students will build their
own robots, and then program them to do a variety of physical
tasks. (Not open to students who have taken or are taking
a CS course numbered 103 or higher.) CS 103. STRUCTURED
PROGRAMMING IN BASIC 3
Introduction to the use of computer programming as a problem-solving
tool. Students learn to design and implement their own Windows
software applications using the Visual BASIC language. The
course stresses the logic of software design and the careful
implementation and testing of programs. Primarily for students
with little or no programming experience. Not open to students
who have taken or are taking CS106. (Fulfills QR2 requirement.)
The Department CS 106. INTRODUCTION
TO COMPUTER SCIENCE I 4
Design and testing of algorithms for the solution of problems
with the aid of a computer using C++ language. The course
guides students through syntax, semantics, design procedures,
control structures, data structures and testing of conditions
with Boolean expressions. (Fulfills QR2 requirement.)
The Department MC 115. INTRODUCTION
TO DISCRETE MATHEMATICS 3
An introduction to the study of discrete (as opposed to continuous)
mathematical systems.These include systems that are essential
in computer science as well as in more advanced mathematics
courses. Mathematical reasoning and algorithms are fundamental
themes of the course. Topics include logic and sets, complexity
of algorithms, computer arithmetic, arrays, mathematical proofs
and induction, elementary combinatorics, and discrete probability,
graphs, and trees. Prerequisite: high school preparation
including intermediate algebra or consent of department. (Fulfills
QR2 requirement.) The Department CS 206. INTRODUCTION
TO COMPUTER SCIENCE II 4
Continuation of CS 106: study of recursion, pointers, development
strategies for large software projects, and introduction to
data structures, analysis of algorithms, and program verification.
Prerequisite:CS106
or permission of instructor. The Department
CS 276. SELECTED
TOPICS IN COMPUTER SCIENCE 3
Topics that complement the established lower level course
offerings in computer science will be selected. May be repeated
for credit. Prerequisite: permission of instructor.
The Department MC 302. GRAPH
THEORY 3
An introduction to the theory and application of graphs. Topics
may include graphs and digraphs, connectivity, trees, Euler
and Hamiltonian cycles, and graph embeddings. Prerequisite:MC115
or MA200
or permission of the instructor. Fall 2002 and alternate years.
The Department MC 306. THEORY
OF COMPUTATION 3
A study of the major theoretical models of computation. Topics
include automata, nondeterminism, regular and context-free
languages, Turing machines, unsolvability, computational complexity,
and NP-completeness. Prerequisite:MC115
and CS106,
or permission of instructor. The Department
MC 316. NUMERICAL
ALGORITHMS 3
An introduction to using computation to obtain approximate
solutions to mathematical problems. A variety of algorithms
are studied, as are the limitations of using computational
methods. Topics include algorithms for solving equations,
systems, and differential equations; approximating functions
and integrals; curve fitting; round-off errors, and convergence
of algorithms. Prerequisites:CS106
and MA111
or permission of instructor. Offered in 2003 and alternate
years. The Department CS 318. INTRODUCTION
TO COMPUTER ORGANIZATION 4
An introduction to multi-level machines, including basic components
of a computer, digital circuits, microprogramming, machine
and assembly languages, and operating systems. Prerequisite:CS206
and MC115.
(Does not count toward the Mathematics major.)
The Department CS 321. DATA STRUCTURES
3
The study of advanced data structures such as trees, multi-linked
lists, hash tables, and graphs. Additional topics may include
searching, sorting, and the concepts of object-oriented programming.
Prerequisite:MC115
and CS206.
The Department CS 330. PROGRAMMING
LANGUAGES 3
An introduction to different programming language paradigms:
functional, logic, and object-oriented programming. Students
will also study language concepts such as regular expressions,
syntax grammars, and semantics. Specific topics may include
Perl, egrep, Scheme, Lex & Yacc, Java, C++ and Prolog.
Prerequisite:CS206.
The Department CS 340. COMPUTER
MODELING OF PHYSICAL SYSTEMS 3
The study of physical systems and natural law with the aid
of computers and simulation software. Students explore the
relationships between theoretical scientific expression and
behavior in nature by designing algorithms that probe experimental
data, by examining cause and effect relationships in physical
systems, and by examining the consequences of diverse variation
in simulated conditions for ideal and non-ideal systems. Prerequisites:
PY207,
208,
CS106.
The Department CS 371, 372. INDEPENDENT STUDY
3, 3
Special study in computing outside of the regular departmental
offerings. Prerequisite: consent of department. Non-liberal
arts. The Department CS 376. ADVANCED
TOPICS IN COMPUTER SCIENCE 3
Advanced topics that complement the established course offerings
in computer science will be selected. May be repeated for
credit. Prerequisite: permission of instructor.
The Department CS 381, 382. SENIOR
THESIS 3,3
Optional for computer science majors. Recommended for those
working toward professional careers or graduate study in computer
science, and those seeking to satisfy the criteria for departmental
honors. CS 399. INTERNSHIP
IN COMPUTER SCIENCE 3 or 6
Professional experience at an advanced level for juniors and
seniors with substantial academic experience in computer science
and mathematics. With faculty sponsorship and departmental
approval, students may extend their educational experience
in computer science, software engineering, or applied mathematics.
This course may not be used to satisfy the requirements of
any major or minor in the department. Prerequisites:
MC115, CS206, one additional course in mathematics or computer
science at the 200 level or above, and permission of the department.
Non-liberal arts.