Since beginning to teach in CS UMD in Summer 2016, I have been in charge of the following two courses:
- CMSC250, Discrete Structures: A Discrete Mathematics course tuned for Computer Scientists. We cover elements of propositional and predicate logic, set theory, a lot of induction, combinatorics, relations and functions, countability.
- CMS420, Advanced Data Structures: This course examines data structures beyond the “classic” lists, queues, stacks, binary trees. We cover self-balancing binary trees, several different hash tables, data structures for strings such as tries and the Huffman and LZW algorithms, spatial data structures like KD-Trees, QuadTrees, R-Trees, and elective subjects with time permitting (Binomial and Fibonacci queues, LSH, MinHash, “Up”-trees, etc. The idea of amortized complexity is introduced and different data structures are compared in very fine terms such as hidden constants in the “big-Oh” characterization, cache locality, distributed performance, hard vs soft deletion, tail-recursive implementations, etc
I also consider myself suitable for teaching courses on Intro to OOP, Algorithms, Machine Learning and Image Processing.