Hunter College: TTP Technical Interview Camp Winter 2020 (Computer Science)

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

Repo Structure

  • 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.

Assignments

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'.

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 is week#/day#/assignment-name. The same is true for submitting classwork we did on 1/5. You would look for the correct file under week2/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 to implement-hash-table.js but not to hash-tbl.cpp.
  • Commit your changes, push them to your fork, and then submit a pull request from your fork against my repository.

What if the problem is too hard?

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.

Syllabus

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

Classwork

Week 1, Day 1 (1/2)

  1. Intro Slides https://docs.google.com/presentation/d/11N-mmMHD8W4LhbYibOsjlTamRTDI1uHaj2_4oFD0hWQ/edit?usp=sharing
  2. Interview Prep Slides:

Week 2, Day 1 (1/6)

  1. Read "Design a Hash Table". https://leetcode.com/explore/learn/card/hash-table/182/practical-applications/
  2. 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)

  1. Lists Day 1 slides

Week 2, Day 5 (1/10)

  1. Sort Colors
  2. Lists Day 2 Slides
  3. Reverse a linked list
  4. Remove linked list elements

Week 3, Day 1 (1/13)

  1. Lists Day 3 slides
  2. Remove duplicates from sorted array
  3. Merge sorted array
  4. Find first and last position of element in sorted array
  5. Stacks+queues day 1 slides

Week 3, Day 2 (1/14)

  1. daily temperatures
  2. Minimum add to make parentheses valid
  3. Stacks+queues day 2 slides

Week 3, Day 3 (1/15)

  1. Trees Day 2 Slides
  2. Search in binary search tree
  3. Range sum of BST
  4. Validate BST

Week 3, Day 5 (1/17)

  1. Trees Day 3 Slides

Homework

Week 1, Day 1 (1/3)

  1. 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)

  1. p2p problems. Due 1/6. Remember to submit work 1/7, after p2p finishes.
    • p2p-problem-1
    • p2p-problem-2
  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.
  3. Read the lists review packet, if you need a refresher on arrays, or linked lists. Due 1/9.
  4. Do Kth largest element in an array. Due 1/9. kth-largest.

Week 2, Day 1 (1/6)

  1. Read solutions for p2p 2 problems. Due 1/7.
  2. 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)

  1. 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)

  1. 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.
  2. Stacks+queues unit pre-reading https://drive.google.com/open?id=1MN29NToPCiKZy2_Sg_A7xuR2_BbKaIv-zXEGEkzpc6g. Due 1/13.
  3. Stacks+queues unit intro question, "Implement Max Stack". This is on Hacker Rank. Due 1/13.
  4. 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)

  1. Hacker Rank problem braces. You will recieve an invite. Due 1/14.
  2. Backspace string compare. Due 1/14. backspace-string-compare.

Week 3, Day 2 (1/14)

  1. 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)

  1. p2p problems for p2p 5. Due 1/16.
  2. 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)

  1. Read Recursion pre-work packet. Due 1/20.
  2. Finish these problems from class. Due 1/20.

Week 4, Day 1 (1/20)
Week 4, Day 2 (1/21)
Week 4, Day 3 (1/22)
Week 4, Day 4 (1/23)
Week 4, Day 5 (1/24)