Below are some books and class notes that I've written. All are available free under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
- A Practical Introduction to Python Programming (pdf, html) — A hopefully easy to understand intro to Python, covering language basics, a little GUI programming, and some intermediate topics. Has a few hundred exercises.
- A Quick Intro to Java (pdf, html) — An introduction to Java programming, designed for people with previous programming experience. Also covers some GUI programming and has a few hundred exercises.
- An Intuitive Introduction to Data Structures (pdf, html) — Covers dynamic arrays, linked lists, stacks, queues, recursion, binary trees (including BSTs and heaps), sets, maps, graphs, and sorting algorithms. Exercises at the end of each chapter.
- Android Notes — A very quick guide to getting started with Android followed by some code snippets of useful things.
- Discrete Math — A simple intro to discrete math that covers logic, sets, functions, recursion, induction, counting, probability, and graphs.
- Number Theory — Covers a lot of the topics from a typical introductory number theory class. I tried to write this in a way that conveys a conceptual understanding of the important topics.
- Numerical Methods — Covers numerical methods for root-finding, derivatives, integrals, and differential equations, as well as interpolation. I tried to write it in a way that conveyed an understanding of the methods and their limitations.
- Graph Theory — Covers most of the topics of a typical undergraduate course, like trees, Eulerian and Hamiltonian graphs, graph coloring, matching problems, digraphs, and connectivity.
- Python quick reference guide — A 9-page guide to the basic language features of Python.
- Linear Algebra — These are notes I wrote up in grad school for a linear algebra class I was teaching.