Digital library
Textbooks, references and open learning resources.

External
Mathematics for Computer Science
Eric Lehman, F. Thomson Leighton, & Alberty R. Meyer · Google and Massachusetts Institute of Technology
This text serves as an introduction to discrete mathematics, probability, and mathematical thinking for computer scientists with an interactive introduction to discrete mathematics oriented toward computer science and engineering. The subject coverage divides roughly into thirds: (1) Fundamental concepts of mathematics including definitions, proofs, sets, functions, relations. (2) Discrete structures: graphs, state machines, modular arithmetic, counting and (3) Discrete probability theory.

External
Discrete Mathematics for Computer Science
Jin He · Fresno City College
LibreTexts

External
Discrete Mathematics for Computer Science
Mark A. Fitch · University of Alaska Anchorage
In class materials for an introduction to logic, proof, enumeration, relations, and graph theory for lower division undergraduate students of computer science and computer systems engineering. These materials were designed to introduce concepts of logic and discrete mathematics via carefully picked problems that test understanding of definitions. Another source of exercises is required at this time.

External
Discrete Mathematics for Information Technology
Simon Crothers · Kwantlen Polytechnic University · 2026
Discrete Mathematics for Information Technology is an applied, student-focused introduction to the mathematical foundations that underpin modern computing. Designed for learners in information technology and business contexts, this textbook bridges theory and practice by connecting core concepts, such as number systems, data representation, logic, proofs, relations, algorithms, Boolean algebra, and graph theory, to real-world applications in programming, networking, databases, and systems design. Each chapter is structured with clear explanations, worked examples, case studies, and programming-oriented exercises that reinforce both conceptual understanding and practical skills. Emphasis is placed on developing analytical thinking, problem-solving, and the ability to model and reason about digital systems with precision and confidence. As an open educational resource, the text is adaptable and accessible, supporting a wide range of teaching and learning environments. By integrating mathematical rigor with authentic IT scenarios, this book equips students with the essential tools needed to succeed in modern, data-driven and technology-focused careers.

External
MAT 1160: Data & Chance
Andy D. Jones · Prince George's Community College
This textbook supports a semester‑long statistics and probability course for future elementary and middle school teachers. It includes ideas from general education statistics but doesn't emphasize inferential statistics. It focuses on concepts essential for teaching math in the lower grades and covers topics beyond the primary curriculum, including interpreting assessment measures, understanding statistics used in professional practice, and developing informed perspectives about data and chance.

External
Foundations of Computation
Carol Critchlow & David J. Eck · Hobart and William Smith Colleges
Foundations of Computation is a free textbook for a one-semester course in theoretical computer science. The course has no prerequisites other than introductory computer programming. The first half of the course covers material on logic, sets, and functions that would often be taught in a course in discrete mathematics. The second part covers material on automata, formal languages, and grammar that would ordinarily be encountered in an upper level course in theoretical computer science.

External
Discrete Math with SageMath: Learn math with open-source software
Zunaid Ahmed; Hellen Colman; Samuel Lubliner · Zunaid Ahmed, Hellen Colman, Samuel Lubliner · 2025
Our book is intended to provide concise and complete instructions on how to use Sage to solve problems in Discrete Math. It is appropriate for a first or second year undergraduate course for math and computer science majors. Our goal is to streamline the learning process with SageMath. This approach helps students focus more on mathematics and reduces the friction of learning how to code. Our resources are designed for all math students, regardless of programming experience. The novelty of our project is that the textbook is authored by students under faculty supervision. With Open Pedagogy as a guiding praxis, we present this student-created textbook as a more effective alternative in promoting student learning and engagement. Students present the contents in new and inventive ways, from the overall voice of the textbook to the actual examples drawn from their and their peers' lives. The text began as a support textbook for our undergraduate Discrete Math course developed at Wright College, one of the City Colleges of Chicago. Despite the fabulous capabilities of SageMath, students in Discrete Math were often frustrated by the lack of specific documentation geared towards beginning undergrad students in Discrete Math. We developed an OER for our students to use this mathematical software effectively.

External
Data Analysis in the Psychological Sciences: A Practical, Applied, Multimedia Approach
Leyre Castro; J. Toby Mordkoff · University of Iowa Libraries · 2023
This open resources textbook contains 10 Units that describe and explain the main concepts in statistical analysis of psychological data. In addition to conceptual descriptions and explanations of the basic analyses for descriptive statistics, this textbook also explains how to conduct those analyses with common statistical software (Excel) and open-source free software (R).

External
Linear Regression Using R: An Introduction to Data Modeling
David Lilja · University of Minnesota Libraries Publishing · 2016
Linear Regression Using R: An Introduction to Data Modeling 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.

External
Process Improvement using Data
Kevin Dunn · Kevin Dunn · 2026
There is no other free, coherent text that covers what engineers and scientists actually do with process data (visualization, regression, designed experiments, process monitoring, and multivariate / latent-variable methods) in one volume. Most textbooks pick one of those topics and go deep. Practitioners need all of them, and need to see how they fit together, because real industrial problems don't respect chapter boundaries. Process Improvement using Data was written to fill that gap, and has been continuously refined in industry-facing classrooms and in industrial practice since 2010. It is suitable for upper-undergraduate or introductory-graduate courses, and for self-study by working engineers and data scientists with a basic statistics background.

External
Basic Engineering Data Collection and Analysis
Steve Vardeman; J. Marcus Jobe · Iowa State University · 2001
In Basic Engineering Data Collection and Analysis, Stephen B. Vardeman and J. Marcus Jobe stress the practical over the theoretical. Step by step, students get real engineering data and scenario examples along with chapter-long case studies that illustrate concepts in realistic, thoroughly detailed situations. This approach encourages students to work through the material by carrying out data collection and analysis projects from problem formulation through the preparation of professional technical reports—just as if they were on the job.

External
The Crystal Ball Instruction Manual
Stephen Davies · University of Mary Washington · 2020
Welcome to Volume Two of the Crystal Ball series: Foundations for Data Science! I titled the first volume “Introduction to Data Science” because it led you through a dip-your-toes-in-the-water experience. You took a brief tour through the various elements in this diverse field and got a feel for what it was all about. Since you’re still reading, this means you’re still interested, and ready to explore the next level. In Foundations, we’ll solidify your growing knowledge so that you have a firm base on which to build everything else. Future volumes in this series will cover applications, advanced techniques, and some special data types that require special treatment. But it all ultimately rests on the skill set you’ll have built in Volumes One and Two of this series.

External
An Introduction to Python Jupyter Notebooks for College Math Teachers
Paul Isihara; Claire Wagner; Peter Jantsch; Thomas VanDrunen · Paul Isihara, Claire Wagner, Peter Jantsch, and Thomas VanDrunen · 2024
This book is an introduction to the use of Python Jupyter Notebooks (JNBs) for college math teachers and their students. The book is an evolving work in progress, but we hope this 1st Edition may already be quite useful to a college math teacher who is interested to use Jupyter Notebooks in their courses. Each section of the book has been written in the form of a Jupyter Notebook and can be downloaded using the download button at the top menu bar. In some cases, additional data files or image files may need to be downloaded as well. All the files are available in the src folder of the github repository https://github.com/timothyprojectGiG/JB_Math_Textbook Each chapter contains a JNB lab with solutions. Experienced teachers can modify these labs and create new labs tailored to their courses. The chapters were written by different authors/authorship teams, and as such, vary in style. Each chapter essentially can be read independently of the others as long as one has the pre-requisite mathematical knowledge. Some effort has been made to standardize the chapter formats, and the index may help the reader find specific topics of interest. There is virtually no limit to what can be done with JNBs, and we hope this work serves as a useful starting point for teachers and students to enrich and enliven the study of mathematics using this tool. The JNBs used to create this book contain special markdown code which are needed to produce features such as indexing, referencing, and highlight boxes in the Jupyter Book. Some editing of a downloaded JNB may may make it more suitable for classroom use.

External
Prealgebra via Python Programming: First Steps to Perform Large Scale Computational Tasks in the Sciences and Engineerings
Sergio Rojas · Sergio Rojas · 2018
This book was written for students and instructors who want to learn how to use a computer for other than the most common uses, such as web browsing, document creation, or paying bills online. This book is for anyone who wants to perform computational tasks that they design. In other words, if you wish to learn how to program a computer, this book is for you. Because prealgebra is a subject that practically everyone is supposed to learn in grade school, it provides a platform to introduce basic computer programming concepts. Consequently, this book should also be of interest to students in middle or high school who want to learn how to program, and who are willing to invest the time and effort in learning a programming language that they could continue using throughout their schooling and in their professional life. Similarly, this book could also be of interest to pre-service and in-service mathematics teachers wishing to have at their disposal a complementary tool to assist in fostering understanding, competency, and interest in mathematics among their students. This book can be integrated with the teachers’ curriculum as way to tackle non-traditional math problems using an inexpensive modern computer language. By the end of the book, a reader will have learned enough to be able to write a preliminary, step-by-step one variable equation solver that can be expanded in the future to use with more complex equations. In other words, by the end of the book, you will be able to write code that programs their machines to solve equations. This code is foundational and readers are ecouraged to learn on their own how to build on it to suit their mathematics learning needs.

External
Evidence-based Software Engineering
Derek Jones · Knowledge Software · 2020
This book discusses what is currently known about software engineering, based on an analysis of all the publicly available data. This aim is not as ambitious as it sounds, because there is not a great deal of data publicly available. The intent is to provide material that is useful to professional developers working in industry; until recently researchers in software engineering have been more interested in vanity work, promoted by ego and bluster. The material is organized in two parts, the first covering software engineering and the second the statistics likely to be needed for the analysis of software engineering data.

External
Introduction to Statistical Thinking
Benjamin Yakir · Benjamin Yakir · 2010
The target audience for this book is college students who are required to learn statistics, students with little background in mathematics and often no motivation to learn more. It is assumed that the students do have basic skills in using computers and have access to one. Moreover, it is assumed that the students are willing to actively follow the discussion in the text, to practice, and more importantly, to think. Teaching statistics is a challenge. Teaching it to students who are required to learn the subject as part of their curriculum, is an art mastered by few. In the past I have tried to master this art and failed. In desperation, I wrote this book. This book uses the basic structure of generic introduction to statistics course. However, in some ways I have chosen to diverge from the traditional approach. One divergence is the introduction of R as part of the learning process. Many have used statistical packages or spreadsheets as tools for teaching statistics. Others have used R in advanced courses. I am not aware of attempts to use R in introductory level courses. Indeed, mastering R requires much investment of time and energy that may be distracting and counterproductive for learning more fundamental issues. Yet, I believe that if one restricts the application of R to a limited number of commands, the benefits that R provides outweigh the difficulties that R engenders. Another departure from the standard approach is the treatment of probability as part of the course. In this book I do not attempt to teach probability as a subject matter, but only specific elements of it which I feel are essential for understanding statistics. Hence, Kolmogorov’s Axioms are out as well as attempts to prove basic theorems and a Balls and Urns type of discussion. On the other hand, emphasis is given to the notion of a random variable and, in that context, the sample space.

External
First Semester in Numerical Analysis with Python
Yaning Liu · Auraria Institutional Repository
The book is based on “First semester in Numerical Analysis with Julia”, written by Giray Ökten. The contents of the original book are retained, while all the algorithms are implemented in Python (Version 3.8.0). Python is an open source (under OSI), interpreted, general-purpose programming language that has a large number of users around the world. Python is ranked the third in August 2020 by the TIOBE programming community index, a measure of popularity of programming languages, and is the top-ranked interpreted language. We hope this book will better serve readers who are interested in a first course in Numerical Analysis, but are more familiar with Python for the implementation of the algorithms. The first chapter of the book has a self-contained tutorial for Python, including how to set up the computer environment. Anaconda, the open-source individual edition, is recommended for an easy installation of Python and effortless management of Python packages, and the Jupyter environment, a web-based interactive development environment for Python as well as many other programming languages, was used throughout the book and is recommended to the readers for easy code development, graph visualization and reproducibility.

External
How to Think Like a Computer Scientist: C Version
Allen Downey; Thomas Scheffler · Green Tea Press · 1999
The goal of this book is to teach you to think like a computer scientist. I like the way computer scientists think because they combine some of the best features of Mathematics, Engineering, and Natural Science. Like mathematicians, computer scientists use formal languages to denote ideas (specifically computations). Like engineers, they design things, assembling components into systems and evaluating trade offs among alternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions.The single most important skill for a computer scientist is problem-solving. By that I mean the ability to formulate problems, think creatively about solutions, and express a solution clearly and accurately. As it turns out, the process of learning to program is an excellent opportunity to practice problem-solving skills. That’s why this chapter is called “The way of the program.”

External
How to Think Like a Computer Scientist: C++ Version
Allen Downey · Green Tea Press · 2012
The goal of this book is to teach you to think like a computer scientist. I like the way computer scientists think because they combine some of the best features of Mathematics, Engineering, and Natural Science. Like mathematicians,computer scientists use formal languages to denote ideas (specifically computations). Like engineers, they design things, assembling components into systems and evaluating trade offs among alternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions.The single most important skill for a computer scientist is problem-solving. By that I mean the ability to formulate problems, think creatively about solutions, and express a solution clearly and accurately. As it turns out, the process of learning to program is an excellent opportunity to practice problem-solving skills. That’s why this chapter is called “The way of the program.”

External
Think Bayes: Bayesian Statistics Made Simple
Allen Downey · Green Tea Press · 2012
Think Bayes is an introduction to Bayesian statistics using computational methods. The premise of this book, and the other books in the Think X series, is that if you know how to program, you can use that skill to learn other topics. Most books on Bayesian statistics use mathematical notation and present ideas in terms of mathematical concepts like calculus. This book uses Python code instead of math, and discrete approximations instead of continuous mathematics. As a result, what would be an integral in a math book becomes a summation, and most operations on probability distributions are simple loops. I think this presentation is easier to understand, at least for people with programming skills. It is also more general, because when we make modeling decisions, we can choose the most appropriate model without worrying too much about whether the model lends itself to conventional analysis. Also, it provides a smooth development path from simple examples to real-world problems.