COMPUTER SCIENCE COURSES
COMP 105 Introduction to Computer Science
with Lab
An overview of the field of computer science. Typical topics may include
the history of computers, what computers can and cannot do, the basic
concepts of computer programming, program and user interface design,
how computers represent information internally, an introduction to artificial
intelligence, and the ethical and societal issues raised by the widespread
use of computers. QR AOS (CS)
Link
to course home page
COMP 107 Pictures and Sounds: Programming with Multimedia with Lab
This course provides an introduction to multimedia programming: developing programs that create and manipulate text, pictures, sound, and movies. Topics include creating negative and gray-scale images, reversing and splicing sounds, creating sound visualizations, and creating animations. Students will learn some of the concepts and techniques underlying software applications like Photoshop or SoundEdit as well as fundamental concepts underlying all of computing, such as algorithms, abstractions, and how computers represent numbers, text, images, and sound. Hands-on programming is a central component of the course, embodied in weekly labs and frequent programming assignments. QR AOS (CS)
Link to course home page
COMP 108 Introduction to Scientific Computing
The purpose of this course is to give students an introduction to the field of computer science with an emphasis on scientific modeling and data analysis. The course will provide an introduction to computer programming in both Matlab and C/C++. We will discuss fundamental computer science topics including the limits of computation and algorithm analysis. We will also cover a selection of topics relevant to scientific research, including data visualization, representation of numbers, and random number generation. Course work will include programming projects, homework assignments and exams. Students will be required to complete a final programming project on a topic of their choice. This course requires no previous programming experience. There is no formal math prerequisite, but students should be comfortable working with basic mathematical notation. QR AOS (CS)
Link to course home page
COMP 110 Introduction to Programming with
Lab
An introduction to programming and design concepts using a modern programming
language. Topics include the basic features of the language, modular
programming techniques, and appropriate design methods. Students will
have ample opportunity to revise existing programs and develop new software.
QR
Prerequisite: Familiarity with some programming language, e. g. BASIC,
PASCAL, HyperTalk. Can be satisfied by taking COMP 105.
Link
to course home page
Provides students an opportunity to refine programming and design skills.
Emphasis is on techniques of data abstraction, including encapsulation
and inheritance; implementation and appropriate use of common data structures
(such as lists, stacks, queues, trees, and graphs); recursion; and the
close relationship between data structures and algorithms. AOS (CS)
Prerequisites: COMP
105 and COMP
110 or permission.
Link
to course home page
COMP 215 Computer Algorithms
Introduction to a variety of algorithms and algorithm design techniques
that recur in computer science literature and applications. These include
common sorting and searching algorithms, divideandconquer and dynamic
programming algorithms, and algorithms in the areas of string processing,
geometry, and graph theory. This course also provides an introduction
to the mathematical analysis of the complexity and performance of algorithms.
AOS (CS)
Prerequisites: COMP
210 and MATH
250.
Link
to course home page
COMP 230 Computer Architecture
Introduction to computer organization; gates, truth tables, and logic
design; number representation and arithmetic; assemblylanguage programming
and the assembly process; and current techniques for improving computer
performance. AOS (CS)
Prerequisite: COMP
210.
Link
to course home page
COMP 255 Computer Programming and Simulation
Computer modeling of physical phenomena. Programming skills will be
developed in the context of doing physics. Topics include numerical
integration of Newton's equations, cellular automata, and random walks
including Monte Carlo methods. (Also listed as PHYS
255 .) AOS (CS)
Prerequisite: PHYS
150.
COMP 260 Digital Electronics with Lab
Introductory electronics, elementary logic and arithmetic circuit components,
sequential circuit analysis and design; applications to computer circuit
design. (Also listed as PHYS
260.) AOS (CS)
Prerequisite: permission.
COMP 300 Automata, Formal Languages, and Computability
Study of automata as mathematical models of computation; of formal
languages, which play a central role in the specification and translation
of programming languages; and of the fundamental capabilities and limitations
of computers. (Also listed as MATH
300.) AOS (CS) Prerequisite: MATH
250 or 330
and one computer science course.
Link
to course home page
COMP 320 Principles of Programming Languages
Study of programming language concepts and comparative evaluation of
several programming languages. Typical topics include imperative, functional,
and objectoriented programming paradigms, programming language syntax,
type theory, static and dynamic binding of variables, and scope rules.
AOS (CS)
Prerequisite: COMP
210.
Link
to course home page
COMP 430 Operating Systems
Study of the internal operation of modern operating systems, including
processes and threads, mutual exclusion, CPU scheduling, deadlock, memory
management, file systems, and networked and distributed computing. AOS
(CS)
Prerequisite: COMP
230.
Link
to course home page
Each offering focuses on a computer science topic not regularly addressed
in the core curriculum. Topics come from areas such as artificial intelligence,
computer graphics, databases, networking, and software engineering.
AOS (CS)
Prerequisite: permission.
Networking
(Spring 2002)
Artificial
Intelligence (Winter 2003)
Software
Engineering (Spring 2003)