# Learn

We have an assortment of lessons grouped into series based on their categories. These lessons are all written by Keenan Gugeler and Alexander Liao.

- Introduction to Computer Science:
This series is the Computer Science prequel; it outlines what computer science is and how to get setup to start programming.

- The Basics of Computer Science:
These are the basic principles of Computer Science, on which the many other advanced concepts are built. - Input and Output
- Variables
- Arithmetic in Computer Science
- Logic in Computer Science
- Conditionals
- Loops
- Functions
- Classes
- External Libraries
- Exceptions

- Data Structures:
Data structures are structured ways of storing data.

- Miscellaneous:
These are miscellaneous topics that need to be taught but that don't fit anywhere else.

- Graph Theory:
Graph theory is the study of graphs: structures used to represent connections between objects. - An introduction to graphs
- Path finding in Unweighted Graphs
- Path finding in Positively Weighted Graphs
- Path finding in Negatively Weighted Graphs
- MST: Prim's Algorithm
- MST: Kruskal's Algorithm

- Dynamic Programming:
Dynamic programming is a technique to solve problems that can be expressed recursively, by building up the answers iteratively. See the first lesson for a better introduction.

- Advanced Data Structures:
This series contains lessons on more advanced data structures.

- Object Oriented Programming:
Object oriented programming focuses on objects and the manipulation of them, including functions and classes.