ECE 511: Foundations of Nanoscale Science and Technology
This course is the introductory course for the Graduate Certificate Program in Nanoscience (GPNANO) and is designed to introduce students to the interdisciplinary aspects of nanoscience by integrating important components of the broad research field together. This integrated approach will cross the traditional disciplines of biology, chemistry, electrical & computer engineering, computer science, and physics. Fundamental properties of materials at the nanoscale, synthesis of nanoparticles, characterization tools, and self-assembly.
ECE 512: Emerging Nanoelectronic Devices
Brief review of semiconductor device physics followed by coverage of the most prominent emerging nanoelectronic devices. Topics include: nanoelectronic logic devices (advanced silicon transistors, carbon nanotube transistors, spintronics, 2D FETs, NEMS, tunnel FETs, negative capacitance FETs and piezoelectronics), and nanoelectronic memory devices (phase change, spin transfer torque, nanomechanical, ferroelectric FET, and molecular memory). Students will understand basic operation, pros/cons of performance, and primary integration challenges. Students conduct case study project, culminating with class presentation.
ECE 520: Graduate Introduction to Quantum Engineering
Quantum mechanics was discovered at the beginning of the 20th century and has had a profound effect on the development of modern technology. This course is about the potential for quantum technologies in the 21st century. The focus of the course this semester will be a survey of quantum computation, a field that promises to revolutionize the way we compute by using the dynamics of quantum mechanics. Topics include quantum circuits, introduction to quantum algorithms, hardware, and architectures.
ECE 521: Quantum Mechanics
Discussion of wave mechanics including elementary applications, free particle dynamics, Schrödinger equation including treatment of systems with exact solutions, and approximate methods for time-dependent quantum mechanical systems with emphasis on quantum phenomena underlying solid-state electronics and physics.
ECE 523: Quantum Computing
Fundamental concepts and progress in quantum information science. Quantum circuits, quantum universality theorem, quantum algorithms, quantum operations and quantum error correction codes, fault-tolerant architectures, security in quantum communications, quantum key distribution, physical systems for realizing quantum logic, quantum repeaters and long-distance quantum communication.
ECE 524: Introduction to Solid-State Physics
Discussion of solid-state phenomena including crystalline structures, X-ray and particle diffraction in crystals, lattice dynamics, free electron theory of metals, energy bands, and superconductivity, with emphasis on understanding electrical and optical properties of solids.
ECE 526: Semiconductor Devices for Integrated Circuits
Basic semiconductor properties (energy-band structure, effective density of states, effective masses, carrier statistics, and carrier concentrations). Electron and hole behavior in semiconductors (generation, recombination, drift, diffusion, tunneling, and basic semiconductor equations). Current-voltage, capacitance-voltage, and static and dynamic models of PN Junctions, Schottky barriers, Metal/Semiconductor Contacts, Bipolar-Junction Transistors, MOS Capacitors, MOS-Gated Diodes, and MOS Field-Effect Transistors. SPICE models and model parameters.
ECE 528: Integrated Circuit Engineering
Basic processing techniques and layout technology for integrated circuits. Photolithography, diffusion, oxidation, ion implantation, and metallization. Design, fabrication, and testing of integrated circuits.
ECE 529: Digital Integrated Circuits
Analysis and design of digital integrated circuits in deep submicron MOS technology. Brief review of IC technology, MOSFETs, and interconnects. Switching characteristics (propagation delay) and power consumption in NMOS/CMOS devices and interconnects. Analysis of static and dynamic logic circuits (inverters, gates) and memory circuits (SRAMs, DRAMs, Flash). Influence of technology and device structure on performance and reliability of digital ICs. SPICE modeling. Memory array design project.
ECE 531: Power Electronic Circuits for Energy Conversion
Efficient conversion of electrical energy is critical for electric and hybrid vehicles, wind and solar energy, power grids, computers, medical devices, and portables. This course teaches analysis and design of power electronic circuits for energy conversion, including circuit operation (converter topologies, steady-state modeling, switch realization), converter control (ac modeling, small-signal transfer functions, feedback), and magnetics (inductors, transformers). The course shares lectures with ECE/Energy Engineering 431, but has extended assignments.
ECE 532: Analog Integrated Circuit Design
Design and layout of CMOS analog integrated circuits. Qualitative review of the theory of pn junctions, bipolar and MOS devices, and large and small signal models. Emphasis on MOS technology. Continuous time operational amplifiers. Frequency response, stability and compensation. Complex analog subsystems including phase-locked loops, A/D and D/A converters, switched capacitor simulation, layout, extraction, verification, and MATLAB modeling. Projects make extensive use of full custom VLSI CAD software.
ECE 533: Biochip Engineering
A problem-solving course in which students consider technology options for a complete lab-on-a-chip design. Lectures cover the basics of analog flow microfluidic devices, digital microfluidic devices, fabrication technologies for discrete devices, system integration issues, and a significant emphasis on biological applications for analysis, sample preparation, and detection issues. Technologies covered will include microfluidic devices, electrophoresis, analytical methods used in genetics, sample preparation methods, and analyte detection.
ECE 538: VLSI System Testing
Fault modeling, fault simulation, test generation algorithms, testability measures, design for testability, scan design, built-in self-test, system-on-a-chip testing, memory testing.
ECE 539: CMOS VLSI Design Methodologies
Emphasis on full-custom digital ASIC design using CMOS technology. Extensive use of CAD tools for IC design, simulation, and layout verification. Includes techniques for designing high-speed, low-power, easily-testable circuits. Semester design project: Student groups design and simulate simple custom IC using Mentor Graphics CAD tools. Formal project proposal, written project report, and formal project presentation required.
ECE 541: Advanced Optics
This course presents a rigorous treatment of topics in Photonics and Optics targeted at students with an existing photonics or optics background. Topics will include, Optical Sources, Statistical Optics and Coherence Theory, Detection of Radiation; Nonlinear Optics; Waveguides and Optical Fibers; Modern Optical Modulators; Ultrafast lasers and Applications. These topics will be considered individually and then from a system level perspective.
ECE 545: Foundations of Nanoelectronics & Nanophotonics
Theory and applications of nanoelectronics and nanophotonics. Quantum dots and wells, metal nanoparticles, organic-inorganic interfaces, graphene, next generation transistors, light emitters, and sensors.
ECE 546: Optoelectronic Devices
Devices for conversion of electrons to photons and photons to electrons. Optical processes in semiconductors: absorption, spontaneous emission and stimulated emission. Light-emitting diodes (LEDs), semiconductor lasers, quantum-well emitters, photodetectors, modulators and optical fiber networks.
ECE 549: Optics & Photonics Seminar Series
Weekly seminar on the current research topics in the field of optics and photonics.
ECE 550D: Fundamentals of Computer Systems and Engineering
Fundamentals of computer systems and engineering for master's students whose undergraduate background did not cover this material. Topics covered include: Digital logic, assembly programming, computer architecture, memory hierarchies and technologies, IO, hardware implementation in VHDL, operating systems, and networking.
ECE 551D: Programming, Data Structures, and Algorithms in C++
Students learn to program in C and C++ with coverage of data structures (linked lists, binary trees, hash tables, graphs), Abstract Data Types (Stacks, Queues, Maps, Sets), and algorithms (sorting, graph search, minimal spanning tree). Efficiency of these structures and algorithms is compared via Big-O analysis. Brief coverage of concurrent (multi-threaded) programming. Emphasis is placed on defensive coding, and use of standard UNIX development tools in preparation for students' entry into real world software development jobs. Not open to undergraduates.
ECE 552. Advanced Computer Architecture I
Fundamental aspects of advanced computer architecture design and analysis. Topics include processor design, pipelining, superscalar, out-of-order execution, caches (memory hierarchies), virtual memory, storage systems, simulation techniques, technology trends and future challenges.
ECE 553. Compiler Construction
Covers the fundamentals of compiler design. Students will develop a working compiler, writing all stages required to take source code as input and produce working assembly as output: lexical analysis, parsing, type checking, translation to intermediate representation, instruction selection, liveness analysis, and register allocation. Students are expected to have a strong programming background prior to taking this course, as writing a compiler is a significant programming task.
ECE 554. Fault-Tolerant and Testable Computer Systems
Technological reasons for faults, fault models, information redundancy, spatial redundancy, backward and forward error recovery, fault-tolerant hardware and software, modeling and analysis, testing, and design for test.
ECE 555: Probability for Electrical and Computer Engineers
Basic concepts and techniques used stochastic modeling of systems with applications to performance and reliability of computer and communications system. Elements of probability, random variables (discrete and continuous), expectation, conditional distributions, stochastic processes, discrete and continuous time Markov chains, introduction to queuing systems and networks.
ECE 556: Wireless Networking and Mobile Computing
Theory, design, and implementation of mobile wireless networking systems. Fundamentals of wireless networking and key research challenges. Students review pertinent journal papers. Significant, semester-long research project. Networking protocols (Physical and MAC, multi-hop routing, wireless TCP, applications), mobility management, security, and sensor networking.
ECE 558: Advanced Computer Networks
Entry-level graduate course. Basic systems support for process-to-process communications across a computer network. The TCP/IP protocol suite and the Berkeley sockets application programs interface. The topics include congestion control, packet scheduling, routing, software defined networking, datacenter networks, network function virtualization, programmable switches, network measurement, remote direct memory access, residential networks, peer-to-peer networks, and content distribution networks.
ECE 559. Advanced Digital System Design
Fundamentals of advanced digital system design, and the use of a hardware description language, VHDL, for their synthesis and simulation. System examples include the arithmetic/logic unit, memory, and microcontrollers. Team-based project incorporates engineering standards and realistic constraints, and also considers most of the following: Cost, environmental impact, manufacturability, health and safety, ethics, social and political impact.
ECE 560: Computer and Information Security
An intense trip through many facets of computer and information security. Includes discussion and practical exercises in risk management, threat modeling, applied cryptography, malicious software, network security, intrusion detection and prevention, software and OS security, auditing and forensics, reverse engineering, and social engineering. Includes many hands-on security assignments.
ECE 564: Mobile Application Development
Explores the world of mobile application development with focus on needs of engineers. Centered on Apple environment, with the development environment being on OS X and the target environment being an iOS device- iPad, iPhone, iPod Touch or Apple Watch. Real world context focused on the common programming patterns for engineers in academia or business- standalone apps, apps connected to other systems, apps connected to the cloud. Covers fundamentals essential to understanding all aspects of app development. Taught in a team environment. Students required to present their project proposals and deliver an app as a final project.
ECE 565: Performance Optimization & Parallelism
Analyzing and optimizing the performance of software, in both a single- and multi-threaded setting. Apply knowledge of hardware, programming, and assembly to both tasks. Single-threaded performance topics include code profiling & analysis, loop transformation, analysis of interaction of code & memory hierarchy, assembly level instruction scheduling impacts. Multi-threaded topics include scalability & load balance. For students with strong foundation of programming skills in high-level languages, assembly language, and computer architecture & design.
ECE 566: Enterprise Storage Architecture
Study the design and deployment of massive storage systems of the sort used in large enterprises (banks, major IT departments, service providers, etc.). Includes coverage of hard disk and flash design, RAID, SAN and NAS topologies, filesystem design, data center architectures for high availability, data deduplication, business continuity, and the economics of data storage with respect to cloud computing. Includes a few homeworks and a semester-long programming project.
ECE 567: Cyber-Physical System Design
Complex interactions between information technology and physical world in Cyber-Physical Systems (CPS) challenge standard design methods that ignore cross-cutting constraints. This course addresses CPS design challenges by exploiting theory and methods from embedded systems, controls, and formal methods. Course covers topics related to the integration of system modeling, analysis, and automatic synthesis into design frameworks that ensure closed-loop safety and performance under known and unknown operating conditions. Balances establishing a working knowledge of CPS design and analysis methods with understanding the theory behind them.
ECE 568: Engineering Robust Server Software
In this course, students learn about important principles in server software design and development. These principles include topics such as handling asynchronous behavior, design for failure, basic security principles, scalability, and resilience. Students will put these ideas into practices by developing software reflecting the ideas learned in class.
ECE 571: Electromagnetic Theory
The classical theory of Maxwell's equations; electrostatics, magnetostatics, boundary value problems including numerical solutions, currents and their interactions, and force and energy relations. Three class sessions.
ECE 572: Electromagnetic Communication Systems
Review of fundamental laws of Maxwell, Gauss, Ampere, and Faraday. Elements of waveguide propagation and antenna radiation. Analysis of antenna arrays by images. Determination of gain, loss, and noise temperature parameters for terrestrial and satellite electromagnetic communication systems.
ECE 573: Optical Communication Systems
Mathematical methods, physical ideas, and device concepts of optoelectronics. Maxwell's equations, and definitions of energy density and power flow. Transmission and reflection of plane waves at interfaces. Optical resonators, waveguides, fibers, and detectors are also presented.
ECE 574: Waves in Matter
Analysis of wave phenomena that occur in materials based on fundamental formulations for electromagnetic and elastic waves. Examples from these and other classes of waves are used to demonstrate general wave phenomena such as dispersion, anisotropy, and causality; phase, group, and energy propagation velocities and directions; propagation and excitation of surface waves; propagation in inhomogeneous media; and nonlinearity and instability. Applications that exploit these wave phenomena in general sensing applications are explored.
ECE 575: Microwave Electronic Circuits
Microwave circuit analysis and design techniques. Properties of planar transmission lines for integrated circuits. Matrix and computer-aided methods for analysis and design of circuit components. Analysis and design of input, output, and interstage networks for microwave transistor amplifiers and oscillators. Topics on stability, noise, and signal distortion.
ECE 580: Introduction to Machine Learning
Introduction to core concepts in machine learning and statistical pattern recognition, with a focus on discriminative and generative classifiers (nearest-neighbors, Bayes, logistic regression, linear discriminant, support vector machine, and relevance vector machine). Dimensionality reduction and feature selection. Classifier performance evaluation, bias-variance tradeoff, and cross-validation.
ECE 581: Random Signals and Noise
Introduction to mathematical methods of describing and analyzing random signals and noise. Review of basic probability theory; joint, conditional, and marginal distributions; random processes. Time and ensemble averages, correlation, and power spectra. Optimum linear smoothing and predicting filters. Introduction to optimum signal detection, parameter estimation, and statistical signal processing.
ECE 585: Signal Detection and Extraction Theory
Introduction to signal detection and information extraction theory from a statistical decision theory viewpoint. Subject areas covered within the context of a digital environment are decision theory, detection and estimation of known and random signals in noise, estimation of parameters and adaptive recursive digital filtering, and decision processes with finite memory. Applications to problems in communication theory.
ECE 586: Vector Space Methods with Applications
Covers key concepts from advanced linear algebra that are used regularly in ECE/CS journal papers on signal processing, communications, circuit design, and machine learning (e.g., logic, topology, vector spaces, optimization). Key mathematical ideas/proofs will be presented and applied. Uses application topics such as Markov chains, alternating projections, and pattern classification to illustrate important mathematical topics. Background in linear algebra, a high-level programming language, and probability is assumed.
ECE 587: Information Theory
Information theory is the science of processing, transmitting, storing, and using information. This course provides an introduction to mathematical measures of information and their connection to practical problems in communication, compression, and inference. Entropy, mutual information, lossless data compression, channel capacity, Gaussian channels, rate distortion theory, Fisher information. Useful for researchers in a variety of fields, including signal processing, machine learning, statistics, and neuroscience. Appropriate for beginning graduate students in electrical engineering, computer science, statistics, and math with a background in probability.
ECE 588: Image and Video Processing: From Mars to Hollywood with a Stop at the Hospital
Intro to image formation, image compression, image enhancement & image segmentation. Covers geometric and non-geometric tools, as well as spatial and non-spatial operations. Extension to color images and video. Addresses recent progress in the area, including image inpainting (how to remove objects from images and video), image processing via sparse modeling & compressed sensing, geometric partial differential equations for image analysis, image processing for HIV & virus research, image processing for neurosurgery & other medical applications.
ECE 590: Advanced Topics in Electrical and Computer Engineering
Opportunity for study of advanced subjects related to programs within the electrical and computer engineering department tailored to fit the requirements of a small group. Instructor consent required.
ECE 621: Quantum Error Correction
In this course, we cover two related topics: quantum error correction and quantum computer architectures. In the beginning of the course, we will cover the basics of quantum error correction and develop the tools needed to understand modern methods of fault-tolerant quantum computation. In the end of the course, we will discuss how quantum error correction influences the design of a large-scale quantum computer.
ECE 623: Quantum Information Theory
This course introduces fundamental ideas of Quantum Information theory, such as entanglement, quantum entropy and mutual information, decoherence and quantum data compression. A primary goal of this field is to understand how quantum effects, such as entanglement, can enhance communication and cryptography protocols. Furthermore, the tools and ideas discussed in this course are essential for understanding and quantifying noise and decoherence in quantum computers. These concepts have also found various applications in different areas of Physics, including quantum thermodynamics, many-body systems and quantum gravity.
ECE 650: Systems Programming and Engineering
Focuses on a range of topics that are central to both the design of operating systems and the programming system-level software. Students will apply knowledge of basic concepts in operating systems, networking, and programming towards these two areas. Topics covered will include concurrency, process management, hypervisors, networking, security, databases, and file systems. Students will be expected to demonstrate their understanding in these areas through a series of programming assignments covering these topics.
ECE 651: Software Engineering
Teaches students about all steps of the software development lifecycle: requirements definition, design, development, testing, and maintenance. The course assumes students are skilled object-oriented programmers from prior courses, but will include a rapid introduction to Java. Students complete team-based semester-long software project which will progress through all phases of the software lifecycle.
ECE 652: Advanced Computer Architecture II
Parallel computer architecture design and evaluation. Design topics include parallel programming, message passing, shared memory, cache coherence, cache coherence, memory consistency models, symmetric multiprocessors, distributed shared memory, interconnection networks, and synchronization. Evaluation topics include modeling, simulation, and benchmarking.
ECE 653: Human-Centered Computing
This course addresses the importance of the human-computer interface in the design and development of things that people use. Many of the perceptual, cognitive, and social characteristics of people, as well as methods for learning more about the people, are covered. The capabilities and limits of computers and other related systems are discussed as they relate to the impact on design and implementation decisions. The course consists of a semester-long project that steps through the various stages of design. This semester's project will be reimaging on campus mental health management.
ECE 654: Edge Computing
A seminar-format examination of design principles and recent advances in edge computing, a distributed networked system architecture that places computing and storage at multiple locations between the user and the cloud. The class covers edge computing platforms, edge-adapted algorithms, and the use of edge in mobile and Internet of Things systems and applications. The class focuses on in-depth examinations of key scientific advances in the field. Students complete and present a research-based project, individual or team-based.
ECE 661: Computer Engineering Machine Learning and Deep Neural Nets
This course examines various computer engineering methods commonly performed in developing machine learning and deep neural network models. The focus of the course is on how to improve the training and inference performance in terms of model accuracy, size, runtime, etc. Techniques that are widely investigated and adopted in industrial companies and academic communities will be discussed and practiced.
ECE 675: Optical Imaging and Spectroscopy
Wave and coherence models for propagation and optical system analysis. Fourier optics and sampling theory. Focal plane arrays. Generalized and compressive sampling. Impulse response, modulation transfer function and instrument function analysis of imaging and spectroscopy. Code design for optical measurement. Dispersive and interferometric spectroscopy and spectral imaging. Performance metrics in optical imaging systems.
ECE 682D: Probabilistic Machine Learning
Introduction to concepts in probabilistic machine learning with a focus on discriminative and hierarchical generative models. Topics include directed and undirected graphical models, kernel methods, exact and approximate parameter estimation methods, and structure learning.
ECE 684: Natural Language Processing
Introduction to algorithmic and analytic methods specific to textual data. Subject areas covered are speech recognition, optical character recognition, text parsing, and document analysis. Analysis tools taught include sentiment analysis/topic models, auto-correct, auto-complete, and translation systems. Applications to brain-computer interface communication systems, intelligent personal assistants, and plagiarism detection systems.
ECE 685D: Introduction to Deep Learning
Provides an introduction to the machine learning technique called deep learning or deep neural networks. A focus will be the mathematical formulations of deep networks and an explanation of how these networks can be structured and “learned” from big data. Discussion section covers practical applications, programming, and modern implementation practices. Example code and assignments will be given in Python with heavy utilization of PyTorch (or Tensorflow) package. The course and a project will cover various applications including image classification, text analysis, object detection, etc.
ECE 687D: Theory and Algorithms for Machine Learning
This is an introductory overview course at an advanced level. Covers standard techniques, such as the perceptron algorithm, decision trees, random forests, boosting, support vector machines and reproducing kernel Hilbert spaces, regression, K-means, Gaussian mixture models and EM, neural networks, and multi-armed bandits. Covers introductory statistical learning theory. Recommended prerequisite: linear algebra, probability, analysis or equivalent.
ECE 688: Sensor Array Signal Processing
An in-depth treatment of the fundamental concepts, theory, and practice of sensor array processing of signals carried by propagating waves. Topics include: multidimensional frequency-domain representations of space-time signals and linear systems; apertures and sampling of space-time signals; beamforming and filtering in the space-time and frequency domains, discrete random fields; adaptive beamforming methods; high resolution spatial spectral estimation; optimal detection, estimation, and performance bounds for sensor arrays; wave propagation models used in sensor array processing; blind beamforming and source separation methods; multiple-input-multiple-output (MIMO) array processing; application examples from radar, sonar, and communications systems.
ECE 721: Nanotechnology Materials Lab
This course provides an introduction to advanced methods for the characterization and fabrication of materials, nanostructures, and devices. Cleanroom methods to be covered include lithography, evaporation, and etching. Characterization methods include electron microscopy, atomic force microscopy, X-ray photoelectron spectroscopy, and optical spectroscopy. Students will receive an overview of the techniques in the Shared Materials Instrumentation Facility through lectures and demonstrations. In the lab section, each student will engage in a project that focuses on those capabilities that are needed for their research, and will receive training and certification on that equipment. Instructor: Walters
ECE 741: Compressed Sensing and Related Topics
Introduction to the basic compressed sensing problems and methodologies, including the recovery of sparse vectors and low-rank matrices using methods based on convex optimization and approximate message passing. Unified theoretical framework for the analysis of certain CS problems, drawing upon ideas from statistical decision theory, high-dimensional convex geometry, information theory, convex optimization, message passing and variational inference with graphical models, and the replica method from statistical physics. Instructor: Reeves
ECE 751D: Advanced Programming, Data Structures, and Algorithms for C++
Students learn C++, data structures (linked lists, balanced BSTs, hash tables, graphs), Abstract Data Types (Stacks, Queues, Maps, Sets), & algorithms (sorting, graph search, minimal spanning tree). Efficiency of such structures & algorithms compared via Big-O analysis. Students learn multi-threaded programming. Emphasis on defensive coding, and use of standard UNIX development tools in preparation for students' entry into real world software development jobs. Strong C programming skills required to enroll. Those without such skills should take Electrical and Computer Engineering 551D instead. Instructor consent required. Not open to students who have taken or are currently taking Electrical and Computer Engineering 551D.
ECE 784LA: Sound in the Sea: Introduction to Marine Bioacoustics
Fundamentals marine bioacoustics with focus on current literature and conservation issues. Topics include: intro acoustics; acoustic analysis methods and quantitative tools; production/recording of sound; ocean noise; propagation theory; active/passive acoustics; hearing, sound production and communication in marine organisms, potential impacts of anthropogenic noise; and regulation of marine sound. Lab focus on methodologies for generating, recording and analyzing marine sounds. Grad students responsible for additional acoustic analyses and results prep for student projects plus preparation additional lit review/critique. Taught in Beaufort at Duke Marine Lab.
ECE 891: Internship
Student gains practical electrical and computer engineering experience by taking a job in industry and writing a report about this experience. May be repeated with consent of the advisor and the director of graduate studies. A full-time internship is available to ECE graduate students if it allows them to gain practical experience in a work environment related to their academic training and enhances their overall academic experience and, for students on F-1 Visa, their employment prospects once they return to their home country. Requires prior consent from the student's advisor and from the director of graduate studies. Credit/no credit grading only.
ECE 899: Special Readings in Electrical and Computer Engineering
Special individual readings in a specified area of study in electrical engineering. Approval of director of graduate studies required.