Electrical Engineering & Computer Science (EECS)

EECS 100-0 Electrons, Photons, and Bits: Adventures in Electrical and Computer Engineering (1 Unit)   Introduction to contemporary topics in electrical and computer engineering via lectures, demonstrations, lab tours, and invited speakers from industry and government. Weekly reading and writing assignments.

EECS 101-0 Computer Science: Concepts, Philosophy, and Connections (1 Unit)   General introduction to historical and current intellectual questions in computer science. Theory, systems, artificial intelligence, interfaces, software development, and interactions with business, politics, law, medicine, engineering, and other sciences. Social Behavioral Sciences Distro Area

EECS 110-0 Introduction to Computer Programming (1 Unit)   Introduction to programming practice using a modern programming language. Analysis and formulation of problems for computer solution. Systematic design, construction, and testing of programs. Substantial programming assignments. Not to be taken for credit with or after EECS 111-0. Formal Studies Distro Area

EECS 111-0 Fundamentals of Computer Programming (1 Unit)   Fundamental concepts of computer programming with heavy emphasis on design of recursive algorithms and test-driven development.  Functional, imperative, and object-oriented programming paradigms.  Procedural abstraction, data abstraction, and modularity.  Required for the computer science degree. Formal Studies Distro Area

EECS 120-0 Intro to Computers & Info Technology (1 Unit)  

EECS 130-0 Tools and Technology of the World-Wide Web (1 Unit)   Introduction to the theory and practice of developing sites on and technology for the web. Basics of HTML, JavaScript, ASP, and CGI programming.

EECS 195-0 Electroncs, Photons, and Bits: Adventures in Electrical and Computer Engineering (1 Unit)   Topics suggested by students or faculty and approved by the department.

EECS 202-0 Introduction to Electrical Engineering (1 Unit)   Concepts and applications of electrical engineering. Quantization, binary representation, performance. Power spectral density, digital filtering, fundamental limitations. Control systems, feedback systems. Properties of lasers, amplifiers, passive circuit elements, active circuit elements. Electronic devices and materials.

EECS 203-0 Introduction to Computer Engineering (1 Unit)   Overview of computer engineering design. Number systems and Boolean algebra. CMOS and logic gates. Design of combinational circuits and simplification. Decoders, multiplexers, adders. Sequential logic and flip flops. Introduction to assembly language.

EECS 205-0 Fundamentals of Computer System Software (1 Unit)   Basics of assembly language programming. Macros. System stack and procedure calls. Techniques for writing assembly language programs. Features of Intel x86 arcitecture. Interfaces between C and assembly codes. Prerequisite: EECS 111-0 or GEN_ENG 205-1; EECS 203-0 recommended.

EECS 211-0 Fundamentals of Computer Programming II (1 Unit)   Continuation of EECS 111-0.  Programming in statically-typed imperative languages.  The von Neuman machine model: pointers, address manipulation, and manual memory management.  Object-oriented programming and design.  The C/C++ language family.  Required for the computer science degree.  Not to be taken for credit with EECS 230-0. Prerequisite: EECS 111-0.

EECS 212-0 Mathematical Foundations of Comp Science (1 Unit)   Basic concepts of finite and structural mathematics. Sets, axiomatic systems, the propositional and predicate calculi, and graph theory. Application to computer science: sequential machines, formal grammars, and software design. Prerequisite: MATH 230-0.

EECS 213-0 Introduction to Computer Systems (1 Unit)   The hierarchy of abstractions and implementations that make up a modern computer system; demystifying the machine and the tools used to program it; systems programming in C in the UNIX environment. Preparation for upper-level systems courses. Prerequisite: EECS 211-0.

EECS 214-0 Data Structures & Algorithms (1 Unit)   Design, implementation, and performance analysis of abstract data types; data structures and their algorithms. Topics include fundamental collection classes, tree and graph representations and walks, search trees, sorting, priority queues and heaps, least-cost paths computations, and disjoint-set structures. Required for the computer science degree. Prerequisite: EECS 211-0.

EECS 221-0 Fundamentals of Circuits (1 Unit)   Circuit analysis and network theorems; linearity and superposition; series/ parallel combinations of R, L, and C circuits; sinusoidal forcing; complex frequency and Bode plots; mutual inductance and transformers; two-part networks; Fourier analysis; response of circuits to periodic non-sinusoidal sources. Prerequisite: EECS 202-0.

EECS 222-0 Fundamentals of Signals & Systems (1 Unit)   Comprehensive introduction to analysis of continuous and discrete-time signals and systems. Linear time-invariant systems, convolution. Fourier series representations of periodic signals. Continuous and discrete-time Fourier transforms. Laplace transform; z-transform. Prerequisite: EECS 202-0.

EECS 223-0 Fundamentals of Solid State Engineering (1 Unit)   Crystalline state of matter; quantum phenomena and quantum mechanics; electrons in atoms, atoms in crystals, electrons in crystals; semiconductors; thermal properties of crystals, electrical properties of crystals and semiconductors; pn junction. Prerequisites: EECS 202-0; PHYSICS 135-3; MATH 234-0.

EECS 224-0 Fund of Electromagnetics & Photonics (1 Unit)   Concepts of flux, potential, gradient, divergence, curl, and field intensity. Boundary conditions and solutions to Laplace and Poisson equations. Capacitance and inductance calculations. Conductors, insulators, and magnetic materials. Prerequisites: EECS 202-0, EECS 221-0; PHYSICS 135-2; MATH 234-0; or consent of instructor.

EECS 225-0 Fundamentals of Electronics (1 Unit)   Diode, BJT, and FET circuits; design using ideal operational amplifiers; feedback; frequency response; biasing; current sources and mirrors; small-signal analysis; design of operational amplifiers. Prerequisites: EECS 221-0, EECS 223-0.

EECS 230-0 Programming for Engineers (1 Unit)   Introduction to computer programming in an object-oriented language. Emphasis on applications to computer systems, computer simulation, and discrete optimization. Basic principles of software engineering. Not to be taken for credit with or after EECS 211-0. Prerequisites: GEN_ENG 205-1, GEN_ENG 205-2.

EECS 250-0 Physical Electronics and Devices (1 Unit)   The physical basis of electronic and optoelectronic devices and their application in analog and digital systems. Diodes, transistors, LEDs, photodetectors, and lasers are described, and their properties explored. Prerequisites: EECS 221-0; PHYSICS 135-2.

EECS 270-0 Applications of Electronic Devices (1 Unit)   DC and AC networks, rectifiers, transistor amplifiers, feedback and operational amplifiers, digital electronics, and microprocessors. Not open to electrical engineering degree candidates. Prerequisites: MATH 224-0; PHYSICS 135-2; or equivalent.

EECS 295-0 Intermediate Topics in Electrical Engineering and Computer Science (1 Unit)   Topics suggested by students or faculty and approved by the department.

EECS 301-0 Introduction to Robotics Laboratory (1 Unit)   Lab-based introduction to robotics, focusing on hardware (sensors/ actuators) and software (sensor processing/behavior development); motion control and planning; artificial intelligence; machine learning. Not open to graduate students except by consent of instructor. Prerequisite: EECS 110-0, EECS 111-0, or consent of instructor.

EECS 302-0 Probabilistic Systems (1 Unit)   Introduction to probability theory and its applications. Axioms of probability, distributions, discrete and continuous random variables, conditional and joint distributions, correlation, limit laws, connection to statistics, and applications in engineering systems. Co-requisite: MATH 234-0 or equivalent. May not receive credit for both EECS 302-0 and any of the following: IEMS 202-0; MATH 310-1; STAT 320-1; EECS 314-0, EECS 383-0, EECS 385-0.

EECS 303-0 Advanced Digital Design (1 Unit)   Overview of digital logic design. Technology review. Delays, timing in combinational and sequential circuits, CAD tools, arithmetic units such as ALUs and multipliers. Introduction to VHDL. Prerequisite: EECS 203-0.

EECS 307-0 Communications Systems (1 Unit)   Analysis of analog and digital communications systems, including modulation, transmission, and demodulation of AM, FM, and TV systems. Design issues, channel distortion and loss, bandwidth limitations, additive noise. Prerequisites: EECS 222-0, EECS 302-0 or equivalent.

EECS 308-0 Advanced Electromagnetics and Photonics (1 Unit)   Electromagnetic waves, transmission lines; impedance transformation; transients on lines; electrostatics, conductors, and capacitors; magnetostatics and inductors; wave reflection and transmission; electromagnetic motor, Maxwell's equations; metallic waveguides and wave transmission; antenna and diffraction, antenna arrays, communication, and radar. Prerequisite: EECS 224-0.

EECS 313-0 Tangible Interaction Design and Learning (1 Unit)   The use of tangible interaction to create innovative learning experiences, including distributed cognition, embodied interaction, cultural forms, and design frameworks. Prerequisite: EECS 110-0.

EECS 314-0 Technology and Human Interaction (1 Unit)   Understanding human interactions that occur both with and through technology; design, creation, and evaluation of technologies to support such interactions.

EECS 315-0 Design, Technology, and Research (1 Unit)   Hands-on experience in the research learning environment. Students lead research projects in social and crowd computing, cyber-learning, human-computer interaction, and artificial intelligence. Prerequisite: consent of instructor (by application only).

EECS 317-0 Data Management & Information Processing (1 Unit)   Data representation, file and record organization, linear and linked lists, and scatter storage techniques. Sorting and searching algorithms. Solving problems involving large databases. Not for computer science degree candidates. Prerequisite: EECS 110-0, EECS 111-0, or programming experience.

EECS 321-0 Programming Languages (1 Unit)   Introduction to key parts of programming languages: syntax, semantics, and pragmatics. Implementation of a series of interpreters that show how various aspects of programming languages behave. Prerequisites: EECS 111-0, EECS 214-0.

EECS 322-0 Compiler Construction (1 Unit)   Overview of compilers and context-free languages, top-down parsing, LL(1) parser construction, translation grammars, implementation of lexical analyzer, parser and translator, compiler optimization, error handling, and recovery. Prerequisite: EECS 214-0.

EECS 323-0 Code Analysis and Transformation (1 Unit)   Code analysis and transformation used in modern compilers. Fast, highly sophisticated code analysis and code transformation tools are essential for modern software development. Understanding what modern code analysis and transformation techniques can and can't do is a prerequisite for research on both software engineering and computer architecture since hardware relies on software to realize its potential.

EECS 325-1 Artificial Intelligence Programming (1 Unit)   Introduction to LISP and programming knowledge-based systems and interfaces. Strong emphasis on writing maintainable, extensible systems. Topics include semantic net-works, frames, pattern matching, deductive inference rules, case-based reasoning, and discrimination trees. Project-driven. Substantial programming assignments. Prerequisite: EECS 110-0, EECS 111-0, or programming experience.

EECS 326-0 Electronic System Design I (1 Unit)   This fast-paced course teach a student how to go from a project idea to a fully functional prototype implementation. This involves a printed circuit board design using PCB CAD software, surface mount soldering, MCU programming, CAD design for 3D printing, and web design. Prerequisites: EECS 221-0 and EECS 225-0 and EECS 211-0, or graduate standing, or instructor consent.

EECS 327-0 Electronic System Design II: Project (1 Unit)   This course puts to practice the knowledge gained in Electronic System Design I, and have students create a fully functional prototype implementation. This involves the same principles as in Electronic System Design I, but more independently, and with some design optimization. The course will also focus on team management and presentation skills, culminating in a project fair to the public. For a student with senior standing, this course can count towards the Design Degree Requirement in EE. Prerequisite: EECS 326-0 or instructor consent.

EECS 328-0 Numerical Methods for Engineers (1 Unit)   Introduction to numerical methods; numerical differentiation, numerical integration, solution of ordinary and partial differential equations. Writing programs in FORTRAN, C, or Pascal using methods presented in class. Prerequisites: GEN_ENG 205-1, GEN_ENG 205-2, GEN_ENG 205-3; MATH 220-0; EECS 224-0, EECS 230-0.

EECS 329-0 The Art of Multicore Concurrent Programming (1 Unit)   Concurrency disciplines and practical programming techniques for multicore processors; synchronization primitives, mutual exclusion, foundation of shared memory, lockings, non-blocking synchronizations, and transactional memory.

EECS 330-0 Human Computer Interaction (1 Unit)   Introduction to human-computer interaction and design of systems that work for people and their organizations. Understanding the manner in which humans interact with and use computers for productive work. Prerequisite: programming experience.

EECS 331-0 Introduction to Computational Photography (1 Unit)   Fundamentals of digital imaging and modern camera architectures. Hands-on experience acquiring, characterizing, and manipulating data captured using a modern camera platform.

EECS 332-0 Introduction to Computer Vision (1 Unit)   Computer and biological vision systems, image formation, edge detection, image segmentation, texture, representation and analysis of two-dimensional geometric structures and of three-dimensional structures. Prerequisites: EECS 214-0, EECS 222-0, and EECS 302-0 or its equivalent.

EECS 333-0 Introduction to Communication Networks (1 Unit)   Data communication basics. Telephone, cellular, cable, and computer networks. Layered network architectures, models, and protocols. Switching, routing, flow control, and congestion control. Medium access control, ARQ, and local area networks. Queuing models and network performance analysis. Prerequisite: EECS 302-0 or equivalent

EECS 335-0 Introduction to the Theory of Computation (1 Unit)   Mathematical foundations of computation, including computability, relationships of time and space, and the P vs. NP problem. Prerequisite: EECS 212-0 or consent of instructor.

EECS 336-0 Design & Analysis of Algorithms (1 Unit)   Analysis techniques: solving recurrence equations. Algorithm design techniques: divide and conquer, the greedy method, backtracking, branch-and-bound, and dynamic programming. Sorting and selection algorithms, order statistics, heaps, and priority queues. Prerequisite: EECS 111-0, EECS 212-0, or consent of instructor.

EECS 337-0 Natural Language Processing (1 Unit)   Semantics-oriented introduction to natural language processing, broadly construed. Representation of meaning and knowledge inference in story understanding, script/frame theory, plans and plan recognition, counter-planning, and thematic structures. Prerequisite: EECS 348-0 or consent of instructor.

EECS 338-0 Practicum in Intelligent Information Systems (1 Unit)   A practical excursion into building intelligent information systems. Students develop a working program in information access, management, capture, or retrieval. Project definition, data collection, technology selection, implementation, and project management.

EECS 339-0 Introduction to Database Systems (1 Unit)   Data models and database design. Modeling the real world: structures, constraints, and operations. The entity relationship to data modeling (including network hierarchical and object-oriented), emphasis on the relational model. Use of existing database systems for the implementation of information systems. Prerequisite: EECS 214-0.

EECS 340-0 Introduction to Networking (1 Unit)   A top-down exploration of networking using the five-layer model and the TCP/IP stack, covering each layer in depth. Students build web clients, servers, and a TCP implementation and implement routing algorithms. Prerequisite: EECS 214-0.

EECS 341-0 Mechanism Design (1 Unit)   Applying algorithms and microeconomics to derive a theory of the design of mechanisms that produce desired outcomes despite counteractive inputs by outside agents. Key application areas: auctions, markets, networking protocols.

EECS 343-0 Operating Systems (1 Unit)   Fundamental overview of operating systems, including: concurrency (processes, synchronization, semaphores, monitors, deadlock); memory management (segmentation, paging virtual memory policies); software system architectures (level structures, microkernals); file systems (directory structures, file organization, RAID); protection (access control, capabilities, encryption, signatures, authentication). Requires substantial programming projects. Prerequisites: Both EECS 214-0 and EECS 213-0, or EECS 214-0 and EECS 205-0.

EECS 344-0 Design of Computer Problem Solvers (1 Unit)   Principles and practice of organizing and building artificial intelligence reasoning systems. Pattern-directed rule systems, truth-maintenance systems, and constraint languages. Prerequisites: EECS 348-0 and EECS 325-1 or equivalent LISP experience.

EECS 345-0 Distributed Systems (1 Unit)   Basic principles behind distributed systems (collections of independent components that appear to users as a single coherent system) and main paradigms used to organize them. Prerequisites: EECS 213-0 and EECS 214-0.

EECS 346-0 Microprocessor System Design (1 Unit)   Structure and timing of typical microprocessors. Sample microprocessor families. Memories, UARTS, timer/counters, serial devices, and related devices. MUX and related control structures for building systems. Standard bus structures. Interrupt programming. Hardware/software design tradeoffs. Prerequisites: EECS 203-0, EECS 205-0.

EECS 347-1 Microprocessor System Projects (1 Unit)   Programmable logic devices such as PAL and FPGA. Design, prototype, and test individual projects involving microprocessors and programmable logic devices. Prerequisite: EECS 346-0.

EECS 347-2 Microprocessor System Projects II (1 Unit)   Designing, prototyping, and testing individual projects involving microprocessors and related devices, such as PAL/FPGA and special-purpose ICs. Embedded system tools such as special-purpose compilers and ICE (in-circuit emulation). Manufacturing issues such as PCB layout. Survey of microprocessor platforms. Prerequisite: EECS 347-1.

EECS 348-0 Introduction to Artificial Intelligence (1 Unit)   Core techniques and applications of AI. Representing, retrieving, and applying knowledge for problem solving. Hypothesis exploration. Theorem proving. Vision and neural networks.

EECS 349-0 Machine Learning (1 Unit)   Study of algorithms that improve through experience. Topics typically include Bayesian learning, decision trees, genetic algorithms, neural networks, Markov models, and reinforcement learning. Assignments include programming projects and written work. Prerequisite: EECS 348-0.

EECS 350-0 Introduction to Computer Security (1 Unit)   Basic principles and practices of computer and information security. Software, operating system, and network security techniques, with detailed analysis of real-world examples. Topics include cryptography, authentication, software and operating system security (e.g., buffer overflow), Internet vulnerability (DoS attacks, viruses/worms, etc.), intrusion detection systems, firewalls, VPN, and web and wireless security. Prerequisite: EECS 213-0 or equivalent or consent of instructor; EECS 340-0 highly recommended.

EECS 351-1 Introduction to Computer Graphics (1 Unit)   Mathematical software and hardware requirements for computer graphics systems. Data structures and programming languages. Random displays. Graphic applications. Prerequisite: EECS 214-0.

EECS 351-2 Intermediate Computer Graphics (1 Unit)   Methods and theory of computer graphics. Project-oriented approach. Describing shapes, movement, and lighting effects; interactive elements. Prerequisites: EECS 214-0 and EECS 351-1.

EECS 352-0 Machine Perception of Music & Audio (1 Unit)   Machine extraction of musical structure in audio and MIDI and score files, covering areas such as source separation and perceptual mapping of audio to machine-quantifiable measures. Prerequisite: EECS 211-0, GEN_ENG 205-2, or prior programming experience in MATLAB.

EECS 353-0 Digital Microelectronics (1 Unit)   Logic families, comparators, A/D and D/A converters, combinational systems, sequential systems, solid-state memory, largescale integrated circuits, and design of electronic systems. Prerequisites: EECS 203-0, EECS 225-0.

EECS 354-0 Network Penetration & Security (1 Unit)   Practical tools for vulnerability assessment and defense of computer and communication systems. Prerequisites: EECS 213-0 or EECS 205-0; EECS 333-0 or EECS 340-0.

EECS 355-0 ASIC and FPGA Design (1 Unit)   Overview of computer-aided design tool flow for ASIC and FPGA design. Synthesis from hardware description languages and creation of finite-state machines. Differences between FPGA and ASIC design flows. Exploration of concepts in several projects. Prerequisite: EECS 303-0.

EECS 356-0 Introduction to Formal Specification & Verification (1 Unit)   Introduction to formal techniques used for system specifications and verifications: temporal logic, set theory, proofs, and model checking. TLA+ (Temporal Logic of Actions) specifications. Safety and liveness properties. Real-time specs and verifications.

EECS 357-0 Design Automation in VLSI (1 Unit)   VLSI physical design, including logic design, architectural design, and packaging. Development of CAD tools for VLSI physical design. Prerequisites: EECS 214-0, EECS 303-0.

EECS 358-0 Introduction to Parallel Computing (1 Unit)   Introduction to parallel computing for scientists and engineers. Shared-memory parallel architectures and programming, distributed memory, message-passing data-parallel architectures, and programming. Prerequisites: EECS 361-0; EECS 211-0 or EECS 230-0.

EECS 359-0 Digital Signal Processing (1 Unit)   Discrete-time signals and systems. Discrete-time Fourier transform, z-transform, discrete Fourier transform, digital filters. Prerequisite: EECS 222-0.

EECS 360-0 Introduction to Feedback Systems (1 Unit)   Linear feedback control systems, their physical behavior, dynamical analysis, and stability. Laplace transform, frequency spectrum, and root locus methods. System design and compensation using PID and lead-lag controllers. Digital implementations of analog controllers. Prerequisite: EECS 222-0.

EECS 361-0 Computer Architecture I (1 Unit)   Design and understanding of the computer system as a whole unit. Performance evaluation and its role in computer system design; instruction set architecture design, data-path design and optimizations (e.g., ALU); control design; single cycle, multiple cycle, and pipeline implementations of processor. Hazard detection and forwarding; memory hierarchy design; cache memories, virtual memory, peripheral devices, and I/O. Prerequisites: (EECS 205-0 or EECS 213-0) AND (EECS 303-0 or EECS 355-0).

EECS 362-0 Computer Architecture Projects (1 Unit)   Quarter-long team project designing a processor for a complete instruction set. Involves ISA design, design of components, data-path, and control for a pipelined processor to implement the ISA. Use of industrial-strength design tools and VHDL as the design specification language. Designs are evaluated using benchmark programs for correctness and performance. Prerequisite: EECS 361-0.

EECS 363-0 Digital Filtering (1 Unit)   Recursive and nonrecursive digital filters, decimation and interpolation, A/D and D/A conversion as digital filtering problems. Implementation of nonrecursive filters via FFT, quantization problems (e.g., companding and limit cycles). Prerequisite: EECS 359-0.

EECS 366-0 Embedded Systems (1 Unit)   Introduction to the design and evaluation of embedded systems, with emphasis on the system-level aspects of embedded systems. Topics include modeling (models of computation and models of communication), survey of embedded system hardware, software and operating system issues specific to embedded system design, mapping specifications to hardware, and testing and evaluation of embedded systems.

EECS 367-0 Wireless and Mobile Health: Passive Sensing Data Analytics (1 Unit)   A hands-on introduction and experience to the growing field of mobile Health. Students work together on a project with clinicians and faculty in medicine, building a unique mHealth system while testing their system on a small population. Theory-driven project hypothesis, technology selection and development, passive sensing data analytic chain understanding and implementation, and project management.

EECS 368-0 Programming Massively Parallel Processors with CUDA (1 Unit)   GPU architecture, CUDA programming model, parallel programming optimizations for 1000+ cores, performance analysis, OpenCL. Requires two-week mini-project on optimized histogramming on GPUs. May not receive credit for both EECS 368-0 and EECS 468-0. Prerequisites: EECS 213-0; EECS 211-0 or intermediate C programming experience; or consent of instructor.

EECS 369-0 Introduction to Sensor Networks (1 Unit)   Basic hardware and software platforms for sensor networks. Various algorithmic techniques for data routing, query processing, and tracking. Prerequisite: EECS 343-0 or EECS 340-0.

EECS 370-0 Computer Game Design (1 Unit)   Plot, narrative, and character simulation for creating game worlds; artificial intelligence for synthetic characters; tuning gameplay. Substantial programming and project work. Prerequisites: EECS 214-0; 1 unit of EECS 322-0, EECS 343-0, EECS 348-0, or EECS 351-1, EECS 351-2.

EECS 371-0 Knowledge Representation and Reasoning (1 Unit)   Principles and practices of knowledge representation, including logics, ontologies, commonsense knowledge, and semantic web technologies. Prerequisite: EECS 348-0, EECS 325-1, or equivalent experience with artificial intelligence.

EECS 372-0 Designing & Constructing Models with Multi-Agent Language (1 Unit)   Exploration and analysis of multi-agent models, which simulate "emergent" scientific phenomena in a wide variety of content domains.

EECS 374-0 Introduction to Digital Control (1 Unit)   Discrete dynamics systems; discrete models of continuous systems feedback and digital controllers; analog-digital conversion; digital control design including PID, lead/lag, deadbeat, and mode-lmatching controllers. Prerequisite: EECS 360-0.

EECS 375-0 Machine Learning: Foundations, Applications, and Algorithms (1 Unit)   The course covers the fundamentals of machine learning and numerical optimization, with many application examples.

EECS 376-0 Computer Game Design and Development (1 Unit)   Introduction to design of simulation-based media, with an emphasis on 2D game design. Mathematical preliminaries: linear, affine, and projective spaces, linear transforms, inner and exterior products, unit quaternions; Architecture: update/render loop, component systems, serialization and deserialization, event handling and asynchronous processing, multitasking; Rendering: scene graphs, meshes, shaders, sprites; Networking; Audio; Physics: particles, rigid bodies, collision detection; Gameplay design.

EECS 377-0 Game Design Studio (1 Unit)   In this course, students will design and develop games using the Unity game engine, with focus on team-based projects and agile development practices. Lectures will cover game design theory, game architecture and implementation, and the business of game development. Students will participate in class discussion and evaluation of projects in progress, to develop their skills in iterative design and implementation.

EECS 378-0 Digital Communications (1 Unit)   Sampling and time-division multiplexing, baseband digital signals and systems. Coded pulse modulation, error control coding, digital modulation systems, information measure and source encoding, and introduction to spread spectrum communications. Prerequisites: EECS 302-0 or equivalent.

EECS 379-0 Lasers and Coherent Optics (1 Unit)   Optical resonators; fundamental operation of lasers; mode-locking and Q-switching; optical propagation and diffraction; Gaussian beams; thin-lens imaging; optical signal processing. Prerequisites: EECS 222-0, EECS 224-0.

EECS 380-0 Wireless Communications (1 Unit)   Overview of existing and emerging wireless communications systems; interference, blocking, and spectral efficiency; radio propagation and fading models; performance of digital modulation in the presence of fading; diversity techniques; code-division multiple access. Prerequisite: EECS 378-0.

EECS 381-0 Electronic Materials: Properties and Applications (1 Unit)   Fundamental properties of electrons in materials. Classical and quantum mechanical descriptions of free and bound electrons. Optical, electrical, thermal, and magnetic properties of materials. Microelectronic, optoelectronic, magnetic recording, superconductivity. Prerequisites: EECS 223-0 and EECS 224-0 or consent of instructor.

EECS 382-0 Photonic Information Processing (1 Unit)   Introduction to photonic information processing; coherent and incoherent light; electro-optic and acousto-optic modulation; optical signal processing; holography; optical storage. Prerequisites: EECS 222-0 and EECS 224-0 or consent of instructor.

EECS 383-0 Fiber-Optic Communications (1 Unit)   Semiconductor diode lasers, internal modulation, electro-optic modulation, coherent and incoherent detection, optical fibers and their properties, optical amplifiers, communication systems, optical networks. Prerequisites: EECS 223-0, EECS 224-0.

EECS 384-0 Solid State Electronic Devices (1 Unit)   Energy-band model for semiconductors; carrier statistics and transport; diodes, bipolar and field-effect transistors; integrated circuits, optoelectronic and heterojunction devices. Prerequisite: EECS 381-0 or consent of instructor.

EECS 385-0 Optoelectronics (1 Unit)   Introduction to solid-state optoelectronic devices; display devices, laser diodes, photodetectors, and light modulators; optical waveguides and fibers; system application of optoelectronic devices. Prerequisite: EECS 381-0 or consent of instructor.

EECS 386-0 Computational Electromagnetics and Photonics (1 Unit)   Introduction to the finite-difference time-domain (FDTD) method in numerical modeling of electromagnetic and optical wave interactions with engineering structures. Finite differences; Maxwell's equations; numerical dispersion and stability; free-space and waveguide field sources; absorbing boundary conditions; material dispersions and nonlinearities; modeling examples in modern electromagnetic and optical engineering. Prerequisite: EECS 308-0.

EECS 387-0 Technology Infrastructure: Concepts, Requirements, Design and Operation (1 Unit)   Requirements of largescale computer systems and networks; space, power, environmental control, operational software and security; planning, data centers, network operations centers, national and international regulations and practices.

EECS 388-0 Nanotechnology (1 Unit)   Physics and fabrication of photonic and electronic devices. Physics of semiconductors: crystal structures, reciprocal lattice, elements of quantum mechanics, heterojunctions, quantum wells, and super-lattices. Bulk crystal, thin-film, and epitaxial growth technologies. Device processing technologies: diffusion oxidation, ion implantation, annealing, etching, and photolithography. Prerequisite: EECS 223-0 or consent of instructor.

EECS 389-0 Superconductivity and Its Applications (1 Unit)   Properties of materials in the superconducting state; charge flow dynamics of type II superconductors; highTc superconductors; applications for computers and high-frequency devices. Prerequisite: EECS 381-0 or consent of instructor.

EECS 390-0 Introduction to Robotics (1 Unit)   Homogeneous vectors and planes; homogeneous transformation, position and orientation transformations, kinematics and inverse kinematic solutions of robot manipulators; Jacobian and inverse Jacobian relation; robot trajectory and task planning; dynamic formulation and computation of robot manipulators; robot programming and control systems. Prerequisite: EECS 230-0.

EECS 391-0 CMOS VLSI Circuit Design (1 Unit)   Design of modern CMOS very large-scale integrated (VLSI) circuits.

EECS 392-0 VLSI Systems Design Projects (1 Unit)   Design of a cutting-edge VLSI chip. Teams of 5 to 10 students undertake a large circuit design problem, going from specification to VLSI implementation while optimizing for speed, area, and/or power. Group collaboration and engineering design. Prerequisite: EECS 391-0 or EECS 355-0.

EECS 393-0 Advanced Low Power VLSI and Mixed-signal IC Design (1 Unit)   This course provides an in-depth review of the advanced technology in integrated circuit design. Special focuses will be given to ultra-low power circuit design, error resilient circuit design, machine learning accelerators, power management circuits and basic design of analog mixed-signal circuit. Following a seminar format, detailed case study on circuit design techniques used by Intel, IBM, etc. will be discussed.

EECS 394-0 Agile Software Development (1 Unit)   Developing mobile and web applications, using modern sustainable agile practices, such as backlogs, user stories, velocity charts, and test driven development, to deliver value as quickly as possible to end users, clients, developers, and the development organization.

EECS 395-0 Special Topics in Electrical Engineering and Computer Science (1 Unit)   Topics suggested by students or faculty and approved by the department.

EECS 396-0 Special Topics in Computer Science (1 Unit)   Projects suggested by faculty and approved by the department. Equivalent to 397 but intended to apply toward courses for the computer science major and its project requirement.

EECS 397-0 Special Projects in Computer Science (1 Unit)   Topics suggested by faculty and approved by the department. Equivalent to 396 but intended to apply toward courses for the computer science major.

EECS 398-0 Electrical Engineering Design (1 Unit)   Design of electrical and electronic devices, circuits, and systems by the application of the engineering sciences, economics, and Institute of Electrical and Electronics Engineers or other national standards. Prerequisite: senior standing.

EECS 399-0 Projects (1 Unit)   Seminar and projects for advanced undergraduates on subjects of current interest in electrical and computer engineering.