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, and understanding underlying technologies can help you develop a sense of what can go wrong. 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 when running on hardware; 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.