CSE 332 Resources

Contact me: jzda (at) cs.washington.edu

General Resources

Course website: link.
Free textbook PDF (but in C++): link.


Java syntax practice problems: link.
OpenJDK source, i.e., how Java built-in classes are implemented: link.
      For example, here's how Java's real HashMap is implemented: link.
"Java is Pass-by-Value, Dammit!" by Scott Stanchfield.
How to use comments effectively: link.


GitHub's Git tutorial: link.
      Git is the name of the version control software. It's free and open source. GitHub is a company that hosts Git repositories (repos). You can use it as a central Git server for your projects.
How to fix common Git problems: link.
Make your shell Git-friendly with autocompletion and prompt support.
"A Hacker's Guide to Git" by Joseph Wynn.


Trying to Understand Tries by Vaidehi Joshi: link.
Visualizer: link.


Students tend to confuse heaps and BSTs. Do you know what the differences are?
Visualizer: link.
Proof that bottom-up heapify takes linear time: link (see the "BuildHeap Analysis" section).

Inspiration and Wisdom

xkcd comic

"The Magician's Code" from The Codeless Code.
"Advice for Computer Science College Students" from Joel Spolsky, blogger extraordinaire and cofounder of Stack Overflow (among other things).
"The Curse of the Gifted" by Eric S. Raymond, in an email to Linus Torvalds, creator of Linux and Git.
"How To Be Effective" by Philip J. Guo (no relation), professor at UCSD and creator of Python Tutor.
"Productivity" by Sam Altman, president of YC. Also read this.
Some random guy asking a question (in 1996) about his Java web crawler, which would eventually become kind of a big deal. Don't be afraid to ask questions!

Internships and Interviews

If you have any interest at all in working in software development in the future, I highly recommend you apply for internships this cycle, even if you don't feel ready.
At the very least, you'll get a feel for what the process is like and what employers are looking for.

"A Brief Guide to Tech Internships" by Alexey Komissarouk.
What your resume should look like: link.
For interview practice, I (like everyone else) recommend Cracking the Coding Interview.
Find a buddy, reserve a room in CSE2, and take turns interviewing each other.
Study the problem-solving flowchart from the book: link.
Tip: Keep a list of interesting technical questions that you've encountered, including the solutions.
Review the list often and add to it after every practice session.
Before every real interview, go through the entire list and make sure you know everything on it.

Coding interview tips from Interview Cake: link.
A list of coding questions by Max Noy: link.
An even bigger list by Program Creek: link.
A still bigger list by Vivek Srivastava: link.
Leetcode allows you to mock interview yourself by testing your code: link.
Here is really well organized list of Leetcode questions (seperated by urgency of study) by Jeremy Aguilon: link
Pramp allows you to mock interview with a real person: link.

I Still Have Questions!

Don't hesitate to email me (jzda (at) cs.washington.edu).