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 I use to teach 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.
Set of six programming projects (Straight-line Programs, Control Flow Programs, Mozart Waltz Generator, RSA Cryptosystem, Atomic Nature of Matter, and Markov Model), including writeups with implementation hints, solutions, and Gradescope-compatible docker images for autograding student submissions. The last four out of the six projects have been adapted from the Creative Programming Assignments website at Princeton University. If you are an instructor and would like to use any of these assignments in your course, please email me at siyer@cs.umb.edu, and I will be happy to share the material with you.
Programs I use to teach 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) and the code.
Programs I use to teach a course on data structures and algorithms: 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) and the code.
Data structures and algorithms discussed in the book: the API (PDF | JavaDoc) and the code.
Set of six programming projects (Percolation, Deques and Randomized Queues, Autocomplete, 8 Puzzle, KdTrees, and WordNet), including writeups with implementation hints, solutions, and Gradescope-compatible docker images for autograding student submissions. The projects have been adapted from the Creative Programming Assignments website at Princeton University. The autograder for the projects was developed by one of my students, James Michaud. If you are an instructor and would like to use any of these assignments in your course, please email me at siyer@cs.umb.edu, and I will be happy to share the material with you.
Companion website for the Introduction to Compiler Construction in a Java World book I have co-authored with Bill Campbell and Bahar Akbal-Delibaş.
The compiler (called j–) that accompanies the book (GitHub Page | JavaDoc | Code Listing).