Computer Science : Courses

COMP 105 Computing: Impact & Application w/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. AOS (CS)

COMP 107 Pictures and Sound: Programming with Multimedia

This course provides an introduction to multimedia programming: developing programs that create and manipulate text, pictures, sounds, and movies. Topics include creating negative and grayscale 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.

COMP 108 Intro 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 understanding and manipulating simple equations.

COMP 110 Intro to Programming w/Lab

An introduction to programming and design concepts using a modern object-oriented 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, JavaScript. Can be satisfied by taking COMP 105.

COMP 210 Data Structures

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. Prerequisites: COMP 105 or COMP 110 or permission.

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, divide-and-conquer 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.

COMP 230 Computer Architecture

Introduction to computer organization; gates, truth tables, and logic design; number representation and arithmetic; assembly-language programming and the assembly process; and current techniques for improving computer performance. AOS (CS) Prerequisite: COMP 210.

COMP 255 Computer Programming/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. AOS (CS) Prerequisite: PHYS 150.

Also listed as PHYS 255

COMP 265 Cognitive Science

Cognitive science is the interdisciplinary study of mind and the nature of intelligence. It is a rapidly evolving field that deals with information processing, intelligent systems, complex cognition, and large-scale computation. The scientific discipline lies in the overlapping area of neuroscience, psychology, computer science, linguistics and philosophy. Students will learn the basic physiological and psychological mechanisms and computational algorithms underlying different cognitive phenomena. The course is designed mostly for psychology and computer science students, but other students interested in interdisciplinary thinking might take the class. CR (CS or PSYC Major and Minor) Prerequisite: PSYC 101 and COMP 105 or Permission.

Also listed as PSYC 265

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. AOS (CS) Prerequisite: MATH 250 or 330 and one computer science course.

Also listed as MATH 300

COMP 320 Principles of Programming Languages

Study of programming language concepts and comparative evaluation of several programming languages. Typical topics include imperative, functional, and object-oriented programming paradigms, programming language syntax, type theory, static and dynamic binding of variables, and scope rules. AOS (CS) Prerequisite: COMP 210.

COMP 415 Computational Neuroscience

Study of mathematical models, computational algorithms, and simulation methods that contribute to our understanding of neural mechanisms. Brief introduction to neurobiological concepts and mathematical techniques. Both normal and pathological behaviors will be analyzed by using neural models. AOS (SS or CS)

Also listed as PSYC 415

COMP 430 Operating Systems and Networking

Study of operating system concepts such as processes and threads, CPU, memory, and I/O management; concurrency control; network protocols, structure, and administration; and distributed computing. AOS (CS) Prerequisite: COMP 230.