Sonoma State University

Department of Computer Science

CS 385 - Blockchain Engineering (Selected Topics in Computer Science), Spring 2024

Course Information

  • Class Time:
    • Monday's 9:30 a.m. to 10:45 a.m.
    • Wednesday's 9:30 a.m. to 10:45 a.m.
  • Classroom: Salazar Hall 1035
  • Format: In person

Instructor Contact Information

  • Name: Tim Coulter
  • Office Location: Darwin 116D (beware, I'm not there often)
  • Email: coultert@sonoma.edu
  • Office Hours: Thursdays's, 11 a.m. to 12 p.m., on Zoom, by appointment only. Email for appointment. (Times subject to change.)

Textbooks & Optional Content

Required Technology & Websites

  • Frame Wallet
    • Official website | Documentation
    • You may also use Metamask but I don't recommend it and will not teach it
    • Many crypto sites recommend Metamask for historical reasons. Frame is a direct replacement and can be used wherever Metamask is required.
  • Sepolia testnet PoW Faucet
  • Etherscan (Sepolia) Blockchain Explorer
  • Hardhat Ethereum Development Environment
    • https://hardhat.org/
    • Javascript-based Ethereum development environment
    • You may use other tools, but do so at your own risk - they will not be taught.

Course Description

In this course, students will learn the history of the blockchain -- specifically, the Bitcoin and Ethereum blockchains -- and how blockchains can be used to store value in a digital world. The course will cover the inner workings of blockchain protocols, including cryptographic hashing, data storage, consensus algorithms, and public/private key cryptography. Students will learn how to program smart-contracts in Solidity using their choice of smart-contract framework (either Hardhat or Brownie) and their favorite scripting language (either Javascript or Python, respectively). At the end of the course, students will have deployed an application on top of the Ethereum blockchain that extends beyond typical cryptocurrency-based use cases. This course is recommended for students with experience or interest in web technologies and scripting languages like Javascript and Python.

Content, Timeline, and Important Dates

Week #Class Date(s)TopicAssessment / Homework
1Jan 24thWelcome, Syllabus, and Introduction--
2Jan 29th
Jan 31st
History: Blockchain's Why, When, and How
Blockchain Security & Consensys Mechanisms
--
Quiz: Blockchain History
3Feb 5th
Feb 7th
Wallets, Accounts, Private Keys, and Testnets
Interacting with Web3 Applications
--
Participation: Contract Interaction
4Feb 12th
Feb 14th
Solidity: Hello World, Pragma, Contract, Functions, State Mutability
Solidity: Variables, Primitive Types, Loops, Conditionals, Arrays
--
Code: Riddles
5Feb 19th
Feb 21st
Solidity: Bytes, Mapping, Structs, Enum
Solidity: Contract Types, Constructors, Factory Contracts
--
Code: Database
6Feb 26th
Feb 28th
Solidity: Managing Ether, Gas, Units, and Payable
Solidity: Reverts; Error Handling & Debugging
--
Code: Bobbing for Errors
7Mar 4th
Mar 6th
Solidity: Imports, Interfaces, Libraries, and Inheritance
Solidity: Math, Unchecked, and Safe Libraries
--
TBD
8Mar 11th
Mar 13th
Midterm Review
MIDTERM
--
In-class Assessment
9Mar 18th
Mar 20th
NO CLASS: SPRING BREAK!
10Mar 25th
Mar 27th
Smart Contract Development with Hardhat
Testing and Contract Interaction with Javascript
--
Participation: Contract Deployment
11Apr 1st
Apr 3rd
NO CLASS
Loose ends
--
--
12Apr 8th
Apr 10th
Tokenization
ERC20 Tokens
--
Participation: Your Very Own Token (Part 1)
13Apr 15th
Apr 17th
Presentation Overview, Using and Understanding Uniswap
Base Rate Minting & Exchange
--
Participation: Your Very Own Token (Part 2)
14Apr 22th
Apr 24th
Decentralized Lending with DAI
Hardhat Loose Ends
--
Participation: Your Very Own Token (Part 3)
15Apr 29th
May 1st
The DAO Hack
Discuss Presentation Scoring & Final
--
--
16May 6th
May 8th
Presentations
Presentations
Grade determined by your peers
Bwa-ha-ha-ha-ha! (see below)
17May 15thFINAL (different class time, 8 a.m. to 10 a.m.)In-class Assessment

Grading Breakdown

You're final grade will be computed via the following table.

Assessment Type% of final grade
Participation / Quiz50%
Midterm20%
Final20%
Presentations10%

Types of Assessments, and their Importance to the Class

You will receive the following types of assessments throughout the class.

  • Participation Activities
    • You will interact with real blockchains, using real (testnet) Ether, often interacting with smart contracts used by -- and sometimes created by -- your fellow students.
    • Graded as complete/not-complete. They will often be take-home.
    • You will write code for these activities in the latter part of class.
    • These activities ensure you're following along with the class, and establish the collaborative (and combatitive!) nature of the blockchain.
  • Quiz
    • You will show your individual knowledge of blockchain topics and Solidity code.
    • Graded as complete/not-complete. They will always be take-home.
    • Questions will typically be short answer, the shorter the better. I'll use these as formative assessments, where I can give you immediate feedback about your learning.
  • Midterm / Final
    • These are summative assessments, measuring how well you've retained the material discussed in class.
    • Graded via points (i.e., points received / total points). They will always be in person.
    • These will typically be longer quizzes, and will cover all material discussed up until that point.
  • Presentation
    • All students will be required to give a presentation. You may work alone or in a group of two.
    • Students must research and present an interesting topic in crypto/blockchain. This could be:
      • Cool contract types and topics not listed (blind auctions, provenance, payment channels, proxy contracts, yield farming, cross-chain bridges, etc.)
      • Cool blockchain services and how they work (Yearn Finance, AAVE, ENS, OpenSea, dYdX, etc.)
      • Historical hacks not covered in class (the DAO hack, SushiSwap Vampire Attack, bridge attacks, etc.)
      • You will be scored by your peers, using tokens. Your grade will be scaled based on the student that receives the most tokens.
    • The topic must have at least some relationship to Ethereum (e.g., don't present on other blockchains like EOS).
    • DO NOT choose a topic covered in class.

Dropping, Adding, and Waitlist Policy

Students are responsible for understanding the policies and procedures about add/drops, academic renewal, etc. How to Register https://registrar.sonoma.edu/how-register#howto ​​has step-by-step instructions and important deadlines and penalties for adding and dropping classes. Students on the waitlist need to talk directly with their academic advisor for help accessing the class.

Academic Integrity & Plagiarism Policy

Students should be familiar with the University’s Cheating and Plagiarism Policy. Your own commitment to learning, as evidenced by your enrollment at Sonoma State University and the University’s policy, require you to be honest in all your academic coursework. Instances of academic dishonesty will not be tolerated. Cheating on exams or plagiarism (presenting the work of another as your own, or the use of another person’s ideas without giving proper credit) will result in a failing grade and sanctions by the University. For this class, all assignments are to be completed by the individual student unless otherwise specified.

Artificial Intelligence Use Policy

All use of generative AI (artificial intelligence) tools, like ChatGPT, Bard, and DALL-E, must be properly cited. Including generative AI output without proper citation is very similar to copying directly from the internet and will be considered the same as plagiarism. AI is a tool that cannot replace your learning to think, write, research, and create for yourself. If you choose to use an AI tool, verify any information it provides and be sure to properly cite any content you integrate into your academic and personal projects. For guidance on how to cite or verify AI-generated content, visit, email, chat, or make an appointment with our Sonoma State University librarians.

Please note that if the entirety of your work was generated via AI, you will receive no credit for that work even if the AI output was properly cited.

Examples of citations I'll accept:

  • Comments in code that clearly state which portions of the code are AI generated, and the AI tool used.
  • A block quote in a written response that that clearly shows which portion of the response were AI generated, citing the AI tool used.

I will not accept any AI generated images, or any answers that were completely generated by AI, even if properly cited.

Phone and Technology Use Policy

I love technology! This is a computer science class after all. Bring whatever technology to class that you think will help you be successful. However, please be courteous to others and silence your cell phones and all other noise-making devices. If you need to answer an important call, by all means do, but do so outside the classroom.

Other Policies

Question about this syllabus, or any policy it contains?

Please reach out to me at coultert@sonoma.edu with any questions!