Class Days and Class Times: Monday to Friday, 10:00 AM to 3:00 PM
Dates: January 2nd, 2020 (Thursday) to January 24th, 2020 (Friday)
Room Number: Hunter North 536
Lead Instructor: Adam Ibrahim
Emails: instructor.ibrahim.adam@gmail.com
Slack Workspace: https://techinterviewprep2020.slack.com/
Office Hours: Wednesday and Friday 3:00 PM to 4:00 PM
- This README contains your assignments
- The
assignments
folder is where you will put your work when you submit a pull request to me. This is also where I will post solutions after the classwork/homework should have already been done.
Each assignment has the following format:
Date given: description. Due date. Assignment name.
The due date means before class on that date. So if a homework is due on 1/10, then it is due before 10:00 AM on 1/10.
For any assignment where I ask you to solve a problem, please submit your program to the github using the directions below under 'submitting HW'.
To get setup to submit homework, fork this repository.
Then do the following when you do homework:
- Pull from my repository to your fork. There will be files in the
correct location for the work to do that day. If you are submitting
homework due on 1/5 (not assigned 1/5), for example, which is the
1st day of the 2nd week of the bootcamp, then you would find the
file at
week2/day1/assignment-name
. In general, the path for a file isweek#/day#/assignment-name
. The same is true for submitting classwork we did on 1/5. You would look for the correct file underweek2/day1/assignment-name
. - Do the work.
- When you are ready to start comitting work to your fork, place your
work in the appropriate file, and change it. Unless I say otherwise,
you can submit your solutions as Javascript of C++ files. If you
need to change the file extension of the file, that is fine. Just
don't change the base name of the file. Example: you can change
implement-hash-table.cpp
toimplement-hash-table.js
but not tohash-tbl.cpp
. - Commit your changes, push them to your fork, and then submit a pull request from your fork against my repository.
If you are not able to solve the problem at home then post up a program containing the following:
As comments:
- a description of the approach(es) you thought of
- a description of where you got stuck on these approaches. For
example:
- Was there a flaw in the approach you found and you had to think of a new one? What was the flaw? How did you try to get around it?
- Were you just unable to implement the approach? Which part(s) were you unable to implement, and why?
As code:
- whatever part of a program you wrote if you wrote one
I prefer you submit something that runs, but sometimes we don't get that far. Whether it runs or not, just submit what you have.
Week 1 (01/02 -> 01/03)
01/02 (Thu): intro, setup, how to interview, p2p 1 question prep
01/03 (Fri): initial assessment, p2p 1
- hw: hashes, p2p 2 questions, lists pre-work
Week 2 (01/06 -> 01/10)
01/06 (Mon): big-o lecture, hashes
01/07 (Tue): hashes day, p2p 2
01/08 (Wed): hashes
01/09 (Thu): hashes, p2p 3, for hw lists
01/10 (Fri): lists, stacks and queues pre work
Week 3 (01/13 -> 01/17)
01/13 (Mon): lists, stacks and queues. Hw: p2p 4 qu’s
01/14 (Tue): stacks+queues
01/15 (Wed): p2p 4, stacks+queues, hw p2p 5 questions
01/16 (Thu): stacks+queues, trees
01/17 (Fri): p2p 5, trees, recursion pre work
Week 4 (01/20 -> 01/24)
01/20 (Mon): recursion, hw: p2p 6 questions due wed
01/21 (Tue): recursion
01/22 (Wed): p2p 6, recursion, hw: p2p 7 questions
01/23 (Thu): recursion
01/24 (Fri): final assessment, p2p 7
Week 1, Day 1 (1/2)
- Intro Slides https://docs.google.com/presentation/d/11N-mmMHD8W4LhbYibOsjlTamRTDI1uHaj2_4oFD0hWQ/edit?usp=sharing
- Interview Prep Slides:
Week 2, Day 1 (1/6)
- Read "Design a Hash Table". https://leetcode.com/explore/learn/card/hash-table/182/practical-applications/
- Do "Design Hash Map" https://leetcode.com/explore/learn/card/hash-table/182/practical-applications/1140/.
implement-hash-map
.
Week 2, Day 4 (1/9)
Week 2, Day 5 (1/10)
Week 3, Day 1 (1/13)
- Lists Day 3 slides
- Remove duplicates from sorted array
- Merge sorted array
- Find first and last position of element in sorted array
- Stacks+queues day 1 slides
Week 3, Day 2 (1/14)
Week 3, Day 3 (1/15)
Week 3, Day 5 (1/17)
Week 4, Day 2 (1/21)
Week 4, Day 3 (1/22)
Week 4, Day 4 (1/23)
Grab-bag of problems! You can cast off on your own, or pick from the following problems
- https://leetcode.com/problems/island-perimeter
- https://leetcode.com/problems/keyboard-row/
- https://leetcode.com/problems/sort-characters-by-frequency/
- https://leetcode.com/problems/maximum-frequency-stack/
- https://leetcode.com/problems/max-points-on-a-line
- https://leetcode.com/problems/best-time-to-buy-and-sell-stock
- https://leetcode.com/problems/linked-list-cycle
- https://leetcode.com/problems/top-k-frequent-elements
- https://leetcode.com/problems/odd-even-linked-list
- https://leetcode.com/problems/permutations
- https://leetcode.com/problems/unique-paths/
- https://leetcode.com/problems/jump-game/
- https://leetcode.com/problems/delete-node-in-a-bst/
- https://leetcode.com/problems/invert-binary-tree
- https://leetcode.com/problems/cousins-in-binary-tree/
- https://leetcode.com/problems/palindrome-partitioning/
- https://leetcode.com/problems/longest-palindromic-substring/solution/
- https://leetcode.com/problems/longest-increasing-subsequence
Week 1, Day 1 (1/3)
- p2p problems. Due 1/2. Remember to submit work 1/3, after p2p
finishes.
p2p-problem-1
p2p-problem-2
Week 1, Day 2 (1/4)
- p2p problems. Due 1/6. Remember to submit work 1/7, after p2p
finishes.
p2p-problem-1
p2p-problem-2
- Read intro material on hash tables here Due 1/6. Read up until the problem "design a hash set", and do not do it.
- Read the lists review packet, if you need a refresher on arrays, or linked lists. Due 1/9.
- Do Kth largest element in an
array.
Due 1/9.
kth-largest
.
Week 2, Day 1 (1/6)
- Read solutions for p2p 2 problems. Due 1/7.
- Find an easy question on LC from the category for strings or arrays. Solve it, and write at least 3 edge cases to present to an interviewee and at least 2 hints to help an interviewee follow along with your solution to the problem. If you have trouble coming up with at least 3 edge cases and 2 hints by tonight, message me on slack with the link to your question, a summary of your algorithm, your edge cases, and your hints. We'll figure something out. Due 1/8.. Submit this in the same way we've asked you to submit answers to p2p problems. You don't have to submit a pull request for this.
Week 2, Day 2 (1/7)
- p2p problems for p2p 3. Due 1/8. Remember to follow these directions when submitting the homework.
p2p-problem-1
p2p-problem-2
Week 2, Day 3 (1/8)
Week 2, Day 4 (1/9)
Week 2, Day 5 (1/10)
- Implement dutch national flag partitioning for a linked list, this is on Hacker Rank. You will receive an invite. Check your spam for the invite if you can't find it, and reach out to me or Elise! Due 1/13.
- Stacks+queues unit pre-reading https://drive.google.com/open?id=1MN29NToPCiKZy2_Sg_A7xuR2_BbKaIv-zXEGEkzpc6g. Due 1/13.
- Stacks+queues unit intro question, "Implement Max Stack". This is on Hacker Rank. Due 1/13.
- Trees unit pre-reading. Review slides on trees, the representation as a data structure and many important definitions I will use in class. https://docs.google.com/presentation/d/1ONw1IU8wVmXGKuK6yUfPti6f2q9603CYQyCrjT7QQMk/edit?usp=sharing. Due 1/16.
Week 3, Day 1 (1/13)
- Hacker Rank problem
braces
. You will recieve an invite. Due 1/14. - Backspace string
compare.
Due 1/14.
backspace-string-compare
.
Week 3, Day 2 (1/14)
- p2p problems for p2p 4. You must do these problems and read the answers in the same night. Due 1/15.
Week 3, Day 3 (1/15)
- p2p problems for p2p 5. Due 1/16.
- If you took a mock interview with a Bloomberg engineer today, please fill out this survey. If you haven't done so already. Due 1/16.
Week 3, Day 4 (1/16)
Week 3, Day 5 (1/17)
- Read Recursion pre-work packet. Due 1/20.
- Finish these problems from class. Due 1/20.
Week 4, Day 1 (1/20)
- p2p problems for p2p 6. Due 1/21.
Week 4, Day 2 (1/21)
- Read solutions to p2p problems for p2p 6. Due 1/22.
- Spend 1 hour working on problems from either the Recursion Day 1 Slides or Recursion Day 2 slides. They are linked in the classwork section under the dates 1/20 and 1/21. Due 1/21.
Week 4, Day 3 (1/22)
- p2p problems for p2p 7. Due 1/23.
- Find your own problem for p2p 7! You can pick any problem you want
from LeetCode. Solve it, write at least 3 edge cases and 2 hints to
present to an interviewee when they're trying to solve your
problem. If you have trouble coming
up with at least 3 edge cases and 2 hints by tonight, message me on
slack with all of the below items. We'll figure something out.
Due 1/23. Submit this as a gist to Elise. You don't have to
submit a pull request for this. Don't bite off more than you can
chew!
- the link to your question
- your program (if you have one)
- a summary of your algorithm
- your edge cases
- and your hints.
Week 4, Day 4 (1/23)
Week 4, Day 5 (1/24)