Skip to main content
Computational Linguistics - CIS 530 (Spring 2020)
This course provides an overview of the field of natural language processing. The goal of the field is to build technologies that will allow machines to understand human langauges. Applications include machine translation, automatic summarization, question answering systems, and dialog systems. NLP is used in technologies like Amazon Alexa and Google Translate.

Interactive Fiction and Text Generation - CIS 700-008 (Spring 2020) - co-taught with Daphne Ippolito. This is a special topics course that will be offered only once.
How can natural language processing be used to develop interactive and creative text applications? We will first cover text adventure games, which are interesting for artificial intelligence research since to succeed at a such games an AI agent needs to understand language, perform common-sense reasoning, and interact with objects in a constrained world. We cover approaches to interpreting user input via a natural language understanding component called the “parser”. We will discuss various strategies for representing a world and modeling how it changes based on user interaction. Next, we will also cover topics like common-sense reasoning tasks, and extracting of narrative structure from stories. Finally, we will discuss natural language generation, both in the context of dialog agents and story generation. We will touch upon human-computer interaction, biases in language models, and other topics.

Artificial Intelligence - CIS 421/521 (Fall 2019)
How can computers reason and act in the world? In this course we will cover a range of topics in Artificial Intelligence from classical topics like search, constraint satifaction problems, and games, and contemporary topics like neural networks, computer vision, and natural language processing. Programming assignments in Python.

Crowdsourcing and Human Computation - NETS 213 (Spring 2019)
Crowdsourcing and human computation are emerging fields that sit squarely at the intersection of economics and computer science. They examine how people can be used to solve complex tasks that are currently beyond the capabilities of artificial intelligence algorithms. Online marketplaces like Mechanical Turk provide an infrastructure that allows micropayments to be given to people in return for completing human intelligence tasks. This opens up previously unthinkable possibilities like people being used as function calls in software. We will investigate how crowdsourcing can be used for computer science applications like machine learning, next-generation interfaces, and data mining. Beyond these computer science aspects, we will also delve into topics like prediction markets, how businesses can capitalize on collective intelligence, and the fundamental principles that underly democracy and other group decision-making processes.

Past Courses

Data Structures and Algorithms - CIS 121
This course introduces undergraduates to the fundamental algorithms and data structures that are used in the field of computer science. We introduce methods for analyzing the complexity of an algorithm and predicting the running time of software. We describe data structures like stacks, queues, lists, trees, priority queues, maps, hash tables and graphs, and we discuss how to implement them efficiently and how to use them effectively in software. Course assignments include of weekly homeworks consisting of problem sets and programming exercises in Java, and a larger term project. This course has an enrollment of 250 students.

Machine Translation - CIS 526
Google translate can instantly translate between any pair of over fifty human languages (for instance, from French to English). How does it do that? Why does it make the errors that it does? And how can you build something better? Modern translation systems like Google Translate and Bing Translator learn how to translate by reading millions of words of already translated text, and this course will show you how they work. The course covers a diverse set of fundamental building blocks from linguistics, machine learning, algorithms, data structures, and formal language theory, along with their application to a real and difficult problem in artificial intelligence.

Can computers reason like humans?