Department of Electrical Engineering and Computer Science
Electrical Engineering and Computer Science
The technological advances that have made our society what it is today are due largely to the efforts of electrical engineers, computer engineers, and computer scientists. Among these advances are radio, television, telephones, wireless and mobile communications, personal computers, workstations, mainframe computers, aircraft avionics, satellite electronics, automobile electronics, office machinery, medical electronic equipment, video games, electric power generation and distribution systems, telecommunications, computer networks (including the Internet), personal entertainment products, radar, defense electronics, artificial intelligence, and a variety of computer software.
Vision and Mission
The vision of the EECS department is to provide a stimulating and challenging intellectual environment.
- To have classes populated by outstanding students.
- To be world class in an increasing number of selected areas of research.
- To have faculty members with high visibility among their peers.
The mission of the EECS department is
- To educate the next generation of electrical engineers, computer engineers, and computer scientists.
- To discover, apply, and disseminate knowledge.
- To be an asset to the community and to society.
Undergraduate Programs
The department offers 5 Bachelor of Science (B.S.) degrees:
- Electrical Engineering,
- Computer Engineering,
- Computer Science,
- Cybersecurity Engineering and
- Applied Computing
Each features a firm grounding in mathematics, basic science, computer and engineering science, and advanced studies in the theory and design of various systems as well as hands-on experience. Degree programs in electrical engineering, computer engineering and computer science are accredited. The Bachelor of Science degree program is accredited by the Computing Accreditation Commission of ABET, http://www.abet.org.
Our Bachelor of Science degree programs in computer engineering and electrical engineering are accredited by the Engineering Accreditation Commission of ABET, http://www.abet.org.
Graduate Programs
The department offers Ph.D. degrees in electrical engineering and computer science; and M.S. degrees in electrical engineering, computer engineering, computer science, and information technology. The M.S. degree in information technology can be completed at the KU Edwards Campus in the Kansas City area. The department also offers graduate certificates in data science, RF systems engineering, and software engineering and management. Students who complete courses as a certificate seeking student may be able to transfer those credits towards a graduate degree program in engineering.
The department has graduate focus areas in applied electromagnetics, communications systems, computer systems design, computing in the biosciences, information assurance and management, intelligent informatics, internet engineering and management, languages and semantics, network engineering, network systems, radar systems and remote sensing, RF systems engineering, security and assurance, signal processing, software engineering and management and theory of computing. Class lists and teaching schedules are available in the graduate office or on the department's website. Other areas of study can be constructed, in conjunction with a faculty advisor, to fit individual student needs.
Courses
A seminar intended to help connect freshmen and transfer EECS students to the EECS department, their chosen profession, and each other. Topics include overviews of the various disciplines, curricula and advising, ethics and professionalism, student organizations and extracurricular activities, senior projects, and career planning. Graded on a satisfactory/unsatisfactory basis. Prerequisite: Corequisite: MATH 104.
Algorithm development, basic computer organization, syntax and semantics of a high-level programming language, including testing and debugging. Concept of structure in data and programs, arrays, top-down design, subroutines and library programs. Abstract data types. System concepts such as compilation and files. Nature and scope of computer science. Not open to electrical engineering, computer engineering, computer science, and interdisciplinary computing majors. Prerequisite: MATH 101 or MATH 104, or meeting the requirements to enroll in MATH 115 or MATH 125 or MATH 145.
An introductory course in digital logic circuits covering number representation, digital codes, Boolean Algebra, combinatorial logic design, sequential logic design, and programmable logic devices. Grade of C (not C-) required to progress. Prerequisite: Corequisite: MATH 104.
An introductory course in digital logic circuits covering number representation, digital codes, Boolean algebra, combinatorial logic design, sequential logic design, and programmable logic devices. This course is intended for highly motivated students and includes honors-level assignments. Grade of C (not C-) required to progress. Prerequisite: Corequisite: MATH 104, plus either acceptance into the KU Honors Program or consent of instructor.
Problem solving using a high level programming language and object oriented software design. Fundamental stages of software development are discussed: problem specification, program design, implementation, testing, and documentation. Introduction to programming using an object oriented language: using classes, defining classes, and extending classes. Introduction to algorithms and data structures useful for problem solving: arrays, lists, files, searching, and sorting. Student will be responsible for designing, implementing, testing, and documenting independent programming projects. Professional ethics are defined and discussed in particular with respect to computer rights and responsibilities. Grade of C (not C-) required to progress. Prerequisite: Corequisite: MATH 104.
Problem solving using a high level programming language and object oriented software design. Fundamental stages of software development are discussed: problem specification, program design, implementation, testing, and documentation. Introduction to programming using an object oriented language: using classes, defining classes, extending classes. Introduction to algorithms and data structures useful for problem solving: arrays, lists, files, searching, and sorting. Students will be responsible for designing, implementing, testing, and documenting independent programming projects. Professional ethics are defined and discussed in particular with respect to computer rights and responsibilities. This course is intended for highly motivated students and includes honors-level assignments. Grade of C (not C-) required to progress. Prerequisite: Corequisite: MATH 104, plus either acceptance into the KU Honors Program or consent of instructor.
Analysis of linear electrical circuits: Kirchoff's laws; source, resistor, capacitor and inductor models; nodal and mesh analysis; network theorems; transient analysis; Laplace transform analysis; steady-state sinusoidal analysis. The lab provides training and practice in the use of computational tools (e.g., Matlab), computer-aided circuit analysis (e.g., Pspice), and laboratory skills. Prerequisite: Corequisite: MATH 220 or MATH 221 or MATH 320 and MATH 290 or MATH 291.
An introduction to the mathematical foundations and techniques of computer science. Throughout, there is an emphasis on general reasoning, problem solving, and technical communication. Topics include basic proof techniques and logic, induction, recurrences, relations, number theory, basic algorithm design and analysis, and applications. Grade of C (not C-) required to progress. Prerequisite: EECS 140 or EECS 141, EECS 168 or EECS 169 (or equivalent) and MATH 122 or MATH 126 or MATH 146.
Continued study of electrical circuits: Steady-state power analysis, three-phase circuits, transformers, frequency response, and two-port network analysis. Grade of C (not C-) required to progress. Prerequisite: EECS 211 or EECS 202.
Vector analysis. Electrostatic and magnetostatic fields in a vacuum and material media. Electromagnetic fields and Maxwell's equations for time-varying sources. The relationship between field and circuit theory. Simple applications of Maxwell's equations. Grade of C (not C-) required to progress. Prerequisite: MATH 220 or MATH 221 or MATH 320 and MATH 290 or MATH 291 and EPHX 210 or PHSX 210 or PHSX 211 or PHSX 213 and EECS 202.
This course continues developing problem solving techniques by focusing on the imperative and object-oriented styles using Abstract Data Types. Basic data structures such as queues, stacks, trees, and graphs will be covered. Recursion. Basic notions of algorithmic efficiency and performance analysis in the context of sorting algorithms. Basic Object-Oriented techniques. An associated laboratory will develop projects reinforcing the lecture material. Three class periods and one laboratory period per week. Grade of C (not C-) required to progress. Prerequisite: EECS 168 or EECS 169.
Introduction to diodes, BJTs and MOSFETs, and their use in electronic circuits, especially digital circuits. Prerequisite: Upper-level eligibility. Corequisite: EECS 212.
Introduction to DC and AC electrical circuit analysis, operational amplifiers, semiconductors, digital circuits and systems, and electronic instrumentation and measurements with a focus on applications. Not open to electrical or computer engineering majors. Students may not receive credit for both EECS 316 and EECS 317. Prerequisite: A course in differential equations and eight hours of physics.
Introduction to operational amplifiers, semiconductors, digital circuits and systems, and electronic instrumentation and measurements with a focus on applications. Not open to electrical or computer engineering majors. Students may not receive credit for both EECS 316 and EECS 317. Prerequisite: EECS 315.
A first course in abstract data structures and algorithmic design making use of these structures. Topics include asymptotic analysis, trees, dictionaries, heaps, disjoint set structures; divide and conquer, greedy, and dynamic programming algorithms. Prerequisite: EECS 210, EECS 268, and upper-level EECS eligibility.
This course covers the core concepts in data science via programming. Topics include data lifecycle activities such as data collection, data analysis and integration, data cleaning and wrangling, and data visualization. Data science concepts such as classification, KNN and linear regression analysis, clustering, and statistical inference will be presented. The course includes practical case studies and problem solving in science, engineering, business, medicine, and social sciences. Programming tools include Python, R, SQL, and Unix shell. Prerequisite: EECS 138 or EECS 168 and MATH 365 or MATH 526 or EECS 461 or C&PE 325 or CE 525.
This course is an introduction to software development fundamentals and software engineering. It incorporates a thorough introduction to a compiled programming language. A baseline knowledge of tools and utilities is covered including the shell, common programs, version control, IDEs, editors, and build tools. Topics include: software development principles (e.g., design patterns, modularity, loose coupling), extending larger codebases, developing larger codebases, continuous integration, continuous deployment, debugging, unit testing, test-driven development, and databases. Grade of C (not C-) required to progress. Prerequisite: EECS 268.
Fourier signal analysis (series and transform); linear system analysis (continuous and discrete); z-transforms, analog and digital filter analysis; analysis and design of continuous and discrete time system using MATLAB. Prerequisite: EECS 212 and EECS Upper Level Eligibility.
This course will address internal organization of micro-controller systems, sometimes called embedded systems, used in a wide variety of engineered systems: programming in C and assembly language; input and output systems; collecting data from sensors; and controlling external devices. This course will focus on one or two specific microprocessors, software development and organization, and building embedded systems. Prerequisite: EECS 140 or EECS 141, EECS 168 or EECS 169, and upper-level EECS eligibility.
An electrical engineering, computer engineering, or computer science project pursued under the student's initiative, culminating in a comprehensive report, with special emphasis on orderly preparation and effective composition. Prerequisite: Upper-level EECS eligibility and consent of instructor.
Discrete and integrated amplifier analysis and design. Introduction to feedback amplifier analysis and design. Introduction to feedback amplifiers. Prerequisite: EECS 312 and upper-level EECS eligibility.
This course applies electromagnetic analysis to high frequency devices and systems where wave propagation effects cannot be neglected. Topics covered include transmission lines, space waves, waveguides, radiation, and antennas. Laboratory experiments include transmission line, waveguide, and antenna measurements and characterizations. 3 hours lecture, 1 hour laboratory. Prerequisite: EECS 220 and upper-level EECS eligibility.
A continuation of ARCE 540 that integrates system components into functional, safe, and reliable power distribution systems for commercial, industrial, and institutional (CII) facilities. Service entrance design, distribution system layout and reliability, emergency and standby power system design, medium-voltage distribution systems, symmetrical fault analysis, and special equipment and occupancies. (Same as ARCE 541.) Prerequisite: ARCE 540 or EECS 212 and Upper-Level EECS Eligibility.
The design of digital systems from a hardware point of view. The implementation of functional and control units using programmable logic devices. Introduction to VHDL and its use in modeling and designing digital systems. Prerequisite: EECS 388.
An introduction to the modeling, analysis, and design of linear control systems. Topics include mathematical models, feedback concepts, state-space methods, time response, system stability in the time and transform domains, design using PID control and series compensation, and digital controller implementation. Prerequisite: EECS 212 and EECS 361.
Introduction to the concept of databases and their operations. Basic concepts, database architectures, storage structures and indexing, data structures: hierarchical, network, and relational database organizations. Database design and normalization: ER model, candidates keys, functional dependencies, normal forms, decomposition. Emphasis on relational databases, relational algebra, and SQL. Introduction to views, transactions, and database access control. Introduction to database security, big data, NoSQL, CAP theorem, key-value stores. Prerequisite: Upper-level EECS eligibility or departmental consent.
The course introduces cyber defense methods and skills through hands-on practice. Each section will focus on aspects of securing operating systems, securing network access, and securing file systems. To earn three (3) credits, a student must complete three (3) sections. Prerequisite: EECS 268. Corequisite: EECS 388.
Introduction to probability and statistics with applications. Reliability of systems. Discrete and continuous random variables. Expectations, functions of random variables, and linear regression. Sampling distributions, confidence intervals, and hypothesis testing. Joint, marginal, and conditional distribution and densities. Prerequisite: MATH 127 or MATH 147, and MATH 290 or MATH 291, and upper-level EECS eligibility.
An introduction to critical knowledge and skills needed to administer and defend computer networks and systems. This course focuses on hands-on activities, learning cybersecurity defensive techniques, and understanding well know techniques used by adversaries. Prerequisite: EECS 268. Corequisite: EECS 388.
This course is a survey of programming languages: their attributes, uses, advantages, and disadvantages. Topics include the evolution of programming languages; programming language processing (i.e., compilation, interpretation, and mixed approaches); imperative, functional, and declarative languages; parameter passing and evaluation order; iteration, recursion, and continuation; and the basics of cloud programming (i.e., web services, client/server, synchronous vs. asynchronous programming, building reliable systems, and programming at scale). Prerequisite: EECS 268 and upper-level EECS eligibility.
An introduction to crystal structures, and metal, insulator, and semiconductor properties. Topics covered include the thermal, electric, dielectric, and optical properties of these materials. A significant portion of this course is devoted to the properties of semiconductors and semiconductor devices. Prerequisite: PHSX 313 and upper-level EECS eligibility.
Arranged to allow students to satisfy the independent research requirement for graduation with departmental honors. Prerequisite: Consent of instructor and upper-level EECS eligibility.
A lecture/laboratory course involving the design and implementation of prototypes of electrical and computer type products and systems. The project specifications require consideration of ethics, economics, manufacturing, and safety. Intended for students graduating the following calendar year. EECS 501 should be immediately followed by EECS 502 in the following semester. Prerequisite: EECS 220 or EECS 221, EECS 361, and EECS 412.
A lecture/laboratory course involving the design and implementation of prototypes of electrical and computer type products and systems. The project specifications require consideration of ethics, economics, health, manufacturing, and safety. Must be taken in semester immediately following completion of EECS 501. Prerequisite: EECS 501.
Finite state automata and regular expressions. Context-free grammars and pushdown automata. Turing machines. Models of computable functions and undecidable problems. The course emphasis is on the theory of computability, especially on showing limits of computation. (Same as MATH 510.) Prerequisite: EECS 210 and upper-level EECS eligibility.
Feedback amplifier circuit analysis, power amplifiers, analog IC op-amp techniques and analysis, filter approximation and realization, oscillators, wave generators and shapers. Prerequisite: EECS 412.
A two semester lecture/laboratory course involving the specification, design, implementation, analysis, and documentation of a significant hardware and software computer system. Laboratory work involves software, hardware, and hardware/software trade-offs. Project requirements include consideration of ethics, economics, manufacturing, safety, and health aspects of product development. Intended for students graduating the following calendar year. EECS 541 should be immediately followed by EECS 542 in the following semester. Prerequisite: EECS 443 and EECS 348.
A two semester lecture/laboratory course involving the specification, design, implementation, analysis, and documentation of a significant hardware and software computer system. Laboratory work involves software, hardware, and hardware/software trade-offs. Project requirements include consideration of ethics, economics, manufacturing, safety, and health aspects of product development. Must be taken in semester immediately following completion of EECS 541. Prerequisite: EECS 541.
An introduction to the design of utility scale and small scale (distributed generation) electric energy production and storage systems. This course addresses the technical, operational, economic, and environmental characteristics associated with both traditional and nontraditional electric energy production systems along with associated grid integration, energy delivery, and regulatory issues. Traditional energy production systems covered include fossil fuel, hydroelectric, and nuclear power plants. Non-traditional energy productions systems covered include fuel cells, photovoltaics (PV), concentrated solar power (CSP), wind, geothermal, and other emerging technologies. (Same as ARCE 545.) Prerequisite: ARCE 540, or EECS 212 and Upper-Level EECS Eligibility.
Introduction to the analysis of commercial, industrial, and utility power systems. Emphasis is placed on modeling system components which include transmission and distribution lines, transformers, induction machines, and synchronous machines and the development of a power system model for analysis from these components. System modeling will be applied to short-circuit studies and used to analyze symmetrical faults, to develop sequence networks using symmetrical components, and analyze unsymmetrical faults. (Same as ARCE 547.) Prerequisite: ARCE 540, or EECS 212 and Upper-Level EECS Eligibility.
A first course in communications, including lectures and integrated laboratory experiments. After a review of spectral analysis and signal transmission, analog and digital communications are studied. Topics include: sampling, pulse amplitude modulation, and pulse code modulation; analog and digital amplitude, frequency, and phase modulation; frequency and time division multiplexing; and noise performance of analog modulation techniques. Prerequisite: EECS 212 and EECS 360 or EECS 361.
An introduction to the principles used in communication networks is given in this course. Topics include a discussion of the uses of communications networks, network traffic, network impairments, standards, layered reference models for organizing network functions. Local Area Network technology and protocols are discussed. Link, network, transport layer protocols, and security are introduced. TCP/IP networks are stressed. VoIP is used as an example throughout the course. Basic concepts of network performance evaluation are studied, both analytical and simulation techniques are considered. Prerequisite: EECS 168 and MATH 526 or EECS 461.
An introduction to the fundamentals of cryptography and information and computer security. Introduces the basic concepts, theories, and protocols in computer security. Discusses how to apply such knowledge to analyze, design and manage secure systems in the real world. Topic covered: the basics of cryptography, software security, operating system security, database security, network security, privacy and anonymity, social engineering, digital forensics, etc. Prerequisite: Upper-Level EECS Eligibility. Corequisite: EECS 678.
This course studies algorithms and computational paradigms to discover knowledge in large and complex datasets. The course explains the fundamental principles, technical details, and real-life applications of data mining techniques through lectures, case studies, and hands-on projects. The core topics to be covered include data preprocessing, classification models, cluster analysis, association analysis, anomaly detection, result evaluation and visualization. Prerequisite: EECS 330 or EECS 560, EECS 461 or MATH 526, and MATH 290.
This course covers both the theoretical and practical aspects of computer forensics. The course introduces the basic concepts, methodologies, and techniques to recover, preserve, and examine digital evidence on or transmitted by digital devices. Topics include: crime investigation and digital evidence, file system forensics, application analysis, network evidence acquisition and analysis, mobile device forensics, etc. Prerequisite: Corequisite: EECS 565.
This lecture/laboratory course covers the systematic development of software products. Topics include: scope of software engineering, life-cycle models, software process, teams, ethics, tools, testing, planning, and estimating. It concentrates on requirements, analysis, design, implementation, and maintenance of software products. Prerequisite: EECS 348, EECS 330, and upper-level EECS eligibility. Corequisite: EECS 565.
Team-orientated lecture/laboratory course involving the specification, design, implementation, testing, and documentation of a significant software project over the full course of the semester. The course includes the consideration of project management, economics, and technical writing. Prerequisite: EECS 581, EECS 468, and upper-level EECS eligibility.
Team-oriented lecture and laboratory course involving the specification, design, implementation, testing, and documentation of a significant cybersecurity projects over the full course of the semester. The course includes the consideration of project management, economics, and technical writing. Prerequisite: EECS 581.
A study of unwanted generation and reception of radio-frequency radiation from analog and digital electronic systems and how these emissions/receptions can be reduced. Topics covered include sources of radiation, grounding, shielding, crosstalk, electrostatic discharge, and practical design and layout schemes for reducing unwanted radiation and reception. Also covered are the major governmental electromagnetic compatibility (EMC) regulations and standards that apply to commercial electronic devices and systems. Prerequisite: EECS 220 or EECS 221 and EECS 312.
Introduction to radio transmission systems. Topics include radio transmitter and receiver design, radiowave propagation phenomenology, antenna performance and basic design, and signal detection in the presence of noise. Students will design radio systems to meet specified performance measure. Prerequisite: Corequisite: EECS 420 and MATH 526 or EECS 461.
Description and analysis of the key components in optical communication systems. Topics covered include quantum sources, fiber cable propagation and dispersion characteristics, receiver characteristics, and system gain considerations. Prerequisite: EECS 220 or EECS 221 and PHSX 313 or equivalent and upper-level EECS eligibility.
A second course in abstract data structures and algorithmic design making use of these structures. Emphasis will be on understanding the high-level theoretical intuitions and principles, as well as a concrete understanding of implementation and applications. Topics include advanced treatment of trees, heaps, disjoint set structures, network flow, greedy algorithms, divide and conquer, dynamic programming, and complexity theory. Prerequisite: Upper-level EECS eligibility, EECS 330 and either EECS 461 or MATH 526.
A basic introduction to scientific computing and numerical analysis. Topics include linear equation solving, least squares, nonlinear equation-solving, optimization, interpolation, numerical integration and differentiation, ordinary differential equations, and the fast Fourier transform (FFT). Vectorization, efficiency, reliability, and stability of numerical algorithms will be stressed. Applications of algorithms to real-world problems, such as image processing, medicine, electronic circuits, flight trajectories, and molecular modeling, will be emphasized. Students cannot receive credit for both EECS 639 and EECS 781 or MATH 781. Prerequisite: MATH 127, MATH 290, and EECS 168 or equivalent.
The structure and design of computing systems. Examination and analysis of computing systems. Examination and analysis of instruction set architectures, pipelined control and arithmetic units, vector processors, memory hierarchies, and performance evaluation. Prerequisite: EECS 443.
Discrete time signal and systems theory, sampling theorem, z-transforms, digital filter design, discrete Fourier transform, FFT, and hardware considerations. Prerequisite: EECS 361.
The structure, design, analysis, and evaluation of computer processors and systems. The design of instruction sets. Principles and techniques of parallelism at the data transfer (memory hierarchy), data processing (pipelines), and concurrent instruction execution. Prerequisite: EECS 388.
General concepts, search procedures, two-person games, predicate calculus and automated theorem proving, nonmonotonic logic, probabilistic reasoning, rule based systems, semantic networks, frames, dynamic memory, planning, machine learning, natural language understanding, neural networks. Prerequisite: Corequisite: EECS 368 or EECS 468.
This course provides an introduction to the basic methods of machine learning and how to apply them to solve software engineering problems. Topics covered are: supervised learning, unsupervised learning, and reinforcement learning methods; feature selection techniques; structuring machine learning solutions; and evaluation metrics. Prerequisite: EECS 330 and EECS 461 or MATH 526 or equivalent and EECS 468 and EECS 510 and upper-level EECS eligibility.
Formal definition of programming languages including specification of syntax and semantics. Simple statements including precedence, infix, prefix, and postfix notation. Global properties of algorithmic languages including scope of declaration, storage allocation, grouping of statements, binding time of constituents, subroutines, coroutines, and tasks. Run-time representation of program and data structures. Prerequisite: EECS 368 or EECS 468 and EECS 330 or EECS 560.
An introduction to building digital communication systems in discrete time, including lectures and integrated laboratory exercises. Topics covered include signal spaces, base-band modulation, bandpass modulation, phase-locked loops, carrier phase recovery, symbol timing recovery, and basic performance analysis. Prerequisite: EECS 361 and EECS 461 or MATH 526.
Compilation of programming language constructs. Organization of a compiler including symbol tables, lexical analysis, syntax analysis, intermediate and object code generation, error diagnostics, code optimization techniques and run-time structures in a block-structured language such as C or Rust. Programming assignments include construction of various modules of a compiler. Prerequisite: EECS 348, EECS 468, EECS 510, and upper-level eligibility.
This course covers fundamental cryptographic algorithms, security designs, protocols, attacks, and controls in computer networks. Topics include security designs and analysis of network protocols such as TCP/IP, BGP, and DNS; network vulnerabilities and attacks such as spoofing, MITM, DDoS, and botnets; network security controls such as cryptography primitives, authentication, key management, firewall and intrusion detection; privacy and anonymity such as spams, web tracking, and Internet censorship. Prerequisite: EECS 563 and EECS 565 or instructor's consent.
An overview of various processes to fabricate semiconductor devices and integrated circuits. Topics covered include crystal growth, oxidation, solid-state diffusion, ion implantation, photolithography, chemical vapor deposition, epitaxial growth, metalization, and plasma etching of thin films. (Same as C&PE 655.) Prerequisite: Junior or senior standing in C&PE or EECS, or consent of department.
Foundations of 2D and 3D computer graphics. Structured graphics application programming. Basic 2D and 3D graphics algorithms (modeling and viewing transformations, clipping, projects, visible line/surface determination, basic empirical lighting, and shading models), and aliasing. Prerequisite: EECS 348 and upper-level EECS eligibility.
This course covers concepts of single-machine multi-threaded programming; multicore programming across a network of machines; and general-purpose computing on GPUs. Typically, more than half of the course focuses on GPUs, including relevant architectural aspects required in order to achieve optimal performance on GPUs. Projects use C++ thread-related tools, OpenMPI, CUDA, and OpenCL. Prerequisite: EECS 348 and upper-level EECS eligibility.
Heuristic and formal analysis of software systems with an emphasis on integrity and secrecy. Students in the course will learn to assess the quality, vulnerabilities, and behavior of software. Topics include bug finding, anomaly detection, dynamic analysis, static analysis, dataflow analysis, fuzzing, linting, software supply chain auditing, and security best practices. Prerequisite: EECS 348 and upper-level EECS eligibility, or instructor's consent.
The objective of this course is to provide the students with the concepts necessary to enable them to: a) identify the abstract services common to all operating system, b) define the basic system components that support the operating system's machine independent abstractions on particular target architectures, c) consider how the design and implementation of different systems components interact and constrain one another, not merely how one or two important parts work in isolation, and d) understand the means by which fundamental problems in operating systems can be analyzed and addressed. Programming assignments address topics including process creation, inter-process communication, system call implementation, process scheduling and virtual memory. Laboratory exercises primarily focus on use of tools and concepts required for the programming assignments but include a small number of independent topics. Prerequisite: EECS 388, EECS 348, and upper-level EECS eligibility.
This course will investigate various security and trust issues related to integrated circuits and systems during their design and manufacturing process, as well as during field operation. A wide range of threats including piracy, reverse engineering, hardware Trojan insertion, side-channel attack, and various invasive non-invasive attacks will be introduced. Potential hardware and software-based countermeasures to detect and prevent these attacks will be studied. Implementation of design-time solutions like physically unclonable functions (PUFs), true random number generator (TRNG), security monitors, hardware obfuscation, and many others will be covered. Prerequisite: EECS 388 and upper-level EECS eligibility.
This course covers the concept of Internet of Things (IoT) including its components, architectures, and enabling technologies and introduces full-stack of security and privacy issues in IoT and its applications including hardware, software, network, and data. The goal is to expose students to new developments in cybersecurity for IoT as well as familiarize them with tools and techniques for IoT security design and analysis. Students will gain hands-on experiences on implementing security techniques for IoT through mini projects. Prerequisite: EECS 565 or instructor's consent.
Security and privacy issues through the lens of mobile computing. Topics include an overview of the mobile computing ecosystem, including smartphones and autonomous devices such as unmanned aerial systems; core security and privacy principles applied to mobile devices; an exploration of domain-relevant academic literature; exploration of attacks and defenses in mobile security. The course will expose students to new developments in cybersecurity for mobile security and security tools and techniques in the domain. Prerequisite: EECS 678 or instructor's consent.
Arranged as needed to present appropriate material to groups of students. May be repeated for additional credit. Prerequisite: Varies by topic, plus Upper-level EECS eligibility and consent of instructor.
Reading under the supervision of an instructor on a topic chosen by the student with the advice of the instructor. May be repeated for additional credit. Consent of the department required for enrollment. Prerequisite: Upper-level EECS eligibility and consent of instructor.
This hands-on course explains the basics of binary software, including binary generation, layout, structure, and execution. It will explain the basics of binary reverse engineering (RE), including binary analysis, disassembly, and instrumentation. The course teaches relevant tools and frameworks for RE. Students practice RE concepts using code problems. Topics include: Linux command-line tools, binary build process, high-level language constructs in assembly, the ELF format, static and run-time tools for RE, advanced RE frameworks, binary rewriting, anti-reversing, etc. Prerequisite: EECS 388 or instructor's consent.
Courses on special topics of current interest in electrical engineering, computer engineering, or computer science, given as the need arises. May be repeated for additional credit. Prerequisite: Varies by topic.
Basic concepts and techniques in the design and analysis of high-frequency digital and analog circuits. Topics include: transmission lines, ground and power planes, layer stacking, substrate materials, terminations, vias, component issues, clock distribution, cross-talk, filtering and decoupling, shielding, signal launching. Prerequisite: EECS 312 and senior or graduate standing. EECS 420 recommended.
Gain, Pattern, and Impedance concepts for antennas. Linear, loop, helical, and aperture antennas (arrays, reflectors, and lenses). Cylindrical and biconical antenna theory. Prerequisite: EECS 360 and EECS 420, or EECS 720, or permission of the instructor.
Survey of microwave systems, techniques, and hardware. Guided-wave theory, microwave network theory, active and passive microwave components. Prerequisite: EECS 420.
The course presents the theory and the design principles of photonic systems. Topics include: Light propagation, interference, and diffraction, permittivity models and effective media, electromagnetic propagation in complex media, dispersion engineering, and fundamentals of nonlinear optics. Prerequisite: EECS 420 or equivalent.
The course will focus on fundamental theory and various methods and applications of fiber-optic measurements and sensors. Topics include: optical power and loss measurements, optical spectrum analysis, wavelength measurements, polarization measurements, dispersion measurements, PMD measurements, optical amplifier characterization, OTDR, optical components characterization and industrial applications of fiber-optic sensors. Prerequisite: EECS 628 or equivalent.
This course provides an introduction to bioinformatics. It covers computational tools and databases widely used in bioinformatics. The underlying algorithms of existing tools will be discussed. Topics include: molecular biology databases, sequence alignment, gene expression data analysis, protein structure and function, protein analysis, and proteomics. Prerequisite: Data Structures class equivalent to EECS 330, and Introduction to Biology equivalent to BIOL 150, or consent of instructor.
This course is concerned with the application of parallel processing to real-world problems in engineering and the sciences. State-of-the-art serial and parallel numerical computing algorithms are studied along with contemporary applications. The course takes an algorithmic design, analysis, and implementation approach and covers an introduction to scientific and parallel computing, parallel computing platforms, design principles of parallel algorithms, analytical modeling of parallel algorithms, MPI programming, direct and iterative linear solvers, numerical PDEs and meshes, numerical optimization, GPU computing, and applications of parallel scientific computing. Prerequisite: MATH 126, MATH 290, experience programming in C, C++, or Fortran; EECS 639 (or equivalent.) Highly recommended: MATH 127.
This course gives a hands-on introduction to the fundamentals and applications of digital image processing. Topics include: image formation and camera calibration, image transforms, image filtering in spatial and frequency domains, image enhancement, image restoration and reconstruction, image segmentation, feature detection, segmentation, and the latest developments and applications in image processing. Prerequisite: MATH 290 and MATH 526, or consent from the instructor.
This course presents an introduction to techniques for statically analyzing programs. Converge includes theoretical analysis, definition and implementation of data flow analysis, control flow analysis, abstract interpretation, and type and effects systems. The course presents both the underlying definitions and pragmatic implementation of these systems. Prerequisite: EECS 665 or EECS 662 or equivalent.
Topics of this course will be divided into three main categories: (a) theory of parallelism, (b) hardware technologies, and (c) parallel and scalable architectures. For example, principles of performance and scalability, processors and memory hierarchy, linear/nonlinear pipelining and superscalar techniques, and scalable multiprocessors and dataflow architectures will be among the topics to be covered. The course will also focus on emerging and heterogeneous architectures and their performance potential and programming models. For example, reconfigurable computing (RC), quantum computing (QC), and neuromorphic computing (NC) will be covered in some details. This would be achieved through practical experiments, and homework projects using realistic workloads on some state-of- the-art high-performance reconfigurable and quantum computers. Finally, students will select published related research work for discussions and oral presentations. Prerequisite: EECS 643 or EECS 645, or equivalent. A good understanding of C/C++ and having basic Unix/Linux skills is required.
Implementation of communication and radar DSP algorithms in programmable logic devices focusing on design methodology, resource utilization, and timing closure. Specific topics include number formats, numerical operators, waveform generation, mixed-signal converters (ADCs & DACs), digital filters, multi-rate designs, DFTs, software defined radios, and embedded processors. Course structure will consist of a combination of class lectures and hardware design projects. Prerequisite: An introductory course in DSP such as EECS 644; and digital system design using HDL such as EECS 443 or equivalent.
In this course, we will study advanced topics in operating systems for modern hardware platforms. The topics include: multicore CPU scheduling, cache and DRAM management, flash-based storage systems and I/O management, power/energy management, and cloud systems. We will discuss classical and recent papers in each of these topics. We will also study advanced resource management capabilities in recent Linux kernels. The course will consist of lectures, student presentations, and a term project. Prerequisite: EECS 678.
The main objective of this course is to discuss various computer architectures at an abstract level. A large number of machines, memory structures, and interconnections will be discussed. We will learn about state-of-the-art computer systems as they are designed today, including processors, memories, interconnects, and multiprocessors. The focus of the course is not on research but on actual, commercial, existing machines. The students taking the course will be ready to conduct research in the area of computer architecture or work on projects related to designing chip architecture for components of a computer system. More importantly, the students will gain experience in using architectural simulators and analytical models to design and evaluate future computer architectures. Prerequisite: EECS 645 or EECS 643 or instructor’s consent.
Modern techniques for modeling and analyzing software systems. Course coverage concentrates on pragmatic, formal modeling techniques that support predictive analysis. Topics include formal modeling, static analysis, and formal analysis using model checking and theorem proving systems. Prerequisite: EECS 368 or equivalent.
An introduction to the modeling, estimation, and control of unmanned autonomous systems. Topics include motion description, navigation sensors, complementary filters, Kalman filters, attitude estimation, position estimation, attitude keeping controller, etc. The successful completion of this course will prepare students for advanced studies in robotics & controls. (Same as AE 759.) Prerequisite: AE 551 or AE 552 or EECS 444, or by consent of instructor.
This course presents a basic introduction to the semantics of programming languages. The presentation begins with basic lambda calculus and mechanisms for evaluating lambda calculus terms. Types are introduced in the form of simply typed lambda calculus and techniques for type inference and defining type systems are presented. Finally, techniques for using lambda calculus to define, evaluate and type check common programming language constructs are presented. Prerequisite: EECS 662 or equivalent.
Models of computations and performance measures; asymptotic analysis of algorithms; basic design paradigms including divide-and-conquer, dynamic programming, backtracking, branch-and-bound, greedy method and heuristics; design and analysis of approximation algorithms; lower bound theory; polynomial transformation and the theory of NP-Completeness; additional topics may be selected from arithmetic complexity, graph algorithms, string matching, and other combinatorial problems. Prerequisite: EECS 630 or equivalent.
Comprehensive coverage to the fundamentals of cryptography and computer and communication security. This course serves as the first graduate level security course, which introduces the core concepts, theories, algorithms and protocols in computer and communication security, and also prepares students for advanced security courses. This course first covers the mathematical foundation of cryptography and its applications in computer security. The course also covers a wide range of topics: information and database security, software and computer systems security, network security, Internet and web security. Prerequisite: EECS 678 and EECS 563 or EECS 780, or the instructor's approval.
This course covers cryptographic algorithms and security protocols for computer networks, as well as advanced topics and research frontiers in network security. Topics include security of network design and protocols such as TCP/IP, BGP, and DNS security; network vulnerabilities and attacks such as spoofing, MITM, DDoS, and botnets; network security controls such as cryptography primitives, authentication, key management, firewall and intrusion detection; privacy and anonymity such as spams, web tracking, Internet censorship; network security research fundamentals and emerging topics. Student cannot receive credit for both EECS 666 and EECS 766. Prerequisite: EECS 563 and EECS 565 or instructor’s consent.
This class introduces algorithms and applications for retrieving information from large document repositories, including the Web. Topics span from classic information retrieval methods for text documents and databases, to recent developments in Web search, including: text algorithms, indexing, probabilistic modeling, performance evaluation, web structures, link analysis, multimedia information retrieval, social network analysis. Prerequisite: EECS 447 or permission of instructor.
Understand the fundamental principles and advanced implementation aspects of key virtual machine concepts. Topics include principles of virtualization, binary translation, process and system level virtual machines, JIT complication and optimizations in managed environments, garbage collection, virtual machine implementation issues, and virtual machine security. Includes in-depth coverage of the latest developments and research issues in the filed of virtual machines. Prerequisite: EECS 665 and either EECS 643 or EECS 645 or consent of instructor.
Information theory is the science of operations on data such as compression, storage, and communication. It is one of the few scientific fields fortunate enough to have an identifiable beginning - Claude Shannon's 1948 paper. The main topics of mutual information, entropy, and relative entropy are essential for students, researchers, and practitioners in such diverse fields as communications, data compression, statistical signal processing, neuroscience, and machine learning. The topics covered in this course include mathematical definitions and properties of information, mutual information, source coding theorem, lossless compression of data, optimal lossless coding, noisy communication channels, channel coding theorem, the source channel separation theorem, multiple access channels, broadcast channels, Gaussian noise, time-varying channels, and network information theory. Prerequisite: EECS 461 or MATH 526 or an equivalent undergraduate probability course.
Advanced topics in graphics and graphics systems. Topics at the state of the art are typically selected from: photorealistic rendering; physically-based lighting models; ray tracing; radiosity; physically-based modeling and rendering; animation; general texture mapping techniques; point-based graphics; collaborative techniques; and others. Prerequisite: EECS 672 or permission of instructor.
Introduction to the representation, manipulation, and analysis of geometric models of objects. Implicit and parametric representations of curves and surfaces with an emphasis on parametric freeform curves and surfaces such as Bezier and Nonuniform Rational B-Splines (NURBS). Curve and surface design and rendering techniques. Introduction to solid modeling: representations and base algorithms. Projects in C/C++ using OpenGL. Prerequisite: EECS 672 or permission of instructor.
An introduction to functional programming. Topics include learning how to program in Haskell; IO and purity in software engineering; functional data structures and algorithms; monads and applicative functors; parsing combinators; Domain Specific Languages (DSLs) and DSL construction; advanced type systems; making assurance arguments; testing and debugging. Prerequisite: EECS 368 or equivalent or consent of instructor.
Heuristic and formal analysis of software systems with an emphasis on integrity and secrecy. Students in the course will learn to assess the quality, vulnerabilities, and behavior of software. Topics include bug finding, anomaly detection, dynamic analysis, static analysis, dataflow analysis, fuzzing, linting, software supply chain auditing, and security best practices. Students will gain hands-on experience in conducting research in software auditing through a final project/report. Student cannot receive credit for both EECS 677 and EECS 777. Prerequisite: EECS 448, or EECS 348 and upper-level EECS eligibility, or instructor’s consent.
Comprehensive in-depth coverage to communication networks with emphasis on the Internet and the PSTN (wired and wireless, and IoT-Internet of Things). Extensive coverage of protocols and algorithms will be presented at all levels, including: social networking, overlay networks, client/server and peer-to-peer applications; session control; transport protocols, the end-to-end arguments and end-to-end congestion control; network architecture, forwarding, routing, signaling, addressing, and traffic management, programmable and software-defined networks (SDN); quality of service, queuing and multimedia applications; LAN architecture, link protocols, access networks and MAC algorithms; physical media characteristics and coding; network security and information assurance; network management. Prerequisite: EECS 563 or equivalent or permission of instructor.
This course will investigate various security and trust issues related to integrated circuits and systems during their design and manufacturing process, as well as during field operation. A wide range of threats including piracy, reverse engineering, hardware Trojan insertion, side-channel attack, micro-architectural vulnerabilities, and various invasive non-invasive attacks will be introduced. Potential hardware and software-based countermeasures to detect and prevent these attacks will be studied. Implementation of design-time solutions like physically unclonable functions (PUFs), true random number generator (TRNG), security monitors, hardware obfuscation, and many others will be covered. This course will also cover the fundamentals of hardware security research. Student cannot receive credit for both EECS 683 and EECS 783. Prerequisite: EECS 388 and upper-level EECS eligibility.
Comprehensive introduction to the fundamental science that is the basis for the architecture, design, engineering, and analysis of computer networks. Topics covered will include foundations on: Structure of networks: graph theory, complex systems analysis, centrality, spectral analysis, network flows, and network topology; Identification of network entities: naming, addressing, indirection, translation, and location; Operation of protocols and information transfer: automata, control theory, Petri nets, layering and cross-layering, protocol data units; Policy and tussle: game theory, decision theory; Resilience: dependability (reliability, availability, and maintainability), performability, fault tolerance, and survivability. Open-source tools will be used for network modelling and analysis. Prerequisite: EECS upper-level eligibility, graduate standing, or permission of the instructor.
This course covers the concept of Internet of Things (IoT) including its components, architectures, and enabling technologies and introduces full-stack of security and privacy issues in IoT and its applications including hardware, software, network, and data. The goal is to expose students to new developments in cybersecurity for IoT as well as familiarize them with tools and techniques for IoT security design and analysis. Students will gain hands-on experiences on implementing security techniques for IoT through mini projects and a research project/report. Student cannot receive credit for both EECS 685 and EECS 785. Prerequisite: EECS 565 or instructor’s consent.
This course covers the basic concepts of Integrated Circuit (IC) design, various methods of designing VLSI circuits, and techniques to analyze and optimize performance metrics, such as: speed, area, power and signal integrity. Clocking, interconnect and scaling issues of IC will also be discussed. The topic will cover device, interconnect and circuit level implementation issues of both logic and memory circuits. It will also briefly introduce the high performance issues, fabrication technologies and system level implementation approaches of IC to establish bridges to the advanced courses. Prerequisite: EECS 312.
Security and privacy issues through the lens of mobile computing. Topics include an overview of the mobile computing ecosystem, including smartphones and autonomous devices such as unmanned aerial systems; core security and privacy principles applied to mobile devices; an exploration of domain-relevant academic literature; exploration of attacks and defenses in mobile security. New developments in cybersecurity for mobile security and security tools and techniques in the domain. Students will gain hands-on experience in conducting research in the field of mobile security, including producing a research-quality final project/report. Student cannot receive credit for both EECS 687 and EECS 787. Prerequisite: EECS 678 or instructor’s consent.
This hands-on course explains the basics of binary software, including binary generation, layout, structure, and execution. It will explain the basics of binary reverse engineering (RE), including binary analysis, disassembly, and instrumentation. The course teaches relevant tools and frameworks for RE. Students practice RE concepts using advanced code problems and a term project/report. Topics include: Linux command-line tools, binary build process, high-level language constructs in assembly, the ELF format, static and run-time tools for RE, advanced RE frameworks, binary rewriting, anti-reversing, etc. Student cannot receive credit for both EECS 695 and EECS 795. Prerequisite: EECS 388 or instructor’s consent.
Advanced courses on special topics of current interest in electrical engineering, computer engineering, or computer science, given as the need arises. May be repeated for additional credit. Prerequisite: Varies by topic.
Graduate level directed readings on a topic in electrical engineering, computer engineering, or computer science, mutually agreed-on by the student and instructor. May be repeated for credit on another topic. Prerequisite: Consent of instructor.
A colloquium/seminar series in which presentation are provided on a broad variety of scholarly and professional topics. Topics related to the issues of responsible scholarship in the fields of computing and electrical engineering will be discussed. Student are also required to attend a series of colloquia and submit written reports. Course will be graded Satisfactory/Fail and is required for all EECS graduate students. Prerequisite: Graduate standing in the EECS Department.
Objectives, processes, and activities of requirements engineering and requirements management; characteristics of good requirements; types of requirements; managing changing requirements; languages, notations, and methodologies; formal and semi-formal methods of presenting and validating the requirements; requirements standards; traceability issues. Prerequisite: EECS 810.
A theorem-based approach to solving Maxwell's equations for modeling electromagnetic problems encountered in microwave systems, antennas, scattering. Topics include waves, source modeling, Schelkunoff equivalence principle, scattered filed formulations, electromagnetic induction, reciprocity principles, Babinet's principle, and construction of solutions in various coordinate systems. Prerequisite: EECS 420.
Description and analysis of basic microwave remote sensing systems including radars and radiometers as well as the scattering and emission properties of natural targets. Topics covered include plane wave propagation, antennas, radiometers, atmospheric effects, radars, calibrated systems, and remote sensing applications. Prerequisite: EECS 420 and EECS 622.
An advanced course in fiber-optic communications. The course will focus on various important aspects and applications of modern fiber-optic communications, ranging from photonic devices to systems and networks. Topics include: advanced semiconductor laser devices, external optical modulators, optical amplifiers, optical fiber nonlinearities and their impact in WDM and TDM optical systems, polarization effect in fiber-optic systems, optical receivers and high-speed optical system performance evaluation, optical solution systems, lightwave analog video transmission, SONET & ATM optical networking, and advanced multi-access lightwave networks. Prerequisite: EECS 628 or equivalent.
This course covers topics in data collection, data transmission, and data analysis, in support of discoveries and innovations based on massive amounts of data. This course surveys current topics in data science. It provides a comprehensive review of theory, algorithms, and tools that are used in data science and prepares students to take in-depth following up courses in EECS. This is a project-oriented course. It offers hands-on experience for students to integrate knowledge from a wide-range of topics in data science without dwelling on any particular subfield of data science. Prerequisite: EECS 268 or experience with object oriented programming and large programs. MATH 290 or experience with linear algebra. EECS 461 or MATH 526 or experience with probability and statistics. Or consent from the instructor.
"Machine learning is the study of computer algorithms that improve automatically through experience" (Tom Mitchell). This course introduces basic concepts and algorithms in machine learning. A variety of topics such as Bayesian decision theory, dimensionality reduction, clustering, neural networks, hidden Markov models, combining multiple learners, reinforcement learning, Bayesian learning etc. will be covered. Prerequisite: Graduate standing in CS or CoE or consent of instructor.
Extracting data from data bases to data warehouses. Preprocessing of data: handling incomplete, uncertain, and vague data sets. Discretization methods. Methodology of learning from examples: rules of generalization, control strategies. Typical learning systems: ID3, AQ, C4.5, and LERS. Validation of knowledge. Visualization of knowledge bases. Data mining under uncertainty, using approaches based on probability theory, fuzzy set theory, and rough set theory. Prerequisite: Graduate standing in CS or CoE or consent of instructor.
Problems associated with mining incomplete and numerical data. The MLEM2 algorithm for rule induction directly from incomplete and numerical data. Association analysis and the Apriori algorithm. KNN and other statistical methods. Mining financial data sets. Problems associated with imbalanced data sets and temporal data. Mining medical and biological data sets. Induction of rule generations. Validation of data mining: sensitivity, specificity, and ROC analysis. Prerequisite: Graduate standing in CS or CoE or consent of instructor.
This course gives a hands-on introduction to the fundamentals and applications of computer vision. Topics include: Image processing fundamentals, feature detection and matching, projective geometry and transformation, camera geometry and calibration, two-view geometry and stereo vision, structure from motion, parameter estimation and optimization, and the latest developments and applications in computer vision. Prerequisite: MATH 290 and MATH 526, or consent from the instructor.
This course presents advanced topics in programming language semantics. Fixed point types are presented followed by classes of polymorphism and their semantics. System F and type variables are presented along with universal and existential types. The lambda cube is introduced along with advanced forms of polymorphism. Several interpreters are developed implementing various type systems and associated type inference algorithms. Prerequisite: EECS 762.
This course presents the theory and application of adaptive signal processing. Topics include adaptive filtering, mathematics for advanced signal processing, cost function modeling and optimization, signal processing algorithms for optimum filtering, array processing, linear prediction, interference cancellation, power spectrum estimation, steepest descent, and iterative algorithms. Prerequisite: Background in fundamental signal processing (such as EECS 644.) Corequisite: EECS 861.
Fundamental concepts in random variables, random process models, power spectral density. Application of random process models in the analysis and design of signal processing systems, communication systems and networks. Emphasis on signal detection, estimation, and analysis of queues. This course is a prerequisite for most of the graduate level courses in radar signal processing, communication systems and networks. Prerequisite: An undergraduate course in probability and statistics, and signal processing.
A study of communication systems using noisy channels. Principal topics are: information and channel capacity, baseband data transmission, digital carrier modulation, error control coding, and digital transmission of analog signals. The course includes a laboratory/computer aided design component integrated into the study of digital communication systems. Prerequisite: EECS 562. Corequisite: EECS 861.
Prediction of communication network performance using analysis, simulation, and measurement. Topics include: an introduction to queueing theory, application of theory to prediction of communication network and protocol performance, and analysis of scheduling mechanisms. Modeling communication networks using analytic and simulation approaches, model verification and validation through analysis and measurement, and deriving statistically significant results. Analysis, simulation, and measurement tools will be discussed. Prerequisite: EECS 461 or MATH 526, and EECS 563 or EECS 780.
The theory and practice of the engineering of wireless telecommunication systems. Topics include cellular principles, mobile radio propagation (including indoor and outdoor channels), radio link calculations, fading (including Rayleigh, Rician, and other models), packet radio, equalization, diversity, error correction coding, spread spectrum, multiple access techniques (including time, frequency, and code), and wireless networking. Current topics of interest will be covered. Prerequisite: Corequisite: EECS 861.
This course provides in-depth coverage on the concepts, principles, and mechanisms in network security and secure distributed systems. The topics that will be covered include: network security primitives, risks and vulnerabilities, authentication, key management, network attacks and defense, secure communication protocols, intrusion detection, exploit defenses, traffic monitoring and analysis, and privacy mechanisms. Prerequisite: EECS 765 and EECS 563 or EECS 780, or the instructor's approval.
A mathematical study of the minimization of functions. The course provides an introduction to the mathematical theory, implementation, and application of a variety of optimization techniques, with an emphasis on real-world applications. Optimization problem formulation. Unconstrained and constrained minimization, including conditions for optimality. Specific techniques for solving linear and nonlinear programming problems. Convergence of algorithms. Prerequisite: MATH 590 or EECS 639, or the consent of the instructor.
A study of communication channels and the coding problem. An introduction to finite fields and linear block codes such as cyclic, Hamming, Golay, BCH, and Reed-Solomon. Convolutional codes and the Viberbi algorithm are also covered. Other topics include trellis coded modulation, iterative (turbo) codes, LDPC codes. Prerequisite: EECS: 562 or equivalent.
Comprehensive coverage of the discipline of high-bandwidth low-latency networks and communication, including high bandwidth-×-delay products, with an emphasis on principles, architecture, protocols, and system design. Topics include high-performance network architecture, control, and signaling; high-speed wired, optical, and wireless links; fast packet, IP, and optical switching; IP lookup, classification, and scheduling; network processors, end system design and protocol optimization, network interfaces; storage networks; data-center networks, end-to-end protocols, mechanisms, and optimizations; high-bandwidth low-latency applications and cloud computing. Principles will be illustrated with many leading-edge and emerging protocols and architectures. Prerequisite: EECS 563 or EECS 780, or permission of the instructor.
Directed studies of advanced phases of electrical engineering, computer engineering, computer science or information technology not covered in regular graduate courses, including advanced laboratory work, special research, or library reading. Graded on a satisfactory progress/limited progress/no progress basis. Prerequisite: Consent of instructor.
Graded on a satisfactory progress/limited progress/no progress basis.
Detection of signals in the presence of noise and estimation of signal parameters. Narrowband signals, multiple observations, signal detectability and sequential detection. Theoretical structure and performance of the receiver. Prerequisite: EECS 861.
Graduate research seminar that provides an overview of the emerging field of resilient, survivable, disruption-tolerant, and challenged networks. These networks aim to remain operational and provide an acceptable level of service in the face of a number of challenges including: natural faults of network components; failures due to misconfiguration or operational errors; attacks against the network hardware, software, or protocol infrastructure; large-scale natural disasters; unpredictably long delay paths either due to length (e.g. satellite and interplanetary) or as a result of episodic connectivity; weak and episodic connectivity and asymmetry of wireless channels; high-mobility of nodes and subnetworks; unusual traffic load (e.g. flash crowds). Multi-level solutions that span all protocol layers, planes, and parts of the network will be systemically and systematically covered. In addition to lectures, students read and present summaries of research papers and execute a project. Prerequisite: EECS 780; previous experience in simulation desirable.
Graded on a satisfactory progress/limited progress/no progress basis.
Graded on a satisfactory progress/limited progress/no progress basis.