|
Computer Science Group
Catalog Descriptions
|
|
Home Page
|
| 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.edu |