Courses Taught

EECS 370: Introduction to Computer Organization
Winter 2015, Enrollment: 325
Basic concepts of computer organization and hardware. Instructions executed by a processor and how to use these instructions in simple assembly-language programs. Stored-program concept. Datapath and control for multiple implementations of a processor. Performance evaluation, pipelining, caches, virtual memory, input/output.
[ Website (current semester) ]
EECS 280: Programming and Introductory Data Structures
Fall 2016, Enrollment: 314
Techniques and algorithm development for effective programming, top-down analysis, structured programming, testing, and program correctness. Program language syntax and static and runtime semantics. Scope, procedure instantiation, recursion, abstract data types, and parameter passing methods. Structured data types, pointers, linked data structures, stacks, queues, arrays, records, and trees.
[ Website (current semester) ]
EECS 281: Data Structures and Algorithms
Winter 2017, Enrollment: 291
Introduction to algorithm analysis and O-notation; Fundamental data structures including lists, stacks, queues, priority queues, hash tables, binary trees, search trees, balanced trees and graphs; searching and sorting algorithms; recursive algorithms; basic graph algorithms; introduction to greedy algorithms and divide and conquer strategy.