Teaching


Present and Past Courses

Important Note: I do not have control over individual enrollment for any of my courses. If you need help adding a course, speak with your academic advisor (if you are an undergraduate) or your graduate program office (if you are a graduate student).

For a full list of courses I've taught, check out my CV.

IST 510: Computational Foundations of Informatics

This course provides the conceptual and theoretical foundations of informatics, with emphasis on the role of computational or algorithmic abstractions in artificial intelligence, cognitive and brain sciences, social, behavioral and economic sciences, life sciences, and the humanities. Concrete examples are used to illustrate how fundamental questions in each domain can be translated into algorithmic problems that can then be solved using concepts, methods, and tools of computer science. Students acquire an understanding of how to devise and study algorithmic abstractions of problems in artificial intelligence (e.g., learning and reasoning), cognitive sciences (relating brain activity to behavior), social sciences (rational behavior, collective decision making), life sciences (gene regulation), and the humanities (analysis of cultural artifacts). Upon completion of this course, students will have a understanding of the fundamental role and the utility of computational abstractions across a broad range of disciplines.

SRA 472: Integration of Privacy and Security

This undergraduate course introduces students to the major organizational, technical, operational, and regulatory issues in information privacy and security, and to give them experience in performing a privacy analysis, designing privacy-aware applications and developing privacy policy in organizations. Topics covered include: conceptualizations and theories of privacy and security, privacy laws and compliance, building a privacy organizational infrastructure, integrating privacy in the software development process, performing a privacy analysis, privacy issues in outsourcing and cross-border data transfers, integrating privacy into customer relationship management and vendor management, information systems audits, and intentional standards on privacy and security.

IST 110H: Introduction to Information, People And Technology

This undergraduate course introduces students to the landscape of IST, where information, people, and technology intersect. Uses for information technology are staggering in their richness and complexity: they include entertainment, social interaction, productivity, safety, finance, research, education, transportation, and nearly every sector of human activity. Students in this course examine how information technology interacts with our culture, and how those interactions will shape the future of information technology and our society. This course satisfies Penn State's first-year seminar requirement and also satisfies a GS General Education requirements for students not in IST.

PSU 17: First-Year Seminar for Data Science Majors

This course introduces students to the expectations of college and the landscape of data science. Uses for data science are staggering in their richness and complexity: they include entertainment, social interaction, productivity, safety, finance, research, education, transportation, and nearly every sector of human activity. Students in this course will gain an understanding of college expectations and resources, and they will critically explore applications of data science, with particular attention to their own interests and future goals.

IST 597 (section number varies): Natural Language Processing for Sentiment, Semantics, and Discourse

This is a graduate course on selected topics in natural language processing, covering sentiment analysis, computational semantics, and computational discourse. We explore each of these topics in a module that begins with background material and then changes over to recent research results. Students also work in groups on term projects, which I encourage them to submit for publication. (See my Final Project Hall of Fame below.)

To be prepared for this course, I recommend that students (1) have some prior experience with machine learning or natural language processing (either is fine) and (2) be comfortable with programming in Java or Python (e.g., familiar with the concepts in the first half of Python.org's Python tutorial).

11-411/11-611, CS 5134/6034: Natural Language Processing

I taught this course at Carnegie Mellon University in Spring 2014 and at the University of Cincinnati in Fall 2017.

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.

Teaching NLP at CMU

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 two of the top teams below.