I am not currently teaching in any official capacity, but it is something that I enjoy very much. For that reason, I still keep my statement of teaching philosophy available here. I have spent many years as a teaching assistant for computer science classes, and I have been a private tutor for high school math, chemistry, and physics.
I taught (and continued to learn!) Haskell at previous jobs, but not in formal settings. Additionally, I taught some basic computer science and practical Python skills to a friend working in biological sciences, allowing him to write a script for identifying a select agent pathogen, ultimately leading to a peer-reviewed journal publication.
Yale University Teaching Fellow (2010-2014)
At Yale, I was a teaching fellow for the introductory programming course (CPSC201: Introduction to Programming) as well as my adviser’s computer music course (CPSC432: Computer Music: Sound Representation and Synthesis). Being a TA multiple times (five semesters for 201 and 2 semesters for 432) has helped me get into the rhythm of teaching, and as my experience grew, so too did my responsibilities. I have been in charge of grading and office hours, but I have also given multiple lectures (some of which I prepared myself) and helped develop coursework.
Yale’s online course evaluation form allows students to anonymously submit reviews of the courses they take. The following is a selected list of reviews that I have received as a teaching fellow at Yale:
Dan was a wonderful teaching fellow. His enthusiastic and thoughtful teaching style provided for some refreshing lectures when he subbed for [the professor]. He always brought a little extra to each lecture to hold our interest even after class ended.
He made difficult topics easy to understand and was always patient and engaging.
Wonderful, helpful man that would give you rich, descriptive answers to any question that you had. He would have no qualms about spending plenty of time to make sure that you actually understood the answer to your question, but was never verbose in his answers. To the point, but still capable of giving complete answers.
Very friendly, very helpful. He really helped to walk through the conceptual ideas rather than just looking at code.
Daniel is an impressive teacher and has a very good sense of what level students are at and how to structure explanations with that level in mind.
Daniel is awesome. He has a deep understanding of computer science and is excited to teach it or help you test your program without just giving you the answer. He encourages students to work through problems their own way, and helps you connect the code to the deeper concepts it reflects. Daniel made my semester much more enjoyable.
Brown University TA (2005-2007)
My teaching career started at Brown University as an undergraduate TA. I was a TA for six different courses, ranging from introductory courses to embedded and distributed systems to algorithm and programming language design. Work involved lots of grading, some course preparation, and one-on-one interaction with students during office hours. For two of those courses (CS160: embedded systems and CS173: Programming Languages), I was a Head TA, which put me in charge of the other TAs as well.