Experiences

TA Work

As a TA, my workload largely consists of grading, office hours, and answering emails. I did give some guest lectures when the instructor was absent, as well as some supplementary presentations. See the "contact" tab for a useful rant on communicating with TAs.

Workshop Leader

I was a workshop leader for 5 semesters at my undergraduate institute, the University of Rochester. Workshops were adapted from the NSF-developed peer-lead-team-learning idea. As both a student and a workshop leader, I found them to be extremely educative.

Useful Links

This is a collection of papers I found quite illuminating.

Here is a really nice way of thinking about dynamic programming which I think is quite accessible to undergraduates.

From bopping about the internet, the original paper introducing skip lists is perhaps slightly more complex than a textbook's treatment, but substantively simpler than Wikipedia's somewhat scattered summary.

Expositions:

Occasionally I am compelled to try to write my own explanation of some concept for the benefit of undergraduates.

FFT

Most FFT expositions seem to focus on the nature of a Fourier transform and such. But there seems to be a dearth of purely-algorithmic explanations of the FFT, for people without a background in signal processing. Hence, my exposition: pdf. Feedback appreciated, and I really must ask you let me know if there are any errors. Oh, and let me know if you found it useful! It would make my day.

RSA

The RSA algorithm is a really cool encryption scheme, and covered in a standard algorithms textbook almost first-thing. On the other hand, in CLRS it is saved towards the end. Regardless! I remember when I first "learned" the scheme I was overwhelmed by the modular arithmetic portion. So motivated, this exposition is an attempt to provide the bare minimum of modular arithmetic understanding to see the RSA proof through. It is the "skeleton" of understanding, if you will.

CYK

A really cool algorithm that seems to have fallen out of favor is the CYK algorithm. You may know context-free grammars from Sipser's textbook. There is the question of "given a grammar G, in Chomsky Normal Form, and a string s of length n, does G generate s?". This algorithm answers that question in time O(n^3). Moreover, the algorithm itself is exceedingly clever, and I want more people to know about it. Hence, my exposition: pdf. Feedback appreciated, and I really must ask you let me know if there are any errors. Please let me know if you find if this (or the code, perhaps available upon request) is useful! It is always quite rewarding to hear someone likes my work.