17 July 2020 on teaching
I have found the following tools very helpful. Some I have created, but all are free for UVA instructors. Most are free to everyone.
28 May 2020 on retrospective, algorithms, teaching
We have taught Algorithms pretty consistently over the past few years, adjusting the model to scale. The course relies heavily on and encourages student collaboration on homework assignments to better understand concepts and derive algorithms for new problems. The current version of the course focuses more heavily on describing algorithms and proving their runtime and correctness rather than their implementation or algorithms by example. To that end, the course has 10 homeworks, 7 type-written using LaTeX and 3 coding assignments. The written assignments require describing multiple algorithms (in English or pseudocode) and proving their runtime and correctness. The coding assignments require students to define, implement, and test their algorithms in either Java or Python, but we do not provide an autograding system or integrated testing environment. Our goal has been to entice students to design before implementation and to avoid a trial-and-error approach.