For anyone stumbling upon this page, it's an old version of the course. To see what we're doing now, check out CS 12.
Welcome to the CS 11 interview preparation track! To pass this course, you must do the following:
\begincenter
| Week | Topic | Link |
|:----:|----------------------------------|:--------------:|
| 1 | Sorting, Ordering, and Searching | HW 1 |
| 2 | Resume Review Week | HW 2 |
| 3 | Maps | HW 3 |
| 4 | Recursion | HW 4 |
| 5 | Recursive Backtracking | HW 5 |
| 6 | Dynamic Programming | HW 6 |
| 7 | Trees | HW 7 |
| 8 | Graphs | HW 8 |
| 9 | Data Structures | HW 9 |
| 10 | TBD | HW 10 |
\endcenter
# Weekly Options
Every week, we will offer a variety of options (listed below) for you to attempt.
These will range from "normal" (do a set) to "really weird" (come up with your own idea). To pass the course, you must do at least one activity in at least __seven__
out of the ten weeks of the term. If you decide to do multiple activities in one week, that's great(!), but it will not earn you extra credit toward future weeks.
## (a) The Weekly Set
We will release a weekly set with some "technical" and some "behavioral" questions. If you choose this option, you __may not spend more than 1.5 hours__ solving the
questions. They are designed to mirror how much time you'd have to complete them in a real interview. If you attempt this option, but you cannot solve the problems,
we recommend you do option (b) instead, as there is likely something you could learn by watching someone else solve the problem.
\begincenter
| Week | Topic | Link |
|:----:|----------------------------------|:--------------:|
| 1 | Sorting, Ordering, and Searching | [HW 1](https://grinch.caltech.edu/quiz/cs11#cs11-interviews-19fa-hw1) |
| 2 | Maps | HW 2 |
| 3 | Recursion | HW 3 |
| 4 | Recursive Backtracking | HW 4 |
| 5 | Dynamic Programming | HW 5 |
| 6 | Trees | HW 6 |
| 7 | Graphs | HW 7 |
| 8 | Data Structures | HW 8 |
| 9 | TBD | HW 9 |
| 10 | TBD | HW 10 |
\endcenter
## (b) Problem Review Session
Every week, we will hold an hour long "problem review session" which goes over at least one solution to the technical problems on the set. __You must attempt
the set for at least 30 minutes before attending! No exceptions!__ These sessions will involve actual active learning; you will not just be watching someone.
\begincenter
| Week | Topic | Location |
|:----:|----------------------------------|:--------------:|
| 1 | Sorting, Ordering, and Searching | TBD |
| 2 | Maps | TBD |
| 3 | Recursion | TBD |
| 4 | Recursive Backtracking | TBD |
| 5 | Dynamic Programming | TBD |
| 6 | Trees | TBD |
| 7 | Graphs | TBD |
| 8 | Data Structures | TBD |
| 9 | TBD | TBD |
| 10 | TBD | TBD |
\endcenter
## (c) Write a Tutorial
One way to learn a new topic is to try to explain it to other please. For this option, you would write a blog post or tutorial about an algorithm or data
structure __you do not already know__. You may not choose something like an `ArrayList`. Your tutorial must have some kind of code in it. It should
be targeted at your fellow classmates, and we will link to it in the resources section of this website.
## (d) Career Counseling
_You may only choose this option once._
The Caltech Career center offers counseling appointments which further discuss behavioral questions and you specifically. You can
[Sign Up Here](http://career.caltech.edu/about/requestappointment) and attend your appointment in this option.
## (e) Research Companies
_You may only choose this option once._
When you're first trying to figure out where to interview, creating a list of companies to attempt to interview at can be a large undertaking. In this option,
you can research companies and find a list of at least __ten__ companies you are interested in. You must also provide reasons why you are interested in each company.
## (f) Interview
The whole point of this course is to get practice interviewing. There is no better way to do that than...actually interviewing. If you
have a real interview some week of the quarter, you are excused from the homework. Each student may request a mock interview with me
**once** during the term; I make no guarantees that I will be able to accommodate all requests, but I'll do my best.
## (g) Choose Your Own
If you have another idea of something you would like to do to prepare for interviews that is __active__, go ahead and ask me to approve it.
The key thing for this option is that it must be __active__; you may not, for example, read a chapter of Cracking the Coding Interview. The reason
for this policy is that passive practice rarely leads to increased performance.
# Resources
We do not yet have many extra resources. If you would like us to add something, please contact Adam.
We will be using [a course piazza](https://piazza.com/caltech/fall2019/cs11) for all contact and questions.
# Grading
This course is intended to give you experience dealing with "interview-like" conditions. As a result, all sets will have strict time limits and every option
will be __nocollab__. That said, we intend for anyone who puts in effort to pass the course. As mentioned above, you may choose up to three weeks in which you
do not choose any of the activities.