- Style Guide: notes
- Cheat Sheet: link notes
- Scala Standard Library(2.13.6): link
- Structure and Interpretation of Computer Programs - Harold Abelson and Gerald J Sussman: book
- Programming in Scala - Martin Odersky: book
- Functional Programming Simplified - Alvin Alexander: book
- Scala for the Impatient - Cay S Horstmann: book
- Lecture 1.1 - Programming Paradigms: slides notes
- Lecture 1.2 - Elements of Programming: slides notes
- Lecture 1.3 - Evaluation Strategies and Termination: slides notes
- Lecture 1.4 - Conditionals and Value Definitions: slides notes
- Lecture 1.5 - Example: Square Roots with Newton's method: slides code
- Lecture 1.6 - Blocks and Lexical Scope: slides notes
- Lecture 1.7 - Tail Recursion: slides notes code
- Programming Assignment - Recursion: code
- Lecture 2.1 - Higher-order Functions: slides notes
- Lecture 2.2 - Currying: slides notes
- Lecture 2.3 - Example: Finding Fixed Points: slides code
- Lecture 2.4 - Scala Syntax Summary: slides notes
- Lecture 2.5 - Functions and Data: slides notes
- Lecture 2.6 - Data Abstraction: slides notes
- Lecture 2.7 - Evaluations and Operators: slides notes
- Programming Assignment - Functional Sets: code
- Lecture 3.1 - Class Hierarchies: slides notes code
- Lecture 3.2 - How Classes are Organised: slides notes
- Lecture 3.3 - Polymorphism: slides notes
- Lecture 3.4 - Objects Everywhere: slides notes code
- Lecture 3.5 - Functions as Objects: slides notes
- Programming Assignment - Object-Oriented Sets: code
- Lecture 4.1 - Decomposition: slides notes
- Lecture 4.2 - Pattern Matching: slides notes
- Lecture 4.3 - Lists: slides notes
- Lecture 4.4 - Enums: slides notes
- Lecture 4.5 - Subtyping and Generics: slides notes
- Lecture 4.6 - Variance: slides notes
- Programming Assignment - Huffman Coding: code
- Lecture 5.1 - A Closer Look at Lists: slides notes
- Lecture 5.2 - Tuples and Generic Methods: slides notes code
- Lecture 5.3 - Higher-order List Functions: slides notes
- Lecture 5.4 - Reduction of Lists: slides notes
- Lecture 5.5 - Reasoning about Lists: slides
- Lecture 6.1 - Other Collections: slides notes
- Lecture 6.2 - Combinatorial Search and For-Expresions: slides notes
- Lecture 6.3 - Combinatorial Search Example: slides notes code
- Lecture 6.4 - Maps: slides notes code
- Lecture 6.5 - Putting the Pieces Together: slides code
- Programming Assignment - Anagrams: code
- Problem 1 - Multiples of 3 or 5: code
- Problem 2 - Even Fibonacci numbers: code
- Problem 3 - Largest prime factor: code
- Problem 4 - Largest palindrome product: code
- Problem 5 - Smallest multiple: code
- Problem 6 - Sum square difference: code
- Problem 7 - 10001st prime: code
- Problem 8 - Largest product in a series: code
- Problem 9 - Special Pythagorean triplet: code
- Problem 10 - Summation of primes: code