Scala is a strongly typed, versatile programming language that has emerged as one of the de-facto languages in big data systems. Scala supports multiple programming paradigms, including familiar object-oriented programming (OOP) and functional programming (FP) techniques. This hands-on course covers types and data structures, build tools, functional programming concepts with higher-order functions, pattern matching, concurrency, and parallel processing. Popular libraries in the Scala ecosystem are introduced and applied. Students learn unit testing libraries and reinforce techniques taught in lectures by completing weekly programming assignments. Students apply their knowledge to develop batch processing applications in Apache Spark and stream processing applications in Apache Flink in the latter part of the course.