During 2018 I'd like to revisit core, fundamental computing concepts that I may not get exposure to during my day-to-day programming. I'll also take this time to experiment with programming languages that I would like to learn like Go, Rust and Clojure.
This README will serve as a work-in-progress syllabus and checklist for my progress.
- Data Structures
- Algorithms
- Lower-level computing concepts
- Math Skills
- Stacks https://www.hackerrank.com/domains/data-structures/stacks
- Maximum Element https://www.hackerrank.com/challenges/maximum-element/problem
- Queues https://www.hackerrank.com/domains/data-structures/queues
- Linked Lists https://www.hackerrank.com/domains/data-structures/linked-lists/1
- Trees https://www.hackerrank.com/domains/data-structures/trees
- Balanced Trees https://www.hackerrank.com/domains/data-structures/balanced-trees
- Heap https://www.hackerrank.com/domains/data-structures/heap
- Tries https://www.hackerrank.com/domains/data-structures/trie
- Graphs - breadth first search, depth-first search, Dijkstra's shortest path, and A* search https://www.hackerrank.com/domains/algorithms/graph-theory
- Recursive problems https://www.hackerrank.com/domains/algorithms/recursion
- Search algorithms https://www.hackerrank.com/domains/algorithms/search
- Greedy algorithms https://www.hackerrank.com/domains/algorithms/greedy
- Dynamic programming https://www.hackerrank.com/domains/algorithms/dynamic-programming
- Bit manipulation algorithms https://www.hackerrank.com/domains/algorithms/bit-manipulation
- Sorting https://www.hackerrank.com/domains/algorithms/arrays-and-sorting
Low-level Computing Concepts (practice done by reading, linking descriptions, and making small demonstrations in C or C++)
- Low-level Computing Concepts (involve reading & making small demos in C or C++ to demonstrate concepts)
- Memory management -
malloc
,free
, pointers, virtual memory, etc - ARC vs Garbage Collection https://developer.apple.com/library/content/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html
- Creating/avoiding memory leaks
- Heap vs stack memory https://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap https://en.wikipedia.org/wiki/Memory_management#Dynamic_memory_allocation
- Scope/Environments https://en.wikipedia.org/wiki/Scope_(computer_science)
- Complete Khan Academy's Linear Algebra course https://www.khanacademy.org/math/linear-algebra