Wesleyan Home → Mathematics and Computer Science → Computer Science → Courses Regularly Offered
Undergraduate Computer Science Courses
-
COMP 112: Introduction to Programming
-
The course will provide an introduction to a modern
high-level programming language including a discussion
of input/output, basic control structures, types,
functions, and classes. The lectures will also
discuss a variety of algorithms as well as program
design issues.
-
COMP 131: Logic and Computation (FYI)
-
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 132: Computing, Privacy, and Security (FYI)
-
This course will discuss both technical and ethical issues related to
computing. On the technical side, the material will cover topics such
as networking and cryptography. The technical material will be learned
in the service of discussing social and ethical issues such as privacy,
security, and intellectual property. Neither list is exhaustive and
each list is likely to be modified according to the interests of the
instructor, interests of the students, and current events.
-
COMP 133: Crytography (FYI)
-
This course will discuss historical, mathematical,
programming and public policy issues related to
codemaking and codebreaking. Emphasis will vary
according to the interests of the instructor.
-
COMP 134: Human and Machine Inference (FYI)
-
This course will explore how people and computers perform inference - the
process of reading conclusions based on premises - with investigation of
computational, philosophical, and psychological perspectives. Discussions
of puzzles and brainteasers will help expose and illuminate intricacies
of inference.
-
COMP 211: Computer Science I (Core)
-
This is the first course in a two-course sequence
(COMP 211-212) that is the gateway to the Computer
Science major. It provides an introduction to the
fundamental ideas of object-oriented programming
in particular and Computer Science in general. Part
of the course will focus on an intensive study of
one particular programming language, and the remainder
on associated mathematical concepts and formalisms.
-
This course is intended for Computer Science majors
and others who want an in-depth understanding of
programming and expect to continue programming after
this course. While there are no prerequisites beyond
some familiarity with using computers, it is a
significantly more challenging course than COMP
112. Because of the non-programming topics that
will be addressed, permission to place out of this
course using AP Computer Science credit will be
decided on a case-by-case basis by the instructor.
This course may have additional laboratory sections.
-
COMP 212: Data Structures (Computer Science II) (Core)
-
This is the second course in a two-course sequence
(COMP 211-212) that is the gateway to the Computer
Science major. This course provides an introduction
to fundamental algorithms and data structures based
on the notion of an abstract data type. The topics
will include abstract data types, stacks, queues,
sets, hashing, and graphs; these will be addressed
from both a programming and mathematical standpoint.
-
Because of the non-programming topics that are
addressed in COMP 211, permission to take COMP 212
without having taken COMP 211 will be decided on a
case-by-case basis by the instructor. COMP 112 is
not typically acceptable as a prerequisite for this
course.
This course may have addtional laboratory sections.
-
Prerequisite: COMP 211
-
COMP 231: Computer Structure and Organization (Core)
-
The purpose of the course is to introduce and discuss the structure and
operation of digital computers. Topics will include the logic of circuits,
microarchitectures, microprogramming, conventional machine architectures,
and an introduction to software/hardware interface issues. Assembly
language programming will be used to demonstrate some of the basic
concepts.
-
Prerequisites: COMP 212
-
COMP 265: Bioinformatics Programming
-
An introduction for life science students with little or no prior
programming experience, this course will introduce the fundamental
concepts and mechanisms of computer programs using a language (Perl or
Python) and examples (sequence matching and manipulation, database access,
output parsing, etc.) frequently encountered in the use and development
of informatics software.
-
COMP 301: Automata Theory and Formal Languages (Core)
-
This course is an introduction to formalisms studied in computer
science and mathematical models of computing machines. The language
formalisms discussed include regular, context-free, and recursively
enumerable languages. The machines discussed include finite-state
automata, pushdown automata and Turing machines.
-
Prerequisites: COMP 211 and MATH 228
-
COMP 312: Algorithms and Complexity (Core)
-
The course will cover the design and analysis of correct and
efficient algorithms. Basic topics will include greedy algorithms,
divide-and-conquer algorithms, dynamic programming, and graph
algorithms. Some advanced topics in algorithms may be selected from
other areas of computer science.
-
Prerequisites: COMP 212 and MATH 228
-
COMP 321: Design of Programming Languages (Core 321/322)
-
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 (Core 321/322)
-
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 327: Evolutionary and Ecological Bioinformatics
-
This course will discuss evolutionary and ecological topics from
a bioinformatics perspective with an emphasis on phylogenetics and
meta-genomics.
Cross-listing: BIOL 327.
-
Prerequisites: [MB&B205 or BIOL205] OR
[BIOL206 or MB&B206] OR BIOL207 OR COMP212 OR
[COMP312 or COMP510] OR [MB&B225 or BIOL225] OR
[MB&B181 or BIOL181] OR [MB&B195 or BIOL195] OR
[BIOL182 or MB&B182]
-
COMP 342: Programming Methods
-
This course provides an introduction to methods of
modern programming. Topics may include a survey of
current programming languages, advanced topics in
a specific language, design patterns, code
reorganization techniques, specification languages,
verification, tools for managing multiple-programmer
software projects, and possibly others. The specific
topics will vary according to the tastes of the
instructor, though the course may only be taken
once for credit. The topics will be discussed in
the context of either several smaller programming
projects or one large one.
-
Prerequisites: COMP 212
-
COMP 350: Bioinformatics and Function Genomics
-
This course will interweave the discussion of biological and
informatics topics focusing on computational approaches to biological
problems. Possible topics include genomic databases, scoring methods,
alignment algorithms, prediction of RNA secondary structures, overview
of genome projects, and the analysis of micro-array data.
Crosslistings: BIOL 350, MB&B 350.
-
Prerequisites: BIOL 206 OR MB&B 206 OR COMP
212
-
COMP 352: Topics in Artficial Intelligence
-
This upper-level course in artificial intelligence focuses on
multiagent systems.
-
Prerequisites: COMP 212 and MATH 228.
-
COMP 354: Principles of Databases
-
This course provides an introduction to the design
and implementation of
relational databases. Topics will include an introduction to
relational algebra and SQL, relational database design, database
management systems, and transaction processing.
-
Prerequisites: COMP 212
-
COMP 356: Computer Graphics
-
This course covers fundamental algorithms in two- and three-dimensional
graphics. The theory and application of the algorithms will be
studied, and implementation of the algorithms or applications of them
will be an integral part of the course. According to the tastes of
the instructor, additional topics such as elementary animation or
more advanced techniques may be covered.
-
Prerequisites: COMP 212
-
COMP 360: Topics in Computer Science
-
Topics not regularly offered in the curriculum are covered at the
discretion of the instructor. In the last few years, topics such as
human-computer interaction, applied logic, data analysis, and networking
have been taught. This course may be repeated for credit. The current
instructor should be consulted when enrolling for information about
prerequisites.