Teaching Experience

I have been a Teaching Assisstant for more than 7 years at the ECE department ranging from under-graduate courses to graduate courses. I have also independently tutored when I was away on study-abroad; some of the reviews for the same are here. I have TAed for the following course:

  • ECE 506 Architecture Of Parallel Computers
    • A graduate course that highlights taxonomy of parallel computer architecture, and programming models for parallel architectures. Shared-memory vs. distributed-memory architectures. Correctness and performance issues. Cache coherence and memory consistency. Bus-based and scalable directory-based multiprocessors. Interconnection-network topologies and switch design.
    • Sample HWs created: HW2 sol-Q2 HW3
    • Sample project created: Proj2
  • ECE 563 Microprocessor Architecture
    • A graduate level course for architecture of microprocessors. Performance measurement, ISA, cache hierarchies, pipelining, hazards, branch prediction, static and dynamic scheduling, ILP, superscalar, and VLIW concepts.
  • ECE 566 Compiler Optimization and Scheduling
    • Graduate level course that provides insight into current compiler design. Introduce basic concepts in scanning and parsing. Investigate in depth program representation, dataflow analysis, scalar optimization, memory disambiguation, and interprocedural optimizations. Examine hardware/software tade-offs in the design of high performance processors, in particular VLIW versus dynamically scheduled architectures.
  • ECE 309 Data Structures and Object-Oriented Programming
    • Advanced programming topics focusing on data structures and object-oriented programming. Common data structures, including linked lists, hash tables, trees and  graphs are described, analyzed, and implemented. Object-oriented programming topics, classes, inheritance, polymorphism, etc are described and applied to program design.
  • ECE 212 Fundamentals of Logic Design
    • Introduction to digital logic design- boolean algebra, K-maps, modular combinational circuit design, latches, flip-flops, finite state machines, synchronous sequential circuit design etc.
  • ECE 109 Introduction to Computer Systems
    • a freshmen course with introduction to digital logic, microprocessor design, introduction to assembly (LC-3).