Hey there! Feel free to edit this document add resources as you see fit!
What else should be included in the Curriculum?
What other open-source resources are available?
## What should be in the Curriculum?
It would be great to have a combination of instructional lectures, collaborative coding sessions (see Coding Tutorials below) and take-home projects. I'm writing this section to identify all the concepts we need to hit on.
- **Blockchain Basics** - Important concepts like understanding a cryptographic hash and its properties, the underlying blockchain as a data structure, and how consensus works to create a shared state among peers in a network.
- **Understanding Ethereum** - Learn how Ethereum is structured as a blockchain, how accounts and transactions work, how gas is essential to running a turing-complete machine on the blockchain and EVM basics.
- **Smart Contracts** - Understanding how to write, deploy and test smart contracts. When dapps are useful and when things can be offloaded to layer two.
- **Blockchain Optimizations** - Creating a merkle tree implementation, understanding why light clients are important and the general limitations to having a large shared state.
- **Layer Two** - What are technologies like the Lightning Network, State Channels and Plasma and how do they work? Learn to build your own Plasma MVP implementation and spin up a testnet.
- **Independent Study** - Learn about different problems that blockchain can help tackle. We want to have many tracks for understanding things like oracles, governance, decentralized exchange all through coding tutorials and take home projects.
## Coding Tutorials
To start, we have many open-source coding tutorials to draw from on [ChainShot](www.chainshot.com). These can be consumed statically or through the classroom application which allows many students to collaboratively code together with an instructor:
- **Introduction to Solidity** - Beginner Friendly -- [coming soon](https://github.com/ChainShot/Content/issues/7). The intention of this tutorial is to give an overview of all Solidity concepts to begin building.
- **Build a Solidity Escrow** - Beginner Friendly, Project-Based. Students write a Solidity Escrow that has three parties: an arbiter, a depositor and a beneficiary. They also write a front-end that interacts with the Solidity Escrow. At the end of the tutorial students can download their finished project and begin building on it to hit further milestones (i.e. remove the third party by adding an option to _burn_ the funds or create a more intuitive User Interface).
- **Build a Solidity Multi-Sig** - Difficult, Project-Based. This will likely require an instructor that can keep everyone on pace. We ran a workshop in devcon this year with this tutorial and the class managed to crowdsource a working multi-sig wallet in 2 hours.
- **Minimal Viable Plasma in Solidity & JS** - Difficult, Academic. This one will likely need to be worked on by students in several sessions. It is primarily esoteric as Plasma MVP is not a form of Plasma that will get any real production use. However, understanding the concepts of how the root chain interacts with the child chain and its clients will be beneficial to understanding layer two scaling. ChainShot is finishing up this one now and will likely release within the next month.