My goal is to help students become proficient programmers, caring collaborators, and happy human beings. That list is in ascending order of importance, but descending order with respect to my qualifications. That said, I’ll do what I can.
In past research, I’ve focused on programming language design, especially functional programming and type systems. I’m still interested in how programming language technology can help make all kinds of programmers’ lives better.
CS 3/496: Systems Programming in Rust | Sp21, Wi20, Sp19, Sp18 |
CS 211: Fundamentals of Computer Programming II | Sp21, Wi21, Fa20, Sp20, Wi20, Wi19, Wi18, Wi17 |
CS 214: Data Structures | Fa19, Fa18, Fa17, Fa16, Fa15 |
CS 295: Intensive Program Design | Fa20, Fa19, Fa18, Fa17, Fa16, Fa15 |
EECS 111: Fundamentals of Computer Programming I | Sp19, Sp18, Sp17, Sp16 |
EECS 230: Programming for Engineers | Wi19, Wi18, Wi17, Sp16, Wi16 |
EECS 3/496: Type Systems | Wi18 |
EECS 3/495: Concurrent Programming in Rust | Sp17, Wi16 |
CS 3500: Object-Oriented Design* | Su15, Sp15, Fa14 |
CS 4620: Building Extensible Systems* | Sp15 |
CS 51: Introduction to Computer Science II† | Sp14 |
CS 2500: Fundamentals of C.S. I* | Sp10 |
CS G-262: Compilers* | Sp08 |
* | Northeastern |
---|---|
† | Harvard |
GitHub: @tov
LaTeX packages (plstx, pfsteps, ottalt, . . .) | Includes packages for typesetting grammars, writing proofs with numbered steps and justifications, formatting Ott output, and list processing |
libffi-rs | Rust bindings for libffi, for calling Rust closures from C via a single function pointer |
min-max-heap-rs | A double-ended priority queue in Rust |
succinct-rs | Succinct data structures in Rust |
Data.Function.Memoize |
Haskell library that uses lazy tries for memoization, avoiding
the need for unsafePerformIO .
|
affine-contracts | Contracts for one-shot functions and one-use values in PLT Racket |
Caml-Shcaml | UNIX shell programming in OCaml |
Last update: Sun, 21 Nov 2021 17:18:59 -0600