Open Educational Resources and Computer Science

This collection was curated by an ASCCC OERI discipline lead. A comprehensive list of current discipline leads is available.

OER in Computer Science – An Update2022/05/052022-05-05 13:00:00
Using Virtual Environments to Teach Computer Science2021/12/022021-12-02 13:00:00
OER and Computer Science2021/03/212021-03-21 12:42:00
OER for Computer Science2019/04/122019-04-12 20:10:16

Introduction to Programming Concepts and Methodologies (C-ID COMP 112) and Programming Concepts and Methodology I (C-ID COMP 122)

The following resources are compatible with both C-ID COMP 112 and 122.

  • Python for Everybody; Python for Everybody – LibreTexts (CC BY)
    An excellent book on introductory computer programming topics. The book’s website has a great deal of additional information and resources. The book itself has great vocabulary words, it has exercises, and includes the use of Jupyter Notebooks, where you can edit and run code right in the LMS environment. The material has been translated into several different languages, see the book’s website for a complete list.
  • Think Python 2e; Think Python 2e – LibreTexts (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. Larger pieces, like recursion and object-oriented programming, are divided into a sequence of smaller steps and introduced over the course of several chapters.
  • A Byte of Python; A Byte of Python – LibreTexts (CC BY-SA)
    This book serves as a guide or tutorial to the Python programming language. It is mainly targeted at newbies. It is useful for experienced programmers as well. The aim is that if all you know about computers is how to save text files, then you can learn Python from this book. If you have previous programming experience, then you can also learn Python from this book.
  • Introduction to Computer Science and Programming in Python (CC BY-NC-SA)
    This is part of MIT’s OpenCourseWare website. It includes a course syllabus, reading list, lecture videos, Powerpoint slides and code, in-class questions and video questions as well as assignments – all available for download. The course is intended for students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems and to help students, regardless of their major, feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. The class uses the Python 3.5 programming language.

Programming Concepts and Methodology II (C-D COMP 132)

  • Open Data Structures (in C++) (CC BY)
    This resource is a well-written text that covers the material quite well. It is a bit older than other material, but it is still a very valid resource. The main website has some other variations of this text. It is intended to teach the design and analysis of basic data structures and their implementation in an object-oriented language. In this edition, the language happens to be C++. This book is not intended to act as an introduction to the C++ programming language. Readers of this book need only be familiar with the basic syntax of C++ and similar languages. Those wishing to work with the accompanying source code should have some experience programming in C++.
  • CISC 187 Course Reader (Parillo) (GNU Free Documentation License)
    Any user should ensure they read the GNU Free Documentation license in its entirety.
  • C++ reference (CC BY-SA and GNU Free Documentation License)
    A complete online reference for the C and C++ languages and standard libraries, i.e. a more convenient version of the C and C++ standards.
  • Open DSA (Copyrighted)
    OpenDSA is infrastructure and materials to support courses in a wide variety of Computer Science-related topics such as Data Structures and Algorithms (DSA), Formal Languages, Finite Automata, and Programming Languages. OpenDSA materials include many visualizations and interactive exercises. Our philosophy is that students learn best when they engage the material and then practice it until they have demonstrated their proficiency. OpenDSA provides a place for students to practice skills and develop knowledge with a variety of exercises including small code writing problems, proficiency exercises where students demonstrate knowledge of an algorithm by interacting with a data structure, and questions about knowledge

Computer Architecture and Organization (C-ID COMP 142)

  • Below C Level (CC-BY-ND; “ND” indicates “no derivatives”, editing is not permitted)
    This book is NOT about assembly language programming. There is assembly language sprinkled throughout the book, so you will in fact learn assembly language—but only as a means to a different end, the latter being understanding of computer systems. Specifically, you will learn about high-level hardware, the large differences between one machine and the next, and low-level software, meaning operating systems and to some degree compilers.
  • Introduction to MIPS Assembly Language Programming; Introduction to MIPS Assembly Language Programming PDF (CC BY)
    This book was written to introduce students to assembly language programming in MIPS. As with all assembly language programming texts, it covers basic operators and instructions, subprogram calling, loading and storing memory, program control, and the conversion of the assembly language program into machine code.
  • Programmed Introduction to MIPS Assembly Language (CC BY-NC)
    This is a course in assembly language programming of the MIPS processor. It emphasizes the topics needed for the study of computer architecture: bits, bit patterns, operations on bit patterns, and how bit patterns represent instructions and data. This course is equivalent to a semester-long junior college or university course (except, perhaps, for the emphasis on bit patterns). The emphasis of the course is on understanding how computers work. This will provide a basis for further study of computer architecture and computer software. The MIPS processor, the subject of this course, has a well-designed architecture and is particularly fruitful to study.
  • x86-64 Assembly Language Programming with Ubuntu; x86-64 Assembly Language Programming with Ubuntu PDF (CC BY-NC-SA)
    The purpose of this text is to provide a reference for university-level assembly language and systems programming courses. Specifically, this text addresses the x86-641 instruction set for the popular x86-64 class of processors using the Ubuntu 64-bit Operating System (OS). While the provided code and various examples should work under any Linux-based 64-bit OS, they have only been tested under Ubuntu 14.04 LTS (64-bit).

Discrete Structures (C-ID COMP 152)

  • Mathematics for Computer Science; Mathematics for Computer Science LibreText PDF; Mathematics for Computer Science PDF (CC BY-SA)
    This text explains how to use mathematical models and methods to analyze problems that arise in computer science. Proofs play a central role in this work because the authors share a belief with most mathematicians that proofs are essential for genuine understanding. Proofs also play a growing role in computer science; they are used to certify that software and hardware will always behave correctly, something that no amount of testing can do.
  • Applied Discrete Structures – Website; Applied Discrete Structures – Textbook (CC BY-NC-SA)
    This is an amazing resource…another one of those cool websites with a plethora of resources and tools.
  • Discrete Mathematics: An Open Introduction (CC BY-SA)
    This is a new open textbook version of the material mentioned above. Applied Discrete Structures is designed for use in a university course in discrete mathematics spanning up to two semesters. Its original design was for computer science majors to be introduced to the mathematical topics that are useful in computer science. It can also serve the same purpose for mathematics majors, providing a first exposure to many essential topics.
  • A Spiral Workbook for Discrete Mathematics (CC BY-NC-SA)
    This text covers the standard topics in a sophomore-level course in discrete mathematics: logic, sets, proof techniques, basic number theory, functions, relations, and elementary combinatorics, with an emphasis on motivation. It explains and clarifies the unwritten conventions in mathematics, and guides the students through a detailed discussion on how a proof is revised from its draft to a final polished form. Hands-on exercises help students understand a concept soon after learning it. The text adopts a spiral approach: many topics are revisited multiple times, sometimes from a different perspective or at a higher level of complexity. The goal is to slowly develop students’ problem-solving and writing skills.

No-Cost Resources – Licensing Will Vary

The following are tools that can be used with various Computer Science courses. These are all no cost resources.

  • Visual Studio Code – An IDE for programming in all languages
  • – An online tool for writing computer code.
  • Online GDB – An online compiler and debugger for C/C++
  • Virtual Box – VirtualBox is a powerful x86 and AMD64/Intel64 virtualization product for enterprise as well as home use. Not only is VirtualBox an extremely feature rich, high performance product for enterprise customers, it is also the only professional solution that is freely available as Open Source Software under the terms of the GNU General Public License (GPL) version 2.
  • OS Boxes – OSBoxes offers you ready-to-use Linux/Unix virtual machine operating systems to run as a guest on VirtualBox
  • Packet Tracer – A powerful network simulation tool built by Cisco. You need to sign up for free. Each time Packet Tracer starts up you need Internet connectivity to allow an authorized user to sign in.
  • Git – Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git is released under the GNU General Public License version 2.0.
  • Compiler Explorer – Compiler Explorer is an interactive online compiler which shows the assembly output of compiled C++, Rust, Go (and many more) code.
  • Exercism – An online tool for learning programming skills in a variety of languages.
  • GALILEO Open Learning Materials: Computer Science and Information Technology Collections – GALILEO Open Learning Materials brings together open educational resources throughout the University System of Georgia, including open textbooks and ancillary materials.
    This repository is administrated by Affordable Learning Georgia, an initiative of GALILEO and the University System of Georgia which aims to reduce the cost of textbooks to students and contribute to their retention, progression, and graduation. For more about Affordable Learning Georgia, visit Affordable Learning Georgia’s website.
    Most works hosted in GALILEO Open Learning Materials have a Creative Commons license, allowing the reuse, redistribution, remix, and revision of these materials. To learn more about Creative Commons licenses, please visit the Creative Commons Licenses Page.
  • DOAB – DOAB is a discovery service for peer reviewed open access books and book publishers that indexes and provides access to high quality, open access, peer-reviewed books.
  • National CyberWatch Center – Headquartered at Prince George’s Community College, the National CyberWatch Center leads collaborative efforts to advance cybersecurity education and strengthen the national workforce.
    While this organization does NOT provide course content or materials, they do provide excellent information on what content many cybersecurity courses should include. They also provide great information about what courses should make up a cybersecurity program.
  • The National Cybersecurity Training and Education Center (NCyTE) – The NCyTE Center advances cybersecurity education in the U.S. by investing in technological innovation, resources, professional development and tools to support faculty, community colleges, and the workforce pipeline of tomorrow.
    This organization DOES provide content for some cybersecurity courses. They also hold monthly webinars on a variety of cybersecurity educational topics, as well as numerous educational webinars.

This page last updated May 11th, 2022.