Elements of ProgrammingCovers primitive expressions, evaluation processes, function applications, types, and evaluation strategies in programming.
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.
Enums: Pure DataCovers enums as a shorthand for case class hierarchies, focusing on modeling pure data.
Subtyping and GenericsExplores subtyping, generics, type bounds, variance, covariance, and array typing challenges in Java and Scala.
A Closer Look at ListsCovers list construction, methods, and implementations, including exercises and complexity analysis.