martian-computing

CS 498MC Martian Computing at the University of Illinois at Urbana–Champaign

View the Project on GitHub davis68/martian-computing

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.

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