E6998 Engineering Blockchain and Web3 Apps

Fall 2023 -- Junfeng Yang

  • Location: TBD
  • Time: T 10:10am-12:00pm
  • Credits: 3
  • Instructor: Junfeng Yang
  • Address: 519 CSB
  • Office Hours: By appointment

  • TA: TBD
  • Office Hours: TBD

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:

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.


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 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.


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.