Computer Science Courses
99 Computers In Our World / Lecture, Laboratory
An introduction to computer technology with an emphasis on social implications
where applicable. Lectures will survey topics such as history of computer
development from number- crunchers to information management systems, how
computers work, networking protocols including the Internet and World Wide
Web. Additionally, the course will explore data representation and programming;
students will learn binary algebra and develop two or three short programs.
A laboratory component will give students hands-on experience with software
applications which demonstrate the possibilities enabled by current computer
technology. There are no prerequisites; no prior computer experience is necessary.
Not applicable to the major requirements in computer science. Staff / Offered
periodically.
101 Computer Programming I / Lecture, Laboratory
An introduction to computer programming using Java. The theme is the top-down
approach to problem solving. Algorithms are developed for the solutions to
stated problems, then translated into Java and tested on the computer.
For the laboratory component, students are expected to write approximately
seven programs throughout the course. Specific topics include decision making,
logic design, iteration, arrays, text files, and records. Satisfies the formal
analysis requirement. No prerequisites. This course is a prerequisite
for most higher numbered computer science courses. Mr. Chou, Mr. Green,
Ms. Han, Mr. Joyce, Staff / Offered every semester
102 Computer Programming II / Lecture, Laboratory
A continuation of CSci 101, covering such topics as string manipulation,
data files and their processing, collections, and dynamic data structures
such as linked lists, stacks, queues, and binary trees. The usage and implementation
of recursion also is discussed. Approximately six programming projects are
assigned as the laboratory component of the course. These projects entail
the design and implementation of programs involving the topics mentioned
above. Prerequisite: CSCI 101. Mr. Chou, Mr. Green / Offered
every semester
110 Can Computers Think? / Seminar
In this course we will follow several different lines of inquiry. We first need to explore what it means for a computer to "think". Is a computer "thinking" when you use it to play a game, or when you use it to calculate something? After that, we will figure out the methods we as humans use to "think" - specifically how we solve problems. A good part of solving any problem is putting it in a form that we can work with. So we will look at how we state problems in ways that make them solvable. We'll then concentrate on problems that can be approached with a computer and we'll program the computer to solve those problems. Fulfills the Formal Analysis Perspective. No computer programming background is required; however, previous experience in thinking is essential. Mr. Breecher
140 Assembly Language And Computer Organization / Lecture, Laboratory
Covers fundamentals of assembly language programming such as data representation,
the instruction set, addressing mode, macros, procedures, input and output
facilities, assembler and linker, introduction to logic circuits, and the
basic machine organization of conventional computers. The goal is to understand
how a computer performs various tasks that are completely hidden from the
user in a high-level language. For the laboratory component, students will
write several programs in assembly language. Prerequisites for this course require a grade of C or better. Prerequisite: CSci 102.
Mr. Chou, Mr. Breecher / Offered every year
160 Data Structures And Algorithms / Lecture, Discussion, Laboratory
Deals with advanced data structures such as sets, trees, and graphs, together
with the algorithms to manipulate them. Applications to searching and sorting
are discussed. Topics include: analysis of algorithms, general trees, balanced
trees, priority queues, hash tables, merge-sort, quick-sort, radix sorting
and searching, and elementary graph algorithms. Involves a fourth-hour
problem-solving session. Programming projects are assigned for the
laboratory component. Prerequisites for this course require a grade of C or
better. Prerequisite: CSci 102 and Math 114. Mr. Chou, Mr.
Green / Offered every year
170 Analysis Of Programming Languages / Lecture
Deals with the issues of the design and implementation of programming languages
from both the syntactic and the semantic point of view. Topics include: the
representation of rules of syntax, using context-free grammars, parsing,
semantic constructs, control structures, implementation of procedures and
parameters, implementation of recursion, and an introduction to the organization
of compilers. A typical group term project may be to design and implement
a compiler or interpreter for the actual implementation of some language.
Prerequisites for this course require a grade of C or better. Prerequisites:
CSci 102 and Math 114. Mr. Joyce, Mr. Green / Offered every
year
180 Automata Theory / Lecture, Discussion
Studies the abstract models of machines and languages recognized by them,
and introduces the concept of computability. Begins with a review of sets,
functions, and relations, then continues with finite automata and regular
languages, pushdown automata and context-free grammars, grammar transformations
and normal forms, and finally the mathematical model of modern computers:
Turing machines and computable functions. Some examples of unsolvable problems,
such as the halting problem, will be discussed. Involves a fourth-hour
problem-solving session. Prerequisites for this course require a grade of C or better.
Prerequisite: CSci 102 and Math 114. Mr. Chou,
Mr. Green, Mr. Joyce / Offered every year
201 Proseminar In Computer Science / Seminar
The presentation of topics in computer science by and for senior undergraduates.
These presentations acquaint students with diverse subjects, introduce them
to researching known topics, and give them practice in presenting material
to their peers. Faculty members will also present some research topics. Possible
areas the topics may be drawn from might include robotics, networking, NP
complete problems, neural networks, expert systems, parallel algorithms.
Prerequisites for this course require a grade of C- or better. Prerequisites:
CSci 160 and CSci 170. Staff / Offered periodically
210 Artificial Intelligence / Lecture, Laboratory
Focuses on the fundamental ideas of artificial intelligence and programming
in Lisp. Topics included are knowledge representation schemes, problem representation
through explicit models, search techniques, analogy and pattern recognition,
natural language parsing, and planning. Students implement the above ideas
through computer programs written in Lisp. Language instruction is
provided in Lisp (or Prolog), although no prior knowledge of these programming
languages is assumed. Prerequisites for this course require a grade of C- or better.
Prerequisite: CSci 160 Mr. Xuan/ Offered every year
212 Numerical Analysis and Scientific Computing / Lecture, Laboratory
See Math 212. Mr. Chou, Ms. Sternberg / Offered every other year.
215 Operating Systems / Lecture, Laboratory
Studies the structure, performance, and design of operating systems. Topics
include concurrency, deadlocks, scheduling, and memory management. Various
operating systems may be examined and compared. Students will design and
implement parts of operating systems. Prerequisites for this course
require a grade of C- or better. Prerequisite: CSci 160. Mr. Green,
Mr. Breecher / Offered every other year
220 Database Management And Systems Design / Lecture
An advanced course on the realities of database technology. Emphasizes the
goals of database management: performance, data integrity, future compatibility,
and versatility. The concept of the data model is examined and a specific
database is discussed. Concentrates on database design and specification.
Prerequisite: CSci 160. Mr. Chou / Offered every other year
230 Compiler Design / Lecture, Laboratory
A continuation of CSci 180, Automata Theory. It uses the automata and grammars
introduced in CSci 180 to design translators (compilers) for programming
languages. Topics include lexical analysis, top-down parsing, bottom-up parsing,
syntax-directed translation, type checking, run- time environment, code generation,
and an introduction to code optimization. A typical term project is to write
a compiler for a simple programming language such as a subset of C or Pascal.
Prerequisites for this course require a grade of C- or better. Prerequisites: CSci 160 and CSci 180. Mr. Chou, Mr. Green / Offered
every other year
240 Computer Architecture / Lecture
A study of the design of computers. Topics include the design of combinatorial
and sequential circuits, design methodology of a basic computer, central
processor organization, microprogramming, memory organization, input- output
organization, and arithmetic processor design. As time permits, further topics,
such as vector and parallel processing, are discussed. A functional, logical
(theoretical) approach is adopted. Physics 219, Electronics Laboratory, is
recommended so that students gain hands-on experience with computer chips.
The science of design is stressed together with the existing machines.
Prerequisites for this course require a grade of C- or better. Prerequisite:
CSci 140. Mr. Breecher / Offered every other year
250 Software Engineering / Seminar
Students consider the life cycle of large software projects, beginning with
the elicitation and definition of users' requirements, and continuing through
software design, documentation, coding, testing, and maintenance. Topics
include: modularity, coupling, cohesion, transformational and transactional
structures, and testing strategies. Working in teams, students gain practical
experience developing software to solve concrete problems. Prerequisites for
this course require a grade of C- or better. Prerequisites:
CSci 160 and CSci 170. Mr. Breecher, Ms. Han, Mr. Xuan / Offered periodically
260 Computer Graphics / Lecture, Discussion, Laboratory
This course provides an introduction to computer graphics with an emphasis on the underlying theory and on the use of the graphics library OpenGL as application programming interface (API). We will study the theoretical foundations and algorithmic issues in class and will learn and use OpenGL as the particular API for writing graphics programs in programming assignments. Prerequisites for this course require a grade of C- or better. Prerequisites: Data Structures and Algorithms (CSCI160) and familiarity with calculus and matrix algebra (MATH131). Ms. Han
265 Robotics /Lecture, Laboratory
This course presents an introduction to robotics. In addition to algorithmic issues, the course will cover related engineering and system topics and discuss current research problems. Topics covered include hierarchical paradigms, biological foundations, robot actuators and sensors, sensing techniques, kinematics, and dynamics, control, localization and motion planning. Students will get hands on experience through computer simulation or physical experiments with robot project component kits. Prerequisites for this course require a grade of C- or better. Prerequisites: Data Structures and Algorithms (CSCI160) and familiarity with calculus and matrix algebra (MATH131). Students should be interested in geometric concepts and algorithms and have good programming skills. Ms. Han/Offered every other year.
270 Theory of Computation / Lecture
Studies the nature and formal models of computation (by computers), its power
and limitation (computability versus uncomputability), the computational
complexity of various problems, and the applications in logic and computer
science. Turing machines, general recursive functions, and other standard
models of computation are introduced. Other aspects of recursion theory,
such as unsolvable problems and recursively enumerable languages are introduced.
We also address the more practical question "What is an efficient program?"
in an introduction to modern complexity theory. Prerequisites for this course
require a grade of C- or better. Prerequisite: CSci 180. Mr.
Chou, Mr. Green / Offered every other year
280 Computer Networks / Lecture
Provides an introduction to the theory and practice of the design of computer
and communications networks. The TCP / IP Model will be used as the framework
with the course progressing through the physical, data link, network, and
transport layers. Analysis of network topologies and protocols, including
performance analysis, is treated. Current network types including local area
and wide area networks are introduced, as are evolving network topologies.
Laboratory exercises include the design and implementation of projects such
as simulation of the network / transport layer functions, routing, congestion
control, an Ethernet controller, applications using TCP / IP or remote procedure
calls. There may be extensive network programming assignments. Prerequisites
for this course require a grade of C- or better. Prerequisite:
CSci 140 and CSci 160. Mr. Breecher / Offered every other year.
|