This book covers a small subset of the material normally taught in undergraduate courses in formal languages and automata. The author wrote these notes for a new junior-level course on "Algorithms and Models of Computation" developed with Lenny Pitt, which is now required for all undergraduate computer science and computer engineering majors at UIUC.