Computer Science

COMP 340 Databases

An introduction to the design and use of database systems, as well as the key issues in building such systems. Topics include the
relational model, logical database design, query languages, and database implementation issues such as storage and indexing, query
processing and optimization, concurrency control, and transaction management. In addition to traditional database topics, this course
provides an introduction to key technologies for managing and exchanging data on the World Wide Web.

COMP 342 Bioinformatics

This course is an introduction to the fields of bioinformatics and computational biology, with a central focus on algorithms and their application to a diverse set of computational problems in molecular biology. Fundamental concepts from computer science such as greedy algorithms, dynamic programming, recursion, and asymptotic notation will be taught within the context of motivating problems drawn from contemporary biology. Example biological topics include sequence alignment, motif finding, gene rearrangement, DNA sequencing, phylogeny, and gene expression analysis.


COMP 345 Data Mining

An introduction to data mining and knowledge discovery. Data mining concerns itself with the goal of getting a computer to learn or discover patterns, especially those found within large datasets. Students will be introduced to various models and learn how to apply them in practice. Topics include classification, clustering, association rules, and recommender systems.

COMP 350 Theory of Computation

A study of theoretical models for computing. The hierarchy of finite state machines, pushdown machines, context free grammars, and Turing machines will be analyzed, along with their variations. The basic concepts of decidability, complexity theory, and NP-Complete problems will be introduced. (Course offered in alternate years; scheduled for 2016-2017.)

COMP 355 Advanced Algorithms

An in-depth study of the design and analysis of advanced algorithms, including the performance tradeoffs and resources required by
various algorithmic implementations. Major classes of computational problems will be identified and explored. Advanced data structures
and approximation heuristics are introduced as required for solution design. Topics vary depending on the specific problems covered but
will include the Master Theorem, dynamic programming, divide-and-conquer and greedy algorithms. (Course offered in alternate years;
scheduled for 2015-2016.)

COMP 360 Programming Languages

A wide-ranging and in-depth coverage of fundamental programming language concepts, presenting design issues of the various language
constructs, and examining the design choices for these constructs in a range of the most popular contemporary programming languages.
Language design alternatives are examined and critiqued. Methods of syntax description, common approaches to describing the
semantics of programming languages, and various implementation approaches are covered.

COMP 365 Software Engineering

The software systems we often find the most useful and magical are also the largest and most complex to build and understand. In order for these systems to be reliable, maintainable, and secure, they must be built according to disciplined and well-founded methods. This course examines these methods—both in the large (defining requirements, system design, architecture patterns, software process, etc.) and in the small (version control, testing, benchmarking, code review, etc.). At the same time, students will engage in the construction of a large software system or feature.


COMP 370 Human-Robot Interaction

This course focuses on the emerging field of human-robot interaction, bringing together research and application of methodology from robotics, human factors, human-computer interaction, interaction design, cognitive psychology, education, and other fields to enable robots to have more natural and more rewarding interactions with humans throughout their spheres of functioning.

COMP 372 Artificial Intelligence

An introduction to the basic knowledge representation, problem solving, and learning methods of artificial intelligence (AI). Students
study the core algorithms and data structures used in AI, abstract real problems into the prototypical tasks that have been studied in AI,
and learn to map between abstract tasks and the basic AI techniques that address them.

COMP 380 Parallel Systems

An introduction to concurrent programming models and parallel computer architectures. Students will learn the basic techniques of parallel program design, implementation, and performance analysis. Topics include shared-memory and distributed-memory systems, parallel and distributed algorithms, and high-performance computing.