Course Syllabi

PMP students typically take forty credits to earn their Master's in Computer Science & Engineering. They usually do this by taking one 4-credit PMP course (their choice of three offered courses) and one 1-credit colloquium course each quarter for eight quarters.

Descriptions for all PMP courses follow. You may also view a list of courses offered this academic year.


Compiler Construction CSE P 501 Principles and practice of building efficient implementations of modern programming languages. Lexical, syntactic, and semantic analysis of program. Intermediate program representations. Intra- and interprocedural analysis and optimization. Run-time system techniques. Related programming environment facilities such as source-level debuggers and profilers.

Principles of Software Engineering CSE P 503 Study of major developments in software engineering over the past three decades. Topics may include design (information hiding, layering, open implementations), requirements specification (informal and formal approaches), quality assurance (testing, verification and analysis, inspections), reverse and re-engineering (tools, models, approaches).

Programming Languages CSE P 505 A study of non-imperative programming paradigms such as functional, object-oriented, logic and constraint programming. Programming language semantics and type theory.

Concurrency CSE P 506 Programming parallel/concurrent applications emphasizing a tool-based approach to performance and correctness. Topics include: regular analysis of student code including tests of data race detection, deadlock detection, stateless model checking, linearizability checking, correctness issues in multi-core shared memory systems, performance pitfalls, message passing, data parallelism, writing parallel algorithms analysis of parallel and concurrent code for correctness, understanding expected invariants, explaining and fixing bugs, predicting and testing of parallel speedups and performance bottlenecks.

Human Computer Interaction CSE P 510 Topics in human computer interaction, including tools and skills for user interface design, user interface software architecture, rapid prototyping and iterative design, safety and critical systems, evaluation techniques, and computer supported cooperative work.

Applied Algorithms CSE P 521 Principles of design of efficient algorithms with emphasis on algorithms with real world applications. Examples drawn from computational geometry, biology, scientific computation, image processing, combinatorial optimization, cryptography and operations research.

Parallel Computation CSE P 524 A survey of parallel computing including the processing modes of pipelining, data parallelism, thread parallelism and task parallelism; algorithmic implications of memory models; shared memory and message passing; hardware implementations; bandwidth and latency; synchronization, consistency, interprocessor communication; programming issues including implicit and explicit parallelism, locality, portability.

Database Management Systems CSE P 544. This course is intended to provide an introduction to the principles of database management systems. Topics will include database system architecture, data models, theory of database design, query optimization, concurrency control, crash recovery and storage strategies. Object-relational and object-oriented database management systems will also be studied.

Transaction Processing CSE P 545 Every time you use the Internet to buy a book, reserve a flight, pay a bill, buy a mutual fund, bid on an auction, or submit a company reimbursement request, you are interacting with a transaction processing system. These systems have lots of moving parts - client-side forms, web servers, mid-tier application servers, and back-end databases. Although these components are distributed across multiple processes, these processes share state and use specialized communication protocols and synchronization techniques. This course explain how these systems are constructed. Topics include the transaction abstraction, application servers, transactional communications, persistent queuing and workflow, software fault tolerance, concurrency control algorithms, database recovery algorithms, distributed transactions, two-phase commit, and data replication.

Data Mining CSE P 546. Methods for identifying valid, novel, useful and understandable patterns in data. Covered topics include: induction of predictive models from data (classification regression, probability estimation); clustering; and association rules.

Computer Architecture CSE P 548 Architecture of the single-chip microprocessor: instruction set design and processor implementation (pipelining, multiple issue, speculative execution). Memory hierarchy: on-chip and off-chip caches, TLB's and their management, virtual memory from the hardware viewpoint. I/O devices and control: buses, disks and RAIDs. Shared-memory multiprocessors and cache coherence.

Computer Operating Systems CSE P 551 A study of developments in operating systems from the 1960's to the present. Topics include operating system structure, protection, virtual memory, communication mechanisms, concurrency, lightweight threads, object-oriented systems, distributed systems, and transaction support in operating systems.

Current Trends in Computer Graphics CSE P 557 Introduction to computer image synthesis and interactive computer graphics applications, emphasizing the state-of-the-art algorithms and applications. Topics vary, but may include computer graphics hardware, visual perception, image processing, texture mapping, image compositing, curves and surfaces, photorealistic image synthesis, and physical dynamics for modeling and animation.

Network Systems CSE P 561 Current choices and challenges in network systems. Fundamental concepts combined with emphasis on evaluation of design/operations alternatives. Topics include: alternative link, network, and transport-layer technologies, topologies, routing, congestion control, multimedia, IPv6, ATM vs. IP, network management and policy issues.

Design and Implementation of Digital Systems CSE P 567 Overview of current implementation technologies for digital systems including custom integrated circuits, field-programmable logic, and embedded processors. Systems components such as buses and communications structures, interfaces, memory architectures, embedded systems, and application-specific devices. Focus on the design of large systems using modern CAD tools.

Applications of Artificial Intelligence CSE P 573 Introduction to the use of artificial intelligence tools and techniques in industrial and company settings. Topics include: foundations (search, knowledge representation) and tools such as expert systems, natural language interfaces and machine learning techniques.

Computer Vision CSE P 576 Principles and methods for interpreting the three dimensional world from images. Topics may include feature detection, image segmentation, motion estimation, image mosaics, 3D-shape reconstruction, object recognition, and image retrieval. Knowledge of linear algebra is required.

Distributed Systems CSE P 590 Design of high performance, highly available distributed web services. Topics include: clock synchronization, distributed consensus, failure models, loading balancing, object location and migration, distributed transactions, cache coherence, and security.

Computer Animation Production CSE P 590 Fundamental concepts in the development of 2D and 3D animation as they apply to the production pipeline for the creation of feature film and television commercials. Topics include the basics of computer animation (modeling, lighting, shading, motion, rendering, etc.) with the emphasis on recognizing these effects onscreen and understanding their appropriate application. In addition, several all-day workshops allow students to go deeper into topics for which they have the most interest.

Computational Biology CSE P 590 Computation methods for understanding biological systems at the molecular level. Problem areas such as mapping and sequencing, sequence analysis, structure prediction, phylogenic inference, regulatory analysis. Techniques such as dynamic programming, Markov models, expectation-maximization, local search.

Practical Aspects of Modern Cryptography CSE P 590 Exploration of the techniques of modern cryptography and its application to real-world problems, including common algorithms and protocols used to secure and validate electronic documents, messages and e-commerce transactions. Secret and public key methods will be presented along with mechanisms for authentication and data integrity. Protocols covered will include SSL/TLS, IPSEC, S/MIME, and PGP. While this course is focused on a practical understanding of these technologies, some formal reasoning may be required.

Complexity Theory CSE P 590 A survey of the theory of computation including Turing Machines, Church's Thesis, computability, incompleteness, undecidability, complexity classes, problem reductions, Cook's theorem, NP-completeness, randomized computation, cryptography, parallel computation, and space complexity. Some emphasis will be placed on historical and philosophical aspects of the theory of computation.

Alternative Computing Paradigms CSE 590 Examines the future of computers. Considers IC technology: how it drives computer design, and what the fundamental limitations are. Examines the proposed alternatives, including neurobiologically inspired computing, DNA computing, and quantum computing.

Software Entrepreneurship CSE P 590 An overview of the major elements of entrepreneurial activity in software, including market identification and analysis, evaluation and planning of the business, financing, typical operating and administrative problems and alternatives for growth or sale. The course is organized as a series of case studies and lectures. Case studies are supplemented by class discussion with entrepreneurs, lawyers and financiers.

Business Basics for CS Professionals CSE P 590 A high-level view of business for non-business students. Business principles relevant to the software industry in four areas: Competitive Strategy, Finance, Accounting and Human Resources. Organized as a series of case studies and lectures. It will progress from an emphasis on "tools" to a more high-level look at competitive dynamics in high-tech industries.