815 North Broadway
Saratoga Springs,
New York, 12866
SKIDMORE PHONE
518-580-5000
Computer Science
Chair of the Department of Mathematics and Computer Science:Pierre von Kaenel
Professors: Alice M. Dean, Gove W. Effinger, Mark Hofmann, Mark E. Huibregtse, R. Daniel Hurwitz, Pierre von Kaenel, David C. Vella
Associate Professors: Una Bray, Thomas O'Connell
Assistant Professors: Michael Eckmann, Rachel Roe-Dale
THE COMPUTER SCIENCE MAJOR: Students majoring in computer
science fulfill the departmental requirements by completing
the following:
Required computer science courses: CS206, 210, 318, and 330. CS106 and 206, and 210 should normally be completed by the end of the
second year.CS206, CS230, CS305, and CS318.CS206 should normally be completed by the end of the second year.
Required MC courses:
MC115 orMC215 and 306. In MC215, students will acquire writing skills that are necessary to work on advanced material in mathematics and will fulfill the writing requirement in the major.
Electives: Three CS or MC courses at the 200 level or above.
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.
Students planning to go to graduate school should take additional courses in mathematics.
In particular,
MA113 and
204
should be considered. 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:
Complete all departmental requirements for the computer
science major and have a GPA of 3.5 or higher
for all course work (MC and CS) taken in the department,
together with a course in another discipline that has substantial
computer science content if taken as an elective with permission
of the department;
Have a GPA of 3.0 for all course work taken
at Skidmore;
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
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 that 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 or MC215,
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.
Students interested in learning how to use computers to solve
problems in the quantitative disciplines should consider the courses CS102, 103, 106, and MS104.
NOTE: Courses numbered CS102 through CS382 and MC115 or MC215, 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.
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
An introduction to the principles of design, implementation, and testing of object-oriented programs.
The course covers language features such as control structures, classes, file I/0,
and basic data structures including arrays. Other topics include recursion and fundamental algorithms,
such as elementary searching and sorting algorithms. (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 equivalent with permission of instructor. The Department
CS 210. DESIGN AND ANALYSIS
OF ALGORITHMS 4
A study of techniques used to design algorithms that are efficient in
terms of the time and memory required during execution. The course will
also cover the techniques used to evaluate an algorithm's efficiency.
Topics include advanced sorting techniques, advanced data structures,
dynamic programming, greedy algorithms, amortized analysis, and graph
algorithms. Prerequisites: MC115 or
MC215 and
CS206, and
MA111,
or both MA108 and
109,
or equivalent. The Department
MC 215. MATHEMATICAL
REASONING AND DISCRETE STRUCTURES 4 An introduction to mathematical reasoning in the context of studying
discrete structures fundamental to both mathematics and computer
science. The study and practice of mathematical reasoning and its written and spoken expression in the form of mathematical proofs and algorithm specifications. Topics include elementary logic and sets, methods of proof
including mathematical induction, algorithms and their analysis,
functions and relations, elementary combinatorics, discrete probability,
and graph theory. (Fulfills QR2 requirement and the writing requirement in the major.) Prerequisites: QR1, and CS106 or MA113, or permission of the instructor. The Department
CS 230. 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 and Yacc, Java, C++ and Prolog.Prerequisite:CS206. The Department
CS 275. INTRODUCTION TO RESEARCH IN COMPUTER SCIENCE 1
An introductory exploration of research in computer science. The
students, in collaboration with a faculty mentor, will participate in a
research project in a particular area of computer science. The research
projects may, for example, include designing new algorithms for
computational problems, surveying the research literature, implementing
existing algorithms from the research literature, or performing
computational experiments. Students may enroll for CS275 four times in
their careers, but may take no more than two in any given semester.
Must be taken S/U. Does not count toward the CS major. Prerequisite: 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 MC215 or MA200 or permission of the instructor. Fall 2007 and alternate years. The Department
CS 305. DESIGN AND ANALYSIS
OF ALGORITHMS 4
A study of techniques used to design algorithms for complex computational problems that are efficient in terms of time and memory required during execution. Students will also learn the techniques used to evaluate an algorithm’s efficiency. Topics include advanced sorting techniques, advanced data structures, dynamic programming, greedy algorithms, amortized analysis, graph algorithms, network flow algorithms and linear programming.Prerequisites:CS206, MC215, and MA111 or equivalent. 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, and computational complexity. Prerequisite: MC115 or MC215 and CS106, or permission of instructor.
Beginning in fall 2005, MC306 will have CS210 as a prerequisite. 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:MA111 (or both MA108 and 109), CS106, and MA200.
Offered on sufficient demand. 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 or MC215.
(Does not count toward the Mathematics major.) The Department
CS 322. ARTIFICIAL INTELLIGENCE 4
An introduction to the field of artificial intelligence. The course covers the main techniques used to develop computer programs to solve problems that we normally think of as requiring intelligence. Topics include search, games, knowledge representation, logical reasoning systems, and machine learning. Prerequisites:MA111 or both MA108 and 109, or equivalent, and CS210. The Department
CS 323. SOFTWARE DESIGN 3
A study of the design, implementation, documentation, and testing of
software. Focuses on object-oriented design using UML (Unified Modeling Language) models and
design patterns, implementing and documenting large software systems
by working in teams, and methods for software testing and debugging. Prerequisite:CS206. The Department
CS 324. CONCURRENT PROGRAMMING 3
A study of the concepts and techniques in concurrent or multithreaded
programming which forms the basis for operating systems, as well as
real-time, distributed and multi-processor systems. Focuses on
concurrent programming with threads and shared variables using locks,
semaphores and monitors, and explores such issues as thread safety
and liveness, mutual exclusion, and message passing between
processes. Prerequisite:CS206. The Department
CS 325. COMPUTER GRAPHICS 4
Computer graphics involves using computers to generate images, as
opposed to generating images using cameras. Computer graphics images
typically try to mimic reality. In this course, students will explore
the necessary background for further study in computer graphics.
Students will explore the basics of human vision that influence the
way computers generate images; projections from three dimensional
space to two dimensional space; various models of real world entities
such as lighting, surface reflectance, and color; and classic
algorithms in computer graphics that students will implement and with
which they will have the opportunity to experiment. Prerequisites:CS206 and MA200. 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 371, 372. INDEPENDENT STUDY 3, 3
Special study in computing outside of the regular departmental
offerings. Prerequisite: consent of department. The Department
CS 376. ADVANCED
TOPICS IN COMPUTER SCIENCE 3 or 4
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 or MC215, CS206, one additional course in mathematics or computer
science at the 200 level or above, and permission of the department. Not for liberal arts credit.