Teaching


Current Information

For students interested in CS 5134/6034 (Natural Language Processing):

This course introduces students to methods that enable computers to extract structure and meaning from human languages. It covers topics such as (but not limited to) morphology, language modeling, syntactic parsing, sentiment analysis, meaning representations, dialogue systems, question answering, and machine translation.

Proficiency in Python and/or Java is a prerequisite for this course.

For students interested in CS 7052 (Advanced Topics in Natural Language Processing):

The course is split into three modules of roughly equal length, covering sentiment analysis, computational semantics, and computational discourse. I spend roughly a third of each unit teaching background material, and the rest of the unit is seminar-style, with students presenting papers from published literature and leading discussions on them.

Proficiency in Python and/or Java is a prerequisite for this course.

Selected Previous Courses

In spring 2015 I co-taught Carnegie Mellon University's 11-411/611 Natural Language Processing with Chris Dyer and Alan Black.

The course included a semester-long project to build question answering and question generation systems that operate on Wikipedia articles. Students worked in small teams of three to five, and they competed to produce the best-performing systems. You can watch the final reports from the top three teams below.

I can provide a statement of teaching philosophy and teaching references upon request.