Open Source Education
We believe that quality education should be accessible to everyone.
The following educational materials have been open-sourced and released to the public domain as our contribution to the world in support of that goal.
Introduction to Programming Workshop
These materials are designed to support a one-day workshop with two main goals:
1) Help students understand the big picture of how software systems work at large enterprises.
2) Teach students their first programming language (which will be Python if you use these materials.
In the first half of class we explore the vast array of software that powers modern enterprises—from web servers to databases to cloud compute resources to point of sale systems—and how these systems are connected.
In the second half of class, students learn to read and write simple Python programs. We teach this section as if it is students’ very first programming language, with a strong focus on fundamentals like data types, variables, control flow, and functions.
Introduction to Deep Learning
An ongoing project to introduce crucial concepts of machine learning and neural networks. This curriculum includes extensive reading suggestions and a series of 15+ Jupyter Notebooks demonstrating key Deep Learning concepts in Python using the Keras framework. Start from the very beginning and learn about deep learning with practical, hands-on tutorials.
Graph Theory Fundamentals
Our graph theory fundamentals content is not quite a textbook, it’s not quite an online course, but an ordered collection of materials designed to help instructors and students alike learn the fundamentals of graph theory. This seven article series, and companion Github repo gives you the opportunity to read about and practice critical topics from the world of graph theory. It’s all open source and relinquished to the public domain.
Conway’s Game of Life
Conway’s Game of Life is a classic. Invented by John Conway in 1970, the “zero player game” is a wonderful example of emergent behavior. Although each cell follows the same simple rules, wonderful patterns emerge. As time went on, the Game was shown to be Turing Complete, meaning any program could be represented as an initial state to Conway’s Game of Life given a large enough grid. That’s incredible!
I made the original, then I had fun playing with the rules, making “Conway’s Editor”, and exploring the world of “Cellular Automata”. I hope you enjoy it.
Data Structures and Algorithms Curriculum
This repository contains curriculum materials designed to help schools, educators, companies, non-profits, or anyone at all teach an introductory computer science course. The materials here target concepts at the very core of computer science, and are focused primarily on introducing data structures and algorithms to students who have already been learning to program.
All the material in this repository has been released to the public domain, feel free to copy, clone, and modify these materials for any purpose whatsoever.
Hash Tables and Hash Functions
Hash tables and hash functions are at the heart of computer programming. They are ubiquitous and diverse. From checksums to crypto currency and from chaining to cuckoo hashing, hash functions have earned their place in the computer science hall of fame. This repository is meant to help you learn about checksums and hash tables. Read each section, then build a series of hash functions and incorporate them into a hash table. This is an
npm package, with tests provided.
Learn Computational Genetics
An ongoing project to explore the connections between genetics and computer programming. Start from the basics and learn how to process genetic data. New articles and code samples will be added as they are created.