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 PDF and as a PyCharm project. Most of the programs are from the book Introduction to Programming in Python: An Interdisciplinary Approach by Robert Sedgewick, Kevin Wayne, and Robert Dondero.
Supporting libraries and data types used throughout the book: the API and the code as a PyCharm project.
Programs for teaching an introductory course on programming in Java: as a PDF and as an IntelliJ project. Most of the programs are from the book Computer Science: An Interdisciplinary Approach by Robert Sedgewick and Kevin Wayne.
Supporting libraries and data types used throughout the book: the API (PDF | JavaDoc), the binaries as a jar file (compiled using OpenJDK 21), and the code as an IntelliJ project.
Programs for teaching a course on data structures and algorithms in Java: as a PDF and as an IntelliJ project. Most of the programs are from the book Algorithms by Robert Sedgewick and Kevin Wayne.
Supporting libraries and data types used throughout the book: the API (PDF | JavaDoc), the binaries as a jar file (compiled using OpenJDK 21), and the code as an IntelliJ project.
Data structures and algorithms discussed in the book: the API (PDF | JavaDoc) and the binaries as a 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)