CS590 - Blockchains and Cryptocurrencies

Spring 2020, 3-credit course

Course Number:CS 59000
Instructor: Aniket Kate
Timeslot:Tuesday/Thursday 3:00-4:15 pm
Place: LWSN 1106
Contact Email:
Discussions : Piazza Webpage

Course Objectives

The course focuses on the principles and foundations of distributed ledger (or blockchain) technology and on security and privacy challenges in existing and emerging blockchains and cryptocurrencies. The course also compares and analyzes distributed consensus architectures and layer-2 protocols for cryptocurrencies from an adversarial standpoint to understand how to build more secure blockchains that can withstand attacks.

Prerequisite and Registration

Successful completion of CS 42600/52600, CS 35500/55500 required, or equivalent course with the consent of instructor required. Significant programming expertise and knowledge of virtual machines is required to complete the projects.

Interested students, who have not taken security and distributed systems course are also welcome. However, they are suggested to email the instructor to get pointers towards preparing themselves for the course.

Course Overview

This course will cover the following topics associated with blockchains and cryptocurrencies:
  • Distributed Computing Concepts: Consensus, Two-phase Commits, State machine replications
  • Permissionless blockchains: Bitcoin, Ethereum
  • Permissioned blockchains: Hyperledger Fabric
  • (Smart) Contracts and Scripts: Layer-2 solutions such as Payment channels and state channels
  • IOU Credit Networks: Ripple, Stellar
  • Blockchain Interoperability: Interledger, Atomic Swaps, Sidechains
  • Blockchain Privacy Attacks and Solutions: Z.cash, Monero, Shuffles
  • Advanced topics: Scalability, Proof of stake

Course Projects

There will be 2 course labs with increasing levels of understanding and programming difficulty on Hyperledger (chaincode) and Ethereum (Solidity) respectively.

Course Sections and Grading

TaskPercentage (tentative)
(Mid-term) Exam30%
Paper Presentation10%
Two (hands-on) Programming Labs30%
Two Assignments10%
Research/Development Project15%
Class Participation5%

Note that there will be a big mid-term exam but no final exam. Students expected to write a report on their research/development projects in the end.

Audit students are welcome. Precise audit requirements will be agreed between the instructor and the audit student.

Course Policies

We will employ Purdue's standard strong academic policies for the course. Please refer to the academic policies page maintained by Professor Gene Spafford for more details. Other course specific rules are as follows:

Assignment and Project Due Dates

All assignments are due on the dates and times specified. It is the responsibility of the students to manage their time so that the assignments can be submitted before the deadline. Every student gets three bonus days (in total) for his/her assignments and projects. He/she can employ those days to submit their assignments late as long as his/her semester-wide quota of three days does not exceed. Late assignments (other than this concession) will not be graded.

Discussion group:

Questions/comments should be posted on the discussion forum on Piazza. Make sure that you check the discussion group and your Purdue e-mail frequently (at least once per day). Please do NOT post answers to the assignments, though posting general clarifications is fine.

Complaints about the assignments or the class should NOT be posted to the group-- instead, they should be e-mailed to the instructor. Please be patient and courteous. Please ensure that the tone of your messages is respectful and the language used is appropriate.

In general, any case of academic dishonesty will be dealt with by a severe grade penalty in the overall class grade and referral to the office of the Dean of Students.

Back to my academic webpage.
Copyright © 2015-18 Aniket Kate, Purdue University.