Introduction to Blockchain Technologies

Course Description

This class teaches students about decentralized applications (DApps) and the blockchain technologies that power them.

The course is structured as four different parts. First, students will learn how to create decentralized applications and how to avoid common errors when building them. Second, we will investigate the blockchain networks that power DApps. This part covers the most important protocols that decentralized systems use to communicate and reach decisions. Third, the course will take an in-depth look at individual blockchain nodes. Here, students will find out how smart contracts are executed and how their data is stored. Finally, the lecture will cover interfaces between blockchains and between a blockchain and other systems.

Learning Goals

Similar to "Introduction to Operating Systems" (CS537), this class aims to give students a better understanding of computer systems. More concretely, the class has the following three learning goals.

  1. Learn how to write and deploy smart contracts
  2. Understand the current abilities and limitations of blockchain technologies
  3. Find out how to design distributed systems and their protocols


The final grade will be calculated as follows:


The course is targeted towards upper-level undergraduate students and graduate students. No prior knowledge of distributed systems or cryptography is expected, but you need to have taken CS537 or be in graduate standing.

#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.