Schedule: LIN353C introduction to computational linguistics


This schedule is subject to change.

Assignments are due right before class (12:30pm) on their due date unless noted otherwise.

Readings can be done either before or after class (unless noted otherwise); they are chosen to support the material covered in class.

Week 1: An introduction

  • Aug 29: Introduction, and a demo of some computational linguistics tasks and methods.

Week 2: Using rules to analyze individual words

  • Sep 3: Introduction to programming: Python basics
    • Reading: Think Python chapter 1 and chapter 2
      Warning: This online book uses Python 2, not Python 3. The main difference that you will see is that it uses print() without the (). This doesn't work in Python 3!

  • Sep 5: Morphology, finite state automata and finite state transducers
    • Taking words apart: What do "sing", "singing", "sings", "sang" have in common, and how do we describe what is different?
    • Reading: J&M ch. 2 second half, ch. 3, pp. 45-68

Week 3

Week 4: Rules again, this time to build dialog systems

Week 5: Machine learning

Week 6: Word sequences

  • Oct 3: Typical word sequences: Language models
    • Methods: Probabilistic approaches, n-grams
    • Reading: J&M ch. 4, pp 83-97
    • Demo: Language models in Python
    • In class: course project discussion. Bring your ideas!
    • Assignment 3 due

Week 7

  • Oct 8: Language models continued

Week 8

Week 9: Structure

  • Oct 22: More HMMs

Week 10

  • Oct 29: Describing the syntax of English with context-free grammars
    • Method: Context-free grammar
  • Oct 31: Automatic syntactic analysis: Parsing
    • Assignment 6 due

Week 11

  • Nov 5: Statistical parsing
  • Nov 7: The Chomsky hierarchy, or: how complex is human language?
    • Reading: J&M, ch. 16, pp 529-542
    • Assignment 7 due

Week 12: Meaning

  • Nov 14:  More word embeddings
    • Assignment 8 due

  • Nov 15 11:00 Computational Linguistics colloquium talk by Yoav Artzi

Week 13

  • Nov 19: Meaning and structure: semantic roles
  • Nov 21: Meaning and structure: semantic parsing

  • Nov 22 11:00 Computational Linguistics colloquium talk by Jacob Andreas

Week 14

  • Nov 28: Thanksgiving break

Week 15

Time per group: 5 minutes (plus one minute for changing between groups)

You can use the time as you wish. You can demo your system, you can use slides, or you can just talk about your project without slides. Do leave a bit of time for questions!

I used Python's random.shuffle() to make a random order of the groups. If you would like to switch places with another group, arrange for it with the other group, and let me know once it is settled.

  • Dec 3: Class project discussion

  • Dec 5: Class project discussion

  • Dec 6 11:00 Computational Linguistics colloquium talk by Dan Roth