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 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. 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.) Prerequisites: QR1, and
CS106 or
MA113, or permission of the instructor. 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
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:CS106 and
MA111, or both
MA108 and
109,
or permission of instructor. 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 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. Non-liberal
arts. 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.
Non-liberal arts.