The University of Chicago
Department of Computer Science
MPCS 56600 Course Syllabus
Introduction to Blockchain
Online Offering Only - No Hyde Park Campus Class
Summer 2024
Instructor: Mark
Shacklette
Office:
Online
Zoom Only
Office Hours: Tuesdays 3:00 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:
SUBJECT | COURSE | TITLE | TIME | BUILDING |
324 | 56600 | Introduction to Blockchain: Concepts, Technologies, Implementations | Tuesday, 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.
GENERATIVE AI TOOLS: Problem solving is truly the
core skill that needs to be developed. This can only be achieved
through determination and perseverance; there are no shortcuts.
Finishing assignments on time and getting the correct answer are
meaningless if you do not fully understand what you are
submitting. In computer science, there are many ways to accomplish
the same task, and solutions will vary by levels of exposure,
experience, and expertise. By not allowing a natural progression
of skills you risk undermining your long-term success in this
field. THEREFORE: In this
course, we will be developing skills and knowledge that are
important to discover and practice on your own. Because
use of AI tools inhibits development of these skills and
knowledge, students are not allowed to use any AI tools,
such as (but not limited to) ChatGPT or DallE 2, in this
course. Students are expected to present work that is their
own without assistance from others, including automated tools.
If you are unclear if something is an AI tool, check
with Professor Shacklette or a TA. Using AI tools for
any purposes in this course will violate the University�s
academic integrity policy and will incur subsequent, and
likely severe, penalties.
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 (4.0 points each) |
36.00% |
Project Faculty Evaluation (Project
description) |
38.00% |
Project Team Peer Evaluation (Instructions here) | 26.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). We will be using Github for
submissions:
Work Submission:
We will be using a repository for each submission. We have
provided invitation URLs on Ed Discussion that you will use to
request your lab repository. Use the GitHub classroom invitation
link for "LabN" [for N=1,2,3,4] to create your assignment
repository. See the Ed post for more info about submission using
GitHub classroom. Upload your LabN files and any supporting
materials to the repo. Please include a README text file that
contains any instructions or additional details for the TAs to
assist with grading.
When you open the invitation URL in a browser tab, you will have
to complete the following steps:
Github may ask you to grant permission for GitHub Classroom to
have access to your GitHub account. If you are asked this
question, you should say yes and grant access to Github Classroom.
You must click “Accept this assignment” or your repository will
not actually be created. Do not skip this step!
If you run into any issues, please ask for help on Ed
Discussion.
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 11 |
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 18 |
Money, Currency, Ledgers Foundational Background |
KOB Menger Bonneau2 Bryan Rauch |
Lab 2 -Continued Bitcoin setup |
Class 3 June 25 |
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 2 |
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 9 |
The Blockchain: Mining & Consensus |
BCT: Chapter 4 MB: Chapters 4, 5 Raskin Hooper Lebowitz |
Lab 5 - Your Own
Blockchain |
Class 6 July 16 |
Transactions Bitcoin Cryptocurrency: - Introduction to Transactions & Blockchain |
BCT: Chapter 5 MB: Chapter 10 Eyal Boehm Back |
Lab 6 -
Mine Your Blockchain |
Class 7
July 23 |
Wallets Bloom Filters Merkle Proofs (revisited) |
BCT: Chapter 6 Hussman |
Lab 7 - Create a
Bitcoin Address |
Class 8
July 30 |
Peer-To-Peer Networking Networking background Sockets & RPC Docker Build & Compose |
MB: Chapter 8 Szabo MB: Chapter 7 BIP-37 |
Lab 8 - Docker and
Compose |
Class 9 August 6 |
Final Thoughts |
BCT: Chapters 8, 9, 10 MB: Chapter 12 Bloom Decker Demers |
Lab 9 - Distribute Your Blockchain |
Class 10 August 13 |
Final Project Presentations |
Instructions for the
Final Team Presentation |
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.