A classroom where you can learn/teach common algorithms and data structures with Swift. Inspired by this blog post Always Be Coding and this repository Hapijs University.
Every few days an assignment will be given by creating an issue. You will fork this repository and send a pull request as your solution to the issue. We will do peer-review by commenting others' solutions. We will learn and teach all together.
The topics are:
- Sorting
- Selection sort
- Insertion sort
- Shell sort
- Mergesort
- Quicksort
- Heapsort, heaps and priority queues
- Searching
- Binary search
- Binary search trees
- Balanced search trees like red-black trees.
- Graph Theory
- Graph data structure alternatives
- Stacks and queues
- Depth-first search
- Breadth-first search
- Topological sort
- Minimum spanning trees
- Shortest paths, and hopefully more.
It is better if you are familiar with Swift, at least read the Swift book from Apple. The assignments will provide enough information to get you started, but mostly it will not repeat the info written in the algorithms books. You are encouraged to do the research on your own. The real benefit of this project comes from the peer-review of the solutions.
If you get stuck at some point, go and check others' solutions. But don't just copy it. After you've read the solution, simply look away, and see what you can recall from you've just read. Try to implement your own solution. Usually the first time you truly understand something is when you can actually do it yourself.
When writing your solutions, follow the RayWenderlich Swift Style Guide.
Like the idea? You could really help with any of the following:
- Suggest content, assignments, etc.
- Write assignments, tutorials, examples, etc.
- Help others by reviewing their solutions.
- Fix any bugs you found.
- Don't forget to be respectful all the time. Please read the Contributor Code of Conduct. You agree to abide its terms by participating in this project.