Teaching

Fall 2018: ENG EC330: Applied Algorithms for Engineers

  • Undergraduate course on algorithms.
  • Introduction to the general concept of algorithms. Efficiency and run-time of algorithms. Graph algorithms, priority queues, search trees. Various approaches to design of algorithms and data structures, together with their applications to numerical and non-numerical problems.

Fall 2017: ENG EC700: Computer-Aided Verification and Synthesis

  • Advanced graduate course on computer-aided verification and synthesis.
  • The topics covered include formal specifications, modeling formalisms, verification techniques, inductive synthesis, and emerging applications such as autonomous robots and vehicles. [syllabus]

Spring 2017: ENG EC535: Introduction to Embedded Systems

  • Graduate course on embedded systems.
  • The topics covered include system specification languages, embedded computer architecture, real-time operating systems, hardware-software co-design, modeling formalisms, verification techniques, and embedded system applications. [syllabus]

Fall 2016: ENG EC551: Advanced Digital Design with Verilog and FPGA

  • Graduate course on digital design and computer-aided design algorithms for FPGAs.
  • The topics covered include hardware description language (Verilog), specification, design, simulation, verification and synthesis of digital designs on FPGAs. [syllabus]