COMS W4995-013, Fall 2019
Blockchains and Applications

Schedule  |   Resources

Instructors

Alex Biliris (ab2264@columbia.edu), 973-906-3919

Eran Tromer (et2555@columbia.edu)  

Description

This course covers blockchain technology in a comprehensive, systematic and interdisciplinary way. Originating in cryptocurrencies such as Bitcoin, blockchain has since expanded to be a promising technology in business, financial services, law, and others. The course surveys major approaches, variants, and applications of blockchains in these areas. Students will design and build prototypes of blockchain-based applications.

Topics

Bitcoin transaction model, cryptography, digital signatures, cryptocurrencies, block chaining, decentralized consensus protocols, mining, wallets, exchanges, smart contracts, permissioned blockchains, securities regulation, latest research, and industry developments.

Intended audience

The course is appropriate for students that want to get a thorough knowledge of cryptocurrencies and blockchains ecosystem. It is designed to be inclusive to students of all backgrounds including non-engineering such as business, law, medical, public policy, etc.  

Prerequisites

SEAS students must have completed a course in data structures and algorithms (COMSW313* or equivalent) prior to enrolling in the course. Courses in Cryptography (e.g., COMSW4261), Distributed Systems (e.g., COMSW4113) or Information Security are helpful but not required. For all other non-engineering students, there are no formal prerequisites, but participants are expected to be familiar with basic concepts of programming.

Textbook (optional)

Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction, by Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller, Steven Goldfeder. Princeton University Press 2016.

Workload and grading

There will be two projects and a test. The final grade for the course is calculated as follows:

Schedule

The schedule is subject to wild changes. New topics, talks by invited speakers, and project presentations by students will be intermixed with the topics below - expect topics to be reshuffled to accommodate these needs. A more detail schedule will be posted later on as we know more about speakers.

  1. Cryptography, digital signatures, addresses and keys, digital coins, hash pointers, Merkle trees, block chaining, blockchain data structure.  
  2. Decentralization in Bitcoin, decentralized consensus, mining, mining rewards and incentives based consensus, proof of work, attacks (stealing, double-spend, etc)
  3. Bitcoin transactions, bitcoin scripts
  4. Wallets, exchanges, currency exchange markets
  5. Anonymity and traceability
  6. Regulation, custody, securities and utility tokens, Howey test, tax treatment of virtual currencies, accredited investors, KYC/AML compliance, financial derivatives on virtual currencies, stablecoins
  7. Enterprise blockchain frameworks and permissioned blockchains

Projects details and teams

Students will work in groups of 4 per team to complete the project work. All members of a team will receive the same grade (even if a member did all the work or nothing at all) so choose your teammates carefully. We strongly encourage the formation of teams of interdisciplinary backgrounds.

Non-engineering students: you are not required to code if you don’t want to - you will have to team up with engineering students who can do the coding work of the project while you take care of other aspects of the projects as mentioned below.  

Project 2 is a 3-part project and you will submit each part throughout the course. You will present your work in class. Parts 1 and 2 are worth 25% each of your Project 2 grade and Part 3 is worth 50% of your Project 2 grade. It involves the design and implementation of a blockchain-based prototype system that you propose to work on. Part 1 is a description of the problem you are addressing and why it is worth working on it: what is the benefit of your blockchain-based solution and how does it compare with existing approaches, who and how many are the beneficiaries of your system? Part 2 is the design of your system and it should include the technical details as well as other issues affecting the usefulness of your system including the economic, social, legal, and regulatory implications. Part 3 is the actual implementation of what you described in Parts 1 and 2 as well as a report that glues all this work together.

Project 1, is a written report on a topic that you choose. It could be anything worth writing a report on; a survey and comparison of proposed solutions to a significant issue, e.g., stablecoins; or, deep dive on a specific stablecoin, e.g., Dai or USDC, exploring all the details about it; a feasibility study for a significant problem, e.g., does a blockchain-based solution makes sense for international money transfers; comparison of products or research proposals addressing a specific market/problem/need; deep dive on a single product e.g., a blockchain implementation like Ripple, EOS, etc. Time permitting, some teams will be chosen to present their work to class in each session.