Introduction to Computing
Explorations in Language, Logic, and Machines

David Evans
University of Virginia

This is the Spring 2009 edition of the book, preserved for archival purposes. We recommend reading the latest version, available from
Spring 2009 Edition (entire book as one PDF file [48MB], last updated 4 May 2009)



Chapter 1: Computing [PDF]
(revised: 22 January 2009) (22 pages)

Part I: Defining Procedures

Chapter 2: Language [PDF]
(revised: 22 January 2009) (20 pages)
Chapter 3: Programming [PDF]
(revised: 22 January 2009) (23 pages)
Chapter 4: Problems and Procedures [PDF]
(22 January 2009) (28 pages)
Chapter 5: Data [PDF]
(22 January 2009) (39 pages) [List Procedures Code, Pegboard Code]

Part II: Analyzing Procedures

Chapter 6: Machines [PDF]
(2 February 2009) (27 pages)
Chapter 7: Cost [PDF]
(3 February 2009) (17 pages)
Chapter 8: Time [PDF]
(14 February 2009) (23 pages)
Chapter 9: Sorting and Searching [PDF]
(revised: 2 March 2009) (36 pages) [Code]

Part III: Improving Expressiveness

Chapter 10: Mutation [PDF]
(20 pages) (2 March 2009)
Chapter 11: Objects [PDF]
(21 pages) (7 March 2009)
Chapter 12: Interpreters [PDF]
(26 pages) (18 March 2009) [Charme Interpreter Code]
Chapter 13: Laziness [PDF]
(9 pages) (22 March 2009) [LazyCharme Interpreter Code]
Chapter 14: Type Checking [PDF]
(17 pages) (25 March 2009) [StaticCharme Interpreter Code]

Part IV: The Limits of Computing

Chapter 15: Computability [PDF]
(17 pages) (16 March 2009)
Chapter 16: Intractability (not yet available)
Chapter 17: Alternate Computing Models (not yet available)

Part V: Programming the Web

Chapter 18: Networks (not yet available)
Chapter 19: Database-Backed Web Applications (not yet available)
Chapter 20: Security (not yet available)
Chpater 21: Distributed Computing

Book Comments

Because the book is under active development, I am especially appreciative of feedback that will improve the book. Particularly useful feedback including noticing any technical mistakes, improving the writing, and suggesting a less pretentious title will be rewarded with gold stars and eternal fame.


This is the course book for cs150. The book is currently under revision. The 2007 version of the book is available here.

Title Suggestions

Original title: Computational Thinking: A Whirlwind Introduction to the Third Millennial Liberal Art from Ada and Euclid to Quantum Computing and the World Wide Web

Logic, Language, and the Mind: A Fresh Look Through the Science of Computers (Jonathan Grier)

Creative Commons License This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.