UC Santa Cruz Computer Engineering Jack Baskin School of Engineering





Computer Engineering Courses

Lower Division Courses


CMPE 1: Hands on Computer Engineering
Hands-on introduction to computer engineering practice and research, including computer hardware, robotics, and embedded systems. Encourages interaction with UCSC's School of Engineering community. Designed for students without previous background in computer engineering. Enrollment restricted to first-year studetns and sophomores. Enrollment limited to 20.

CMPE 3: Personal Computer Concepts: Software & Hardware
Provides an introduction to computers. Personal computing is emphasized, and students are introduced to word processing, spreadsheets, database management, graphics, and programming. Covers fundamentals of computing and current and future uses of computer technology, PC hardware, Windows operating system, applications software, networking and the Internet, and developments in the computer industry. Designed for students with little or no experience using computers. Students cannot receive credit for this course and Computer Science 2. (General Education Code(s): IN.) The Staff

CMPE 8: Robot Automation: Intelligence through Feedback Control
Introduction to dynamical systems, feedback control, and robotics. Fundamental concepts in dynamical systems, modeling, stability analysis, robustness to uncertainty, feedback as it occurs naturally, and the design of feedback-control laws to engineer desirable static and dynamic response. Course includes an introduction to MATLAB and programming in MATLAB. Enrollment restricted to first-year students and sophomores. (General Education Code(s): Q.) W. Dunbar

CMPE 12: Computer Systems and Assembly Language
Introduction to computer systems and assembly language and how computers compute in hardware and software. Topics include digital logic, number systems, data structures, compiling/assembly process, basics of system software, and computer architecture. May include C language.

CMPE 12L: Computer Systems & Assembly Language & Lab
Introduction to computer systems and assembly language and how computers compute in hardware and software. Topics include digital logic, number systems, data structures, compiling/assembly process, basics of system software, and computer architecture. May include C language. Prerequisite(s): course 3 or 8, or Computer Science 10 or 12A or 60G or 60N, or Biomolecular Engineering 60, or suitable programming experience; previous or concurrent enrollment in course 12L required. (General Education Code(s): IN, Q.) T. Larrabee, R. Hughey, F. Ferguson, G. Elkaim

CMPE 13: Computer Systems and C Programming
Introduction to the C programming language as a means for controlling embedded and general computing systems. Continuing the exploration begun in course 12, students move to higher levels of abstraction in the control of complex computer systems.

CMPE 13L: Computer Systems and C Programming Laboratory
Laboratory sequence in C programming for embedded and general computing systems. Two 2-hour laboratories per week.

CMPE 16: Applied Discrete Mathematics
Introduction to applications of discrete mathematical systems. Topics include sets, functions, relations, graphs, trees, switching algebra, first order predicate calculus, mathematical induction, permutations, combinations, summation, and recurrences. Examples drawn from computer science and computer engineering. Prerequisite(s): eligibility to enroll in Mathematics 19A (completion of Mathematics 2B or 3 or Mathematics Placement Exam score of 40 or higher) or completion of Mathematics 19A or 11A. (General Education Code(s): Q.) H. Tao, T. Larrabee, M. Schlag, L. De Alfaro

CMPE 80A: Assistive Technology & Universal Access
Overview of human-centered technology and of its potential for increasing the quality of life of disabled and elder individuals. Also covers physical, psychological, and psychosocial aspects of disability and old age, as well as demographic, legislative, accessibility, and acceptance issues. (General Education Code(s): T7-Natural Sciences or Social Sciences.) R. Manduchi

CMPE 80E: Engineering Ethics
Ethical theories, analysis, and their application to issues in the practice of engineering, such as safety and liability, professional responsibility to clients and employers, codes of ethics, legal obligations, environmental issues, and social issues. Emphasis on developing independent ethical analysis through the use of case studies. (General Education Code(s): T6-Natural Sciences or Humanities and Arts.) G. Cox, (S) The Staff

CMPE 80H: History of Modern Computing
Presents a history of the development of computing technologies (CPUs and I/O devices, operating systems, and languages) through the latter half of the 20th century in order to build an understanding of how today's computing environment evolved. (General Education Code(s): T2-Natural Sciences.) D. Pease

CMPE 80N: Introduction to Networking & the Internet
Introduction to the evolution, technological basis, and services of the Internet, with descriptions of its underlying communications structure, routing algorithms, peer-to-peer hierarchy, reliability, and packet switching. Network security, mail, multimedia and data compression issues, HTML, and digital images. Students who have completed course 150 cannot receive credit for this course. (General Education Code(s): T2-Natural Sciences.) R. Manduchi, K. Obraczka, A. Varma

CMPE 80U: Ubiquitous and Mobile Computing
Ubiquitous computing integrates computer and communication technology with day-to-day life. Ubiquitous and mobile technology includes: MP-3 players, camera cell phones, Bluetooth headsets, sensor neworks, and new emerging technologies. Course provides an overview of the technology and economics of ubiquitous computing. (General Education Code(s): T2-Natural Sciences.) R. Manduchi

Upper Division Courses


CMPE 100: Logic Design
Boolean algebra, logic minimization, finite-state machine design, sequential circuits, common logic elements, programmable logic devices, and an introduction to system level design. The electrical behavior of circuits including three state outputs, propagation delay, logic levels, and fanout.

CMPE 100L: Logic Design & Lab
Boolean algebra, logic minimization, finite-state machine design, sequential circuits, common logic elements, programmable logic devices, and an introduction to system level design. The electrical behavior of circuits including three state outputs, propagation delay, logic levels, and fanout. Prerequisite(s): courses 12 and 12L; previous or concurrent enrollment in course 100L required. Enrollment limited to 60. T. Larrabee, M. Schlag, S. Petersen

CMPE 107: Mathematical Methods of Systems Analysis: Stochastic
Introduction to fundamental tools of stochastic analysis. Probability, conditional probability, Bayes Theorem, random variables, independence, Poisson processes, Bernnoulli trials, and Markov chains. Instructor's choice of additional topics, most likely drawn from confidence measures, difference equations, transform methods, stability issues, applications to reliability, queues, and hidden Markov models. Students cannot receive credit for this course and Applied Mathematics and Statistics 131. Prerequisite(s): course 16 or 16H and Mathematics 22 or 23A. R. Manduchi, A. Brandwajn

CMPE 108: Data Compression
Basics of information theory, lossless coding (Huffman coding, arithmetic coding, dictionary coding), lossy coding (PCM, predictive coding, transform coding). Application to the compression of specific data set, which may include biological time series, DNA sequences, and multimedia streams. Prerequisite(s): course 107 or Applied Mathematics and Statistics 131; and Computer Science 101. R. Manduchi

CMPE 110: Computer Architecture
Introduction to computer architecture including examples of current approaches and the effect of technology and software. Computer performance evaluation, basic combinatorial and sequential digital components, different instruction set architectures with a focus on the MIPS ISA and RISC paradigm. Evolution of CPU microarchitecture from single-cycle to multi-cycle pipelines, with overview of super-scalar, multiple-issue and VLIW. Memory system, cache, virtual memory and relationship between memory and performance. Evolution of PC system architecture. May include advanced topics, such as parallel processing, MIMD, and SIMD. Prerequisite(s): courses 12, 12L, and 16. A. Di Blas, R. Hughey, F. Ferguson, A. Brandwajn, J. Renau

CMPE 113: Parallel & Concurrent Programming
Introduction to parallel and concurrent programming. Topics include types of parallel computers and programming platforms, basic and advanced programming techniques in C with MPI and OpenMP, performance analysis and load balancing, and selected parallel algorithms. Students must have a discrete working knowledge of the C programming language and a user-level familiarity with the Unix operating system. Prerequisite(s): Computer Science 12B. A. Di Blas, R. Hughey, K. Obraczka, L. De Alfaro

CMPE 117: Embedded Software
Introduction to software design for embedded systems. Emphasis on real-time embedded systems as follows: fundamentals of scheduling for real-time systems, real-time operating systems, and real-time protocols for distributed real-time systems; time-triggered and event-triggered paradigms for embedded software development, their tradeoffs, and languages and tools for development of embedded software.

CMPE 117L: Embedded Software & Lab
Introduction to software design for embedded systems. Emphasis on real-time embedded systems as follows: fundamentals of scheduling for real-time systems, real-time operating systems, and real-time protocols for distributed real-time systems; time-triggered and event-triggered paradigms for embedded software development, their tradeoffs, and languages and tools for development of embedded software. Prerequisite(s): course 121 or Computer Science 111; previous or concurrent enrollment in course 117L required. Enrollment limited to 20. L. De Alfaro

CMPE 118: Introduction to Mechatronics
Technologies involved in mechatronics (intelligent electro-mechanical systems) and techniques necessary to integrate these technologies into mechatronic systems. Topics include electronics (A/D, D/A converters, opamps, filters, power devices), software program design (event-driven programming, state machine-based design), DC and stepper motors, basic sensing, and basic mechanical design (machine elements and mechanical CAD). Combines lab component of structured assignments with a large and open-ended team project.

CMPE 118L: Introduction to Mechatronics & Lab
Technologies involved in mechatronics (intelligent electro-mechanical systems) and techniques necessary to integrate these technologies into mechatronic systems. Topics include electronics (A/D, D/A converters, opamps, filters, power devices), software program design (event-driven programming, state machine-based design), DC and stepper motors, basic sensing, and basic mechanical design (machine elements and mechanical CAD). Combines lab component of structured assignments with a large and open-ended team project. Prerequisite(s): Electrical Engineering 70/L and course 12/L or equivalent. Concurrent enrollment in course 118L is required. Enrollment limited to 36. G. Elkaim

CMPE 121: Microprocessor System Design
The design and use of microprocessor-based systems. Covers microprocessor and microcontroller architecture, programming techniques, bus and memory organization, DMA, timing issues, interrupts, peripheral devices, serial and parallel communication, and interfacing to analog and digital systems.

CMPE 121L: Microprocessor System Design & Lab
The design and use of microprocessor-based systems. Covers microprocessor and microcontroller architecture, programming techniques, bus and memory organization, DMA, timing issues, interrupts, peripheral devices, serial and parallel communication, and interfacing to analog and digital systems. Prerequisite(s): courses 12/L and 100/L; Electrical Engineering 70/L; previous or concurrent enrollment in course 121L required. Enrollment limited to 40. P. Chan, R. Hughey, S. Petersen

CMPE 123A: Engineering Design Project I
First of a two-course sequence that is culmination of the engineering program. Students apply knowledge and skills gained in elective track to complete a major design project. Students complete research, specification, planning, and procurement for a substantial project. Includes technical discussions, design reviews, and formal presentations; engineering design cycle, engineering teams, and professional practices. Formal technical specification of the approved project is presented to faculty. Prerequisite(s): course 171 or computer engineering 121; previous or concurrent enrollment in computer engineering 185; must have passed core exam if computer engineering major; permission of department and instructor. Students are billed a materials fee. (Also offered as Computer Engineering 123A. Students cannot receive credit for both courses.) The Staff

CMPE 123B: Engineering Design Project II
Second of two-course sequence in engineering system design. Students fully implement and test system designed and specified in course 123A. Formal written report, oral presentation, and demonstration of successful project to review panel of engineering faculty required. Students are billed a materials fee. (Also offered as Computer Engineering 123B. Students cannot receive credit for both courses.) Prerequisite(s): course 123A and Computer Engineering 185. Enrollment limited to 35. The Staff

CMPE 125: Logic Design with Verilog
Verilog digital logic design with emphasis on ASIC and FPGA design. Students design and verify large-scale systems. Assignments and project use the Verilog Hardware Description Language with emphasis on verification and high-frequency ASIC/FPGA targets.

CMPE 125L: Logic Design with Verilog & Lab
Verilog digital logic design with emphasis on ASIC and FPGA design. Students design and verify large-scale systems. Assignments and project use the Verilog Hardware Description Language with emphasis on verification and high-frequency ASIC/FPGA targets. Prerequisite(s): courses 100 and 100L; and electrical engineering 70 and 70L. Concurrent enrollment in course 125L required. Enrollment limited to 40. P. Chan, A. Varma, M. Schlag, J. Renau, M. Guthaus

CMPE 126: Advanced Logic Design
Digital logic and system-level design using state-of-the-art FPGA tools. Students design large-scale logic circuits from fundamental building blocks and methods using design-automation tools. All examples and assignments use the Verilog Hardware Description Language with emphasis on FPGA systems.

CMPE 126L: Advanced Logic Design & Lab
Digital logic and system-level design using state-of-the-art FPGA tools. Students design large-scale logic circuits from fundamental building blocks and methods using design-automation tools. All examples and assignments use the Verilog Hardware Description Language with emphasis on FPGA systems. Prerequisite(s): courses 100 and 100L; electrical engineering 70 and 70L. Concurrent enrollment in course 126L is required. Enrollment limited to 20. P. Chan, A. Varma, M. Schlag, J. Renau, M. Guthaus

CMPE 150: Introduction To Computer Networks
Addresses issues arising in organizing communications among autonomous computers. Network models and conceptual layers; Internet-working; characteristics of transmission media; switching techniques (packet switching, circuit switching, cell switching); medium access control (MAC) protocols and local area networks; error-control strategies and link-level protocols; routing algorithms for bridges and routers; congestion control mechanisms; transport protocols; application of concepts to practical wireless and wireline networks and standard protocol architectures. Students who have completed course 80N can take this course for credit. Students are billed for a materials fee. Prerequisite(s): course 16 and either 12 and 12L or CMPS 12B and CMPS 12M. J. Garcia-Luna-Aceves, K. Obraczka, A. Varma

CMPE 150L: Introduction to Computer Networks Laboratory
Illustrates the concepts covered in course 150 and provides students with hands-on experience in computer networks.

CMPE 151: Network Administration
Projects include installing and configuring (client and server) machines, configuring network routing, setting up firewalls and network appliances, and setting up and using wireless networks. Includes lectures, projects presented, and discussions. Requires formal written reports, oral presentations, and demonstrations of projects. Students are billed a materials fee. Prerequisite(s): course 150. Enrollment limited to 30. K. Obraczka

CMPE 153: Digital Signal Processing
Introduction to the principles of signal processing, including discrete-time signals and systems, the z-transform, sampling of continuous-time signals, transform analysis of linear time-invariant systems, structures for discrete-time systems, the discrete fourier transform, computation of the discrete fourier transform, and filter design techniques. Taught in conjunction with Electrical Engineering 250. Students cannot receive credit for this course and Electrical Engineering 250. (Also offered as Electrical Engineering 153. Students cannot receive credit for both courses.) Prerequisite(s): Electrical Engineering 103. The Staff

CMPE 156: Network Programming
Methods and tools used for network programming. Topics include inter-process communication (IPC), facilities such as pipes, shared memory, semaphores, sockets, and remote procedure call (RPC); design of client and server sides of network applications; CGI programming; and programming projects.

CMPE 156L: Network Programming & Lab
Methods and tools used for network programming. Topics include inter-process communication (IPC), facilities such as pipes, shared memory, semaphores, sockets, and remote procedure call (RPC); design of client and server sides of network applications; CGI programming; and programming projects. Prerequisites: course 150 and Computer Science 111. Concurrent enrollment in course 156L required. K. Obraczka, A. Varma

CMPE 167: Sensing and Sensor Technologies
Introduces the fundamental issues in sensing and various sensor technologies including motion sensors, velocity sensors, GPS sensors, acoustic sensors, light and image sensors, and range sensors. Also demonstrates sensor technologies using a system approach to show how they can be integrated into a complete digital system.

CMPE 167L: Sensing & Sensor Technologies & Lab
Introduces the fundamental issues in sensing and various sensor technologies including motion sensors, velocity sensors, GPS sensors, acoustic sensors, light and image sensors, and range sensors. Also demonstrates sensor technologies using a system approach to show how they can be integrated into a complete digital system. Prerequisite(s): course 100 and Electrical Engineering 70. Concurrent enrollment in course 167L is required. H. Tao, G. Elkaim

CMPE 173: High-Speed Digital Design
Studies of analog circuit principles relevant to high-speed digital design: signal propagation, crosstalk, and electromagnetic interference. Topics include electrical characteristics of digital circuits, interfacing different logic families, measurement techniques, transmission lines, ground planes and grounding, terminations, power systems, connectors/ribbon cables, clock distribution, shielding, electromagnetic compatibility and noise suppression, and bus architectures.

CMPE 173L: High Speed Digital Design & Lab
Studies of analog circuit principles relevant to high-speed digital design: signal propagation, crosstalk, and electromagnetic interference. Topics include electrical characteristics of digital circuits, interfacing different logic families, measurement techniques, transmission lines, ground planes and grounding, terminations, power systems, connectors/ribbon cables, clock distribution, shielding, electromagnetic compatibility and noise suppression, and bus architectures. Prerequisite(s): Electrical Engineering 70, 70L and course 174. Electrical Engineering 171 and course 121 recommended. Previous or concurrent enrollment in course 173L required. Enrollment limited to 30. P. Chan, S. Petersen

CMPE 174: Introduction to EDA Tools for PCB Design
Focus on EDA tools for design of printed-circuit boards. Elements of design flow covered: schematic capture and simulation to final PCB layout. Final project is required. Students are billed a materials fee. Prerequisite(s): Electrical Engineering 70 or consent of instructor. S. Petersen

CMPE 177: Applied Graph Theory & Algorithms
Basic concepts and algorithms are reviewed including trees, Eulerian and Hamiltonian graphs, and graph transversal. Algorithms are explored to solve problems in connectivity, routing, matching, and embedding of graphs. Graph theory and algorithms are developed around applications in computer engineering. Prerequisite(s): Computer Science 101. M. Schlag

CMPE 185: Technical Writing
Writing by engineers and computer scientists, not to general audiences, but to engineers, engineering managers, and technical writers. Exercises include job application and resume, in-code documentation, algorithm description, naive-user documentation, library puzzle, survey article, proposal, progress report, formal technical report, and oral presentation. Offered in alternate quarters. Prerequisite(s): satisfaction of Entry Level Writing and Composition requirements; Computer Science 12B or 13H or Computer Engineering 12. Enrollment restricted to School of Engineering majors. Enrollment limited to 60. (General Education Code(s): W.) G. Moulds, T. Larrabee

Graduate Courses


CMPE 200: Research & Teaching
Basic teaching techniques for teaching assistants including responsibilities and rights of teaching assistants, resource materials, computer security, leading discussion or lab sessions, presentation techniques, maintaining class records, electronic handling of homework, and grading. Examines research and professional training, including use of the library and online databases, technical typesetting, writing journal and conference papers, publishing in computer science and computer engineering, giving talks in seminars and conferences, and ethical issues in science and engineering. Required for all T.A.s. Enrollment restricted to graduate students. T. Larrabee, S. Brandt, A. Brandwajn, M. Schlag

CMPE 202: Computer Architecture
Provides a thorough and fundamental treatment of the art of computer architecture. Topics include concepts of von Neumann architectures, methods of evaluating CPU performance, instruction-set design and examples, compiler issues, instruction pipelining, superscalar processors, methods for reduction of branch penalty, memory hierarchies, I/O systems, floating-point arithmetic, and current issues in parallel processing. Prerequisite(s): course 110 or course 112. Enrollment restricted to graduate students; undergraduates may enroll if they have completed course 110 or 112 and with consent of instructor. Enrollment limited to 30. P. Chan, R. Hughey, A. Varma, J. Renau

CMPE 218: Mechatronics
Introduction to intelligent electro-mechanical systems, combining aspects of computer, electrical, mechanical, and software engineering. Students become proficient in all aspects of mechanical, electrical, computer system design, analysis, prototyping, presentation and team mentorship. Taught in conjunction with course 118.

CMPE 220: Advanced Parallel Processing
Introduction to programming advanced parallel computer architecture. Topics may include: SIMD massively parallel processor arrays; streaming parallel coprocessors, such as graphics cards used for general-purpose processing (GPGPU); or other hybrid MIMD/SIMD architectures. Course has programming lab component, a project, and student presentation on related topics. Enrollment restricted to graduate students; undergraduates may enroll with permission of instructor. A. Di Blas, R. Hughey

CMPE 221: Advanced Microprocessor Design
Introduction to latest advances in computer architecture. Focuses on processor core design. Topics include simultaneous multithreading, thread level speculation, trace caches, novel out-of-order mechanisms, and energy-efficient processor core designs. Final project is modification/enhancement of an out-of-order processor on an FPGA development system.

CMPE 221L: Advanced Microprocessor Design & Lab
Introduction to latest advances in computer architecture. Focuses on processor core design. Topics include simultaneous multithreading, thread level speculation, trace caches, novel out-of-order mechanisms, and energy-efficient processor core designs. Final project is modification/enhancement of an out-of-order processor on an FPGA development system. Prerequisite(s): course 202; and course 125, 225, or equivalent Verilog experience. Concurrent enrollment in course 221L required. Enrollment restricted to graduate students. Enrollment limited to 20. J. Renau

CMPE 222: VLSI Digital System Design
Introduction to Very Large Scale Integrated (VLSI) design, focusing on custom integrated circuits. Topics include logic families, FETs, interconnect models, simulation, and RC timing. Course covers the design flow from logic design to layout, with a focus on high performance and low power. Students should be familiar with RC circuit analysis. Enrollment restricted to seniors and graduate students. Undergraduates may enroll with permission of instructor. C. Bazeghi, M. Guthaus

CMPE 223: VLSI System-on-a-Chip Design
Design methodologies for Application Specific Integrated Circuits (ASICs). Topics include: behavioral specification; logic synthesis; standard-cell libraries; advanced timing analysis; and physical design automation tools. Familiarizes students with real-world tools during the design of a small system-on-a-chip project. Students are encouraged to fabricate and test their chips in an independent study. Prerequisite(s): course 222 or permission of instructor. Enrollment restricted to graduate students. C. Bazeghi, M. Guthaus

CMPE 224: Testing Digital Circuits
An introduction to the theory and practice of testing. Topics are chosen from fault and defect models, test generation for combinational and sequential circuits, fault simulation, scan-design and built-in self-test. Enrollment restricted to graduate students; undergraduates may enroll if they have completed Computer Science 101. T. Larrabee, F. Ferguson

CMPE 225: Introduction to ASIC Systems Design
Introduction to system prototyping using field-programmable gate arrays (FPGAs). Topics include architectures of FPGAs, behavioral design specification, system partitioning, synthesis tools, design verification, and studies of novel systems implemented with FPGAs. Intended to familiarize students with the techniques and tools in ASIC designs. Final project is the complete design of a small system using FPGAs. Enrollment restricted to graduate students; undergraduates may enroll if they have completed courses 100/L and 202. Enrollment limited to 10. Offered in alternate academic years. P. Chan

CMPE 229: FPGA Computer Assisted Design
Design methods for Field-Programmable Gate Arrays (FGPAs), including algorithms for technology mapping, routability estimation, placement, and routing. The relationship between FPGA architectures and their computer-aided design tools. Course project involves the modification and analysis of an FPGA tool. Enrollment restricted to graduate students or by consent of instructor. Courses 100, 125, 126, 222, 225, or other digital design experience recommended. Enrollment limited to 20. M. Schlag

CMPE 230: Computer Performance Evaluation
Introduction to methods of analysis of computer system performance. Predictive performance models with emphasis on queuing models; exact and appropriate solution methods, discrete-event simulation, and numeric iterative approaches; analytical solutions and their computation; separable queuing networks, decomposition approaches; examples of practical application; and performance measurement, model validation, robustness of models, and operational analysis. Enrollment restricted to graduate students. Enrollment limited to 20. Offered in alternate academic years. A. Brandwajn

CMPE 232: Arithmetic Processors
Concept of number systems: binary additions, multiplications, divisions; elementary function evaluations; algorithm acceleration; floating-point and significant arithmetics; IEEE standards; technology related issues; algorithm evaluation by implementation with gate arrays. Prerequisite(s): course 202. Enrollment restricted to graduate students. Enrollment limited to 15. P. Chan

CMPE 240: Introduction to Linear Dynamical Systems
Introduction to applied linear algebra and linear dynamical systems with applications to circuits, signal processing, communications, and control systems. Topics include the following: Least-squares approximations of over-determined equations and least-norm solutions of underdetermined equations. Symmetric matrices, matrix norm and singular value decomposition. Eigenvalues, left and right eigenvectors, and dynamical interpretation. Matrix exponential, stability, and asymptotic behavior. Multi-input multi-output systems, impulse and step matrices; convolution and transfer matrix descriptions. Control, reachability, state transfer, and least-norm inputs. Observability and least-squares state estimation. Enrollment restricted to graduate students; undergraduates may enroll if they have completed Electrical Engineering 103 and Applied Math and Statistics 147. G. Elkaim, K. Ross, W. Dunbar, J. Cortes

CMPE 241: Introduction to Feedback Control Systems
Graduate-level introduction to control of continuous linear systems using classical feedback techniques. Design of feedback controllers for command-following error, disturbance rejection, stability, and dynamic response specifications. Root locus and frequency response design techniques. Extensive use of Matlab for computer-aided controller design. Course has concurrent lectures with Electrical Engineering 154. (Also offered as Electrical Engineering 241. Students cannot receive credit for both courses.) Enrollment restricted to graduate students. G. Elkaim, W. Dunbar, J. Cortes

CMPE 242: Applied Feedback Control
Sequel to Electrical Engineering 154. After reviewing control design techniques examined in EE 154, this course explores state space control, discrete time control, and two case studies in control design. Students design and implement feedback controllers on an inverted pendulum experiment. Prerequisite(s): Electrical Engineering 154 or course 241. Enrollment restricted to juniors, seniors, and graduate students. W. Dunbar

CMPE 243: System Identification
Course provides introduction to the construction of linear dynamical models from experimental data using parametric and non-parametric identification techniques. Theoretical and practical aspects of these techniques addressed. Prerequisite(s): course 240, or by permission of instructor. G. Elkaim, W. Dunbar

CMPE 248: Games in Design and Control
Graduate-level introduction to game theory and its applications to system design, verification, analysis, and optimal control. Enrollment restricted to graduate students. Computer Science 101, 201, or equivalent recommended. L. De Alfaro

CMPE 250: Multimedia Systems
Study of state-of-the-art technology for networked multimedia systems. Topics include audio, image, and video acquisition and compression standards (JPEG, MPEG, and ITU families); networking for multimedia; and digital television. Proficiency in C or C++ required. Prerequisite(s): Enrollment restricted to graduate students. R. Manduchi

CMPE 251: Error-Control Coding
Overview of coding to protect messages against error during transmission or storage. Topics include channel models, linear algebra over finite fields, linear block codes and bounds, cyclic codes (BCH and RS), decoding algorithms, spectral analysis, codes on graphs, and low-complexity algorithms. Enrollment restricted to graduate students or consent of instructor. H. Sadjadpour

CMPE 252A: Computer Networks
Issues resulting from organizing communication among autonomous computers. Includes network models and switching techniques; medium access control protocols and local area networks; error control and retransmission strategies; routing algorithms and protocols; congestion control mechanisms and end-to-end protocols; application-level protocols; and application of concepts to wireless and wireline networks, with emphasis on the Internet. Enrollment restricted to graduate students. J. Garcia-Luna-Aceves

CMPE 252B: Modeling of Communications Protocols
This course was last offered in Winter 2004 and a course syllabus is not available.

CMPE 253: Network Security
Fundamental mechanisms for network security and their application in widely deployed protocols. In-depth treatment of security mechanism at the data-link, network, and transport layers for both wired and wireless networks. Covers mechanisms for privacy and integrity, and methods for intrusion detection. Prerequisite(s): course 252A and Computer Science 201. Enrollment restricted to graduate students. A. Varma

CMPE 254: High Speed Computer Networks
Fiber-optic technology; fiber-optic link design; network protocol concepts; coding and error control; high-speed local area and metropolitan area networks; gigabit networks; error and congestion control; photonic networks; research topics. Prerequisite(s): course 252B. Offered in alternate academic years. A. Varma

CMPE 256: Design Project in Computer Networks
Students develop a working implementation of a network protocol with the goal of obtaining hands-on experience in implementing real-world network protocols. Prerequisite(s): course 252A; enrollment restricted to graduate students. A. Varma

CMPE 257: Wireless and Mobile Networks
An interdisciplinary course on wireless communication and mobile computing. Covers the physical aspects of wireless communication but emphasizes higher protocol layers. Topics include cellular networks, packet radio and ad hoc networks, wireless transport protocols, security, and application-level issues. Prerequisite(s): course 252A or permission of instructor. Enrollment limited to 20. J. Garcia-Luna-Aceves, K. Obraczka

CMPE 258: UNIX Networking Internals
In-depth treatment of the implementation of network protocols in typical open-source Unix systems. Topics include implementation of send and receive functions, buffer management, interrupt handling, locking, scheduling and timer management. Major implementation project required. Prerequisite(s): course 252A. Computer Science 111 recommended. Enrollment restricted to graduate students. A. Varma

CMPE 259: Sensor Networks
Focus is on the networking aspects of sensor networks: protocols at the various layers and how they answer the specific requirements posed by these networks (e.g., data driven, energy efficient, etc.) and their applications (monitoring, tracking, etc.). Explore how physical layer and hardware issues may influence protocol design. Courses 252A and 257 recommended. K. Obraczka

CMPE 263: Data Compression
Introduction to information theory and data compression. Lossless coding (Huffman, arithmetic, dictionary codes). Lossy coding (scalar and vector quantization, differential coding, transform coding). Applications to the compression of real data sets (DNA sequences, biological time series, multimedia streams). Concurrent lectures with course 108. Students cannot receive credit for both this course and course 108. Students must have basic knowledge of probability theory. Enrollment restricted to graduate students. R. Manduchi

CMPE 264: Image Analysis & Computer Vision
Brief review of image processing. Binary images, thresholding, morphological operations; edge detection and segmentation; contours: digital curves and curve fitting; statistical texture analysis, shape from texture; depth cues, stereo matching, depth from stereo; color perception and segmentation; and shading and image radiance, surface orientation, and shape from shading. Electrical Engineering 264 encouraged, but not required. Undergraduate students who are interested in enrolling should meet with the instructor first. H. Tao

CMPE 276: Software Engineering
Introduction to the general principles of software engineering. Covers current and classical topics from both practical and theoretical viewpoints. Topics include software evolution, project management, software inspections, design methods, requirements analysis and specification, software testing, maintenance, software implementation, human interfaces, and software engineering experimentation. Enrollment restricted to graduate students; undergraduates may enroll in this course if they have completed Computer Science 115. The Staff

CMPE 277: Graph Algorithms
Explores graph theory and algorithms for solving problems in engineering. A review of basic graph concepts and algorithms is followed by topics in network flow, partitioning, spectral analysis of graphs, graph isomorphism, and intractability. Prerequisite(s): Computer Science 101 and 102; or course 177; or Computer Science 201; or equivalent. Enrollment restricted to graduate students. Enrollment limited to 20. M. Schlag

CMPE 278: Introduction to the Theory of Discrete Systems
Introduction to methods for modeling, analyzing, and reasoning about discrete systems, such as hardware and software designs. First part of course presents basic models for hardware and software systems and introduces methods for system specification, verification, abstraction, and stepwise refinement of a design into an implementation. Second part discusses role of structure: hierarchy, system composition, and interface specification. Prerequisite(s): some mathematical background is assumed. Enrollment restricted to graduate students or by permission of instructor. L. De Alfaro

CMPE 280C: Seminar on Control
Weekly seminar series covering topics of current research in theory and application of control to engineering systems. Current research work and literature in these areas discussed. Enrollment restricted to graduate students; undergraduates may enroll with permission of instructor. May be repeated for credit. G. Elkaim, K. Ross, W. Dunbar, J. Cortes

CMPE 280N: Seminar on Networks
Weekly seminar series covering topics of current research in networks and networked systems. Current research work and literature in these areas are discussed. Prerequisite(s): permission of instructor. Enrollment restricted to graduate students. May be repeated for credit. J. Garcia-Luna-Aceves, K. Obraczka

CMPE 280P: Seminar on Parallel Processing
Weekly seminar series covering topics of current research in parallel systems, architectures, and algorithms. Current research work and literature in these areas are discussed. Enrollment restricted to graduate students. Enrollment limited to 20. May be repeated for credit. R. Hughey

CMPE 280T: Seminar on New Technologies
Weekly seminar series in which distinguished speakers from industry, universities, and government discuss current developments in networking and computer technology. The emphasis is on open research questions that may lead to collaborative work with faculty and graduate students. The Staff

CMPE 280V: Seminar on Computer Vision
Weekly graduate-level seminar series discussing advanced topics in computer vision and image analysis. Current research and literature presented during each meeting. Enrollment limited to 20. May be repeated for credit. H. Tao, R. Manduchi

CMPE 285: Technical Writing for Engineering Graduates
Writing skills development for graduate engineers. Students produce a major writing project with many subtasks. Exercises includes fellowship application; mathematical and algorithmic description; use of tables and graphs; experiment description; and producing technical web sites, presentations, and posters. Enrollment restricted to graduate biomolecular engineering, computer engineering, computer science, and electrical engineering majors. (Open to all School of Engineering graduate students.) Enrollment limited to 20. T. Larrabee, (S) The Staff

CMPE 290L: Advanced Topics in VLSI Comp-Aided Design
A graduate course on a research topic in VLSI computer-aided design. Topic varies according to instructor. Possible topics include, but are not limited to specification languages and formal verification, logic minimization, testing and verification, electrical simulation, layout synthesis, and behavioral synthesis. Course 100, 125, 126, 222, or 225 recommended. Offered in alternate academic years. P. Chan, T. Larrabee, F. Ferguson, M. Schlag

CMPE 290M: Topics in Parallel Computation
Investigates selected topics in applied parallel computation. Topics may include numerical methods, artificial intelligence and machine learning algorithms, graphics and image processing, systolic algorithms, and the interplay between hardware and algorithms. Students are encouraged to investigate and discuss the parallelization of their own research. Enrollment restricted to graduate students. R. Hughey

CMPE 290N: Topics in Computer Performance
Selected topics of current interest in the area of computer system performance. Subjects may include aspects of large systems, performability, computer networks, storage subsystems, and nontraditional approaches and are subject to periodic revision. Enrollment restricted to graduate students. Offered in alternate academic years. A. Brandwajn

CMPE 290V: Advanced Topics in Visual Computing
Advanced course in image analysis and computer vision. Topics include motion analysis, multiple view geometry, 3D reconstruction, image-based rendering, vision-based graphics, face detection and recognition, tracking, image and video retrieval, and human-computer interface. Enrollment restricted to seniors and graduate students. Enrollment limited to 20. H. Tao, S. Lodha

CMPE 293: Advanced Topics in Computer Engineering
A graduate seminar on a research topic in computer engineering which varies according to instructor. Possible topics include, but are not limited to, communication networks, data compression, special-purpose architectures, computer arithmetic, software reliability and reusability, systolic arrays. The Staff