Throughout my student life I had the good fortune of being taught by some exceptional teachers. I not only learned a lot from them, but also developed a keen interest in sharing my knowledge — however little that may be — with others the way in which my instructors did. The great physicist Richard Feynman once remarked, ‘‘I find that teaching and the students keep life going, and I would never accept any position in which somebody has invented a happy situation for me where I don’t have to teach. Never.’’ I feel exactly the same way about teaching.
Programs for teaching an introductory course on programming in Python, as a VSCode project. Most of the programs are from Introduction to Programming in Python: An Interdisciplinary Approach by Robert Sedgewick, Kevin Wayne, and Robert Dondero.
Supporting libraries: the API and the code as a VSCode project.
Programs for teaching an introductory course on programming in Java, as a VSCode project. Most of the programs are from Computer Science: An Interdisciplinary Approach by Robert Sedgewick and Kevin Wayne.
Supporting libraries: the API, the jar file (compiled using OpenJDK 21), and the code as a VSCode project.
Programs for teaching a course on data structures and algorithms in Java, as a VSCode project. Most of the programs are from Algorithms by Robert Sedgewick and Kevin Wayne.
Supporting libraries: the API, the jar file (compiled using OpenJDK 21), and the code as a VSCode project.
The API for the data structures and algorithms and the jar file (compiled using OpenJDK 21).
Marvin: a hypothetical register-based machine designed for teaching purposes. (GitHub)
j--: a compiler (written in Java) for a language called j-- and targeting the stack-based Java Virtual Machine. (GitHub)
iota: a compiler (also written in Java) for a language called iota and targeting the register-based Marvin machine. (GitHub)