Computer programming is not abstract and programs run on a machine. Knowing how computers work and how programs run on them is essential to becoming a better programmer. Foundations of Computer Programming fills in the gaps in computer education by giving readers a look under the hood of programming, at the machine. Readers learn how software behaves, how programs manipulate data in memory, how computers process languages, and how web browsers work. They'll also learn how to write efficient programs, computer security basics, and real-world considerations to have in mind when writing code.