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
Books and Class Notes
- 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.
- An Informal Introduction to Formal Languages — Covers DFAs, NFAs, regular expressions, Pumping Lemma, context-free grammars, PDAs, Turing Machines, and decidability. The “informal” part of it comes from the fact that there are no formal proofs. Instead there are many examples and intuitive explanations. There are also a number of exercises at the end.
- An Intuitive Guide to 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. There are about 200 exercises at the end.
- A Simple Introduction to 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. There are a few hundred exercises at the end.
- 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.
- Discrete Math — A simple intro to discrete math that covers logic, sets, functions, recursion, induction, counting, probability, and graphs.
- Android Notes — A very quick guide to getting started with Android followed by some code snippets of useful things.
- 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.