CS839: Blockchains and Decentralized Applications

Course Description

Beyond all the hype around decentralized applications and blockchains, Bitcoin, Ethereum, and other cryptocurrencies have opened new areas of research in systems, cryptography, and economics.

This paper-reading course will examine the design and implementation of decentralized systems. Students will not only learn the fundamentals of cryptocurrencies, but also judge protocols and systems on their technical merit -- an essential skill to navigate this crowded space. While the class aims to cover a broad range of topics, emphasis will be given to those relating to distributed systems. This is particularly interesting as blockchains operate under different failure and trust assumptions as “conventional” distributed systems.

Lectures will be mostly discussion-based and each student is expected to provide detailed notes for at least one lecture in written form. Instead of a final exam, students are expected to work on an independent project of their choice throughout the semester.

#include <all>

We strive to make this class a respectful, safe, and welcoming to students of all backgrounds. You and your peers should always feel free and comfortable enough to ask questions: asking and pondering questions is how we learn. Please commit to helping create a climate where we treat everyone with dignity and respect.

Do not hesitate to let the instructor know in case someone or something made you uncomfortable. Suggestions on how to make the class more accessible are also always welcome. You can also leave an anonymous comment here.

Prerequisites

You should have a basic understanding of distributed systems, concurrent programming, and computer networks before taking this class. Ideally, you have taken a course like CS537. If not, please contact the instructor, so we can figure out if you're a good fit.

This course does not expect you to have prior knowledge of cryptography or economics. We will only cover those topics on a surface level.

Notes

The class aims to collect notes for each lecture that students can later use to review the course.

Lecture notes should be at least two pages of text written up in LaTeX. Students can additionally include any number of figures to this write-up.

Projects

Up to three students can collectively work on a project. At the end of the class, they will hand in a project report that should resemble (the first half) of a research paper. To achieve this, they first will identify an interesting problem (or desirable new feature) in the blockchain space and investigate potential ways to resolve (or implement) it.

Towards the end of the class, project groups will have the option to meet regularly with the instructor to gather necessary feedback. In addition to the project report, students will also present their results in the final session of the class.

Grading

The final grade will be calculated as follows.

Logistics