Decentralized blockchain-based systems, such as Bitcoin and Ethereum, are successful beyond all expectations. Although still in their infancy, they promise to revolutionize how we think of financial, information, and other infrastructures. This course covers the technical aspects of public distributed ledgers, blockchain systems, cryptocurrencies, and smart contracts. Students will learn how these systems are built, how to interact with them, how to design and build secure distributed applications.
Pre-Requisite/ Co-requisite/ Mutually Exclusive Subject(s)
The course assumes a basic familiarity with computer programming and knowledge of the Python language.
- 50.004 Introduction to Algorithms
- 50.005 Computer System Engineering
- 50.012 Networks, 50.020 Security, and 50.043 Database and Big Data are helpful but not required. Needed concepts will be introduced during the class
By the end of the course, students will be able to
- Understand how blockchain systems (mainly Bitcoin and Ethereum) work,
- To securely interact with them,
- Design, build, and deploy smart contracts and distributed applications,
- Integrate ideas from blockchain technology into their own projects.
- Explain design principles of Bitcoin and Ethereum.
- Explain Nakamoto consensus.
- Explain the Simplified Payment Verification protocol.
- List and describe differences between proof-of-work and proof-of-stake consensus.
- Interact with a blockchain system by sending and reading transactions.
- Design, build, and deploy a distributed application.
- Evaluate security, privacy, and efficiency of a given blockchain system.
50.037 will not be offered in 2021.