Courses

The listing of a course description here does not guarantee a course’s being offered in a particular term. Please refer to the published schedule of classes on the MyBU Student Portal for confirmation a class is actually being taught and for specific course meeting dates and times.

  • ENG EC 513: Computer Architecture
    Undergraduate Prerequisites: (ENGEC413) - Graduate Prerequisites: (ENGEC605) Or instructor consent - Computer architecture and design. Topics include computer arithmetic and ALU design; performance evaluation; instruction set design; CPU design, including pipelining, branch prediction, and speculative execution; memory hierarchy, including cache basics, cache design for performance, and virtual memory support; I/O, including devices, interfaces, specification, and modeling. Examples from high-end microprocessors and embedded systems.
  • ENG EC 516: Digital Signal Processing
    Undergraduate Prerequisites: (ENGEC401 & ENGEK381) - Advanced structures and techniques for digital signal processing and their properties in relation to application requirements such as real-time, low-bandwidth, and low-power operation. Optimal FIR filter design; time-dependent Fourier transform and filterbanks; Hilbert transform relations; cepstral analysis and deconvolution; parametric signal modeling; multidimensional signal processing; multirate signal processing.
  • ENG EC 517: Introduction to Information Theory
    Undergraduate Prerequisites: (ENGEK381) - Discrete memoryless stationary sources and channels; Information measures on discrete and continuous alphabets and their properties: entropy, conditional entropy, relative entropy, mutual information, differential entropy; Elementary constrained convex optimization; Fundamental information inequalities: data-processing, and Fano's; Block source coding with outage: weak law of large numbers, entropically typical sequences and typical sets, asymptotic equipartition property; Block channel coding with and without cost constraints: jointly typical sequences, channel capacity, random coding, Shannon's channel coding theorem, introduction to practical linear block codes; Rate-distortion theory: Shannon's block source coding theorem relative to a fidelity criterion; Source and channel coding for Gaussian sources and channels and parallel Gaussian sources and channels (water-filling and reverse water-filling); Shannon's source-channel separation theorem for point-to-point communication; Lossless data compression: Kraft's inequality, Shannon's lossless source coding theorem, variable-length source codes including Huffman, Shannon-Fano-Elias, and Arithmetic codes; Applications; Mini course-project.
  • ENG EC 518: Robot Learning
    Undergraduate Prerequisites: Multivariate Calculus (MA 225), Linear Algebra (EK 103), Probability (EK 381), and Programming (EK 128, Python experience is highly recommended), Machine Learning (EC 414). - This class will discuss recent developments in machine learning and perception for robotics. Specifically, we will study advanced concepts in perception and decision-making algorithms in order to provide theoretical and experimental frameworks for robot learning. Topics will include 3D vision, sensorimotor paradigms for perception and action, robot reinforcement learning, imitation learning, inverse reinforcement learning, exploration, options, model-based approaches, POMDP and human-machine and social interaction.
  • ENG EC 519: Speech Processing by Humans and Machines
    Undergraduate Prerequisites: (ENGEK381) ENGBE401 or ENGEC401 and MATLAB - Speech (naturally spoken) is the main mode of communication between humans. Speech technology aims at providing the means for speech-controlled man-machine interaction. The goal of this course is to provide the basic concepts and theories of speech production, speech perception, and speech signal processing. The course is organized in a manner that builds a strong foundation of basics, followed by a range of signal processing methods for representing and processing the speech signal. Same as ENG BE 519. Students may not receive credit for both.
  • ENG EC 520: Digital Image Processing and Communication
    Undergraduate Prerequisites: ENGEC401, ENGEK 125 and 381 - Review of signals and systems in multiple dimensions. Sampling of still images. Quantization of image intensities. Human visual system. Image color spaces. Image models and transformations. Image enhancement and restoration. Image analysis. Image compression fundamentals. Image compression standards (JPEG, JPEG-2000). Homework will include MATLAB assignments.
  • ENG EC 521: Cybersecurity
    Undergraduate Prerequisites: (ENGEC327) ; Undergraduate Corequisites: (ENGEC441) - Fundamentals of security related to computers and computer networks. Laws and ethics. Social engineering and psychology-based attacks. Information gathering, network mapping, service enumeration, and vulnerability scanning. Operating system security related to access control, exploits, and disk forensics. Shellcoding. Wired and wireless network security at the physical, network, and application layers. Theoretical lessons are augmented with case studies and demonstrative experimental labs.
  • ENG EC 522: Computational Optical Imaging
    Undergraduate Prerequisites: (ENGEK103 & ENGEK125 & ENGEC401) - Recent years have seen the growth of computational optical imaging - optical imaging systems that tightly integrate hardware and computation. The results are the emergence of many new imaging capabilities, such as 3D, super resolution, and extended depth of field. Computational optical imaging systems have a wide range of applications in consumer photography, scientific and biomedical imaging, microscopy, defense, security and remote sensing. This course looks at this new design approach as it is applied to modern optical imaging, with a focus on the tools and techniques at the convergence of physical optical modeling, and signal processing.
  • ENG EC 523: Deep Learning
    Feed-forward networks. Backpropagation. Training strategies for deep networks. Convolutional networks. Recurrent neural networks. Transformers. Diffusion Models. Deep unsupervised learning. Exposure to Pytorch and other modern programming tools. Other recent topics, time permitting. Same as CAS CS 523. Students may not receive credit for both.
  • ENG EC 524: Optimization Theory and Methods
    Undergraduate Prerequisites: (ENGEK103 OR CASMA142) - Introduction to optimization problems and algorithms emphasizing problem formulation, basic methodologies, and underlying mathematical structures. Classical optimization theory as well as recent advances in the field. Topics include modeling issues and formulations, simplex method, duality theory, sensitivity analysis, large-scale optimization, integer programming, interior-point methods, non-linear programming optimality conditions, gradient methods, and conjugate direction methods. Applications are considered; case studies included. Extensive paradigms from production planning and scheduling in manufacturing systems. Other illustrative applications include fleet management, air traffic flow management, optimal routing in communication networks, and optimal portfolio selection. Same as ENG EC 674, ENG SE 524, ENG SE 674. Students may not receive credit for both.
  • ENG EC 525: Optimization for Machine Learning
    Undergraduate Prerequisites: (ENGEC414 & ENGEK381 & ENGEK103) - Efficient algorithms to train large models on large datasets have been critical to the recent successes in machine learning and deep learning. This course will introduce students to both the theoretical principles behind such algorithms as well as practical implementation considerations. topics include convergence properties of first-order optimization technologies such as stochastic gradient descent, with particular focus on optimization problems with non-convex losses typically present in modern deep learning problems. After completing this course, students should be able to read, and understand optimization algorithms from literature as well as design and implement new optimization algorithms.
  • ENG EC 526: Parallel Programming for High Performance Computing
    The explosive advance in High Performance Computing (HPC) and advances in Big Data/Machine Learning and Cloud Computing now provides a fundamental tool in all scientific, engineering, and industrial advances. Software is massively parallel so parallel algorithms and distributed data structures are required. Examples will be drawn from FFTs, Dense and Sparse Linear Algebra, Structured and unstructured grids. Techniques will be drawn from real applications to simple physical systems using Multigrid Solvers, Molecular Dynamics, Monte Carlo Sampling and Finite Elements with a final student project and team presentation to explore one example in more detail. Coding exercises will be in C in the UNIX environment with parallelization using MPI message passing, OpenMP threads and QUDA for GPUs. Rapid prototypes and graphics may use scripting in Python or Mathematica.
  • ENG EC 527: High Performance Programming with Multicore and GPUs
    Considers theory and practice of hardware-aware programming. Key theme is obtaining a significant fraction of potential performance through knowledge of the underlying computing platform and how the platform interacts with programs. Studies architecture of, and programming methods for, contemporary high-performance processors. These include complex processor cores, multicore processors, and graphics processors. Laboratory component includes use and evaluation of programming methods on these processors through applications such as matrix operations and the Fast Fourier Transform.
  • ENG EC 528: Cloud Computing
    Undergraduate Prerequisites: (ENGEC327 & ENGEC330) Undergrads must have taken EC327 or equivalent and preferably another software course, EC330 or EC440, before taking this course. - Graduate Prerequisites: (ENGEC504) Graduate students must have taken a rigorous programming class recentl y, such as EC504 or equivalent (or have major software design experien ce in industry). - Fundamentals of cloud computing covering IaaS platforms, OpenStack, key Big Data platforms, and data center scale systems. Examines influential publications in cloud computing. Culminates in a group project supervised by a mentor from industry or academia. Same as CAS CS 528. Students may not receive credits for both.
  • ENG EC 530: Software Engineering Principles
    Undergraduate Prerequisites: (ENGEC602) ENG EC 602 or equivalent - This class was designed to bring the basic concepts of software engineering together and practice them in real life examples. We will focus on studying different concepts that the students have taken in different classes or were not exposed to that are necessary for their careers. Examples include continuous build and integration, Modular Design, API Design, Rest APIs, Application frameworks, Containers, and Multi-. The class follows a flipped classroom model. Outside of the classroom, the students: study concepts, read assigned papers and tutorials; work on homeworks, which is equivalent to what other classes consider projects.
  • ENG EC 531: Full-Stack Software at Scale
    Prerequisites ENGEC 327 or ENGEC 602: - Scaling software to many developers, modules, or machines requires a fundamentally different skill-set than writing short prototype code. Large groups of software engineers developing web or mobile applications, financial or healthcare systems, and even multiplayer games must synthesize a wide variety of elements at all layers of the software stack. This course addresses fundamental skills and experience needed for such software development within a modern multi-developer software development infrastructure. Through a variety of intensive programming projects in various languages and group sizes, students will learn about four core elements of software development at scale: design (writing future-oriented code for modularity, extensibility, interoperability), distribution (managing code across multiple processors), optimization (understanding the long-term effects of design and distribution on performance), and security (how all the previous elements influence the security and privacy of the overall system).
  • ENG EC 533: Advanced Discrete Mathematics
    Undergraduate Prerequisites: ENGEK103, CAS MA 142 or equivalent - Selected topics in discrete mathematics. Formal systems. Mathematical deduction. Logical concepts. Theorem proving. Sets, relations on sets, operations on sets. Functions, graphs, mathematical structures, morphisms, algebraic structures, semigroups, quotient groups, finite-state machines, their homomorphism, and simulation. Machines as recognizers, regular sets. Kleene theorem.
  • ENG EC 534: Discrete Stochastic Models
    Undergraduate Prerequisites: (ENGEK381 OR ENGEK500) - Markov chains, Chapman-Kolmogorov equation. Classification of states, limiting probabilities, Poisson process and its generalization, continuous-time Markov chains, queuing theory, reliability theory.
  • ENG EC 535: Introduction to Embedded Systems
    Prerequisites: Experience in C/C++ programming and Linux, ENGEC327 or EC605 or equivalent. ENGEC413, Computer Organization or equivalent . *Prior C or C++ programming knowledge is a hard requirement. Please discuss with the instructor if you have any questions. The growing popularity of modern embedded systems calls for a new generation of electrical and computer engineers who can easily cross the boundary between hardware and software. The course is designed to train such engineers by introducing students to an integrated view of software and hardware in designing embedded computer systems. The lectures will survey a broad array of subjects including system specification languages, embedded processors, memory architecture, communication architecture, real-time operating systems, scheduling, energy efficiency in hardware and software, hardware-software co-design techniques, debugging and verification techniques, and embedded systems security. The concepts will be reinforced with homework and project assignments that involve system design, modeling, and validation. The assignments will involve C/Linux programming, ARM/Linux-based evaluation boards, and optionally other microprocessor or FPGA-based boards.
  • ENG EC 541: Computer Communication Networks
    Undergraduate Prerequisites: (ENGEC441 & ENGEK381) - This is a graduate-level course on performance analysis of communication networks. The objective of the course is to introduce popular mathematical models of computer communications and analytical techniques to quantify critical performance issues. The emphasis is on recent developments that apply to modern communication networks. The course also features programming assignments in Python, involving the use of popular data science libraries.