I have finished my 2-year sabbatical/leave-of-absence at Google Tel-Aviv and am returning full time to the School of CSE and the Center of Rationality at the Hebrew University of Jerusalem. This year I am teaching three courses, of which two are on Algorithmic Game Theory, jointly with Michal Feldman:
- In the first semester — that starts in two weeks — Michal and me are teaching a course titled (somewhat arbitrarily) “Topics on the border of computation and economics” which will focus mostly on (1) hardness of reaching equilibrium and (2) inefficiency of equilibrium, i.e. basically parts I & III of the AGT book. Some of the non-standard choices we are making are to take a deliberately wide view of the types of equilibrium studied (including correlated equilibrium, various notions of coalition-proof, sink-equilibria), and to focus on pure strategies for the first part of the course (these suffice to demonstrate clearly several issues: convergence and its speed (PLS), price of anarchy and stability, strong equilibrium, congestion/potential games, network creation games.)
- In the second semester, Michal and me are teaching a course titled (again, arbitrarily) Computational topics in game theory, this one devoted to algorithmic mechanism design and electronic auctions, i.e. basically part II of the AGT book.
- I am also teaching in the second semester a highly applied undergraduate course titled From Nand to Tetris which is based on a book The elements of computing systems that I wrote with Shimon Schocken. The idea is to have the students build, in a single semester, a complete working computer, starting with the lowest hardware levels (a Nand gate), going through a CPU, an assembler, a virtual machine, a compiler, a (wannabe)-OS, and ending with a working application (such as Tetris). The point is that everything is actually constructed by the students (hardware that is simulated using a hardware description language, and software that actually runs).