52 Computer Science
Algorithms and Data Structures With Applications to Graphics and Geometry
Jurg Nievergelt (ETH Zurich) and Klaus Hinrichs (University of Muenster)
2011
Licence: CC BY
An introductory coverage of algorithms and data structures with application to graphics and geometry.
Format: PDF
Suggested for: COMP 272
Blueprints: Creating/ Describing/ and Implementing Designs for Larger-Scale Software Projects
Stephen Davies, University of Mary Washington
2023
Licence: CC BY-SA
Blueprints is a concise yet comprehensive coverage of Object-Oriented Analysis and Design concepts, suitable for a second programming course in Computer Science. It introduces and teaches application development in a command-line environment, and assumes basic expertise with the Java programming language.
Format: PDF
Suggested for: COMP 230
Computer Science 20
Dan Schellenberg (Saskatoon Public Schools)
Licence: CC BY-SA
Through its text and videos, this resource provides an interactive experience on learning to write and execute Python code. In addition to simply executing code, there is a unique feature called codelens that allows control of the flow of execution in order to gain a better understanding of how the program works.
Format: Online
Suggested for: COMP 218
Database Design – 2nd Edition
Adrienne Watt (City University)
2014
Licence: CC BY
This second edition of Database Design book covers the concepts used in database systems and the database design process. Topics include: The history of databases; characteristics and benefits of databases; data models; data modelling; classification of database management systems; integrity rules and constraints; functional dependencies; normalization; and database development process. New to this edition are more examples, highlighted and defined key terms, both throughout and at the end of each chapter, and end-of-chapter review exercises. Two new chapters have been added on SQL, along with appendices that include a data model example, sample ERD exercises and SQL lab with solutions.
Formats: Online, EPUB, and PDF
Suggested for: COMP 378
Data Structures and Information Retrieval in Python
Allen B. Downey
Licence: CC BY-NC-SA
Data Structures and Information Retrieval in Python is an introduction to data structures and algorithms using a web search engine as a motivating example. It is based in part on Think Data Structures, which uses Java.
Format: Online, PDF
Suggested for: COMP 218
Delftse Foundations of Computation
Stefan Hugtenburg and Neil Yorke-Smith (Delft University of Technology)
2018
Licence: CC BY-NC-SA
The textbook is designed for an introductory course in theoretical computer science. It includes topics from propositional and predicate logic, proof techniques, set theory and the theory of computation, along with practical applications to computer science.
Format: PDF
Suggested for: COMP 200, COMP 210
Elements of Data Science
Allen B. Downey
Licence: CC BY-NC-SA
Elements of Data Science is an introduction to data science for people with no programming experience. My goal is to present a small, powerful subset of Python that allows you to do real work in data science as quickly as possible.
Format: Online, PDF
Suggested for: COMP 272, COMP 378
Eloquent JavaScript: A Modern Introduction to Programming, 3rd Edition
Marijn Haverbeke
2018
Licence: CC BY-NC
This book dives deep into the JavaScript language to show you how to write beautiful, effective code.
Format: Online, PDF, EPUB, Mobi
Foundations of Computation
Carol Critchlow and David Eck (Hobart and William Smith Colleges)
2011
Licence: CC BY-NC-SA
The textbook is designed for a one-semester course in theoretical computer science.
Format: PDF
Suggested for: COMP 200
Information Systems
Richard T. Watson
2007
Licence: CC BY
Students need to understand systems and the systems concept, and they need to understand the role of ICT in enabling systems. Students will learn the characteristics of good systems (e.g., intuitive, likable, error-resistant, fast, flexible, and the like). Knowing the characteristics of good systems will permit students to demand well designed systems and to suggest how existing systems should be changed. Students need to understand the affordances, directions, and limits of hardware, software, and networks in both personal and organizational dimensions. They also need to appreciate that, as technical capabilities change and new ones arise, more opportunities to apply ICT for efficiency, effectiveness, and innovation are afforded. They need to understand the process for developing and implementing new or improved systems and the activities of IS professionals in this process.
Format: PDF
Suggested for: COMP 210
Information Systems: A Manager’s Guide to Harnessing Technology
2015
Licence: CC BY-NC-SA
This textbook is intended for use in undergraduate and/or graduate courses in Management Information Systems and Information Technology.
Format: Online, PDF, EPUB, and more
Suggested for: COMP 210
IoT Use Cases and Technologies
F. John Dian and Reza Vahidnia (British Columbia Institute of Technology)
2021
Licence: CC BY-NC-SA
The phrase “Internet of Things” (IoT) alludes to the billions of physical devices connected to the Internet in order to exchange raw data and analyze the information. This book introduces the IoT use cases and technologies. It uses practical examples to demonstrate the effect of IoT and its potential to change our world, and it discusses the existing wired and wireless communication technologies that have enabled IoT. The book also includes multiple choice and review questions to support student learning and reflection.
Formats: Online, EPUB, PDF, and MOBI
Java, Java, Java: Object-Oriented Problem Solving
Ralph Morelli and Ralph Walde (Trinity College)
2016
Licence: CC BY
Suitable for a typical Introduction to Computer Science course or for a slightly more advanced Java as a Second Language course. This textbook takes the “objects first” approach to programming and problem solving. It provides careful coverage of Java language features, introductory programming concepts, and object-oriented design principles.
Formats: PDF and LaTex
Suggested for: COMP 268, COMP 308
The Joy of Cryptography
Mike Rosulek (Oregon State University)
2021
Licence: CC BY-NC-SA
The Joy of Cryptography is a free undergraduate-level textbook that introduces students to the fundamentals of provable security.
Format: PDF
Learn to Program: Intro Java with interactive graphics, via Processing
James Young (University of Manitoba)
2020
Licence: CC BY-NC-SA
This collection of free notes is aimed at helping the complete beginner learn the basics of computer programming using Processing, a free and easy to use program available for many platforms. With Processing, students start with making graphics, and skip much of the ugly, memorization-based syntax of beginner Java. Unlike other guides, this focuses on learning programming, not the features of Processing.
Format: PDF
Suggested for: COMP 308
Linear Regression Using R: An Introduction to Data Modeling
David J. Lilja, University of Minnesota
2016
Licence: CC BY-NC
This book presents one of the fundamental data modeling techniques in an informal tutorial style. Learn how to predict system outputs from measured data using a detailed step-by-step process to develop, train, and test reliable regression models. Key modeling and programming concepts are intuitively described using the R programming language. All of the necessary resources are freely available online.
Format: PDF
The Missing Link: An Introduction to Web Development and Programming
Michael Mendez
2014
Licence: CC BY
This text provides the developer with an understanding of the various elements of web development.
Format: Online, PDF, EPUB
Suggested for: COMP 266
Modeling and Simulation in Python
Allen B. Downey
2022
Licence: CC BY-NC-SA
Modeling and Simulation in Python is an introduction to physical modeling using a computational approach in a Jupyter notebook.
Format: Online
Suggested for: COMP 218
The Nature of Code
Daniel Shiffman
2012
Licence: CC BY-NC
This book focuses on the programming strategies and techniques behind computer simulations of natural systems.
Format: Online
Suggested for: COMP 200
Open Data Structures In Java
Pat Morin
2011
There are plenty of books that teach introductory data structures. Some of them are very good. Most of them cost money, and the vast majority of computer science undergraduate students will shell out at least some cash on a data structures book.
Licence: CC BY
Format: Online, PDF
Suggested for: COMP 268
The Primacy of the Public: Ethical Design for Technology
Marcus Schultz-Bergin (Cleveland State University)
2021
Licence: CC BY-NC
The Primacy of the Public presents a framework for engineering and technology ethics focused around three core ethical principles: the principle of welfare, the autonomy principle, and the fairness principle. To support this framework, the book begins with an examination of multiple perspectives we may take on engineering and technology, all of which support the centrality of ethical analysis and evaluation. These include the nature of engineering as a profession, the social context of engineering and technology, and the view that many technologies constitute social experiments.
Formats: Online and PDF
A Primer for Computational Biology
Shawn T. O’Neil
2017
Licence: CC BY-NC-SA
This book covers topics such as the usage of the command-line interface, installing and running bioinformatics software (without access to administrator privileges on the machine), basic analysis of data using built-in system tools, visualization of results, and introductory programming techniques in 3 languages commonly used for bioinformatics: Unix/Linux, Python, and R.
Format: Online, PDF, EPUB
Problem Solving with Algorithms and Data Structures Using Python
Bradley N. Miller and David L. Ranum (Luther College)
2018
Licence: CC BY-NC-SA
This textbook is about computer science. It is also about Python. However, there is much more. The study of algorithms and data structures is central to understanding what computer science is all about. Learning computer science is not unlike learning any other type of difficult subject matter. The only way to be successful is through deliberate and incremental exposure to the fundamental ideas. A beginning computer scientist needs practice so that there is a thorough understanding before continuing on to the more complex parts of the curriculum. In addition, a beginner needs to be given the opportunity to be successful and gain confidence. This textbook is designed to serve as a text for a first course on data structures and algorithms, typically taught as the second course in the computer science curriculum. Even though the second course is considered more advanced than the first course, this book assumes you are beginners at this level. You may still be struggling with some of the basic ideas and skills from a first computer science course and yet be ready to further explore the discipline and continue to practice problem solving. We cover abstract data types and data structures, writing algorithms, and solving problems. We look at a number of data structures and solve classic problems that arise. The tools and techniques that you learn here will be applied over and over as you continue your study of computer science.
Format: Online
Suggested for: COMP 218
Programming Fundamentals: A Modular Structured Approach, 2nd Edition
Kenneth Leroy Busbee and Dave Braunschweig (Houston Community College)
2018
Licence: CC BY-SA
The original content for this book was created by Kenneth Leroy Busbee and written specifically for his course based on C++. The goal for this second edition is to make it programming-language neutral, so that it may serve as an introductory programming textbook for students using any of a variety of programming languages, including C++, C#, Java, JavaScript, Python, and Swift. Other languages will be considered upon request. Programming concepts are introduced generically, with logic demonstrated in pseudocode and flowchart form, followed by examples for different programming languages. Emphasis is placed on a modular, structured approach that supports reuse, maintenance, and self-documenting code.
Formats: Online, EPUB, PDF, and MOBI
Suggested for: COMP 206
Programming Languages: Application and Interpretation
Shriram Krishnamurthi, Brown University
2017
Licence: CC BY-NC-SA
This text presents exercises and activities using Racket. This textbook has been used in classes at: Brown University, Cal Poly, Columbus State University, Northeastern University, NYU, Reed College, UC-San Diego, UC-Santa Cruz, University of Rhode Island, University of Utah, Westmont College, Williams College, Worcester Polytechnic Institute.
Format: Online, PDF
R @ R(D)SVS
Jill MacKay
2023
Licence: CC0
This open textbook, created by Dr Jill Mackay, Lecturer (Veterinary Medical Education) at the Royal (Dick) School of Veterinary Studies, is designed to help staff and students get to grips with with R. The book includes everything you need to get started and includes code blocks and plain English explanations of what the code is doing.
Format: Online
Think C++: How To Think Like a Computer Scientist
Allen B. Downey
Licence: CC BY-NC-SA
Think C++ is an introduction to programming using the C++ programming language.
Format: PDF
Suggested for: COMP 206
Think Data Structures: Algorithms and Information Retrieval in Java
Allen B. Downey
Licence: CC BY-NC-SA
This text organizes topics around an application—web search—that uses data structures extensively.
Format: Online, PDF
Suggested for: COMP 268, COMP 308
Think Java 2e: How To Think Like a Computer Scientist
Allen B. Downey
Licence: CC BY-NC-SA
Think Java is a hands-on introduction to computer science and programming Its conciseness, emphasis on vocabulary, and informal tone make it particularly appealing for readers with little or no experience. The book starts with basic programming concepts and gradually works its way to advanced object-oriented techniques.
Format: Online, PDF
Suggested for: COMP 268, COMP 308
Think OS: A Brief Introduction to Operating Systems
Allen B. Downey
Licence: CC BY-NC
Think OS is an introduction to Operating Systems for programmers.
Format: Online, PDF
Suggested for: COMP 314
Think Python 2e: How To Think Like a Computer Scientist
Allen B. Downey
Licence: CC BY-NC
Think Python is an introduction to Python programming for beginners. It starts with basic concepts of programming, and is carefully designed to define all terms when they are first used and to develop each new concept in a logical progression.
Format: Online, PDF
Suggested for: COMP 218
Think Stats: Probability and Statistics for Programmers
Allen B. Downey
Licence: CC BY-NC-SA
Think Stats is an introduction to Probability and Statistics for Python programmers.
Format: Online, PDF