Electrical Engineering and Computer Science
The Department of Electrical Engineering and Computer Science offers three programs for undergraduate students leading to the bachelor of science degree: electrical engineering, computer engineering, and computer science. It also offers graduate programs leading to the MS and PhD degrees in those three areas. The department boasts an internationally renowned faculty, state-of-the-art research equipment, and the considerable resources offered by a great university. It combines these advantages with an uncommon commitment to students.
The department offers several interdisciplinary options, including premedical/biomedical studies and cognitive science. It collaborates with Weinberg College to offer that school’s major in computer science.
Electrical engineering involves the development and application of electronic and optical technologies for generating, communicating, and processing information. The electrical engineering curriculum includes courses in electronic circuits, solid-state electronics, electromagnetics, optics, lasers, controls, digital signal processing, communications and networks. Students may specialize in any of the following areas.
Circuits and Electronics
This area of study is concerned with the analysis and design of circuits that employ electronic devices, such as integrated circuits, transistors, diodes, light-emitting diodes, data-storage elements, and image-forming devices. Important applications include radio, television, digital computers, and electronic control instrumentation systems.
A communication system involves the generation of an electrical signal representing information to be transmitted, its encoding in some form for efficient transmission, its actual transmission, its decoding at the receiving end of the system, and its reconversion into something intelligible to the user. This subject also covers the design and analysis of communication networks for the transmission of audio, video, and data among many users.
The study of control systems deals with the analysis and design of automatic regulators, guidance systems, numerical control of machines, robotics, and computer control of industrial processes. Students are concerned with identifying these systems and with such topics as system stability, system performance criteria, and optimization. These concepts find application in other fields of engineering and in the development of better understanding of biological, energy, economic, and social systems.
Digital Signal Processing and Machine Learning
Study in this area focuses on the digital representation and algorithmic manipulation of speech, audio, image, and video signals. Specific topics within this general area include image and video processing, recovery and compression, multimedia signal processing, filter design and rank-order operators, image and video transmission, medical and biomedical signal processing, medical imaging, and algorithms for medical instrumentation.
Electromagnetics and Photonics
Study in the area of photonic systems and technology focuses on microcavity lasers, nanostructures, quantum and nonlinear optics, integrated optics, fiber-optic and infrared waveguide devices, fiber-optic communications, computational electromagnetics, and imaging through turbulence. Special emphases include applications of novel quantum amplifiers in optical communications, imaging, and cryptography; devices for high-speed optical networks; and applications of computational techniques in integrated and nonlinear optics.
This area is concerned with the design, physical principles, and applications of solid-state devices both as discrete units and integrated circuit systems. In addition to the various diode, transistor, and FET devices fabricated from silicon technology, devices developed from compound semiconductor materials are reviewed. Both analog and digital circuit applications are stressed. Another important topic is the behavior of conductors in the superconducting state, with a stress on applications.
Computer engineering deals with digital design, computer hardware and architecture, robotics, microprocessors, software and programming, and the interrelationships between hardware and software. The computer engineering curriculum involves courses in digital logic, electronic circuits, computer architecture, robotics, VLSI design, VLSI CAD, software programming, operating systems, microprocessor systems, and parallel computing. The computer engineering curriculum allows students to develop a particular specialization in the following areas.
This area focuses on the use of digital hardware to monitor and control physical systems. Topics include discrete dynamics systems, digital controllers, analog-to-digital converters, microprocessor based design, and the economic trade-offs of different software and hardware systems.
This area introduces students to the field of state-of-the-art high-performance computing. In particular, it deals with aspects of computing involving multiple processors working together on a common problem, including issues of computer architecture, parallel programming and algorithms, numerical computing, and computer networking.
This area exposes students to concepts and skills necessary to implement and understand computer software. Students are taught how to design and analyze efficient algorithms, how to develop operating systems and compilers, and how to write programs using efficient data structures and software engineering practices.
VLSI and Computer-Aided Design
This area focuses on systematic approaches to designing high-performance integrated circuits consisting of millions of transistors. This specialization includes topics such as low-power, high-speed, and reliable circuit design, hardware-software codesign, design verification, design of field-programmable gate array (FPGA), and computer-aided design (CAD) techniques.
Computer science involves the understanding, use, and extension of computational ideas and their implementation. A Northwestern computer science graduate will
- Comprehend the breadth of computer science, its key intellectual divisions and questions, and its past and likely future influence on engineering, science, medicine, business, and law
- Approach problems from the algorithmic perspective, understanding the nature and broad reach of computation and how to apply it abstractly
- Approach problems from the systems perspective, understanding the evolving layers of the software/hardware stack and how to create, use, and extend them
- Approach problems from the perspective of artificial intelligence, understanding how to make progress in solving seemingly intractable problems
- Design and implement complex software systems, individually and as a team member
- Design and implement effective human-machine interfaces
Courses and undergraduate research opportunities focus on software, ranging from theoretical models to practical applications. They establish a common breadth of knowledge in computer science, allowing students flexibility in areas in which they choose to specialize, such as
- Artificial intelligence, including mobile robots with perceptual systems, models of memory and reasoning, knowledge representation, natural-language comprehension, planning, and problem solving
- Computer systems, including parallel, distributed, and real-time systems, performance evaluation, prediction, and scheduling
- Networked systems, including peer-to-peer computing, large-scale data storage, network security, and pervasive computing environments
- Programming languages and compilers, including semantics, optimization, and software
- Human-computer interaction, including interface design, task modeling, intelligent interfaces, and authoring tools
- Distributed interactive systems, including client-server and web-based applications such as heterogeneous databases and multimedia learning environments
- Theoretical computer science, focusing on algorithm design and analysis of algorithms’ worst- and average-case behavior
- Intelligent information systems, including “frictionless” proactive systems and context- and task-sensitive retrieval systems
- Computer graphics and human-computer interfaces for spatial applications, visualization, and computer entertainment
Students have access to state-of-the-art research and teaching facilities, ranging from laboratories for electronic devices to parallel computers and worldwide distributed testbeds.
Electrical engineering facilities include laboratories for electronic circuits, digital circuits, solid-state electronics, fabrication of solid-state lasers and other quantum electronic/photonic devices, thin-film device development, biomedical electronics, microwave techniques, holography and coherent light optics, biological and other control systems, and signal, image, and speech processing.
Computer engineering facilities include laboratories in digital systems design, microprocessor systems, microprogramming, robotics, computer-aided design, and computer networking. The department has major research facilities for work in parallel and distributed computing systems, database systems, computer vision, VLSI design, CAD, robotics, solid-state devices, fiber optics, lasers, computational electromagnetics, electronic materials, and biomedical engineering.
Computer science students benefit from access to computing laboratories that provide Linux, Windows, Solaris, and PocketPC machines, a private network, sensor networks, and the worldwide PlanetLab distributed systems testbed. Students taking courses in experimental computer systems also have access to a special cluster on which they can instantiate their own collections of virtual machines. The department is part of the Microsoft Developer Network Academic Alliance, which provides free or inexpensive access to Microsoft products widely used in desktop computing.
Programs of Study
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 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.