Couvre l'importance et les défis des systèmes d'exploitation, leur omniprésence, leur impact sur les programmes et leur rôle d'illusionnistes et d'arbitres.
Explore les défis de programmation, les techniques de débogage, les tests de logiciels et les pratiques de sécurité dans le développement de logiciels.
Introduit les fondamentaux de l'ingénierie logicielle, couvrant le traitement de l'instruction, les algorithmes, les langages de programmation, les abstractions, les tests, la sécurité et l'open source.
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.
Explique comment les systèmes d'exploitation créent l'illusion de ressources dédiées et infinies grâce à la virtualisation et à l'abstraction des processus.
Explore les types de fonctions implicites et leur application dans un système de gestion de séance de cours, en discutant du compromis entre les types et les termes dans les paramètres implicites.
Couvre les principes de programmation modulaire, en se concentrant sur la gestion de la complexité du projet grâce à la structuration efficace du code et à la gestion des dépendances.
Explore la conception de systèmes intermittents formellement corrects pour les plates-formes de calcul de bord extrême, mettant l'accent sur la justesse, la fiabilité et la sécurité.
Explore la synthèse automatique de la synchronisation correcte et efficace dans les programmes, en mettant l'accent sur la suppression de l'atomicité redondante et l'ajout de métadonnées de synchronisation.
Explore l'élégance et les défis des transactions, y compris les propriétés ACID et les avantages de la mémoire transactionnelle dans la programmation simultanée.