Teaching Programming Languages with Scala