GithubHelp home page GithubHelp logo

enkidevs / curriculum Goto Github PK

View Code? Open in Web Editor NEW
768.0 50.0 1.1K 23.65 MB

πŸ‘©β€πŸ« πŸ‘¨β€πŸ« The open-source curriculum of Enki!

Home Page: https://www.enki.com/mobile-app

License: Other

enki curriculum java javascript linux python security sql blockchain computer-science git html css learn-to-code education algorithms ai chatgpt data-science gpt4

curriculum's Introduction

Enki Content

Welcome to our open-source content repository! At Enki, we feel that education is a community effort, and is best approached when everyone is involved and engaged. To that end, we have an entirely open-source curriculum available for you to edit, comment on, and contribute to! To get started, have a look at our Wiki.

Learning happens best in a psychologically safe environment, so we've adopted the contributor covenant as our code of conduct. If a list of rules isn't helping you envision what we're after, here's another great resource (from The Recurse Center, read the Social Rules section) for how to participate in creating a community you'd like to be a part of. We will enforce this, please get in touch with [email protected] with questions or concerns. Everyone is learning all the time, so disputes will be arbitrated first, and good-faith efforts are what is expected.

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. In simpler terms, it means you can't charge other people to use it, or use it to make money, but you can definitely use it to help people learn and you're free to remix or adapt what we have, so long as you attribute Enki, and the author of the work.

curriculum's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

curriculum's Issues

Integrate Free Code Camp Videos

We're going to be adding video content to Enki soon, and we want to maintain our commitment to free and open-source content.

Free Code Camp is an amazing resource, and our audience will learn a lot from their content. That said, they have a lot of content, so I'm breaking up these issues into afternoon-sized tasks.

Add videos to relevant JavaScript Core insights

We're going to incorporate video content in Enki soon, but we're going to maintain our commitment to using free, open-source materials.
This guy makes amazing JavaScript videos that go over fundamental JavaScript concepts. https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q

Attach as many of his videos as you can to as many JavaScript insights as are relevant. Do this by adding a link to the links field, formatted like so:

Blockchain Fundamentals - Ethereum II

The curriculum had undergone some restructuring and the branch insights might not match. If they don't, consider the information here as the source of truth.

Content creation for the thirteenth workout in the Fundamentals course.

From the list of standards, the ones applicable are:

  • Identify blockchain components
  • Identify differences between cryptocurrencies
  • Architect a theoretical blockchain

As main questions to be answered:

  • What are ERC20 tokens?
  • How do they work?
  • What are ICOs?

Blockchain Fundamentals - Altcoins

The curriculum had undergone some restructuring and the branch insights might not match. If they don't, consider the information here as the source of truth.

Content creation for the seventh workout in the Fundamentals course.

From the list of standards, the ones applicable are:

  • Evaluate potential applications of the blockchain
  • Identify differences between cryptocurrencies

As main questions to be answered:

  • What are crypto currencies?
  • Why are there altcoins?

Blockchain Fundamentals - The Bitcoin Ledger

The curriculum had undergone some restructuring and the branch insights might not match. If they don't, consider the information here as the source of truth.

Content creation for the third workout in the Fundamentals course.

From the list of standards, the ones applicable are:

  • Identify blockchain components
  • Architect a theoretical blockchain
  • Identify the process through which miners are paid

As main points to be covered:

  • The UTXO model
  • How are transactions verified?
  • Consensus
  • Common attacks against the blockchain

Blockchain Fundamentals - Forking

The curriculum had undergone some restructuring and the branch insights might not match. If they don't, consider the information here as the source of truth.

Content creation for the ninth workout in the Fundamentals course.

From the list of standards, the ones applicable are:

  • Identify blockchain components
  • Identify differences between cryptocurrencies
  • Architect a theoretical blockchain

As main questions to be answered:

  • What is soft-forking?
  • What is hard-forking?
  • When is a fork required?
  • Who decides if a fork should happen?

Blockchain Fundamentals - Cryptoeconomics

The curriculum had undergone some restructuring and the branch insights might not match. If they don't, consider the information here as the source of truth.

Content creation for the tenth workout in the Fundamentals course.

From the list of standards, the ones applicable are:

  • Identify blockchain components
  • Identify differences between cryptocurrencies
  • Architect a theoretical blockchain

As main questions to be answered:

  • How do cryptocoins acquire exchange value?
  • Why is the price fluctuating so much?

Blockchain Fundamentals - Ethereum I

The curriculum had undergone some restructuring and the branch insights might not match. If they don't, consider the information here as the source of truth.

Content creation for the eleventh workout in the Fundamentals course.

From the list of standards, the following should be included in either of the insights:

  • bc.analyze-blockchain-components.2
  • bc.analyze-blockchain-components.3
  • bc.identify-blockchain-applications.3
  • bc.identify-blockchain-applications.4
  • bc.compare-altcoins.2
  • bc.compare-altcoins.5
  • bc.analyze-smart-contracts.0

As main questions to be answered:

  • What is Ethereum?
  • What are smart contracts?
  • The account/balance model

JIT compilers optimization - JS

Add a new insight/workout on JIT compilers, based on: https://hacks.mozilla.org/2017/02/a-crash-course-in-just-in-time-jit-compilers/

Fun optimization consequence:

This is (a lot) faster:

myFunction({ x: '1', a: true, b: undefined, c: undefined, d: undefined })
myFunction({ x: '1', a: undefined, b: true, c: undefined, d: undefined })
myFunction({ x: '1', a: undefined, b: undefined, c: true, d: undefined })
myFunction({ x: '1', a: undefined, b: undefined, c: undefined, d: true })

Than this:

myFunction({ x: '1', a: true })
myFunction({ x: '1', b: true })
myFunction({ x: '1', c: true })
myFunction({ x: '1', d: true })

DQL typo

File with typo: curriculum/sql/dql/what-is-sql/database-server-types.md
e2d48cb9-9945-4e76-bd13-bbe4b0c6eb4a

Add videos to relevant Python Core insights

We're going to incorporate video content in Enki soon, but we're going to maintain our commitment to using free, open-source materials.
This guy makes amazing Python videos that go over fundamental Python concepts. https://www.youtube.com/user/schafer5/

Attach as many of his videos as you can to as many Python insights as are relevant. Do this by adding a link to the links field, formatted like so:

- '[Install Python Tutorial Video](https://www.youtube.com/watch?v=YYXdXT2l-Gg){video}'

Add Python Questions

  • Add python clickbaits to relevant insights as quiz questions
  • Create stubs for clickbaits that don't go with an insight

Blockchain Fundamentals - Identity and Anonimity

The curriculum had undergone some restructuring and the branch insights might not match. If they don't, consider the information here as the source of truth.

Content creation for the sixth workout in the Fundamentals course.

From the list of standards, the ones applicable are:

  • Identify blockchain components
  • Evaluate potential applications of the blockchain
  • Architect a theoretical blockchain

As main points to be covered:

  • Identity on the blockchain
  • Anonymity and Mixing
  • Anonymity on the Bitcoin blockchain

Blockchain Fundamentals - Consensus Algorithms

The curriculum had undergone some restructuring and the branch insights might not match. If they don't, consider the information here as the source of truth.

Content creation for the eighth workout in the Fundamentals course.

From the list of standards, the ones applicable are:

  • Identify blockchain components
  • Identify the process through which miners are paid
  • Identify differences between cryptocurrencies
  • Architect a theoretical blockchain

As main points to be answered:

  • What are consensus algorithms?
  • Proof of work
  • Proof of stake
  • Proof of authority
  • Byzantine Fault Tolerance

Add Node Profiling workout

Create a workout to cover the following objective:

  • Use node memory profiling tools to detect memory leaks in a JavaScript program

I'm talking about node --expose-gc myScript.js --logHeapUsage and other tools. I'd like a workout that focuses on using the tools built into node for finding memory leaks.

If there is an open-source exercise or videos, make sure to add them to the links area, because this is a very hands-on task that people would need to practice to understand.

Blockchain Fundamentals - Mining

The curriculum had undergone some restructuring and the branch insights might not match. If they don't, consider the information here as the source of truth.

Content creation for the fourth workout in the Fundamentals course.

From the list of standards, the ones applicable are:

  • Identify blockchain components
  • Identify the process through which miners are paid
  • Use processing units for mining purposes

As main questions to be answered:

  • What is mining?
  • What is mining in the context of Bitcoin?
  • Why do people mine Bitcoin?

Review SQL Insights

These insights have been rated by our users as WTF at much higher rates than usual. Review them for typos and incorrect questions, also check the user comments to see what might be wrong with them.

SQL

Users left the app after viewing these insights, and never came back! Review them to make sure there isn't something really wrong with them 😱

Add performance workout to node course

Create a workout that covers the following objective:

  • Use profiling tools to discover and resolve server latency issues

Resources:
https://github.com/nearform/node-clinic
https://github.com/sidorares/node-wrk
https://github.com/mcollina/autocannon

This workout should come with a glitch.com programming environment that is set up to be profiled, with some issues that can be resolved and discovered by the profiler. Here's an example app that could be profiled (though you may need to create some problems.)

Add Linux Questions

  • Add clickbaits as quiz questions to relevant insights
  • Create stubs for questions that don't go anywhere

Launch Security topic

Related doc on the process:
https://paper.dropbox.com/doc/Adding-a-new-Topic-to-the-DB-V9GAJPA62c5wKaKufpk9O

Items to check

Blockchain Fundamentals - Solidity

The curriculum had undergone some restructuring and the branch insights might not match. If they don't, consider the information here as the source of truth.

Content creation for the twelfth workout in the Fundamentals course.

From the list of standards, the ones applicable are:

  • Identify blockchain components
  • Identify differences between cryptocurrencies
  • Architect a theoretical blockchain
  • Explain the smart contract inception and fulfillment flow
  • Identify security concerns caused by improper configuration or code with Solidity

As main points to be answered:

  • What is Solidity?
  • Solidity security concerns
  • Discuss case studies of heists caused by bugs

Review Git Insights

These insights have been reviewed by our users as WTF at much higher rates than usual. Check them for typos and incorrect questions. You can take a look at the user comments to get an idea of what might be wrong with them.

Git

Users left the app after viewing these insights, and never came back! Review them to make sure there isn't something really wrong with them 😱

Add Git Flight Rules as a resource to Git content

Mozilla engineer @k88hudson created an amazing resource for Git, which would materially improve the git curriculum. It also looks like a great source of insights that we might not have.

https://github.com/k88hudson/git-flight-rules

  • Add links to this resource to relevant Git insights (link to specific sections of the resource)
  • Create Standards and Objectives for uncovered content from that repo
  • Create insights for uncovered content from that repo

Tag Python Core with Python Standards

Issue this as a PR to the standards branch. Use the python-standards branch as the main working branch.

Format:

standards:
  sql.aggregate-single-table: 10

For points, just use 10 for now, we'll dynamically allocate points for real later.

Add Mozilla Developer Network links to Web topic

The Mozilla Developer Network has a great set of in-depth tutorials and resources and is one of the most newbie-friendly sets of resources out there. We want to add these links to our curriculum so that the Learn More emails are more useful for newbies.

Add Mozilla Developer Network Links to JavaScript courses

Mozilla Developer Network has a great set of examples and serves as the most canonical and newbie-friendly documentation of the JavaScript language.
Let's add as many links as we can to our curriculum.

Add Exercises to SQL Workouts

Add Exercises to the SQL workouts- add them as data in the README.md file of the workout folder. Currently should be formatted as below (I used the sql:dql:basic-queries workout as an example).

sql/dql/README.md

name: SELECT

type: insights-list

description: Learn to read data from a SQL Database

section: 0

parent: database-clients

insights:
  - select
  - where
  - where-2
  - where-3
  - order-by-clause

---
## Exercise
sqlfiddle-link: a link to a sqlfiddle pre-loaded with data to be presented with the question
answer: 46
### Question
(a markdown-formatted string question that is asked in such a way that it validates that a command was executed)  
How many pokemon are electric type?

---
## Exercise 
answer: 4
sqlfiddle-link: http://sqlfiddle.com/#!9/a6c585/1
### Question
How many pokemon are water AND electric type?

---
## Exercise 
etc

Add Standards back to Security topics

Although we can't merge it yet as the content consumer won't know how to parse standards, we should make a PR, re-adding them to all insights in Security topic.

As mentioned here #485, I've removed them such we can go forward with the topic launch.

If you checkout at f71f12edee10bd4cbc749fd5f8c385ebaa7cd666 you can see the insight files, having the standards field. They can be copy-pasted from here. I wouldn't recommend a revert commit, as in the same commit I applied more fixes.

Review Linux Insights

Users have reported these insights as WTF at much higher rates than average.
Take a look at them and review them for typos and problems with questions. You can also look at comments to get an idea of what might be wrong with them.

Linux

Users left the app after viewing these insights, and never came back! Review them to make sure there isn't something really wrong with them 😱

Review Python Insights

Users have reviewed these insights as "WTF" at a much higher rate than average, there might be something wrong with them. Review them for typos, incorrect questions, or other problems.

Python

Users have left the app after viewing these insights, and never came back. Review them to make sure there isn't something really wrong with them 😱

Python

Add CSS-Diner as an exercise to the web curriculum

Looking to prototype some open-source exercises in the web curriculum.

Add this as an exercise to a relevant workout: https://flukeout.github.io/

Part of the challenge of adding this to the curriculum is figuring out how we'll verify that they did it. Maybe split it up into multiple exercises, send the user the link and tell them to do exercises X-Y, and then ask them the answer to the last one.

Blockchain Fundamentals - Wallets

The curriculum had undergone some restructuring and the branch insights might not match. If they don't, consider the information here as the source of truth.

Content creation for the fifth workout in the Fundamentals course.

From the list of standards, the ones applicable are:

  • Identify blockchain components
  • Identify differences between cryptocurrencies

As main questions to be answered:

  • What is a wallet?
  • How do you track coin balance?
  • What types of wallets are there?

Review Java Insights

Users have reviewed these insights as WTF at much higher rates than usual.
Review them and look for typos, incorrect questions, etc. You can also check the comments to get an idea about what might be wrong with them.

Java

Users left the app after viewing these insights, and never came back! Review them to make sure there isn't something really wrong with them 😱

Add JS Questions

  • Add JS clickbaits as quiz questions
  • Create stubs for questions that don't go with an insight

OWASP Top 10 Application Vulnerabilities

Take the OWASP Top 10 Vulnerabilities and create one workout:vulnerability.

  • A1 : Injection
  • A2 : Broken Authentication
  • A3 : Sensitive Data Exposure
  • A4 : XML External Entities (XXE)
  • A5 : Broken Access Control
  • A6 : Security Misconfiguration
  • A7 : Cross-Site Scripting (XSS)
  • A8 : Insecure Deserialization
  • A9 : Using Components with Known Vulnerabilities
  • A10 : Insufficient Logging and Monitoring

Add pacman to Linux package manager lessions

Seeing that Manjaro (number 2 on DistroWatch) and Antergos (number 5) are both very popular distros, Arch itself being very prominent (number 13) it would make sense to include more than Debian/RedHat package management systems to the course.

Review Web Insights

Users have rated these insights as "WTF" at much higher than average rates. Review them for typos, incorrect questions, etc.
You can also read the user comments to get an idea of what might be wrong with them.

Web

Users left the app after viewing these insights, and never came back! Review them to make sure there isn't something really wrong with them 😱

Create JavaScript Testing course from shorter subtopics

The JavaScript Testing subtopics are too small to be courses, and too large to simply add to another course. Let's merge them into a JavaScript Testing subtopic. Note that many of these courses already exist so take a look through the JavaScript folder before you create any content.

  • Create JavaScript Testing subtopic
  • Add Mocha
  • Add Chai
  • Add Jasmine
  • Add Jest

Blockchain Fundamentals - The Bitcoin Blockchain workout

The curriculum had undergone some restructuring and the branch insights might not match. If they don't, consider the information here as the source of truth.

Content creation for the second workout in the Fundamentals course.

From the list of standards, the ones applicable are:

  • Evaluate potential applications of the blockchain
  • Architect a theoretical blockchain
  • Identify differences between cryptocurrencies

As main points to be covered:

  • The Bitcoin Blockchain
  • The Bitcoin Block
  • The Bitcoin Ledger

Review JavaScript Insights

Users have reviewed these insights as "WTF" at much higher than average rates. Review them for typos, incorrect questions, etc. You can also read user comments to get an idea of what might be wrong with them.

JavaScript

Users have left the app after viewing these insights, and never came back. Review them to make sure there isn't something really wrong with them 😱

JS Core needs to be retagged with objectives

JS core was tagged with some standards, but the coverage is incomplete and it needs to be retagged in the following format to specify an objective:

standards:
  js.javascript-syntax.0: 10

Review Computer Science Insights

These insights have been reviewed by our users as WTF at much higher rates than usual.
Check them for typos or incorrect questions, also check the comments to see what might be wrong with them.

Comp. Sci.

Users left the app after viewing these insights, and never came back! Review them to make sure there isn't something really wrong with them 😱

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.