- EECS 301 (Probabilistic Methods in Engineering) W ’18, W ’19, W ’20.
- This course covers basic concepts of probability theory and random processes. Subjects include: set theory, axioms of probability, basic principles of counting, conditional probability, independence, discrete and continuous random variables, functions of random variables, probability distribution functions, joint and conditional distribution, expectation, law of large numbers, introduction to discrete and continuous random processes, power spectral density.

- EECS 501 (Probability and Random Processes) F’ 20.
- This course is an introductory graduate-level course covering the theory of probability and random processes. Topics include : basic concepts of probability and Sigma fields, conditional probability and Bayes’ rule, random variables, probability distributions and densities, moments, jointly distributed random variables, moment generating functions, Gaussian random vectors, estimation and prediction, definition of a stochastic process, limit theorems, convergence of sequences of random variables, Poisson process, wide sense stationarity, power spectral density, ergodicity, filtering of random processes, Markov chains.

- EECS 554 (Introduction to Digital Communication and Coding), F ’17, F ’19, F’ 20, F’ 21.
- This is an introduction to fundamentals of communication theory and what is used in current wireless systems. The emphasis is on modulation techniques and the system design of optimal receivers for digital communication, as well as studying the performance evaluation in wireless systems. Furthermore, basic techniques for source and channel coding are presented.

- EECS 650 (Channel Coding Theory) , W’ 17, F ’18.
- In the first part of this course, we cover some required background to study linear binary block codes and algebraic codes over finite fields. In particular, some of the well-known classical codes such as Reed-Solomon codes and BCH codes are studied. In the second part of the course, we study some essential aspects of modern codes such as turbo codes and LDPC codes. In the third part of the course, we study polar codes and channel polarization together with practical aspects of their implementation.