|
|
|
|
|
Course Description
The potential applications for blockchains and cryptocurrencies are enormous. The course will cover the technical aspects of cryptocurrencies, blockchain technologies, and distributed consensus. Students will learn how these systems work and how to engineer secure software that interacts with a blockchain system like Bitcoin and Ethereum. For a list of the topics we will cover, please go to the course syllabus page. This course is intended for advanced undergraduates and graduate students.
Course Goal
The general goal of this course is to help you understand the challenges and solutions to engineer blockchain and Web3 apps. If you are interested in doing research or a startup in this emerging area, this course will hopefully get you started.
Course Format and Student Workload
This course will center around lecturing, individual assignments, and a final project done in teams of three. We will meet once per week where the teaching staff will talk about topics on engineering blockchain and Web3 apps. Students have three main responsibilities in the course:
- Complete the assigned readings on the syllabus page. These readings will often serve to expand on what we will discuss in the lectures. They are not a replacement for the lectures. They are also not necessary to be read before coming to lecture, but pre-reading can help in following the lecture. Some of the readings are research papers that are not easy to understand; you may find the reading advice on the advice page helpful.
- Complete the individual assignments. There are three problem sets and four programming assignments. You may collaborate when solving these assignments, however when writing up the solutions you must do so on your own. If you collaborate, please list the names of your collaborators on your assignment. (Please refer to course Collaboration and Teamwork policies below.)
- Complete the final project and demo. The final project is essentially a mini-startup project. You are expected to build a Web3 app and launch it on a test network. In terms of ideas, you are encouraged to come up with an idea of your own, which the teaching staff will help refine. Alternatively, you can choose one of the startup ideas we suggest. During the semester, your team will propose your project. Towards the end of the semester, we will have a Demo Day event where all teams pitch and demo their apps. Each team will submit code, documentation, data, URL to your appx, and pitch deck during the finals week. This project is a semester-long project: you and your team need to make constant progress throughout the semester, so that you can iterate and build a good app. You team will fail the final project badly if you spend no time on it during the semester and count only on the final push.
You should not take this course if you cannot commit to the above responsibilities.
Course Grade Breakdown
You are required to complete the individual assignments though you will be graded based solely on your final projects.
30%: | Project proposal |
30%: | Project demo |
40%: | Project launch |
10%: | An up to 10% extra credit may be given to the most active contributors to the course. |
0%: | There will be no exams. |
Prerequisites
COMS W3137 Data Structures and Algorithms, COMS W3157 Advanced Programming, and COMS W3827 Fundamentals of Computer Systems; or equivalents of these three courses.
The programming assignments will mostly be done in Python, Solidity (which we will study in this course), and Javascript.
Prior experience with cryptography or blockchain is helpful but not required; we will introduce relevant concepts from cryptography as needed during class but students with no background in cryptography may wish to do extra reading.
Enrollment
Enrollment for this class will be limited. Please register early if you plan to take this class. Please make sure you meet the prerequisites before registering. If you are waitlisted, please come to the first two weeks of the class because slots typically open up.
The enrollment is open to both advanced undergraduate and graduate students. Strong undergraduates interested in the course should contact the instructor.
Materials
Course readings will primarily be based on freely available online sources listed listed in the course syllabus page.
For the first few weeks we will be using the textbook Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction by Narayanan, Bonneau, Felten, Miller and Goldfeder (referred to as NBFMG in the syllabus). If you do not wish to purchase the textbook, you may use the author's preprint edition which is available for free online.
Collaboration / Copying Policy
Please read Computer Science Department’s Academic Honesty Policies & Procedures and Columbia College and Columbia Engineering’s Academic Integrity before you proceed.
We encourage you to help one another in understanding the concepts and principles needed to do the homework assignments and projects for this class. However, what you turn in must be your own, or for group projects, your group's own work. Copying any part of other people's code, solution sets, or from any other sources is strictly prohibited. The homework assignments and projects must be the work of the students turning them in. Anyone found violating the class collaboration policy will be punished severely.
You must explicitly cite all sources of information that you reference as part of your homework and project submissions. For each citation, you should describe how that source was referenced. You do not need to cite conversations with instructional staff or the course textbooks, but you should cite everything else, including any conversations with other students related to the homework assignments, and any websites used. Referencing any uncited sources other than the course materials is considered cheating.
All students or groups who are determined to submit work that violates the class collaboration policy will receive a receive an F for the course for the first offense. That is, we have zero tolerance of such violations. More serious cases of cheating, such as copying someone's work without their knowledge or cheating on exams, will result in the person cheating not only receiving an F for the course but also being reported to the Dean's office, which may result in further disciplinary actions, including suspension or expulsion from the program. Penalties will be given without discussion or warning; the first notice you receive may be a letter from the Dean. Note that you are responsible for not leaving copies of your assignments lying around and for protecting your files accordingly.
Late Policy
There will be no deadline extensions. For individual assignments, there is a 72-hour grace period, accumulated over all assignments, for which you will not be downgraded. Lateness is accounted at hour granularity (e.g., 1 second late == 1 hour late). Once you reach 72 hours of lateness, the next assignment submitted even one-second after the corresponding deadline will be graded zero. Thus, we strongly recommend you to submit on time, even if with an imperfectly running solution.
If you have an illness or emergency and request an exception to this policy, you must notify the teaching staff before the deadline with your timeline for turning in the work as well as requesting a letter from one of your student deans explaining the circumstances. We cannot extend the deadline past three days.
No late group project assignments will be accepted. Students are given plenty of time to work on their projects. Our demo events will happen in class and therefore cannot tolerate any late submissions.
Grading Policy
If you disagree with any grades, submit your grievance via a private post to all teaching staff on the online discussion board, documenting the merits of your case. The grader responsible will respond likewise via private reply. If you are still dissatisfied you may appeal in like manner to the instructor, who will only examine the online record of the dispute, and will respond via private reply. For a grade dispute to be considered, the written grievance must be submitted in writing within two weeks of when the respective assignment grade is released.
Teamwork Policy
Teams are formed based on mutual preferences of the students, and we expect all team members to contribute their best. However, on rare occasions, free riding does occur. Team members should try to resolve this issue internally first. If free riding continues, team members should send the teaching staff via a private note on the online discussion board documenting the free riding issues and failed attempts to resolve them internally. The teaching staff may reassign the free rider to a solo team or lower their grade accordingly.
Open Door Policy
We would like the course to run smoothly and enjoyably. Feel free to let us know what you find just, good, and interesting about the course. Let us know sooner about the reverse. See us or leave us a private note on the online discussion board.