Instructor
Prof. Pramod Viswanath, Princeton, pramodv@princeton.edu
Teaching assistants
- Viraj Nadkarni, viraj@princeton.edu
- Benjamin Finch, btfinch@princeton.edu
- Ashwin Hebbar, hebbar@princeton.edu
Course Material
Lecture Date |
Theme | Topic | Lecture material | Lab instructions | Lecture video | Assignments |
01/29 | Introduction | Intro to Course | Slides | Instructions | Video | |
02/01 | Blockchain Primer | Slides | Instructions | Video | ||
02/05 | Smart Contracts and Solidity | Slides | Instructions | Video | ||
02/07 | DeFi marketplaces | Exchanges 1: DEXs | Slides | Instructions | Video | |
02/12 | Exchanges 2: Bonding curves and CFMMs | Slides | Instructions | Video | ||
02/14 | Exchanges 3: Improving CFMMs | Slides | Instructions | Video | ||
02/19 | Exchanges 4: MEV Deep dive | Slides | Instructions | Video | Crypto Zombies 1 | |
02/21 | Pricing tokens in DeFi | Oracles | Slides | Instructions | Video | |
02/26 | Smart Contracts, Attacks and Pricing | Slides | Instructions | Video | Assignment1 | |
02/28 | Banking on DeFi | Borrow/Lending protocols | Slides | Instructions | Video | |
03/04 | Flash loans | Slides | Instructions | Video | Crypto Zombies 2 | |
03/06 | Financial attacks using lending | Slides | Instructions | Video | ||
03/18 | Bridges and Synthetic tokens | Wrapped tokens and bridges | Slides | Instructions | Video | Assignment2 |
03/20 | Stablecoins | Slides | Instructions | Video | ||
03/25 | Synthetics | Slides | Instructions | Video | Assignment3 | |
03/27 | NFT | NFT1 | Slides | Instructions | Video | |
04/01 | NFT2 | Slides | Instructions | Video | ||
04/03 | Governance | DAOs | Slides | Instructions | Video | |
04/08 | Open Hedge Funds in DeFi | Slides | Instructions | Video | Assignment4 (optional) | |
04/10 | Advanced | Staking | Slides | Instructions | Video | |
04/15 | EigenLayer | Slides | Instructions | Video | ||
04/17 | Project presentations | Slides | Instructions | Video | ||
04/22 | Slides | Instructions | Video | Assignment5 (optional) | ||
04/24 | Slides | Instructions | Video | |||
Course Outline
Blockchains are digital platforms whose consistency and liveness are maintained by a decentralized set of participants. The popular blockchain platforms are programmable (i.e., support applications defined via a Turing complete programming language) and are permissionless (i.e., transactions on the platform are open to anyone; the bar to participate is very lightweight). The combination of programmability, permissionless access and the financial nature of the underlying token (e.g., ETH in the Ethereum blockchain) has led to tremendous innovation in financial products on the blockchain, broadly covered under the rubric of decentralized finance or simply DeFi.
The purpose of this course is to introduce the various novel types of financial instruments enabled by blockchains, classified as “elements” of DeFi. The course is interdisciplinary since it covers both finance and computer science topics. Finance terms are introduced on a need-to-know basis and no hard prerequisites in financial engineering are needed. Basic background in computer science (programming) is expected. The course covers a technical discipline that is developing at a fast pace – course material in the form of slides and notes are provided for each lecture, but the students will be encouraged to read a diverse range of reference material (source codes, whitepapers, web forum discussions). Nine elements of DeFi are discussed:
- Token transfers: native blockchain transactions
- Market making via smart contracts
- Oracles: importing external data
- Borrow/Lending: banking functionality
- Cross border finance: bridges, wrapped tokens
- Stable coins: tying tokens to fiat
- Synthetics and Perpetuals: self-adapting financial instruments
- NFTs : digital collectibles
- DAOs : tokenized governance
The pedagogical style is designed to provide a hands-on experience with the material. Each class will be divided into two parts: the first part will be a lecture designed to highlight the conceptual and algorithmic aspects of the material. the second part will be a lab activity designed to provide a hands-on experience and highlight the practical aspects of interacting with a permissionless public blockchain (Ethereum testnet).
Course Notes
- Lecture videos, slides, lab instructions, and supplementary reading material will be provided for each lecture.
- Supplemental reading:
- Decentralized Finance, an online course on DeFi.
Pre-requisites
The basis prerequisites are a maturity with algorithms (COS 226), probability (ORF 245) and computer systems (COS 316). Background in blockchains (ECE/COS 470 and COS 495) and financial mathematics (ORF 335) will be helpful.
Assignments
We will have a 5 part assignment series to build smart contracts in Solidity programming language through which students explore the core elements of DeFi. The first 3 assignments are mandatory, whereas the rest are optional.
Final Project
In-depth study of one of the elements of DeFi covered in the course. The final project report will be due after the Dean’s date and will serve as the final exam of the course.
Assignments and Grading
The course is evaluated in three formats:
- [24% of the grade] Five programming assignments – in Solidity programming language through which students explore the core elements of DeFi. Students need to complete the first 3 of the 5 assignments.
- [56% of the grade] In-class labs – Hands-on activity for students to get a feel for interacting with each element and exploring the action space. Students need to attend any 14 out of the 21 lectures to do that.
- [20% of the grade] Final project – Should be an in-depth study of one of the elements of DeFi covered in the course. Prompts on potential project topics shall be provided by us. The final project report will be due after Dean’s date and will serve as the final exam of the course.