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

 

License

Icon for the Creative Commons Attribution 4.0 International License

OER by Discipline Guide: Athabasca University Copyright © 2023 by Dan Cockcroft is licensed under a Creative Commons Attribution 4.0 International License, except where otherwise noted.

Share This Book