Skip to main content

Open Educational Resources: Computer Science

This site is designed to introduce OER initiatives, explain creative commons licensing and OER, and to help you get started searching for Open Educational Resources for teaching and learning.

OU Library Resources for Computer Science

OU Libraries provides access to content such as online books, journals and image collections that can be used to lower or remove student textbook costs for OU students.  To learn more, see the following:

Computer Science

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. 

For more information about Creative Commons and quick reference to license definitions see the OU Creative Commons LibGuide.

Textbooks

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.

 

Physical Modeling in MATLAB

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.

Open Textbook Collections

Find more Computer Science textbooks in these collections

 

 

Open Textbook Library

The Open Textbook Library is a collection of open textbooks that features reviews written by professors.  A project of the University of Minnesota, The Open Textbook Library provides a review rubric for faculty to use when evaluating textbooks and displays them for the benefit of potential adopters. 

College Open Textbooks

The College Open Textbooks Collaborative, a collection of twenty-nine educational non-profit and for-profit organizations, affiliated with more than 200 colleges, is focused on driving awareness and adoptions of open textbooks to more than 2000 community and other two-year colleges. This includes providing training for instructors adopting open resources, peer reviews of open textbooks, and mentoring online professional networks that support for authors opening their resources, and other services.  -College Open Textbooks

BC Campus Open Ed

The B.C. Open Textbook Project is funded by the BC Ministry of Advanced Education, and BCcampus is tasked with managing it. A goal of the Project is to provide flexible and affordable access to higher education resources in B.C. by making available 40 openly-licensed textbooks. These texts will be available for selection by B.C. faculty, and digital versions of the texts will be free of charge to students. For those who prefer a printed copy, this format will also be available on demand for a low cost. -BC Campus

MERLOT

MERLOT is a collection of online resources curated by a community of faculty, staff, and students of higher education.  This subset of the MERLOT collection features openly licensed textbooks for use by students and faculty.  MERLOT allows its users to rate materials and comment on specific resources.

 

MIT OCW Bookshelf


This is a collection complete textbooks and textbook-like notes that can be found within all of the open courseware featured in MIT's open courseware site.  As one might expect from MIT, many of the textbooks featured here focus on Mathematics, Computer Science, and Engineering. 

Supplemental Materials

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.

License

All original content on this page is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. It is not necessary to seek permission to reuse the content, although – per the terms of the license – attribution is required. Please attribute as follows: "Content from University of Oklahoma Libraries." All linked-to content adheres to its respective license.

Creative Commons License