  We report on a half-semester course focused around implementation of type
systems in programming languages. The course assumes basics of classical
compiler construction, in particular, the abstract syntax representation, the
Visitor pattern, and parsing. The course is built around a language Stella with
a minimalistic core and a set of small extensions, covering algebraic data
types, references, exceptions, exhaustive pattern matching, subtyping,
recursive types, universal polymorphism, and type reconstruction. Optionally,
an implementation of an interpreter and a compiler is offered to the students.
To facilitate fast development and variety of implementation languages we rely
on the BNF Converter tool and provide templates for the students in multiple
languages. Finally, we report some results of teaching based on students'
achievements.
