Skip to content

Latest commit

 

History

History
89 lines (69 loc) · 6.14 KB

index.md

File metadata and controls

89 lines (69 loc) · 6.14 KB

CS 498MC • Martian Computing

Neal Davis • Department of Computer Science • University of Illinois

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.

  • Understand the schematics and technical implementation of the Urbit OS kernel (Arvo and vanes).
  • Navigate and utilize the Urbit ID public-key infrastructure (Azimuth).
  • Program literately using the Hoon language, including source code conventions and interoperability.
  • Construct userspace apps to run on the Urbit OS platform (Gall, Landscape).

Since January 2022, I have been working with the Urbit Foundation to produce more up-to-date developer education resources. This course has largely been superseded by the Hoon School and App School guides. I will leave it up for historical documentation, but you shouldn't rely on any part of the presentation without checking contemporary developments.

Audience

My target audience for the course consists of graduate students and seniors in computer science and neighboring fields interested in sound computing and functional operating system design (functional-as-in-language). The course assumes an interest in functional programming but no specific experience.

Resources

What When and Where
Instructor email cs498mcadmin@illinois.edu
Class URL go.illinois.edu/cs498mc
Class forum ~magbel/martian-computing

Access

The use of Urbit requires an Urbit ID. You can 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.

Agenda

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.

Wk Date Number Lecture Lab MP
0 08/26 00 Prospectus
08/28 01 Dojo
1 08/31 02 Azimuth I
09/02 03 Generators
09/04 04 Auras
2 09/09 05 Syntax
09/11 06 Cores mp0
3 09/14 07 %say Generators
09/16 08 Subject-Oriented Programming
09/18 09 Clay I
4 09/21 10 Libraries
09/23 11 Ford I
09/25 12 Debugging Hoon mp1
5 09/28 13 %ask Generators
09/30 14 Types & Molds
10/02 15 Standard Library
6 10/05 16 Common Containers
10/07 17 Gall I
10/09 18 Kernel (Chat with ~rovnys-ricfer) mp2
7 10/12 19 Data & Text Parsing
10/14 20 Ames
10/16 21 Behn
8 10/19 22 Clay II
10/21 23 Polymorphism
10/23 24 Urbit Foundation (Chat with ~wolref-podlex) mp3
9 10/26 25 Gall II
10/28 26 Gall III
10/30 27 Buffer
10 11/02 28 Eyre & Iris
11/04 29 Gall IV
11/06 30 Boot Process mp4
11 11/09 31 CLI
11/11 32 Arvo I
11/13 33 Hoon I
12 11/16 34 Hoon II
11/18 35 Vere I
11/20 36 Vere II mp5
13 11/30 37 Arvo II
12/02 38 Nock I
12/04 39 Nock II
14 12/07 40 Azimuth II
12/09 41 Final Thoughts
12/11 mp6