Home Page

Computer Science Group

Catalog Descriptions

Home Page Home Page Academic Programs Academic Programs Site Structure Structure of Web Site


COMP 111 Computers: An Introduction

The purpose of the course is to provide an overview of some important ideas in computer science and to develop specific computer and programming skills. Topics will include an introduction to algorithms, a programming language, and the discussion of basic ideas about computers. The course does not assume any background in either computers or programming.


COMP 112 Introduction to Programming

The course will provide an introduction to a modern imperative programming language including a discussion of input/output, basic control structures, types, functions, and classes. It will focus on writing programs using a software development environment. The lectures will also discuss a variety of algorithms as well as program design issues.


COMP 131 Logic and Computation

This is a first year initiative course which introduces some of the basic ideas in logic and computation and the connections between the two fields. The first part of the course discusses the formalization of mathematical reasoning. The second part presents the elements of computation motivated by the question "what is a programming language". The final part of the course integrates the preceding two lines of thought.


COMP 211 Computer Science I

This is the first course in a two-course sequence (COMP 211-212) providing an in-depth introduction to computer science. The central topics are the design and analysis of algorithms and their implementation in high-level programming languages. As such, both classes involve substantial programming as well as theoretical work; students will work in both the functional and object-oriented programming paradigms.

The emphasis in COMP 211 is on program design, particularly the use of elementary data structures and abstract data types, and on the qualitative analysis of the computational processes that programs generate.

Prerequisites: COMP 112 or AP credit in Computer Science


COMP 212 Data Structures

This is the second course in a two-course sequence (COMP 211-212) providing an in-depth introduction to computer science. The central topics are the design and analysis of algorithms and their implementation in high-level programming languages. As such, both classes involve substantial programming as well as theoretical work; students will work in both the functional and object-oriented programming paradigms.

In COMP 212 special attention is paid to the qualitative analysis of algorithms and to the role of advanced data structures in improving program efficiency. Topics will include abstract data types, stacks, queues, sets, hashing, and graphs.

Prerequisites: COMP 211


COMP 231 Computer Structure and Operation

The purpose of the course is to introduce and discuss the structure and operation of digital computers. Topics will include binary numbers, logic of circuits, microarchitectures, microprogramming, conventional machine architectures, and systems software including operating systems and assemblers. Assembly language programming will be used to demonstrate the concepts.

Prerequisites: COMP 212


COMP 301 Automata Theory and Formal Languages

This course introduces students to the theory of formal languages and automata, a subject which forms the foundations of language parsing and modern linguistic syntax. Topics covered include regular languages, context-free languages and Type 0 languages, as well as their automata counterparts: deterministic and non-deterministic finite-state automata, push-down automata, and Turing machines. Scanning and parsing algorithms, and/or the basics of computational complexity theory will also be discussed as time permits.

Prerequisites: MATH 228


COMP 302 Theory of Computation

The course will introduce several computational models which have been developed to formalize the notion of an algorithm. It will also discuss in detail several of the primary topics in the theory computation including the theory of recursive functions, Turing machines, and several undecidable problems such as the Halting and Word problems.

Prerequisites: MATH 228


COMP 312 Algorithms and Complexity

The course will discuss the design and analysis of correct and efficient computer algorithms. Topics will include greedy algorithms, divide-and-conquer algorithms, dynamic programming algorithms, and graph algorithms. Some advanced topics in algorithms may be selected from specialized areas of mathematics and computer science.

Prerequisites: MATH 228 and COMP 212


COMP 320 Musical Computing

This course provides a technical introduction to the problems and methods of computer music including the fundamental principles of sound digitization, analysis, and synthesis and a survey of related music programming languages.

Prerequisites: COMP 212


COMP 321 Design of Programming Languages

This course provides an introduction to various concepts in programming languages. Topics will include parameter passing, type checking and inference, control mechanisms, data abstraction, module systems, and concurrency. Basic ideas in functional, object-oriented, and logic programming languages will also be discussed.

Prerequisites: COMP 212


COMP 322 Compilers

This course provides an introduction to the basic ideas of language translation. Topics will include context-free grammars, parsing, syntax-directed translation, optimization, and code generation. There will be a project involving the design and implementation of a compiler for a simple imperative language.

Prerequisites: COMP 212


COMP 342 Programming Methods

This course provides an introduction to the design, implementation, and verification of programs and program modules. Possible topics include specification techniques, theory of modules and module interfaces, and elements of program verification. These topics will be discussed in the context of several language paradigms which support the module concept. There will be several projects involving the specification and implementation of software modules.

Prerequisites: COMP 212


COMP 352 Methods of Artificial Intelligence

This course will introduce and discuss the basic problem solving techniques in the field of artificial intelligence. Possible topics will include heuristic search, game playing, pattern matching, and automatic theorem proving. There will be a number of programming projects involving the implementation of these ideas in specific contexts.

Prerequisites: COMP 212


COMP 354 Principles of Databases

This course provides an introduction to the design, implementation, and uses of databases. Topics will include database design, database models, integrity, concurrency, and security.

Prerequisites: COMP 212


COMP 356 Computer Graphics

This course provides an introduction to the basic ideas in the field of computer graphics. Topics will include digital geometry, automata for recognizing objects, windowing and clipping, shading curves, three-dimensional objects, and data structures for pictures.

Prerequisites: MATH 221 and COMP 212


COMP 360 Topics in Computer Science

Course content varies from year to year. In the last few years, the content has included logic programming, parallel computing, software applications, signal processing, declarative programming languages, and term rewriting and unification. This course may be repeated for credit.

Prerequisites: Permission of instructor


COMP 372 Computers and Society

The course addresses technical, ethical, and social issues associated with computers.


COMP 401, 402 Individual Tutorial for Undergraduates

Topics to be arranged in consultation with the tutor.


COMP 409, 410 Senior Thesis Tutorial

Topics to be arranged in consultation with the tutor.


COMP 411, 412 Group Tutorial for Undergraduates

COMP 491, 492 Teaching Apprentice Tutorial



Page last modified on December 11, 1998
Report problems to mrice@wesleyan.eduTop of Page