The University of Chicago
Department of Computer Science
MPCS 56600 Course Syllabus
Introduction to Blockchain
Online Offering Only - No Hyde Park Campus Class
Summer 2021
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:
EVERYONE: Our 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 | 56600 | Introduction to Blockchain: Concepts, Technologies, Implementations | Monday, 4:10pm - 6:00 PM (CST) |
Zoom Online* |
Texts: Required
Bitcoin and Cryptocurrency Technologies: A Comprehensive
Introduction, Narayanan, et. al. Princeton, 2016.
ISBN: 978-0691171692
Mastering Bitcoin: Programming the Open Blockchain, 2nd ed., Antonopoulos, O'Reilly, 2017. ISBN: 978-1491954386
Programming Bitcoin, Song, O'Reilly, 2019.
ISBN: 978-1492031499
Texts: Highly Recommended
Docker Cookbook, Miell & Sayers, Manning, 2016, ISBN: 9781491919712
Docker in Practice, Sebastien Goasguen, O'Reilly, 2016, ISBN: 9781617292729
Recommended
Reading
II. PREREQUISITE:
All students in this course are required to have passed core programming. No exceptions.
This is a technology- and programming-intensive course. If you do not have solid experience programming 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)
Networks (MPCS 54001 or equivalent)
Solid comfort with one (or more) of the following
programming languages: Java (Javascript), C/C++, Python,
Ruby, C#, Go, Objective-C/Swift. If you have a preferred
familiarity with any Functional/Lisp/Haskell dialect (i.e., CLOS,
Scheme, Haskell, etc.), we should talk.
For those university students not enrolled in the MPCS:
For those students wishing to audit this course:
III. COURSE DESCRIPTION
This course concentrates on three major themes: Blockchain concepts, associated technologies and software implementations.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:
9 Labs (10.0 points each) |
90.00% |
Final Project Delivery |
10.00% |
Total: |
100%
|
Grading scale:
95-100: A
90-94: A-
87.6-89: B+
83-87.5: B
80-82.9: B-
76-79: C+
Lab Deliverables will be graded on a 10-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 (with the exception of Lab 9). For instructions about how to submit your lab work using svn/Subversion, see this page
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 five days
late (5*2.0=10.0). After five 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
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. |
MB |
Mastering Bitcoin, Antonopoulos |
PB |
Programming Bitcoin, Song |
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 |
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/56600/pfds/Luciano.Cryptology.pdf |
Kumar |
Sanjeev Kumar Mandal1, A.R Deepti |
Cluster pub directory: ~mark/pub/56600/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 |
|
Kim |
Updating and Distributing
Encryption Keys, Neal Kin, 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/56600/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/56600/pfds/bitcoin-digital-currency-or-digital-tulip.pdf |
Katsenelson* | Bitcoin-Millennial's Fake
Gold, Katsenelson |
Cluster pub directory: ~mark/pub/56600/pfds/bitcoin-millennials-fake-gold.pdf |
Kahn* |
Cryptology Goes Public, Kahn |
Cluster pub directory: ~mark/pub/56600/pfds/CryptologyGoesPublic.pdf |
DiffieHellman* |
New Directions in Cryptography, Diffie &
Hellman |
Cluster pub directory: ~mark/pub/56600/pfds/Diffie.Hellman.Original.Paper.pdf |
Economist1* |
The Economist: The great chain of being
sure about things |
Cluster pub directory:
~mark/pub/56600/pfds/Economist_The great chain of being sure
about things - Blockchains.pdf |
Economist2* |
The Economist: The trust machine |
Cluster pub directory: ~mark/pub/56600/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/56600/pfds/hashcash.pdf |
Damgard* |
A Design Principle for Hash Functions |
Cluster pub directory: ~mark/pub/56600/pfds/Damgard.A.Design.Principle.for.Hash.Functions.pdf |
Lamport* |
The Byzantine Generals Problem, Lamport |
Cluster pub directory: ~mark/pub/56600/pfds/lamport.byzantine.generals.problem.pdf |
Merkle2* |
One Way Hash Functions and DES, Merkle |
Cluster pub directory: ~mark/pub/56600/pfds/Merkle.One.Way.Hash.Functions.and.DES.pdf |
Szabo1* |
Secure Property Titles with Owner Authority,
Szabo |
Cluster pub directory:
~mark/pub/56600/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/56600/pfds/RipeMD-160.pdf |
Lebowitz* |
Salt, Wampum, Benjamins - Is Bitcoin Next?,
Lebowitz |
Cluster pub directory: ~mark/pub/56600/pfds/salt-wampum-benjamins-is-bitcoin-next.pdf |
Shamir* |
How to Share a Secret, Shamir |
Cluster pub directory:
~mark/pub/56600/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/56600/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/56600/pfds/InformationPropagationInBitcoinNetwork.pdf |
Demers |
Demers et. al., Epidemic Algorithms for
Replicated Database Maintenance |
Cluster pub directory: ~mark/pub/56600/pfds/demers.epidemic.algorithms.pdf |
Rauch |
Rauch, et. al., Distributed Ledger Technology
Systems: A Conceptual Framework |
Cluster pub directory: ~mark/pub/56600/pfds/DLTS.pdf |
Szabo |
Trusted Third Parties are Security Holes |
uster pub directory: ~mark/pub/56600/pfds/Szabo.TrustedThirdParties-SecurityHoles.pdf |
*Articles starred may be found on the cluster under my pub directory (~mark/pub/56600/pdfs). All numbers refer to chapters in texts, not pages, unless otherwise noted (as "pp. xxx").
Class/Date | Lecture Topics |
Required Reading |
Homework Assignments &
Other Due Dates |
Class 1
June 21 |
What is Blockchain and why
does it matter? Course Introduction Fundamental concepts Bitcoin Core |
BCT: Forward MB: Introduction H&S Nakamoto |
Lab 1 - Environment Setup & Tools Installation |
Class 2 June 28 |
Money, Currency, Ledgers Foundational Background |
KOB Menger Bonneau2 Bryan Rauch |
Lab 2 -Continued Bitcoin setup |
Class 3 July 5 |
NO CLASS Independence Day Holiday |
BCT: Chapter 1 MB: Chapter 2 |
|
Class 3 July 12 |
Introduction to
Cryptography - Classic ciphers Symmetric Cryptography: - Hash functions - Hash pointers Asymmetric Cryptography: - Keys & Digital signatures |
Luciano Kumar Wiki1 Rogaway Damgard |
Lab 3 - Brute Force
Cryptanalysis and Letter Frequency Cryptanalysis |
Class 4
July 19 |
Algorithms - Binary Trees - Merkle trees - Elliptic curves - SHA-256 - RIPEMD-160 - Base64 & Base58 |
Merkle1 BCT: Chapter 2 MB: Chapters 3, 6, 9 Kim Bonneau1 Lamport Dobbertin |
Lab 4 - Tamper-Proof
Merkle Tree of Hash Pointers |
Class 5
July 26 |
The Blockchain: Mining & Consensus |
BCT: Chapter 4 MB: Chapters 4, 5 Raskin Hooper Lebowitz |
Lab 5 - Your Own
Blockchain |
Class 6 August 2 |
Transactions Bitcoin Cryptocurrency: - Introduction to Transactions & Blockchain |
BCT: Chapter 5 MB: Chapter 10 Eyal Boehm Back |
Lab 6 -
Mine Your Blockchain |
Class 7
August 9 |
Wallets Bloom Filters Merkle Proofs (revisited) |
BCT: Chapter 6 Hussman |
Lab 7 - Create a
Bitcoin Address |
Class 8
August 16 |
Peer-To-Peer Networking Networking background Sockets & RPC Docker Build & Compose |
MB: Chapter 8 Szabo |
Lab 8 - Docker and Compose |
Class 9 August 23 |
The Whole Enchilada |
MB: Chapter 7 BIP-37 BCT: Chapters 8, 9, 10 MB: Chapter 12 Bloom Decker Demers |
Lab 9 - Distribute Your Blockchain |
EVERYONE: Our discussion platform has moved from Piazza
to Ed Discussion via Canvas. Please access Ed here.
An Ed Discussion Quickstart guide is located here.