The University of Chicago
Department of Computer Science

MPCS 56605/FINM 31400 Course Syllabus

Introduction to Blockchain:  Bitcoin, Ethereum and Smart Contracts
Online Offering Only - No Hyde Park Campus Class

Summer 2023


Instructor:        Mark Shacklette
Office:               Online Zoom Only
Office Hours:    Mondays 2:30 PM - 3:45 PM and by Appt.

email:    mark@cs.uchicago.edu (read hourly or so)
              mshack@post.harvard.edu (read hourly or so)

Teaching staff: 

TA:                    Alan Salkanović
Office:               Online Only (see Canvas for TA Zoom meeting rooms)
Office Hours:    Wednesdays, 5 PM - 7 PM CST
email:                zekija816-at-gmail-dot-com   

Grader:            Alan Illing
Office:              Online Only (see Canvas for Zoom meeting rooms)
Office Hours:    Tuesdays, 4 PM - 6 PM CST
email:               alan.illing-at-gmail-dot-com  

EVERYONEOur discussion platform has moved from Piazza to Ed Discussion via Canvas.  Please access Ed here.  An Ed Discussion Quickstart guide is located here.

 
SUBJECT COURSE TITLE TIME BUILDING
324 56605 Introduction to Blockchain:  Bitcoin, Ethereum and Smart Contracts
Monday, 4:10pm -
6:00 PM (CST)
Zoom Online*
*Course is conducted entirely remotely via zoom.

I. TEXT AND MATERIALS 

Texts: Required

Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction, Narayanan, et. al. Princeton, 2016.  ISBN: 978-0691171692

Building Ethereum Dapps, Roberto Infante, Manning Press, 2019.  ISBN:  978-1617295157

Mastering Ethereum:  Building Smart Contracts and DAPPS, Antonopoulos and Wood, O'Reilly, 2017.  ISBN:  978-1491971949

Hands-On Smart Contract Development with Solidity & Ethereum, Solorio et. al., O'Reilly, 2020.  ISBN:  978-1492045267

Proof of Stake:  The Making of Ethereum and the Philosophy of Blockchains, Vitalik Buterin, ed. Schneider, Seven Stories Press, 2022.  ISBN:  9781644212486

Texts: Highly Recommended

Out of the Ether, Matthew Leising, Wiley, 2021, ISBN: 9781119602934

Learn Ethereum, Wu et. al., Packt Publishing, 2019, ISBN: 9781789954111

Recommended Reading

A Design Principle for Hash Functions, Damgard.  Cluster pub directory:  ~mark/pub/56605/pfds/Damgard.A.Design.Principle.for.Hash.Functions.pdf

Is Bitcoin a Real Currency?  An Economic Appraisal (download linked file):  http://www.nber.org/papers/w19747

PATRICIA - Practical Algorithm to Retrieve Information Coded in Alphanumeric, Donald Morrison, Journal of the ACM, 15(4):514-534, October 1968

Bitcoin and The Age of Bespoke Silicon.  Taylor.  http://cseweb.ucsd.edu/~mbtaylor/papers/bitcoin_taylor_cases_2013.pdf

Majority is not Enough: Bitcoin Mining is Vulnerable.  Eyal et. al.  http://www.cs.cornell.edu/~ie53/publications/btcProcFC.pdf

Measuring the Longitudinal Evolution of the Online Anonymous Marketplace Ecosystem.  Soska et. al.  https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-soska.pdf

March 2013 Chain Fork Post-Mortem.  https://github.com/bitcoin/bips/blob/master/bip-0050.mediawiki

Bitcoin-NG: A Scalable Blockchain Protocol.  Eyal et. al. https://www.usenix.org/system/files/conference/nsdi16/nsdi16-paper-eyal.pdf

Zerocoin: Anonymous Distributed E-Cash from Bitcoin.  Miers, et. al.  http://spar.isi.jhu.edu/~mgreen/ZerocoinOakland.pdf

Zerocash: Decentralized Anonymous Payments from Bitcoin.  Ben-Sasson, et. al.  http://zerocash-project.org/media/pdf/zerocash-extended-20140518.pdf

Ethereum Whitepaper:  A Next-Generation Smart Contract and Decentralized Application Platform. Vitalik Buterin.  https://github.com/ethereum/wiki/wiki/White-Paper

Ethereum:  A Secure Decentralised Generalised Transaction Ledger.  Wood.  http://gavwood.com/paper.pdf.

Ethereum Background.  https://solidity.readthedocs.io/en/develop/introduction-to-smart-contracts.html

The Hard Fork: What's About to Happen to Ethereum and The DAO. Castillo.  https://www.coindesk.com/hard-fork-ethereum-dao/

To fork or not to fork.  Wilcke.  https://blog.ethereum.org/2016/07/15/to-fork-or-not-to-fork/

Scanning Live Ethereum Contracts for the "Unchecked-Send" Bug.  Wen et. al.  http://hackingdistributed.com/2016/06/16/scanning-live-ethereum-contracts-for-bugs/

Enabling Blockchain Innovations with Pegged Sidechains.  Back, et. al.  https://blockstream.com/sidechains.pdf

A Fast and Scalable Payment Network with Bitcoin Duplex Micropayment Channels.  Decker, et. al.  http://www.tik.ee.ethz.ch/file/716b955c130e6c703fac336ea17b1670/duplex-micropayment-channels.pdf

Introduction to post-quantum cryptography.  Bernstein.  https://www.pqcrypto.org/www.springer.com/cda/content/document/cda_downloaddocument/9783540887010-c1.pdf

Mimblewimble.  Poelstra.  https://scalingbitcoin.org/papers/mimblewimble.pdf

Ripple Consensus Whitepaper https://ripple.com/files/ripple_consensus_whitepaper.pdf

Exploiting Ripple Transaction Ordering For Fun And Profit http://availableimagination.com/exploiting-ripple-transaction-ordering-for-fun-and-profit/

II. PREREQUISITE:

All MPCS students in this course are required to have passed core programming.  No exceptions.  FinMath students are expected to have equivalent experience.

This is a technology- and programming-intensive course.  If you do not have solid experience implementing algorithms, you should reconsider taking this course.

Additionally, the following courses are suggested prerequisites for taking this course.  Those with this or equivalent background will find this course easier going:

Mathematics for Computer Science: Discrete Mathematics (MPCS 50103 or equivalent)
Algorithms (MPCS 55001 or equivalent)

Solid comfort with one (or more) of the following programming languages:  Java (Javascript), C/C++, Python, Ruby, C#, Go, Rust, Objective-C/Swift.   If you have a preferred familiarity with any Functional/Lisp/Haskell dialect (i.e., CLOS, Scheme, Haskell, etc.), we should talk.  Students will learn Solidity during the progression of the course.

All students will need to have available sufficient disk space for chains and test chains.  You will need ~600 Gig available for Ethereum and about ~600 Gig available for Bitcoin, at a bare minimum.  A 3-4 TB external drive will be most helpful. 

For those university students not enrolled in the MPCS or Financial Mathematics:

If you are interested in taking this class, please fill out the MPCS course request form for non-MPCS students:

https://masters.cs.uchicago.edu/content/course-request-form

Please note that, at this point, we do not expect any spots to be available for non-MPCS/non-FINM students. Even if any do open up, the decision to admit non-MPCS students into the class is made by the MPCS administration and requires taking a programming placement exam (https://masters.cs.uchicago.edu/page/placement-exams-0) to ensure students have a sufficient technical background.

For those students wishing to audit this course:

This class does not allow auditors. If you are interested in taking this class, you would need to register for the class and, to do so, you will need to fill out the MPCS course request form for non-MPCS students (see above).

III. COURSE DESCRIPTION

This course concentrates on three major themes: Blockchain concepts,  derivative implementations (Bitcoin & Ethereum), and smart contract development.

This course is a comprehensive technical introduction to relevant topics in the wider ecosystem surrounding blockchain, using Bitcoin and Ethereum as reference models. Our technological focus will include substantive topics in fundamental problems that blockchain is attempting to solve (and is generating), including algorithms, cryptography, consensus (proof-of-work, proof-of-stake), security and trust, peer-to-peer networking, distributed ledgers, double spending, ownership validation, decentralized applications, smart contracts, oracles, and supporting technologies.  Students will run both bitcoin and ethereum nodes (with beacon modes).  With that said, this is not a course in economics or monetary theory, trading or arbitraging cryptocurrencies, whether it be bitcoin, ether, litecoin, or cryptokitties, etc., nor is it a course on regulatory or legal issues surrounding blockchain, although we will touch on many of these topics throughout the course.  We will also cover broader applications of blockchain technology beyond cryptocurrencies and ICOs including use cases from finance, insurance, science, healthcare, pharmaceuticals.  Students will form teams (self-selected) and will implement a major Dapp as their team's final project, and may choose from any of these various use cases.
 
We will cover cryptocurrencies and will focus on bitcoin as our introduction to the problem space, moving to a focus on Ethereum and smart contracts as we progress.  Students may work in whatever languages they know best and make the most sense in context.  These may include Java/javascript, C++, python, ruby, C#, Golang, rust, and others (students in the past versions of this course have worked in each of these languages).  Students should note that bitcoin core APIs will vary in quality the further they get from the usual suspects:  C++/Java/Javascript/Python, etc.  All smart contract development will be done in Solidity.
 
Homework will be offered each week to reinforce a fundamental understanding of the core topics.  These assignments, aka "Labs," will reinforce central concepts and are designed to offer students hands-on experience in building their own blockchain and implementing and testing smart contracts and Dapps.

IV. LEARNING OBJECTIVES

Upon completion of this course the student will:

A. Fundamentally understand central Blockchain concepts and terminology.
B. Come to understand central cryptographic and algorithmic foundations of Bitcoin and Ethereum
C. Understand Bitcoin and Ethereum Transactions and Blocks
D. Understand Mining and Consensus Algorithms
E. Become conversant with the Bitcoin Core APIs and Ethereum development tools (Visual Studio Core, truffle, node, ganache, geth, etc.)

V. ACADEMIC INTEGRITY

Students are expected to have read and understood the University's policy on Academic Integrity. This policy is detailed in the Student Manual of University Policies and Regulations, available online at https://masters.cs.uchicago.edu/page/program-policies.
 

VI. METHOD OF INSTRUCTION

Methods include lecture and homework (labs) assignments.  
 

VII. OTHER COURSE INFORMATION

Attendance:

No formal attendance taken.  There may be information presented in class that is not in the texts. You will find the lectures helpful in doing the laboratory exercises.

Make-up Work:

Students are expected to read the assigned texts before class in order to be able to full participate in the discussions and course activities.
 

VIII. METHOD OF EVALUATING STUDENT PROGRESS

Assigned work evaluated as follows:

6 Labs (12.0 points each)
72.00%
Final Project Delivery (Teams-Peer Grade)*
12.00%*
Final Project Delivery (Instructor Grade)
16.00%
Total:
100%    

* The final project delivery grade of 28% (of 100%) is broken up into 16 points for the faculty-assigned evaluation which is common and assigned to all team members equally, and an additional 12 points of the project grade which is part of the peer-assigned grade (see below for grading scale).  16 points from the faculty and 12 points from peers equals a total of 28 points out of 100 points for the course (i.e., 28%).

Grading scale:
 
95-100:     A
90-94:       A-
87.6-89:    B+
83-87.5:    B
80-82.9:    B-
76-79:       C+

A separate peer grading scale is implemented in addition to the above.  Every student is responsible for knowing and understanding this additional scale that will be used in the Team Peer Evaluation.  The separate peer grading scale is described here.

The course project will be due for all teams on August 14, 2023 for all students.  The requirements for the course project are described here.

Lab Deliverables will be graded on a 12-point basis.  Deliverable due dates are noted on the lab pages.  All labs and homework are due by 4:00 pm on the due date. For instructions about how to submit your lab work using GitHub , see...

All assignments are due as specified on this syllabus and lab and other deliverables.  Any and all lateness will suffer penalties.  The penalty for late labs will be 2.0 points off for each 24-hour period the lab is late, through six days late (6*2.0=12.0).  After six days delay, the lab will no longer be accepted for grading and will receive a 0.

NB:  The end of the quarter is the time at which the final grade you have earned through your work in the quarter is recorded with the registrar.  There is no extra credit offered in this course, either at the beginning or at the end.  If you are dissatisfied with the grade you have earned at the end of the quarter, your only options will be to retake the course the next time it is offered, or accept the grade you earned.

NB: The instructor reserves the right to alter the course contents, dates, times or percentage of credit based on time allowed and class progress through the course material. The instructor also reserves the right to curve grades if he deems it in the best interest of the majority of students.

IX. COURSE SCHEDULE


Articles* (Abbreviations Key for Required texts (see esp. Required Reading under Schedule below):

Abbreviation
Title & Author
Location
H&S
How to Time-Stamp a Digital Document, Haber & Stornetta
How to Time-Stamp a Digital Document
Menger
On the Origin of Money, Menger
On the Origin of Money
Nakamoto
Bitcoin: A Peer-to-Peer Electronic Cash System.  "Satoshi Nokamoto"
Bitcoin: A Peer-to-Peer Electronic Cash System
Buterin
White Paper
Ethereum Whitepaper | ethereum.org
Wood
Ethereum:  A Secure Decentralised Generalised Transaction Ledger
http://gavwood.com/paper.pdf
Tual
Stephan Tual, A Primer to Decentralized Autonomous Organizations
A Primer to Decentralized Autonomous Organizations (DAOs)
ERC20
ERC-20 Token Standard
ERC-20: Token Standard (ethereum.org)
ERC721
ERC-721 Non-Fungible Token Standard
ERC-721: Non-Fungible Token Standard (ethereum.org)
Szabo0
Formalizing and Securing Relationships
Formalizing and Securing Relationships on Public Networks | Satoshi Nakamoto Institute
KOB
Neal Kin, Vladimir Oksman, Charles Bry Patent, August 15, 2008 Patent Pub. No.: US2010/042841A1
Merkle1
A Digital Signature Based On A Conventional Encryption Function, Merkle A Digital Signature Based On A Conventional Encryption Function
Luciano
"Cryptology: From Caesar Ciphers to Public-Key Cryptosystems," Luciano and Prichett, The College Mathematics Journal, Vol. 18, No. 1 (Jan., 1987), pp. 2-17
Cluster pub directory:  ~mark/pub/56605/pfds/Luciano.Cryptology.pdf
Kumar
Microsoft Word - 91. A CRYPTOSYSTEM BASED ON VIGENERE CIPHER BY USING MULITLEVEL ENCRYPTION SCHEME A Cryptosystem Based On Vigenere Cipher By Using Mulitlevel Encryption Scheme
Sanjeev Kumar Mandal1, A.R Deepti
Cluster pub directory:  ~mark/pub/56605/pfds/Vigenere1.pdf
Wiki1
Wikipedia article on letter frequency analysis
Wikipedia Link
Bonneau1
On Bitcoin as a public randomness source.  Bonneau et. al.   On Bitcoin as a public randomness source
Rogaway

Cryptographic Hash-Function Basics: Definitions, Implications, and Separations for Preimage Resistance, Second-Preimage Resistance, and Collision Resistance, Rogaway & Shrimpton, 2004

Cryptographic Hash-Function Basics

Kim
Updating and Distributing Encryption Keys, Neal Kim, Vladimir Oksman, Charles Bry.
Patent Pub. No.: US2010/042841A1
Eyal
Majority is not Enough: Bitcoin Mining is Vulnerable.  Eyal et. al. 
http://www.cs.cornell.edu/~ie53/publications/btcProcFC.pdf
Boehm
Bitcoin: A First Legal Analysis with reference to German and US-American law.  Boehm, et. al.   http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_7.pdf
Raskin*
Raskin & Yermack, Digital Currencies, Decentralized Ledgers, and the Future of Central Banking
Cluster pub directory:  ~mark/pub/56605/pfds/DIGITAL CURRENCIES, DECENTRALIZED LEDGERS, AND THE FUTURE OF CENTRAL BANKING.pdf
Hooper*
Bitcoin:  Digital Currency or Digital Tulip, Hooper
Cluster pub directory:  ~mark/pub/56605/pfds/bitcoin-digital-currency-or-digital-tulip.pdf
Katsenelson* Bitcoin-Millennial's Fake Gold, Katsenelson
Cluster pub directory:  ~mark/pub/56605/pfds/bitcoin-millennials-fake-gold.pdf
Kahn*
Cryptology Goes Public, Kahn
Cluster pub directory:  ~mark/pub/56605/pfds/CryptologyGoesPublic.pdf
DiffieHellman*
New Directions in Cryptography, Diffie & Hellman
Cluster pub directory:  ~mark/pub/56605/pfds/Diffie.Hellman.Original.Paper.pdf
Economist1*
The Economist:  The great chain of being sure about things
Cluster pub directory:  ~mark/pub/56605/pfds/Economist_The great chain of being sure about things - Blockchains.pdf
Economist2*
The Economist:  The trust machine
Cluster pub directory:  ~mark/pub/56605/pfds/Economist_The trust machine The promise of the blockchain.pdf
Back*
Hashcash - A Denial of Service Counter-Measure, Back
Cluster pub directory:  ~mark/pub/56605/pfds/hashcash.pdf
Damgard*
A Design Principle for Hash Functions
Cluster pub directory:  ~mark/pub/56605/pfds/Damgard.A.Design.Principle.for.Hash.Functions.pdf
Lamport*
The Byzantine Generals Problem, Lamport
Cluster pub directory:  ~mark/pub/56605/pfds/lamport.byzantine.generals.problem.pdf
Merkle2*
One Way Hash Functions and DES, Merkle
Cluster pub directory:  ~mark/pub/56605/pfds/Merkle.One.Way.Hash.Functions.and.DES.pdf
Szabo1*
Secure Property Titles with Owner Authority, Szabo
Cluster pub directory:  ~mark/pub/56605/pfds/Nick.Szabo.Secure Property Titles with Owner Authority.pdf
Dobbertin* RIPEMD-160:  A Strengthened Version of RIPEMD, Dobbertin et. al.
Cluster pub directory:  ~mark/pub/56605/pfds/RipeMD-160.pdf
Lebowitz*
Salt, Wampum, Benjamins - Is Bitcoin Next?, Lebowitz
Cluster pub directory:  ~mark/pub/56605/pfds/salt-wampum-benjamins-is-bitcoin-next.pdf
Shamir*
How to Share a Secret, Shamir
Cluster pub directory:  ~mark/pub/56605/pfds/shamir.how.to.share.a.secret.pdf
 Leibowitz
Coindesk:  Bitcoin Explained
https://www.coindesk.com/bitcoin-explained-global-currency-wall-street-veteran/
Bonneau2
SoK: Research Perspectives and Challenges for Bitcoin and Cryptocurrencies.  Bonneau et. al.
http://www.jbonneau.com/doc/BMCNKF15-IEEESP-bitcoin.pdf
Hussman*
Three Delusions:  Paper Wealth, a Booming Economy, and Bitcoin
three-delusions-paper-wealth-a-booming-economy-and-bitcoin.pdf
Bryan
Island Money
Cluster pub directory:  ~mark/pub/56605/pfds/IslandMoney.pdf
BIP-37
BIP-37 Peer Services
https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki
Bloom
Burton H. Bloom,  "Space/Time Trade-offs in Hash Coding with Allowable Errors"
http://astrometry.net/svn/trunk/documents/papers/dstn-review/papers/bloom1970.pdf
Decker
Decker, Wattenhofer, Information Propagation in the Bitcoin Network
Cluster pub directory:  ~mark/pub/56605/pfds/InformationPropagationInBitcoinNetwork.pdf
Demers
Demers et. al., Epidemic Algorithms for Replicated Database Maintenance
Cluster pub directory:  ~mark/pub/56605/pfds/demers.epidemic.algorithms.pdf
Rauch
Rauch, et. al., Distributed Ledger Technology Systems:  A Conceptual Framework
Cluster pub directory:  ~mark/pub/56605/pfds/DLTS.pdf
Szabo
Trusted Third Parties are Security Holes
Cluster pub directory:  ~mark/pub/56605/pfds/Szabo.TrustedThirdParties-SecurityHoles.pdf

*Articles starred may be found on the cluster under my pub directory (~mark/pub/56605/pdfs).  All numbers refer to chapters in texts, not pages, unless otherwise noted (as "pp. xxx").

The following abbreviations reference the following works (see esp. Required Reading under Schedule below):

Abbreviation Referenced Text
BCT Bitcoin and Cryptocurrency Technologies.  Narayanan et. al.
ME
Mastering Ethereum, Antonopoulos & Wood
BED
Building Ethereum Dapps, Infante
SCD
Hands-On Smart Contract Development with Solidity and Ethereum, Solorio et. al.
POS
Proof of Stake, Buterin, ed. Schneider

 
Class/Date Lecture Topics
Required Reading
Homework Assignments & Other Due Dates
Class 1

June 12

What is Blockchain and why does it matter?
Course Introduction & Peer Grading
Fundamental concepts




BCT:  Forward
ME: Chapter 1
H&S
Nakamoto
SCD: Chapter 1
KOB
Lab 1 - Environment Setup & Tools Installation (Bitcoin & Ethereum)
Class 2
June 19
NO CLASS (see async lectures below)
Juneteenth Holiday

Async Lecture:  Foundations of Cryptography

Async Lecture:  Money, Currency, Ledgers
Buterin
Wood
Szabo0 (Introduction & Contracts Embedded in the Real World sections only)
Tual
POS: "Prediction Markets: Tales from the Election"
Bryan
Raskin
Hooper

Class 2
June 26

Introduction to Cryptography
- Classic ciphers
Hashing and Hash Functions and Hash Pointers
Asymmetric Cryptography: 
- Keys & Digital signatures
ME:  Chapters 2-4
Menger
Rauch
Lebowitz
Rogaway
Damgard
Lab 2 - Brute Force Cryptanalysis and Letter Frequency Cryptanalysis
Class 3
July 3

Foundational Algorithms
- Binary Trees
- Merkle trees
- Elliptic curves
- SHA-256
- RIPEMD-160
- Keccak-256
- Encoding schemes

BCT: Chapter 1
ME: Chapter 5
Lab 3 - Tamper-Proof Merkle Tree of Hash Pointers

Project Team Formation Determinations Due
Class 4
July 10

The Blockchain:
Ethereum Transaction Fundamentals
The Ethereum Virtual Machine
Mining & Consensus (Bitcoin and Ethereum)
Ethereum Wallets
ME: Chapter 6
BED: Chapters 1-4
SCD: Chapters 2, 4
Luciano
Wiki1
POS: The Meaning of Decentralization
POS: The Value of Blockchain Technology


Lab 4 - Your Own Blockchain & Your First Smart Contract



Class 5

July 17


Ethereum:  Introduction to the Ethereum Blockchain and Smart Contracts
Cryptocurrency Tokens in Dapps:  ERC-20 and ERC-721
Introduction to Solidity Programming & IDE:  Data, Functions, Events

Merkle1
BCT: Chapter 2
ME: Chapters 7, 10
BED: Chapter 5
SCD: Chapter 5
Kim
Lamport
POS: Self-Enforcing Contracts and Factum Law
POS: Ethereum: A Next-Generation Cryptocurrency and Decentralized Application Platform



Lab 5 - Mine Your Blockchain & Implementing the ERC-20 Token Interface in Solidity

Team Check-Ins with TAs this week

Class 6

July 24

Introduction to Solidity Programming

Bloom Filters

BCT: Chapter 4
ME: Chapter 9
BED: Chapters 6-8
SCD: 6-7, 9-11
Bloom
POS: Markets, Institutions, and Currencies--A New Method of Social Incentivization
POS: The Most Important Scarce Resource is Legitimacy



Lab 6 - Smart Contracts - Testing Smart Contracts

Team Project Proposals Due
Class 7
July 31
Advanced Contracts and Deployment
Cryptocurrency Tokens in Dapps:  NFTs and ERC-721
Oracles and Off-Chain Data Ingestion
BCT: Chapter 5
ME: Chapters 10-12
SCD: Chapter 8
Eyal
Boehm
Back
POS: A Proof-of-Stake Design Philosophy


Team Check-Ins with TAs this week
Class 7
August 8
Advanced issues in Smart Contract Development:
The Ethereum Name Service (ENS)
Decentralized storage networks (IPFS and Swarm)
Security and loopholes

ME: Chapter 13
BCT: Chapter 6
Hussman
POS:  Crypto Cities
POS:  On Free Speech

Team Final Project Work
Class 9

August 14

Final Team Project Delivery and Class Presentations

FINAL PROJECT CODE SUBMISSIONS BY NOON CST THURSDAY AUGUST 17th 2023
Szabo
ME: Chapter 7
BIP-37
BCT: Chapters 8, 9, 10
Decker
Demers
Team Final Project Presentations (click here for instructions)

EVERYONEOur discussion platform has moved from Piazza to Ed Discussion via Canvas.  Please access Ed here.  An Ed Discussion Quickstart guide is located here.