Computer Science Curriculum
Eleven courses in computer science including:
132, 232, 251, 314, 332, 356, 491, 492
A Systems course (352, 354 or
another designated special topics course).
One elective numbered 200 or
higher (Upon prior approval of the department, an appropriate course outside of
computer science may replace the 200-level elective).
One elective course
numbered 300 or higher.
Two courses in mathematics:
Six courses in computer science
numbered 132 or higher, including:
132, 232 and 251
course numbered 200 or higher (Upon prior approval of the department, an
appropriate course outside of computer science may replace the 200-level
Two elective courses numbered 300 or higher.
131 is a prerequisite for 132. Students with prior programming experience may
place out of 131.
Suggested Four Year
First Year: 131, 132, MATH 170 (or MATH 151 & 170)
Second Year: 251, 232, MATH 211
Third Year: 356, 354/352, 332, Computer
Fourth Year: 491, 314, 492, Computer Science Elective
Note: Students who have taken Advanced Placement (AP) or International
Baccalaureate (IB) exams may be given credit for COMP 131, COMP 132 and COMP 232
depending upon their score. Students without AP or IB scores but with least one
year of object oriented programming experience in Java may, with faculty
approval, be placed into COMP 132.
Honors in the
Departmental honors is the highest distinction that the Department
can award to a Major. Majors who receive departmental honors will be those who
demonstrate a broad mastery of the discipline as well as an ability to complete
and present high quality research. A broad mastery of the discipline is
demonstrated by a GPA of 3.40 or higher in all courses related to the major. The
ability to complete high quality research is demonstrated by the completion of a
yearlong research project. This project will be characterized by an independent
and in-depth study of an advanced topic including a literature search, reading
of original sources and a novel formulation of results. Finally, the ability to
present such research is demonstrated by the preparation of an honors thesis, a
public presentation and a successful defense of the work to the department
faculty. More detailed information is available on the department's
131 Introduction to Computer Science I
introduction to Computer Science as a major scientific discipline. Special
emphasis is placed on problem solving and experimentation via programming in
Java. Topics covered include the design of objects and the use of
flow-of-control constructs, along with techniques for testing software.
Three hours classroom and two hours laboratory a week. This course
fulfills either the DIV III lab science distribution requirement or QR
graduation requirement. Offered every semester.
132 Introduction to Computer Science II
problem-solving course that utilizes object-based software design using Java.
Topics include code modularity and reusability, recursion, data storage, and the
empirical and theoretical comparison of elementary algorithms. The lab component
focuses on programming as a tool for solving problems and simulating real-world
Prerequisite: 131 or one year of object oriented programming
in Java and instructor's permission. Three hours classroom and two hours
laboratory a week. This course fulfills either the DIV III lab science
distribution requirement or QR graduation requirement. Offered every semester.
203, 204 Special Topics
Topics to be announced when offered.
Prerequisite: permission of the
instructor. One-half or one course credit.
Data Structures and Problem Solving
An advanced problem-solving
course that focuses on the design and analysis of data structures including
lists, stacks, queues, trees, and hash tables. Concepts in generic programming
are also introduced. The lab component focuses on the implementation of data
structures and their application to solving complex problems.
Prerequisite: 132. Three hours of classroom and two hours laboratory a
week. This course fulfills either the DIV III lab science distribution
requirement or QR graduation requirement. Offered every
241 Numerical Methods
An introduction to numerical methods for solving mathematical problems.
Topics chosen from interpolation, numerical differentiation and integration,
solutions to linear and non-linear systems, numerical solutions to differential
equations and related topics.
Prerequisite: Completion of two of the
following courses: MATH 170,171, 211 and 270. This course is cross-listed as
MATH 241. This course fulfills the QR graduation requirement. Offered in even
numbered spring semesters.
Organization and Architecture
An introduction to the internal
structure and operation of computers. Topics include an introduction to
assembly language programming, data representation, machine arithmetic, digital
logic, basic hardware components, input/output processing and a survey of modern
Prerequisite: 132. NOTE: Completion of both
251 and 332 fulfills the WR graduation requirement. Offered every fall.
314 Theoretical Foundations of Computer
An introduction to the theory of computation. Topics
include formal language theory (grammars, languages, and automata including
Turing machines), and an introduction to the concept of undecidable problems,
including the halting problem.
Prerequisites: 132 and MATH 211. This
course is cross-listed as MATH 314. Offered every spring.
An introduction to deterministic operations research,
including linear programming, sensitivity analysis, and duality. Special topics
may include transportation and assignment problems, network models, integer
programming, and game theory.
Prerequisite: 262. This course is
cross-listed as MATH 331. This course fulfills the QR graduation requirement.
Offered in odd numbered fall semesters.
332 Analysis of Algorithms
A study of algorithmic
approaches to problem-solving and techniques for analyzing and comparing
algorithms. Approaches such as divide-and-conquer, dynamic programming, and
backtracking will be explored in conjunction with complex structures such as
trees and graphs. Topics in computational complexity include asymptotic
complexity measures, intractability, and NP-complete problems.
Prerequisite: 232, MATH 211. NOTE: Completion of both 251 and 332
fulfills the WR graduation requirement. Offered every
352 Computer Networks
An examination of the hardware, software and protocols used in computer
networks. Topics include layered architectures, client server computing,
reliable and unreliable protocols, data encoding and compression, error
detection and correction, routing, examination of the internet as an example and
an introduction to network programming.
Prerequisite: 232 and 251.
Offered in odd numbered spring semesters.
354 Operating Systems
A study of the principles
underlying the organization and implementation of computer operating systems.
Topics include multiprogramming, time-sharing, mutual exclusion and
synchronization, process scheduling, memory management, and file systems.
Prerequisites: 232 and 251. Offered in even numbered spring
356 Programming Language
An examination of the major programming language
paradigms. The course also explores the basic properties and special facilities
of languages representing each paradigm. Topics include data types, scope rules,
block structures, procedure calls and parameter types, and storage allocation
Prerequisite: 232. Offered every
A survey of techniques for applying computers to tasks
usually considered to require human intelligence. Topics include knowledge
representation and reasoning, search and constraint satisfaction, evolutionary
and genetic algorithms, machine learning, neural networks, and philosophical
Prerequisites: 232 and MATH 211. Offered in even numbered
A study of the conceptual, technical and social issues
involved in organizing, storing and accessing large volumes of data. Topics
include data modeling, relational data base design, relational algebra, data
definition languages and data manipulation languages.
232 and MATH 211. Offered in even numbered spring semesters.
393, 394 Special Topics
Topics to be announced when offered. Possibilities include Software Engineering,
Parallel Computing, and Compiler Design.
Prerequisite: permission of
491 Fall Senior
Students define and begin a year-long project. Written and
oral presentation of project progress reports will be required. Contemporary
social, ethical, technical and philosophical issues in computer science will
also be examined.
Prerequisite: Senior standing. Offered every
492 Spring Senior
A continuation of the project begun in 491 culminating in a
written thesis and public presentation. Additional contemporary issues in
computer science may be considered.
Prerequisite: 491. Offered every