The MSUB Library provides access to content such as online books, journals and image collections that can be used to lower or remove student textbook costs for MSUB students. To learn more, see the following:
On this page you will find several open Computer Science textbooks along with supplemental material and a few lecture videos.
The purpose of these discipline specific pages is to showcase content that might be of interest to faculty who are considering adopting open educational resources for use in their classes. This list of content is by no means exhaustive. The nature of open educational resources is very collaborative and it is in that spirit that we encourage any comments about the content featured on this page or recommendations of content that are not already listed here.
Think OS: A Brief Introduction to Operating Systems -Allen B. Downey In many computer science programs, Operating Systems is an advanced topic. By the time students take it, they usually know how to program in C, and they have probably taken a class in Computer Architecture. Usually the goal of the class is to expose students to the design and implementation of operating systems, with the implied assumption that some of them will do research in this area, or write part of an OS. This book does not assume that you have studied Computer Architecture. As we go along, I will explain what we need. -Allen B. Downey Author: Allen B. Downey, Ph.D., Computer Science, Olin College This text is licensed under a Creative Commons Attribution-NonCommercial 3.0 License. |
![]() |
Think Python: How to Think Like a Computer Scientist -Allen B. Downey 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. Larger pieces, like recursion and object-oriented programming are divided into a sequence of smaller steps and introduced over the course of several chapters. Some examples and exercises are based on Swampy, a Python package written by the author to demonstrate aspects of software design, and to give readers a chance to experiment with simple graphics and animation. -Allen B. Downey Author: Allen B. Downey, Ph.D., Computer Science, Olin College This text is licensed under a Creative Commons Attribution-NonCommercial 3.0 License. |
![]() |
Think Java: How to Think Like a Computer Scientist -Allen B. Downey Think Java is an introduction to Java programming for beginners. It is tailored for students preparing for the Computer Science Advanced Placement (AP) Exam, but it is for anyone who wants to learn Java. Think Java is concise. It uses a subset of Java that lets students work on interesting projects without getting bogged down in the details of Java. -Allen B. Downey Author: Allen B. Downey, Ph.D., Computer Science, Olin College This text is licensed under a Creative Commons Attribution-NonCommercial 3.0 License. |
![]() |
Think C++: How to Think Like a Computer Scientist -Allen B. Downey The single most important skill for a computer scientist is problem solving. The goal of this book is to teach you to think like a computer scientist. Of course, the other goal of this book is to prepare you for the Computer Science AP Exam. We may not take the most direct approach to that goal, though. For example, there are not many exercises in this book that are similar to the AP questions. On the other hand, if you understand the concepts in this book, along with the details of programming in C++, you will have all the tools you need to do well on the exam. Author: Allen B. Downey, Ph.D., Computer Science, Olin College This text is licensed under a Creative Commons Attribution-NonCommercial 3.0 License. |
![]() |
Think Ocaml: How to Think Like a Functional Programmer -Allen B. Downey, Nicholas Monje How to Think Like a Computer Scientist is an introductory programming textbook based on the OCaml language. It is a modified version of Think Pythonby Allen Downey. It is intended for newcomers to programming and also those who know some programming but want to learn programming in the function-oriented paradigm, or those who simply want to learn OCaml. Authors: Allen B. Downey, Ph.D., Computer Science, Olin College Nicholas Monje Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, |
![]() |
How to Think Like a Computer Scientist: Learning with Python -Allen B. Downey How to Think... is an introduction to programming using Python, one of the best languages for beginners. -Allen B. Downey Authors: Allen B. Downey, Ph.D., Computer Science, Olin College Jeff Elkner, Northern Virginia Community College Chris Myers Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, |
![]() |
Think Complexity: Exploring Complexity Science with Python -Allen B. Downey An introduction to algorithms and data structures in Python, including graphs and arrays, and complexity science, which includes small world graphs, scale-free networks, cellular automata, self-organized criticality, fractals, and agent-based models. -Allen B. Downey Author: Allen B. Downey, Ph.D., Computer Science, Olin College This text is licensed under a Creative Commons Attribution-NonCommercial 3.0 License. |
![]() |
The Little Book of Semaphores -Allen B. Downey The approach of this book is to identify patterns that are useful for a variety of synchronization problems and then show how they can be assembled into solutions. After each problem, the book offers a hint before showing a solution, giving students a better chance of discovering solutions on their own. The book covers the classical problems, including "Readers-writers," "Producer-consumer", and "Dining Philosophers." In addition, it collects a number of not-so-classical problems, some written by the author and some by other teachers and textbook writers. Readers are invited to create and submit new problems. -Allen B. Downey Author: Allen B. Downey, Ph.D., Computer Science, Olin College This text is licensed under a Creative Commons Attribution-NonCommercial 3.0 License. |
![]() |
Most books that use MATLAB are aimed at readers who know how to program. This book is for people who have never programmed before. As a result, the order of presentation is unusual. The book starts with scalar values and works up to vectors and matrices very gradually. This approach is good for beginning programmers, because it is hard to understand composite objects until you understand basic programming semantics. -Allen B. Downey Author: Allen B. Downey, Ph.D., Computer Science, Olin College This text is licensed under a Creative Commons Attribution-NonCommercial 3.0 License. |
![]() |
Learning Perl the Hard Way -Allen B. Downey This book if for people who already know how to program in another language, but who do not already know Perl. This book spends little time on the basics and emphasizes good programming style in Perl. Additionally, this text focuses on object-oriented Perl programming. Author: Allen B. Downey, Ph.D., Computer Science, Olin College This text is licensed under a Creative Commons Attribution-NonCommercial 3.0 License. |
![]() |
Operating Systems and Middleware: Supporting Controlled Interaction -Max Hailperin This book is intended for upper-level computer science students who want to understand how contemporary operating systems and middleware work. In this book you will find many forms of balance. The high-level application programmer's view, focused on the services that system software provides, is balanced with a lower-level perspective, focused on the mechanisms used to provide those services. Timeless concepts are balanced with concrete examples of how those concepts are embodied in a range of currently popular systems. Author: Max Hailperin Ph. D., Computer Science, Gustavus Adolphus College This text is licensed under a Creative Commons Attribution-NonCommercial 3.0 License. |
![]() |
Think Stats: Probability and Statistics for Programmers -Allen B. Downey Think Stats emphasizes simple techniques you can use to explore real data sets and answer interesting questions. The book presents a case study using data from the National Institutes of Health. Readers are encouraged to work on a project with real datasets. if you have basic skills in Python, you can use them to learn concepts in probability and statistics. Think Stats is based on a Python library for probability distributions (PMFs and CDFs). Many of the exercises use short programs to run experiments and help readers develop understanding. -Allen B. Downey Author: Allen B. Downey, Ph.D., Computer Science, Olin College This text is licensed under a Creative Commons Attribution-NonCommercial 3.0 License |
![]() |
Think Bayes: Bayesian Statistics in Python -Allen B. Downey Think Bayes is an introduction to Bayesian statistics using computational methods. 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. -Allen B. Downey Author: Allen B. Downey, Ph.D., Computer Science, Olin College This text is licensed under a Creative Commons Attribution-NonCommercial 3.0 License. |
![]() |