# Wallbreakers 2019 Summer Syllabus Made by Guillermo Sanchez Lamas – [GitHub](http://github.com/membriux), [LinkedIn](http://linkedin.com/in/guillermo-s) <h3><a href="https://docs.google.com/document/d/1clBU6vYIjnBrMDwNJrcUR0yY4bVTQXKBk45s9NBrvNU/edit" target="_blank">Wallbreakers assigment submission help guide by Ish Perez</a> </h3> ## Week One **Goal** >Decide which programming language you will study in this course. It is key to be fluent in at least one language during coding interviews. We also want to make sure you are comfortable writing basic code in your programming language of choice. - [ ] Topics Covered in **This Week’s Coding Exercises**: <details> <summary>Arrays</summary> <a href="https://leetcode.com/problems/sort-array-by-parity">Sort array by parity</a><br> <a href="https://leetcode.com/problems/transpose-matrix">Transpose Matrix</a><br> <a href="https://leetcode.com/problems/flipping-an-image">Flipping an image</a><br> </details> <br> <details> <summary>Basic Mathematics and Modular Arithmetics</summary> <a href="https://leetcode.com/problems/self-dividing-numbers">Self dividing nums</a><br> <a href="https://leetcode.com/problems/fizz-buzz">Fizz buzz</a><br> <a href="https://leetcode.com/problems/plus-one">Plus one</a><br> <a href="https://leetcode.com/problems/excel-sheet-column-number">Excel sheet column number</a><br> <a href="https://leetcode.com/problems/power-of-two">Power of two</a><br> </details> <br> <details> <summary>Simple String Manipulation</summary> <a href="https://leetcode.com/problems/reverse-string">Reverse String</a><br> <a href="https://leetcode.com/problems/detect-capital">Detect Capital</a><br> <a href="https://leetcode.com/problems/reverse-words-in-a-string-iii">Reverse strings in a string iii</a><br> <a href="https://leetcode.com/problems/valid-palindrome">Valid palindrome</a><br> <a href="https://leetcode.com/problems/reverse-vowels-of-a-string">Reverse vowels of a string</a><br> <a href="https://leetcode.com/problems/longest-common-prefix">Longest common-prefix</a><br> </details> <br> <details> <summary>Simple Bitwise Manipulation</summary> <a href="https://leetcode.com/problems/number-complement">Number Complement</a><br> <a href="https://leetcode.com/problems/hamming-distance/">Hamming Distance</a><br> <a href="https://leetcode.com/problems/binary-gap">Binary Gap</a><br> <a href="https://leetcode.com/problems/single-number">Single Number</a><br> </details> <br> <details> <summary>Hash Maps and Hash Sets</summary> <a href="https://leetcode.com/problems/two-sum/">Two sum</a><br> <a href="https://leetcode.com/problems/valid-anagram/">Valid anagram</a><br> </details> <br> <details> <summary>Union Find</summary> <a href="https://leetcode.com/problems/friend-circles">Friend circles</a><br> <a href="https://leetcode.com/problems/number-of-islands">Number of islands</a><br> <a href="https://leetcode.com/problems/surrounded-regions">Surrounded regions</a><br> </details> **<h3>[Week 1 Submission Link](https://forms.gle/CvTYMpEFm193U5zr5)</h3>** ## Week Two **Goals** >Be comfortable using hash maps and hash sets in your language of choice. Look at multisets (a special type of hash maps used for counting occurrences of objects). - [ ] Topics Covered in This Week’s Coding Exercises: <details> <summary>Hash Maps and Hash Sets</summary> <a href="https://leetcode.com/problems/jewels-and-stones/"> Jewels and Stones</a><br> <a href="https://leetcode.com/problems/unique-morse-code-words/">Unique morse code words</a><br> <a href="https://leetcode.com/problems/happy-number/">Happy number</a><br> <a href="https://leetcode.com/problems/uncommon-words-from-two-sentences/">Uncommon from two sentences</a><br> <a href="https://leetcode.com/problems/distribute-candies/">Distribute Candies</a><br> <a href="https://leetcode.com/problems/groups-of-special-equivalent-strings/"> Groups of special equivalent strings</a><br> <a href="https://leetcode.com/problems/intersection-of-two-arrays/">Intersection of two arrays</a><br> <a href="https://leetcode.com/problems/valid-sudoku/">Valid sudoku</a><br> <a href="https://leetcode.com/problems/isomorphic-strings/">Isomorphic strings</a><br> <a href="https://leetcode.com/problems/word-pattern/">Word pattern</a><br> <a href="https://leetcode.com/problems/design-hashmap/">Design hashmap</a><br> <a href="https://leetcode.com/problems/design-hashset/">Design hashset</a><br> </details> <br> <details> <summary>Multisets </summary> <a href="https://leetcode.com/problems/find-all-anagrams-in-a-string/">Final all anagrams in string</a><br> <a href="https://leetcode.com/problems/first-unique-character-in-a-string/">First unique char in string</a><br> <a href="https://leetcode.com/problems/subdomain-visit-count/">Subdomain visit count</a><br> <a href="https://leetcode.com/problems/find-the-difference/">Find the difference</a><br> <a href="https://leetcode.com/problems/most-common-word/">Most common word</a><br> <a href="https://leetcode.com/problems/sort-characters-by-frequency/">Sort chars by frequency</a><br> <a href="https://leetcode.com/problems/set-mismatch/">Set mismatch</a><br> <a href="https://leetcode.com/problems/number-of-atoms/">Number of atoms</a><br> </details> <br> <details> <summary>Tries</summary> <a href="https://leetcode.com/problems/longest-word-in-dictionary">Longest word in dictionary</a><br> <a href="https://leetcode.com/problems/implement-trie-prefix-tree">Implement trie prefix tree</a><br> <a href="https://leetcode.com/problems/word-search-ii">Word search ii</a><br> </details> **<h3>[Week 2 Submission Link](https://forms.gle/NTdtYQ3qrpU9wZTV9)</h3>** ## Week Three **Goals** > Know when to use greedy algorithms, recursion and memorization, and dynamic programming to solve problems. Feel comfortable implementing those strategies in your language of choice. Know when and how to use sorting and binary searching. - [ ] Topics Covered in This Week’s Coding Exercises: <details> <summary>Greedy algorithms</summary> <a href="https://leetcode.com/problems/lemonade-change">Lemonade Change</a><br> <a href="https://leetcode.com/problems/assign-cookies">Assign Cookies</a><br> <a href="https://leetcode.com/problems/is-subsequence">Is subsequence</a><br> <a href="https://leetcode.com/problems/minimum-number-of-arrows-to-burst-balloons">Minimum num of arrows to burst balloon</a><br> <a href="https://leetcode.com/problems/partition-labels">Parition Labels</a><br> </details> <br> <details> <summary>Binary Searching</summary> <a href="https://leetcode.com/problems/binary-search">Binary Search</a><br> <a href="https://leetcode.com/problems/peak-index-in-a-mountain-array">Peak Index in a mountain array</a><br> </details> <br> <details> <summary>Sorting</summary> <a href="https://leetcode.com/problems/valid-anagram">Valid Anagram</a><br> <a href="https://leetcode.com/problems/array-partition-i">Array Partition</a><br> <a href="https://leetcode.com/problems/merge-intervals">Merge Intervals</a><br> <a href="https://leetcode.com/problems/find-all-anagrams-in-a-string">Find all anagrams in a string</a><br> </details> <br> <details> <summary>Recursion and Memoization</summary> <a href="https://leetcode.com/problems/powx-n">Powx-n</a><br> <a href="https://leetcode.com/problems/best-time-to-buy-and-sell-stock">Best time to buy and sell stock</a><br> <a href="https://leetcode.com/problems/edit-distance">Edit Distance</a><br> <a href="https://leetcode.com/problems/house-robber-ii">House Robber II</a><br> <a href="https://leetcode.com/problems/regular-expression-matching/">Regular Expression Matching</a><br> </details> <br> <details> <summary>Dynamic Programming</summary> <a href="https://leetcode.com/problems/best-time-to-buy-and-sell-stock">Best time to buy</a><br> <a href="https://leetcode.com/problems/edit-distance">Edit Distance</a><br> <a href="https://leetcode.com/problems/house-robber-ii">House Robber II</a><br> <a href="https://leetcode.com/problems/regular-expression-matching/">Regular Expression Matching</a><br> </details> <br> **<h3>[Week 3 Submission Link](https://forms.gle/HMz5uhjwwAs3mmgFA)</h3>** ## Week Four **Goals:** > Know when linked lists, stacks, heaps, and queues are useful to solve the problem. Use all those data structures in your language of choice with confidence. Gain experience solving basic combinatorial generation and backtracking problems. - [ ] Topics Covered in This Week’s Coding Exercises: <details> <summary>Linked Lists</summary> <a href="https://leetcode.com/problems/reverse-linked-list">Reverse linked list</a><br> <a href="https://leetcode.com/problems/odd-even-linked-list">Odd even linked list</a><br> <a href="https://leetcode.com/problems/reverse-nodes-in-k-group">Reverse nodes in k group</a><br> <a href="https://leetcode.com/problems/lru-cache">Lru-cache</a><br> </details> <br> <details> <summary>Stacks</summary> <a href="https://leetcode.com/problems/baseball-game">Baseball game</a><br> <a href="https://leetcode.com/problems/next-greater-element-i">Next greater element i</a><br> <a href="https://leetcode.com/problems/valid-parentheses">Valid Parenthesis</a><br> <a href="https://leetcode.com/problems/score-of-parentheses">Score of parentheses</a><br> </details> <br> <details> <summary>Queues</summary> <a href="https://leetcode.com/problems/implement-stack-using-queues/">Implement stack using queues</a><br> <a href="https://leetcode.com/problems/implement-queue-using-stacks/">Implement queue using stack</a><br> <a href="https://leetcode.com/problems/rotate-array">Rotate array</a><br> </details> <br> <details> <summary>Heaps</summary> <a href="https://leetcode.com/problems/top-k-frequent-elements">Top k frequent elems</a><br> <a href="https://leetcode.com/problems/merge-k-sorted-lists">Merge k sorted lists</a><br> </details> <br> <details> <summary>Combinatorial Generation</summary> <a href="https://leetcode.com/problems/subsets">Subsets</a><br> <a href="https://leetcode.com/problems/permutations">Permutations</a><br> <a href="https://leetcode.com/problems/combinations">Combinations</a><br> <a href="https://leetcode.com/problems/generate-parentheses">Generate Parentheses</a><br> <a href="https://leetcode.com/problems/gray-code">Gray code</a><br> </details> <br> <details> <summary>Backtracking</summary> <a href="https://leetcode.com/problems/combination-sum">Combination Sum</a><br> <a href="https://leetcode.com/problems/partition-equal-subset-sum">Partition of equal subset sum</a><br> <a href="https://leetcode.com/problems/partition-to-k-equal-sum-subsets">Partition to k equal sum subsets</a><br> <a href="https://leetcode.com/problems/sudoku-solver">Sudoku solver</a><br> </details> **<h3>[Week Four Submission Link](https://forms.gle/PoxWZTjSTbFsDLQf6)</h3>** ## Week Five **Goals** Practice solving graph and tree problems. Become familiar with tree and graph traversals, shortest path algorithms, minimum span trees, and topological sort. - [ ]Topics Covered in This Week’s Coding Exercises: <details> <summary>Trees</summary> [Postorder Traversal](https://leetcode.com/problems/n-ary-tree-postorder-traversal) [Leaf Similar Trees](https://leetcode.com/problems/leaf-similar-trees) [Same Tree](https://leetcode.com/problems/same-tree) [Sum of Left Trees](https://leetcode.com/problems/sum-of-left-leaves) [Diameter of Binary Tree](https://leetcode.com/problems/diameter-of-binary-tree) [Longest Univalue Path](https://leetcode.com/problems/longest-univalue-path) [Find Bottom-left Tree Value](https://leetcode.com/problems/find-bottom-left-tree-value) </details> <details> <summary>Graphs</summary> [Course Schedule](https://leetcode.com/problems/course-schedule) [Island Perimeter](https://leetcode.com/problems/island-perimeter) [Is Graph Bipartite](https://leetcode.com/problems/is-graph-bipartite) [Word Search](https://leetcode.com/problems/word-search) [Course Scheduler II](https://leetcode.com/problems/course-schedule-ii) [Longest Increasing Path in Matrix](https://leetcode.com/problems/longest-increasing-path-in-a-matrix) [Nework Delay Time](https://leetcode.com/problems/network-delay-time/) </details> **<h3>[Week Five Submission Link](https://forms.gle/UqGC7irmg6Q6zdz6A)</h3>** ## Week Six **Goals** >Become familiar with the fundamental concepts of networking (TCP, UDP, sockets, async). Know the basics of multithreaded programming in different languages. Understand locks, atomics, and race conditions. Have a basic understanding of linux programming and its fundamental concepts. - [ ]Topics Covered in This Week’s Coding Exercises: - Preforking echo server - Multi-threading [Regex for Leetcode URLs](https://regex101.com/r/NMU43r/2/)