The underlying infrastructure of modern networked computing—namely Unix and its derivatives—is approaching fifty years of age. What will come to replace it? A strong competitor is the clean-slate “operating function” approach of Urbit. Jocosely branded as “computing for Martians,” Urbit provides a fresh and updated vision of what Internet computing could come to look like in future years. Featuring end-to-end encryption and true peer-to-peer routing built on a network-first operating system, Urbit fosters decentralized digital societies and stable user identities.
Our primary objectives in this course are for you to be able to explain and navigate the technical layout of Urbit, as well as construct novel applications for Arvo, the Urbit operating function, using the Hoon programming language.
My target audience for the course consists of graduate students in computer science and neighboring fields interested in sound computing and functional operating system design (functional-as-in-language). (Seniors are welcome to email me and apply as well.) The course assumes an interest in functional programming but no specific experience.
|What||When and Where|
|Discussions||Wed/Fri 14h00–15h15 • Online (active discussion)|
|Labs/Office hours||Mon 14h00–14h50 • Online by appointment|
The use of Urbit requires an Urbit ID. While I intend to arrange for students participating in the course to obtain an Urbit ID as part of their enrollment, you can also purchase an ID on a third-party site like urbit.live or OpenSea. You can also use a transient ID (called a "comet") as a permanent ID; these are free and can be generated on your own machine.
Lessons focus on conceptual or architectural aspects of Urbit, including technical discussions of Urbit’s behavior and internals. Labs are hands-on tutorials to familiarize students with operations and language features.
|09/30||14||Types & Molds|
|7||10/12||19||Data & Text Parsing|
|9||10/26||25||Gall II State|
|10/28||26||Gall III Landscape|
|10||11/02||28||Eyre & Iris|
||Write naked generators.|
||Write basic Gall apps.|
||Write intermediate Gall apps.|
||Produce a Landscape tile for a Gall app.|
||Interpret Nock code.|
||A proposed scoped project, such as writing a jet. (See below.)|
As this is a graduate course, we expect but do not promise that you will get an A in the course. Assignments are simply graded pass/fail with feedback but can be resubmitted if necessary. (Read "completion" in the table below as receiving a passing grade.)
There is no final exam; the bonus project, if elected, is due by the end of finals week.
Bonus Project. To obtain an A+ in the course, you must meet the requirements for an A and complete a specific scoped project. This project should be proposed to the instructor and worked on with frequent feedback from him.