Explore les limites impératives de la programmation, les théories sans mutation, les principes de programmation fonctionnelle et l'histoire des langages fonctionnels.
Couvre les expressions primitives, les processus d'évaluation, les applications de fonctions, les types et les stratégies d'évaluation dans la programmation.
Couvre l'abstraction de données en nombres rationnels, y compris la vue du client, l'auto-référence, les conditions préalables, les assertions, les constructeurs et les marqueurs de fin.
Couvre la façon dont les classes et les objets sont organisés en paquets, les importations, la hiérarchie des classes de Scala, les traits, les types supérieurs, le type Nothing, les exceptions et comprend un exercice sur la détermination de type.
Explore la décomposition dans la programmation en évaluant les expressions et en ajoutant de nouvelles formes, en mettant l'accent sur les solutions orientées objet et les compromis impliqués.
Couvre la décomposition fonctionnelle avec la correspondance des motifs dans Scala pour accéder aux données hétérogènes dans une hiérarchie de classes.
Couvre la syntaxe, les différences, les constructeurs, les opérations, les modèles, le tri et la complexité des listes dans la programmation fonctionnelle.
Explore les défis liés au sous-typage, aux génériques, aux limites de type, à la variance, à la covariance et à la saisie matricielle en Java et Scala.