Introduction to Computational Linguistics by Jason Baldridge.
From the webpage:
Advances in computational linguistics have not only led to industrial applications of language technology; they can also provide useful tools for linguistic investigations of large online collections of text and speech, or for the validation of linguistic theories.
Introduction to Computational Linguistics introduces the most important data structures and algorithmic techniques underlying computational linguistics: regular expressions and finite-state methods, categorial grammars and parsing, feature structures and unification, meaning representations and compositional semantics. The linguistic levels covered are morphology, syntax, and semantics. While the focus is on the symbolic basis underlying computational linguistics, a high-level overview of statistical techniques in computational linguistics will also be given. We will apply the techniques in actual programming exercises, using the programming language Scala. Practical programming techniques, tips and tricks, including version control systems, will also be discussed.
Jason has created a page of links, which includes a twelve part tutorial on Scala:
- Part 1: the Scala REPL, expressions, variables, basic types, simple functions, saving and running programs, comments
- Part 2: Tuples, Lists, methods on Lists and Strings
- Part 3: Conditional execution with if-else blocks and matching
- Part 4: Iterating, mapping, filtering and counting
- Part 5: Regular expressions and matching with them
- Part 6: Regular expression matching and substitution with the Regex API
- Part 7: Maps, Sets, groupBy, Options, flatten, flatMap
- Part 8: Word counting, scala.io.Source, file access, flatMap, mutable Maps
- Part 9: Objects, classes, inheritance, traits, Lists with multiple related types, apply
- Part 10: Scripting, compiling, main methods, return values of functions
- Part 11: SBT, scalabha, packages, build systems
- Part 12: Code blocks, coding style, closures, scala documentation project
If you want to walk through the course on your own, see the schedule.
Enjoy!