Efficient Linear Algebra and Machine Learning for CL

Introduction

Computational linguists deal with increasingly large data sets and computationally-intensive machine learning techniques. For example, web corpora and deep learning have changed the computational linguistics landscape in the last decade. Coping with these changes not only requires the development of new algorithms and data structures, but also a renewed focus on efficiently implementing core data structure and algorithms.

This Hauptseminar will introduce the Rust programming language. Rust is a safe, low-level programming language that was started by Mozilla Research. Rust allows a programmer to write efficient code with fine-grained control over memory layout. However, in contrast to many other low-level languages, Rust’s safety features preclude many types of bugs. Even though Rust is a low-level language, it provides many conveniences of high-level languages (such as Python, Ruby, and Haskell) through zero-cost abstractions, including algebraic data types, traits, and operator overloading.

This course provides a comprehensive introduction to Rust, covering everything from the basics to advanced topics. Throughout the course, we will implement, benchmark, and discuss interesting data structures and algorithms from computational linguistics, linear algebra, and machine learning to practice Rust. After successfully completing the course, you will be able to implement CL projects in Rust with an eye to efficiently.

Practical information

Lectures Tuesday 14:15-16:00, Thursday 14:15-16:00, 0.01
First lecture April 17, 2018
Lecturer Daniël de Kok <daniel.de-kok@uni-tuebingen.de>
Credits 6 CP (9 CP may be a possibility after discussion with the lecturer)
Syllabus Get it!

Literature

Programming Rust. Fast, Safe Systems Development, Jim Blandy, Jason Orendorff, O’Reilly Media, 2017 (Book access through the library)