
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 highquality 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 objectoriented 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 subsystems 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 3D Animation and Digital Editing
Students work alone and in teams to create highquality publishable animated pieces using threedimensional 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
Crosslisted with BIOLOGY 572 and PSYCH 572.
575 Combinatorics and Graph Theory
Crosslisted 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; inclusionexclusion; 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 corpusdriven 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, instancebased, reinforcement, apprentice, macro, and explanationbased learning. Use of computer required. 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, 16.
596 Independent Study
Credit, 16.
601 Computation Theory
An indepth 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, closedloop 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 (Pascallike) 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 realtime 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, realtime, 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 textbased 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 highspeed 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 indepth 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
Indepth introduction to Artificial Intelligence concentrating on aspects of intelligent agent construction. Topics include: situated agents, advanced search and problemsolving techniques, resourcebounded reasoning, reasoning under uncertainty, perception and action, advanced planning and control, and learning.
686 Reasoning and Acting under Uncertainty
Recently developed methods that allow intelligent systems to reason and act under uncertainty. Topics include representations of uncertainty, probabilistic models, belief networks, learning probabilistic models, decision theory, sequential decision making, and models of bounded rationality. Prerequisite: an undergraduate Artificial Intelligence course or consent of instructor.
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 longterm performance. Covers Markov decision processes, dynamic programming, temporaldifference 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, explanationbased 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, 16.
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 dataflow 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 applicationoriented algorithms in varied environments: idealized sharedmemory algorithmic paradigms that ignore communication costs, distributedmemory emulations of shared memory, distributedmemory algorithmic paradigms. Concepts illustrated via important applications. The design of systemsoriented algorithms for: task scheduling, load balancing, message routing, and latency hiding. Prerequisite: CMPSCI 611 or equivalent.
715 Cryptography and Network Security
Cryptography including publickey cryptography, DiffieHelman, RSA, attacks on these; algorithms for factoring and discrete log; DES and related attacks; keyescrow systems. Network security including Kerberos, NeedhamSchroeder, 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, nondeterminism, 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 NPcomplete 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 semanticsbased concurrency control, new correctness criteria, transaction processing on parallel database platforms, realtime, active, temporal, and multimedia databases. Prerequisite: CMPSCI 445 or equivalent.
777 Advanced Operating Systems
Topics in architectureOS interface, microkernels, distributed shared memory, OSlanguage interface, objectoriented OS, realtime, multimedia, OSnetwork interface, parallelism in I/O, support for wirelessmobile 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, 16.
899 Doctoral Dissertation
Credit, 18.
Related Courses
Electrical and Computer Engineering
660 Computer Graphics I
661 Advanced Computer Graphics and ComputerAided 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
