Examines current topics and issues associated with computing and software systems. Offered: AWSpS.
Functional programming (FP) is a programming paradigm that emphasizes the evaluation and application of functions, in contrast with the state-changing emphasis of imperative programming languages such as C and Java. FP's treatment of functions as first-class objects eliminates obscure state-changing effects, making programs that are often shorter and easier to understand than their imperative counterparts.
FP languages have been adopted by a variety of industries, ranging from the use of Erlang to create concurrent databases to Haskell which is employed in research and systems design. In this class we will learn the functional programming mindset via Scala, a modern general purpose language built on the JVM. Scala is object oriented and functional, thus scalable and elegant. Its use of the JVM makes it easy to integrate with Java and so it is starting to see widespread industry use. For example, Scala is used by companies such as Twitter, LinkedIn and Quora. After acquiring a good grasp of FP via Scala, we will also explore the different features present in other prominent FP languages used in industry.
Student learning goals
General method of instruction
This class will meet for two hours every Monday. It will be a mixture of interactive lectures and in-class exercises.
You should be able to program in an imperative language, such as C or Java. And you should also be comfortable with recursion.
Class assignments and grading
There will be a homework and/or programming assignment every week. There may also be some graded in-class activities. No exams.
60% for the programming assignments 25% for the homework assignments 15% for the in-class activities