UMass Amherst Home
 [Home]  [Programs and Courses]  [Degree Requirements]  [Application Procedures]  [Financing Your Degree]  [Site Index]  [Apply Now]
Program Listings:  [Program Listing: A-D]  [Program Listings: E-L]  [Program Listings: M-Z]  [Program Listings: Show All]

Computer Science Courses

Program | Faculty | Master's | Doctoral | Courses


All courses carry 3 credits unless otherwise specified.

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.

572 Neurobiology

Cross-listed with BIOLOGY 572 and PSYCH 572.

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.

589 Machine Learning

Introduction to methods permitting machines to learn: decision tree induction, cover generation, candidate elimination, artifical neural networks, inductive logic programming. Bayesian, instance-based, reinforcement, apprentice, macro, and explanation-based learning. Use of computer required. Prerequisite: CMPSCI 383.

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.

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.

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.

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.

684 Case-Based Reasoning

Case-based reasoning, a technique to solve new problems by reusing solutions to previously solved, similar problems. Key ingredients of classic CBR systems, and state-of-the-art research and applications. Prerequisite: CMPSCI 383 or 683.

687 Reinforcement Learning

A comprehensive introduction to reinforcement learning, an approach to artificial intelligence emphasizing learning from interaction to achieve goals in stochastic environments. Focus on algorithms that learn what actions to take so as to optimize long-term performance. Covers Markov decision processes, dynamic programming, temporal-difference learning, Monte Carlo learning methods, eligibility traces, the role of neural networks, and the intergration of learning and planning. Prerequisites: basic probability theory and programming skills. A prior course in artificial intelligence recommended.

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.

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 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

669 Parallel Computer Architecture


603 Generative Phonology

604 Syntactic Theory



645, 646 Differential Equations and Dynamical Systems I, II

651, 652 Numerical Analysis I, II



513, 514 Math Logic I, II



617, 618 Applied and Basic Cognition I, II

630 Physiological Psychology

711 Sensory Processes

714 Perception

731 The Neuroanatomical Basis of Behavior



515, 516 Introduction to Statistics I, II

607, 608 Mathematical Statistics I, II