We aren’t quite at Matrix levels of AI yet (keyword: “yet”), but computer fluency and computer science are continuous growth industries. Computer science, in the most general terms, is the study of how computers function, including how it works on an engineering sense, but also how it works in a societal sense. It’s a wide-ranging and diverse field that includes the mechanics of computers (hardware, programming, etc.) to the ethics of it and our relationship to computers. There is hardly a field that does not use computer science. For a lot of people, pursuing computer science, either as a career or as a skill, can seem daunting. Not to fear, though! We’ve rounded up some must-read computer science books to help get you started!

via GIPHY

This article is broken down into three sections for your convenience: Learning to Code, Reference and Theory, and a Bonus section. You also don’t have to take my word for this information; I consulted with Dr. David Dittman, who holds a PhD in computer science with a focus on data mining and bioinformatics [1].

As a quick note on diversity: this list is not as diverse as it should be. Many seminal texts from four decades ago on coding are still used industry-wise. Those were largely made by a small population. We want to assure you that computer science is a vibrant field with people of all ethnicities, genders, abilities, and orientations.

Books On Learning To Code

The first skill you will inevitably have to develop is the ability to code. We’ve broken this down by computer language to give you options on what you may want to pursue by your interest first. While you go through these, realize that coding is a skill that you have to learn by doing, not just by reading the book. You won’t learn how to hack in day. Make sure to do the exercises and practice, even if you mess up. As Dr. Dittman said “I’ve been coding for almost 15 years and I still make mistakes.”

True Story Newsletter Sign up for True Story to receive nonfiction news, new releases, and must-read forthcoming titles. Thank you for signing up! Keep an eye on your inbox. By signing up you agree to our terms of use

C and C++

Difficulty: Medium to Difficult

If you were to major in Computer Science at a college, you would most likely have to take a class in C or C++. Both C and C++ have the greatest utility across the industry, and that’s why they are often the default first languages. While C++ is technically an extension of C, it is considered its own language and has its own syntax. C and C++ are in a lot of legacy systems [2].

Head First C: A Brain-Friendly Guide (1st Edition) by David Griffiths takes the typically difficult C language and makes it pretty easy to learn. While it has quite a bit of cheesy humor, it does a good job of taking first-time programming and making it simple and easy to learn. Like the other Head First books, it has a lot of the essentials without the dry language.

For a real, step-by-step concept computer science book, try Greg Perry’s and Dean Miller’s C Programming Absolute Beginner’s Guide (3rd Edition). Plain language, plenty of additional tips, and annotated code make it a really good first computer science book.

While C++ is an extension of C, you can learn it on its own. For that we recommend C++ Primer (5th Edition) by Stanley B. Lippman, Josée Lajoie, and Barbara E. Moo. This is, admittedly, a little dry. But it’s a practical guide to learning the necessary functions in first time computer programming. It also has detailed explanations with practical applications.

Where better to learn a language than from one of the creators? Bjarne Stroustrup created C++ during grad school, because sometimes you want to mess around on a weekend and create a computer language. He’s also obviously the author of a number of C++ texts by consequence, including Programming: Principles and Practice Using C++ (1st Edition). It’s dry, it’s a little dense, but it will take you from being a beginner and work you through some advanced concepts!

Python

Difficulty: Easy

This scripting language is not only fairly quick to learn, it has the added benefit of having established, robust online communities. That means that as you go, you’ll be able to look up quick fixes or advice in real time. Python can be used among a number of industries and is commonly used in text mining. It is very useful for rapid modification and execution. However, Python does gloss over a lot of necessary computer science concepts, so you will eventually have to learn another language in addition.

If you’re a learner that does best with practical applications from the get-go, have a try at Python Crash Course: A Hands-On, Project-Based Introduction to Programming by Eric Matthes. The book is broken down into targeted code styles and has in-depth, simple guides for every line of code.

Turning your study into a game is pretty easy with Al Sweigart’s Invent Your Own Computer Games with Python (4th Edition), which teaches you how to program using small games as the models for code. For those of you looking to get into gaming and game design, this is probably a good first text.

As you get more into programming, you may want a quick reference as problems arise and you need quick fixes. Consider getting a copy of Python Cookbook, Third Edition by David Beazley and Brian K. Jones as you get more experience. This really isn’t a text for first time Python programmers, but as you get more experience, keep this in mind.

JAVA

Difficulty: Medium to Difficult

Along with C and C++, JAVA is one of the top languages employers look for. It’s often used in software development and software symptoms. You’ve probably seen JAVA in hits like “Please Update JAVA” on the bottom right hand of your computer screen every so often. It’s used in a lot of Android systems, so it can have a lot of quick, practical applications. Keep in mind it can still be difficult to learn, but hopefully that will be alleviated by computer science books.

For those of you who are a bit impatient to get going on your coding journey, check out Java: Learn Java in One Day and Learn It Well: Java for Beginners with Hands-on Project by Jamie Chan. It’s a quick, simple, step-by-step guide to get you programming off the bat. You really will be programming in hours and doing simple math functions before long.

Joshua Bloch’s Effective Java (3rd Edition) might not get you coding in a day, but it will give you a firm background in JAVA. It also has excellent, detailed explanations for different codes and their uses. This is definitely for the beginning programmer who is eager for more sophisticated programming instruction.

SQL

Difficulty: Medium to Difficult

If you’re working with data, you’re going to be working with databases. If you’re working with databases, you’re going to need to know SQL. It’s a language that is meant to structure, organize, and access data. This can range from your local library’s catalog to the library of congress to massive genetic information. Most programmers will at least learn how to construct a SQL query to access needed data. So while you may not need to be an expert in SQL, you’re going to want at least some basic knowledge of SQL no matter what you get into.

While SQL may not need to be your first programming language, Head Head First SQL: Your Brain on SQL—A Learner’s Guide by Lynn Beighley makes it pretty easy to pick up. It’s a simple, and largely fun computer science book for beginners for the first time SQL user. Beighley makes programming accessible with easy language, diagrams, and plenty of examples.

For those of you who just want to learn how to do SQL database queries, John L. Viescas and Michael J. Hernandez’s SQL Queries for Mere Mortals: A Hands-On Guide to Data Manipulation in SQL (3rd Edition) can go from the very necessary basics to more complexity in no time. If you just want to learn database queries, the first half has got you. If you later need a reference for complex operations, this is a good guide to have around.

Computer Science Books On Reference And Theory

As you get further into programming, you’re going to want to have some books or places to reference as you get more ambitious or run into trouble. For that we have added a reference section with computer science books and webpages for you to use. We’ll also be including some information on theory as well, because computer science is a field that touches almost every other field. Whether you’re building webpages, designing AI’s, or reading the results of mass medication trials, you’re not just gonna want to know how to do something, but why it works the way it does.

For a comprehensive C language reference, we’ll go with the creators’ own text, C Programming Language, 2nd Edition. Written by two of the creators of C, Brian W. Kernighan and Dennis M. Ritchie, it’s a sort of end-all-be-all of C. It may not be the friendliest for beginners, but it is one of the more comprehensive guides to C.

If you’re looking for a comprehensive JAVA reference, consider Modern Java in Action: Lambdas, Streams, Functional and Reactive Programming (2nd Edition) by Raoul-Gabriel Urma, Mario Fusco, and Alan Mycroft. Fair warning, the book is dense, packed with all sorts of information on how JAVA functions in the greater programming scheme. That’s what gives this book an advantage, though, and if you’re a learner who needs to know why something works in order to understand the how, this may be good for you.

Those who want to progress in SQL will probably want to pick up SQL Cookbook: Query Solutions and Techniques for Database Developers by Anthony Molinaro. This is, admittedly, not a book for absolute beginners. But it’s a necessary reference for those of you getting into more complex SQL commands and database creation.

In the battle of Python versus Perl, Python has become the clear winner. However, while Python is more widely used, Perl is still used in some current systems and it’s easy to pick up. For that we recommend Perl by Example (5th Edition) by Ellie Quigley. Dr. Dittman was adamant to add this because “it’s how I learned Perl, it’s quick and easy to get.”

“Science, it’s all about ‘coulda,’ not ‘shoulda’.” Science without ethics is how we get unguarded, inequitable results. While you’re learning to code, maybe temper your deepest hacking desires with Ethics in Computing: A Concise Module by Joseph Migga Kizza. While, yes, another dense read, it’s worth exercising the ideas.

For something with a similar ethical bent but a little more accessible, consider Ethics and Data Science by Mike Loukides, Hilary Mason, and DJ Patil. Privacy, data collection, and digital rights are becoming more prevalent issues. If you go into computer science, it’s good to have a primer on how the work you may do could impact and be impacted by these concepts.

Bonus Computer Science Books

Here we’ve included some books that may not be necessary for your computer science aspirations, but might spark an interest in another portion of the field or give some guidance in other areas. Really, this was just an area to feature some of the lesser known, best computer science books.

Maybe you don’t really know where you want to start! That’s fine—check out Wallace Wang’s Beginning Programming All-In-One Desk Reference For Dummies. It’s quick, easy, and while largely C heavy, it has some easy, basic programming explanations. It’s a great computer science book for beginners, especially as you feel out what you want to do. And learn.

If you want to learn some general programming skill work, we recommend Venkat Subramaniam and Andy Hunt’s Practices of an Agile Developer: Working in the Real World (Pragmatic Bookshelf). This isn’t so much programming, but good practices for working programmers. It’s got general tips and tricks for working in the field as well as developing good programming habits. You may also want to check out Subramaniam’s books on JAVA Script, should you ever need that language as well.

For a beginner’s guide or for the young girl in your life, consider Girls Who Code: Learn to Code and Change the World by Reshma Saujani. We’ve covered this before, because it’s just that good. While it may not get you coding right away, it introduces a lot of essential programming principles as well as a pretty cool history of computer science.

Those of you who have another young learner, check out Video Games: Design and Code Your Own Adventure (Build It Yourself) by Kathy Ceceri and Mike Crosier. This is a really fun and easy-to-learn guide to coding. The secret is, you can get something out of this no matter your age.

Because it’s computer science, a lot of resources are online. Cplusplus.com is a good location for your C++ needs. Python Software Foundation (pypi.org) has downloadable software. JAVA Oracle (docs.oracle.com) has the answers to all your JAVA needs. Connect with other coders at StackOverflow (stackoverflow.com)

Even if you don’t want to pursue it career-wise, it’s not a bad idea to pick up the skills. With all these computer science books, you might find you have a talent for computer languages. Coding is a useful skill to learn, since C, Python, and JAVA are used all around the world.

#include <stdio.h>

int main()

{

printf(“Have Code, Will Travel!”);

return 0;

}

[1] He also happens to be my husband, and had no choice but to help if he wanted a moment’s peace.David: “I have a moment’s peace?” [2] Legacy Systems are languages that have been used continuously for years.