An Informatics Student's Reading List

As you've encountered plenty of textbooks in your classes, this list focuses on other books, ones which will broaden your perspective, improve your understanding, and enhance your enjoyment of computer science. While reading is great, go out and meet people doing informatics as well. See The Circuit's list of Cincinnati area user groups.

General

How to become a Hacker by Eric Raymond
Basic steps toward becoming a hacker, a technically adept programmer or network wizard, like the ones who made the Internet and who keep it working today. Full text available online.

The Evolution of Useful Things by Henry Petroski
A non-technical introduction to the nature of engineering and how it has impacted our lives, focusing on the surprisingly complex history of engineering everyday objects like paper clips and forks.

The Future of Ideas by Lawrence Lessig
The Internet revolution has produced a powerful counterrevolution focused on expanding copyright and patent control to eliminate the open nature of the Internet and suppress new technologies that threaten the dominance of old technologies.

Godel, Escher, Bach: An Eternal Golden Braid by Douglas Hofstader
An epic intellectual journey, exploring the meaning of self and how meaning is created, offering a challenging and entertaining introduction to the core concepts of computer science from recursion to Turing machines.

How to Solve It by G. Polya
A clear explanation to what math and programming classes rarely focus on: how to approach and solve problems requiring a formal, reasoned approach.

Programming

Code Complete, 2nd edition by Steve McConnell
One of the best first books to read on the theory and practice of programming.

Structure and Interpretation of Computer Programs by Abelson, Sussman, and Sussman
A classic, challenging introduction to programming; available for free online from MIT.

How to be a Programmer by Robert Read
Learn what programmers actually do on the job as part of a software team from this free online work.

The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt and David Thomas
Learn how to grow into a master programmer by learning essential skills that aren't covered in any university or certification class.

Security

Secrets and Lies: Digital Security in a Networked World by Bruce Schneier
An accessible and thorough introduction to the basics of computer security.

Penetration Testing: A Hands-On Introduction to Hacking
The best introduction to penetration testing, with plenty of information on how to setup and use your own hacking lab.

Thinking Security: Stopping Next Year's Hackers
A good grounding of how to approach security from a high level.

© 2005-2020 James Walden, Ph.D.