This course introduces object-oriented and functional programming in the new programming language Kotlin. Kotlin runs on multiple platforms and virtually anywhere, compiling to native code, JavaScript, the Android runtime, and the Java Virtual Machine. It easily interacts with other Java code. Through this course, you’ll become adept at Kotlin programming, an easier-to-use, safer and more productive language than Java. We’ll cover the basics of the language, including data types, functions and collections, object-oriented features such as classes, encapsulation, inheritance, composition, delegation and generics, and functional features such as immutability, higher-order functions and functional chaining. You’ll learn how to create multi-threaded applications using coroutines and builders that will simplify the use of your libraries using simple Domain-Specific languages. Students will build several projects in Kotlin.Pre-requisites: Competence in a procedural language (such as C, Pascal, or Visual Basic) or object-oriented language (such as Java or C++). Note that this is not an “introduction to programming” class and cannot substitute for 605.201; we assume familiarity with programming in general.
Course prerequisite(s): 
Foundation Prerequisites for Cybersecurity Majors:EN.605.621 AND EN.695.601 AND EN.695.641
Course instructor(s) :