Elements of ProgrammingCovers primitive expressions, evaluation processes, function applications, types, and evaluation strategies in programming.
Tail RecursionCovers tail recursion, optimizing functions in Scala for iterative processes and providing examples like tail-recursive factorial.
Functions and DataCovers the implementation of rational arithmetic using functions to encapsulate data structures.
Data Abstraction: Rational NumbersCovers data abstraction in rational numbers, including client's view, self-reference, preconditions, assertions, constructors, and end markers.
Class HierarchiesCovers abstract classes, class extensions, object definitions, companion objects, and dynamic binding in Scala.
How Classes are OrganizedCovers how classes and objects are organized in packages, imports, Scala's class hierarchy, traits, top types, the Nothing type, exceptions, and includes an exercise on type determination.
Polymorphism: Cons-ListsCovers the concept of polymorphism in programming and the implementation of immutable linked lists in Scala.
Objects EverywhereCovers pure object orientation, standard classes in Scala, Boolean implementation, and exercises on class implementations.
Functions as ObjectsCovers the expansion of function values and calls, and the relationship between functions and methods.
Decomposition: Evaluation and New FormsExplores decomposition in programming through evaluating expressions and adding new forms, emphasizing object-oriented solutions and the trade-offs involved.