This course is an introduction to modern blockchain-based systems. Topics covered include consensus and distributed computing, example cryptocurrencies, programming smart contracts, privacy and secrecy, transfer networks, atomic swaps and transactions, non-currency applications of blockchains, and legal and social implications.
Students will find the course easier if they know GoLang, object oriented programming, concurrency (multi-threaded programming), socket programming, and public/private key cryptography. However, all of this will be covered in the course. If students have the time, they are higly encouraged to preview these topics before the course starts. Please see the resources section.
Here is our anonymous course feedback form. Link
Since we are trying to experiment with a lot of approaches on our projects, please feel free to fill out this form to let us know if there are materials that are not covered, or you think should be covered more in details.
If you feel you have physical, psychological, or learning disabilities that could affect your performance in the course, we urge you to contact SEAS (link). We will do whatever we can to support accommodations recommended by SEAS.
Being a student can be very stressful. If you feel you are under too much pressure or there are psychological issues that are keeping you from performing well at Brown, we encourage you to contact Brown’s Counseling and Psychological Services (CAPS: link). They provide confidential counseling.
If there are events that are upsetting to you, whether political, family-related, weather-related, etc., that affect your ability to do well in class, we are happy to take them into account with respect to our late and incomplete policies. Please feel free to talk to Prof. Herlihy about this. Additionally, Student Support Services Deans (link) can be a helpful resource for discussing current concerns and academic and personal plans. They are available for both same-day consults and scheduled appointments.
Here is the syllabus.
We will be using Gradescope this term, which allows us to provide fast and accurate feedback on your work. Homework will be submitted through Gradescope, and homework and exam grades will be returned through Gradescope. As soon as grades are posted, you will be notified immediately so that you can log in and see your feedback. You may also submit regrade requests if you feel we have made a mistake.
Here is the link to join our piazza Q&A. Click. If you have never used piazza, please first sign up an account. Then, search for our course name/number for summer 2021 semester and sign-up as a student.
This GoLang tutorial(here) from GoLang website is actually pretty well written. You should check it out.
This is an optional lab for learning C++ in our course. (here)
Gear ups will be 1-2 hour lectures with a question period going over stencil code for projects, as well as the project handout. Here, you will get the chance to learn exactly what you need to implement, as well as what code you will be relying on.
|5/19 7pm ET (join colbya on zoom)||
You can access our course youtube here. The contents are suplemental with the purpose to help with the projects.
Projects are due at 11:59 p.m. on the day they are marked as In. Note: Start on SimpleCoin early and please attend all labs/sections/gearups to ensure the project is managable. The first project will be the hardest because of the learning curve!
|1||Intro to Blockchains||5/13/21||Link|
|2||Intro to Bitcoin||5/18/121||Lecture||Bitcoin Whitepaper|
|3||Bitcoin Mining||5/20/21||Lecture||What is Bitcoin Mining?|
|4||Bitcoin Data Structures||5/25/21||Lecture|
|5||Ethereum Virtual Machine||5/27/21||Lecture||EVM Explained|
|6||Data Structures in Ethereum||6/1/21||Lecture|
|7||Intro to Solidity||6/3/21||Lecture|
|8||Solidity Pitfalls and Hazards Part One||6/8/21||Lecture|
|9||Solidity Pitfalls and Hazards Part Two||6/10/21||Lecture|
|10||Solidity Pitfalls and Hazards Part Three||6/15/21||Lecture|
|11||Solidity Pitfalls and Hazards Part Four||6/17/21||Lecture|
|12||Concurrency in Smart Contracts||6/22/21||Lecture|
|13||Atomicity in Blockchain||6/24/21||Lecture|
|14||Off-Chain Payment Channels||6/29/121/td>||Lecture|
|15||Wallets & Custody||7/1/21||Lecture|
|16||Privacy and Anonymity||7/6/21||Lecture|
|17||Privacy and Anonymity||7/8/21||Lecture|
Colby Anderson - cander23 - Sophomore
I love distributed systems for their scalability and for the design component. I love designing something that deals with many edge cases in elegant ways, while being extremely optimized. I also like systems security and computer science's applicability to finance. Besides this, I enjoy calisthenics and rock climbing
Champ Chairattana-Apirom - rchairat - junior
I'm a junior in CS. My main interests are cryptography which is somewhat related to this course topic.
Parker Ljung - pljung - Junior
I’m interested in the blockchain and crypto because people won’t shut up about it. While there’s some truth to that, I’m mostly interested in how blockchain technology might make digital voting a reality. In my free time I like to draw sneakers, play soccer, and stay hyped for Taco Tuesdays.
Steven Long - slong16 - Freshman
Hi! I'm Steven, coming from the great white north: Vancouver, Canada. I'm studying Comp Biology and Classics, but I can be found being bad at shooters, being less bad at strategy games, or wondering why I'm forcing myself to retain a humanities major. I'm super interested in Defi, smart contracts, and anything that's new in the crypto space.