Introduction to Java Part 1. A quick, but gentle introduction to the Java programming language. It covers all of the material taught in the first-semester course CSE110 at ASU, and is around 50 pages. Provides exercises as well as examples.
Testimonials:
"[T]his is my first time dealing with programming and with your lecture notes everything seems much more explainable and understandable."
Complexity Theory. A graduate-level introduction to the field of complexity theory. The main topics are: Polynomial Hierarchy + Alternating TMs, Boolean Circuits + Hastad's Switching Lemma, Randomization, Interactive Proofs, PCP Theorem and Hardness of Approximation, Decision Trees, Counting Complexity, and Parameterized Complexity.