## Courses

## COMPUTER SCIENCE COURSES

Clicking on the course number will take you to the course website.

## 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. Except in unusual circumstances, students who have already taken 107 or 108 should generally not take this course. QR AOS (CS)

## 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. Except in unusual circumstances, students who have already taken 105 or 108 should generally not take this course. QR AOS (CS)

## COMP 108 Introduction to Scientific Computing

The purpose of this course is to give students an introduction to scientific modeling and data analysis. The course will provide an introduction to computer programming and will cover a selection of topics relevant to scientific research, emphasizing the process of modeling, simulation, visualization, and evaluation of data. It will also introduce fundamental computer science topics, including the limits of computation and algorithm analysis. This course is intended for students with a strong interest or background in science, math, and/or computer science. Prior programming experience is not required. Except in unusual circumstances, students who have already taken 105 or 107 should generally not take this course.

## COMP 110 Introduction to Programming with Lab

An introduction to object-oriented programming. Topics include basic language features and the fundamentals of the programming process, including design, implementation, and testing. Hands-on programming is a central component of the course, embodied in weekly labs, in-class mini-labs, and frequent programming assignments. Some previous exposure to programming or strong math skills are recommended; see a faculty member if you have questions about taking this course. QR

## COMP 210

Data StructuresProvides students an opportunity to further develop and refine their design, implementation, and testing skills. In particular, the emphasis of this course is on the organization of information, the implementation of common data structures such as lists, stacks, queues, trees, and graphs, and techniques of data abstraction, including encapsulation and inheritance. The course will also explore recursion and the close relationship between data structures and algorithms. Hands-on programming is a central component of this course, through numerous mini-labs and outside programming assignments. AOS (CS)

Prerequisites: COMP 105 and 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 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 265/PSYCH 265 Cognitive ScienceCognitive 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.

## 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.## COMP 320 Principles of Programming Languages

Study of programming language concepts and paradigms. Students will look at the historical progression of language design, study the distinctive characteristics of major programming paradigms, discuss design decisions and tradeoffs, and develop fluency in new language. Typical topics include syntactic and semantic differences among languages, type theory, static and dynamic binding of variables, and scope rules. AOS (CS)

Prerequisite: COMP 210.

## COMP 415/PSYCH 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.

Prerequisite:PSYCH 101

COMP 430 Operating SystemsProvides an introduction to operating systems and networking concepts. In particular, the course covers processes and threads, process synchronization, CPU scheduling, deadlocks, memory management, file systems, securtiy, and network structures and protocols. AOS (CS)

Prerequisite: COMP 230.## COMP 483 - 489 Special Topics

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.

483Cryptography

487Dynamic Internet Apps

487Software Development in a Global Context

489Mobile Computing