The schedule below shows the tentative dates for all class topics, readings, and assignments. You should complete all assigned reading before class on the day it is listed. The schedule is likely to change a bit, although the due date of major assignments will not change. Please check back for additional readings.
If you view this page with JavaScript enabled you can jump to the current week on the schedule, and you should see the next day of class highlighted in the schedule below.
We consider the form and purpose of the course. We consider the skills that technical interviews test.
Topics: Visitor: Anthony D. Mays. About the course. About technical interviews.
We consider an important first step in technical interviews: Making sure that you understand the underlying problem (and, perhaps, its subtleties).
Topics: Visitor: Yash Gupta. Listening to problems. Parsing examples. Asking questions.
We take a week off while Sam attends the CMD-IT/ACM Richard Tapia Celebration of Diversity in Computing Conference.
We consider a central skill in technical interviews: How you “think aloud” to share your ideas with your interviewer.
Topics: Visitor: Jonathan Wellons. Communication. Practice.
We consider the role of tests in technical interviews and practice considering edge cases.
Topics: Visitor: Halle Remash. Ways to test. Considering edge cases.
We consider what to do when your code doesn’t work.
Topics: Visitor: TBD. The role(s) of decomposition. The role(s) of testing. Hand running code. Debugging by printing. Debugging tools.
To create an algorithm, you will often need to “brainstorm” the various ways you might approach the design of algorithms.
Topics: Visitor: TBD. How do you solve problems.
We consider the steps you might take as you move from your initial algorithm to an implementation of it in a programming language.
Topics: Visitor: TBD. Choosing a language. Language features you should know cold.
We revisit how much you need to know a programming language in the context of another important non-technical skill: asking questions.
Topics: Visitor: TBD. Looking up language features. Asking questions about language features. Asking questions about design and approach. Other kinds of questions.
We consider strategies for analyzing the asymptotic running time of algorithms.
Topics: Visitor: TBD. Common running times. Issues to remember.
We consider what to do when you’re “stuck” in designing an algorithm, translating the algorithm, finding errors, and such.
Topics: Visitor: TBD. Tips and techniques. Staying calm.
We consider the value of using systems like HackerRank to build our skill in software development and technical interviews
Topics: Visitor: Lea Marolt Sonnenschein. HackerRank and similar systems. Preparing reusable libraries and templates.
We start to conclude the course by considering a different kind of technical interview, one that considers higher-level system design issues.
Topics: Visitor: TBD. About system design interviews.
We conclude the course.
Topics: Visitor: TBD. Review of.