Skip to Main Content
It looks like you're using Internet Explorer 11 or older. This website works best with modern browsers such as the latest versions of Chrome, Firefox, Safari, and Edge. If you continue with this browser, you may see unexpected results.

Open Educational Resources (OER/ZTC/LTC)

This guide provides information about OER and a basic primer about copyright and fair use for instruction

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

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 EverybodyPython 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 2eThink 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 PythonA 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

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++.
  • 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

Data Science

Data Science

Discrete Structures

Discrete Structures (C-ID COMP 152)

  • Mathematics for Computer Science (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 – WebsiteApplied 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.

Computer Architecture and Organization

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 ProgrammingIntroduction to MIPS Assembly Language Programming – Open Textbook Library (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 (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).

Applied Digital Media OER

no cost resources

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.

Open Courses and Videos

Open Courses and Videos

(must be used in conjunction with a printable textbook)

Additional Resources






From Green Tree Press with CC License.

Course Materials

Open Courses



Help Us Select the Best Resources for this Discipline

Help us make this page better and send your favorite resources to