Courses

All courses carry 3 credits unless otherwise specified.

501 Formal Language Theory
Introduction to formal language theory. Topics include finite state languages, context-free languages, the relationship between language classes and formal machine models, the Turing Machine model of computation, theories of computability, resource-bounded models, and NP-completeness. Prerequisites: CMPSCI 311 or equivalent.

503 Embedded Systems
This course introduces tools necessary to design embedded computational applications. Each student will design and build an embedded control application as a member of a team. The course is heavily project-oriented (with a required lab) and discussions will include topics such as; (1) mechanisms, sensors, actuators and feedback systems, (2) analog and digital  circuits, power amplifiers, signal processing, operational amplifiers, multiplexing, (3) I/O - A/D, D/A, and latching, serial and parallel interfaces, (4) signal processing/conditioning and (5) an introduction to real-time programming.

513 Logic in Computer Science
Rigorous introduction to mathematical logic from an algorithmic perspective. Topics include: Propositional logic; Horn clause satisfiability and SAT solvers; First Order Logic: soundness and completeness of resolution, compactness theorem. We will use the Coq theorem prover and Datalog. Prerequisites: CMPSCI 250 and CMPSCI 311.

520 Software Engineering: Synthesis and Development
Introduces students to the principal activities involved in developing high-quality software systems. Topics include: requirements analysis, formal specification methods, process definition, software design, and risk management. Prerequisite: CMPSCI 320 or equivalent.

521 Software Engineering: Analysis and Evaluation
The current best testing and analysis practices; promising new approaches, going beyond the testing of programs and modules and extending the scope to include analysis of all software products across the lifecycle and analysis of software processes. Prerequisite: CMPSCI 320.

530 Programming Languages
Practical and theoretical aspects of several currently prominent languages representing distinct paradigms, including imperative, functional and logic programming. Focus on object-oriented languages, and C++ in particular. Prerequisites: CMPSCI 287, 320, and 377. Corequisite: CMPSCI 401.

535 Computer Architecture
The structure of digital computers from the basic logic level, to the component level, to the system level. Topics include: the design of basic components such as arithmetic units and registers from logic gates; the organization of basic sub-systems such as the memory and I/O subsystems; the interplay between hardware and software in a computer system; the von Neumann architecture and its modern competitors. Prerequisites: CMPSCI 250 and 377.

551 3-D Animation and Digital Editing
Students work alone and in teams to create high-quality publishable animated pieces using three-dimensional graphics technology. Techniques include digital editing, sound, music, design, modeling, rendering, surfaces, textures, and lighting.

552 Interactive Multimedia Production
Students explore interactive authoring tools to develop presentation and training systems by using programming languages within professional packages to present graphics, animation, text, sound, and music based on user request. Prerequisites: CMPSCI 551 and consent of instructor.

575 Combinatorics and Graph Theory
Cross-listed with MATH 513. A basic introduction to combinatorics and graph theory for advanced students in computer science, mathematics, and related fields. Topics include elements of graph theory, Euler and Hamiltonian circuits, graph coloring, matching, basic counting methods; generating functions; recurrences; inclusion-exclusion; Polya’s theory of counting. Prerequisites: mathematical maturity; calculus; linear algebra; discrete mathematics course such as CMPSCI 250 or MATH 455. MATH 411 recommended but not required.

585 Natural Language Processing
Natural Language Processing techniques developed in Artificial Intelligence with an emphasis on memory oriented models and corpus-driven research. Focus on semantically oriented sentence analysis, narrative text comprehension. Prerequisite: CMPSCI 383.

591 Seminar on Computer Science
Conferences, reports, and lectures on topics not currently covered in regular courses. Consent of instructor required. Credit, 1-6.

596 Independent Study
Credit, 1-6.

601 Computation Theory
An in-depth introduction to the main models and concepts of the mathematical theory of computation, including computability, complexity, and logic. Prerequisites: CMPSCI 250 and 311, or equivalent.

603 Robotics
The design and analysis of adaptive, closed-loop physical systems. Focus on sensorimotor machines that interpret and manipulate their environments. Involves study of mechanisms (kinematics and dynamics), actuators, sensors (with a focus on machine vision), signal processing, optimal estimators, associative memory, feedback control theory, supervised and unsupervised learning, and task planning. Prerequisites: linear algebra and programming skills.

610 Compiler Techniques
Basic problems in the translation of programming languages focusing on theory and common implementation techniques for compiling traditional (Pascal-like) programming languages to produce assembly or object code for typical machines. Involves a substantial laboratory project in which the student constructs a working compiler for a considerable subset of a realistic programming language. Lectures augmented by an optional laboratory section covering details of the programming language to be used in the project (C), the operating system (Unix), the source language (a Modula variant) and various tools (Yacc, make, etc.). Use of computer required. Prerequisite: CMPSCI 377.

611 Advanced Algorithms
The design and analysis of efficient algorithms for important computational problems. Paradigms for algorithm design including Divide and Conquer, Greedy Algorithms, Dynamic Programming; and, the use of Randomness and Parallelism in algorithms. Algorithms for Sorting and Searching, Graph Algorithms, Approximation Algorithms for NP Complete Problems, and others. Prerequisite: equivalent of CMPSCI 250 with an A.

620 Advanced Software Engineering: Synthesis and Development
Same topics as 520 but at a greater depth. Prerequisite: CMPSCI 320 or equivalent.

621 Advanced Software Engineering: Analysis and Evaluation
The best testing and analysis practices for software products and processes across the lifecycle, with emphasis on promising new software engineering research directions including software architectures and the analysis of concurrent, distributed, and real-time systems.

630 Systems
An in-depth introduction to systems, focusing on principles of system design that cross-cut numerous systems artifacts, including operating systems, databases, runtime systems, and architecture. We will cover all levels of the "system stack", from chips to distributed systems.

635 Modern Computer Architecture
Examines elements of modern computer architectures from the perspectives of performance, economics, and design considerations together with their implications for software support at the compiler and operating system levels. Prerequisites: CMPSCI 535 and either 377 or 410, or equivalent.

645 Database Design and Implementation
Covers topics such as object oriented, real-time, active, and temporal dbs; object management and file systems; concurrency control, recovery, transaction processing; distributed dbs; query processing; db programming languages; advanced db architectures. Prerequisite: CMPSCI 445 or equivalent.

646 Information Retrieval
Basic and advanced techniques for text-based information systems, including retrieval models, indexing and text representation, browsing and query formulation, routing, distributed information retrieval, and integration with database systems. Implementation of major elements of an information retrieval system. Prerequisite: CMPSCI 445 or equivalent.

650 Applied Information Theory
This course will introduce the basic concepts of Information Theory: entropy, relative entropy, mutual information, channel capacity, and rate distortion. Applications, rather than proofs, will be emphasized. In addition, the statistical problem of computing information theoretic quantities from data will be emphasized. Non-parametric and semi-parametric statistical models will also be covered. Although this course is listed as a seminar, it will be taught as a regular lecture course with homework assignments and exams

653 Computer Networking
An introduction to fundamental concepts in the design and implementation of computer communication networks, their protocols, and applications. Topics include: layered network architectures, applications, network programming interfaces (e.g., sockets), transport, congestion, routing and data link protocols, local area networks, emerging high-speed networks, network management, and network security. Examples drawn primarily from the Internet (e.g., TCP, UDP, and IP) protocol suite. A rudimentary understanding of computer architecture and operating systems helpful.

670 Computer Vision
A study of what is involved in building artificial systems which try to infer  such characteristics from an image. Topics include: Basics of image formation - the effect of geometry, viewpoint, lighting and albedo on image formation. Basic image operations such as filtering, convolution and correlation.  Frequency representations of images. The importance of scale in images.  Measurements of image properties such as color, texture, appearance and shape. Inference of motion and structure from moving objects and images.  Detecting and recognizing objects in images. Statistical methods in computer vision.  Prerequisite: Linear algebra, calculus, basic knowledge of probability, and an ability to program

677 Operating Systems
An in-depth examination of principles of distributed operating systems. Topics include processes and threads, concurrent programming, distributed interprocess communication, distributed process scheduling, shared virtual memory, distributed file systems. MACH. Prerequisite: CMPSCI 377 or equivalent, or consent of instructor.

683 Artificial Intelligence
In-depth introduction to Artificial Intelligence concentrating on aspects of intelligent agent construction. Topics include: situated agents, advanced search and problem-solving techniques, resource-bounded reasoning, reasoning under uncertainty, perception and action, advanced planning and control, and learning.

688 Graphical Models
This course will cover Bayesian and Markov networks and their dynamic and relational extensions; exact and approximate inference methods; estimation of both the parameters and structure of graphical models.

689 Machine Learning
Introduces and explores methods that permit programs to learn. Topics include: knowledge acquisition, learning from examples, generalization and specialization, discovery systems, theory formation, connectionist learning, genetic algorithms, macro learning, language learning, explanation-based learning, and computational learning theory. Prerequisite: CMPSCI 383 or 683.

691 Seminar on Computer Science
Conferences, reports, and lectures on topics not currently covered in regular courses. Consent of instructor required. Credit, 1-6.

701 Advanced Topics in Computer Science
Advanced Topics in Computer Science Master’s Project: Advanced research project in Computer Science. Consent of instructor required. Credit, 6.

710 Advanced Compiler Techniques
Advanced compiler optimization for imperative languages. Topics include data-flow analysis, program representation, global optimization, interprocedural analysis, register allocation, and scheduling. Prerequisite: CMPSCI 410 or 610 or equivalent. Prerequisite: CMPSCI 410 or 610.

711 Parallel Algorithms and Architectures
An introduction to parallel algorithmics, emphasizing theoretical formulations and developments. The design of application-oriented algorithms in varied environments: idealized shared-memory algorithmic paradigms that ignore communication costs, distributed-memory emulations of shared memory, distributed-memory algorithmic paradigms. Concepts illustrated via important applications. The design of systems-oriented algorithms for: task scheduling, load balancing, message routing, and latency hiding. Prerequisite: CMPSCI 611 or equivalent.

715 Cryptography and Network Security
Cryptography including public-key cryptography, Diffie-Helman, RSA, attacks on these; algorithms for factoring and discrete log; DES and related attacks; key-escrow systems. Network security including Kerberos, Needham-Schroeder, authentication issues. Prerequisite: CMPSCI 611 or consent of instructor.

720 Topics in Software Engineering
Current topics in program development. May include program development methods, automated validation systems, testing systems, and program verification techniques. Prerequisite: CMPSCI 520.

735 Advanced Computer Architecture
Survey of recent research literature in the field of computer architecture. Topics may include massively parallel systems, heterogeneous processing, hardware/software codesign, special purpose architectures, benchmarking, architecture research tools, optical processing, etc., as appropriate. A group project is required in which a design is proposed with preliminary evaluations developed to support the proposal. Prerequisite: CMPSCI 635 or equivalent.

741 Complexity Theory
The study of the resources required to solve problems in various models of computation. Sequential computation: Turing machines, non-determinism, alternation, algebraic automaton theory. Parallel computation: Boolean circuits, branching programs, uniformity, lower bounds for circuit models. Descriptive complexity. Possible optional topics depending on student interest: approximation of NP-complete problems, interactive proofs, nonuniform finite automata, dynamic complexity. Prerequisite: CMPSCI 601 or equivalent.

745 Advanced Topics in Database Systems
Current topics in database systems. May include semantics-based concurrency control, new correctness criteria, transaction processing on parallel database platforms, real-time, active, temporal, and multimedia databases. Prerequisite: CMPSCI 445 or equivalent.

777 Advanced Operating Systems
Topics in architecture-OS interface, microkernels, distributed shared memory, OS-language interface, object-oriented OS, real-time, multimedia, OS-network interface, parallelism in I/O, support for wireless-mobile computing, fault tolerant OS, and case studies of commercial kernels. Prerequisites: CMPSCI 535 and 677 or equivalent.

791 Seminar on Computer Science
Conferences, reports, and lectures on topics not currently covered in regular courses. Consent of instructor required. Credit, 1-6.

899 Doctoral Dissertation
Credit, 18.

Related Courses

Electrical and Computer Engineering

660 Computer Graphics I

661 Advanced Computer Graphics and Computer-Aided Design

668 Computer Architecture

Linguistics

603 Generative Phonology

604 Syntactic Theory

Mathematics

645, 646 Differential Equations and Dynamical Systems I, II

651, 652 Numerical Analysis I, II

Philosophy

513, 514 Math Logic I, II

Psychology

617, 618 Applied and Basic Cognition I, II

630 Physiological Psychology

711 Sensory Processes

714 Perception

731 The Neuroanatomical Basis of Behavior

Statistics

515, 516 Introduction to Statistics I, II

607, 608 Mathematical Statistics I, II

© 2014 University of Massachusetts AmherstSite Policies
This page is maintained by the Center for Educational Software Development