Skip to Main Content

Open Educational Resources (OER)

OER @ Hunter

CSci 127 Introduction to Computer Science

Hunter Computer Science | CSci 127 Introduction to Computer Science

Created by Katherine St. John, CSci 127 Introduction to Computer Science "presents an overview of computer science (CS) with an emphasis on problem-solving and computational thinking through 'coding': computer programming for beginners. Other topics include: organization of hardware, software, and how information is structured on contemporary computing devices."

The CSci 127 OER courseware includes:

  • Programming Assignments
  • Tutorials covering various topics, including Python, C++, Logical Circuits, and Machine Language
  • Open Source Programming Texts
  • Lecture Notes
  • Programming Exercises
CSci 335 Software Design and Analysis II

Hunter Computer Science | CSci 335 Software Design and Analysis II

Created by Professor Stewart Weiss, the CSci 335 Software Design and Analysis II OER courseware includes:

  • Lecture Notes
  • Tutorials covering various coding languages, including C/ C++, Linux, and Perl Scripts
  • Open Source Software Resources
  • Course Readings

Textbooks & Labs

How to Think Like a Computer Scientist

RuneStone
How to Think Like a Computer Scientist

From the General Introduction:
"The goal of this book is to teach you to think like a computer scientist. This way of thinking combines 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 tradeoffs 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. Problem solving means 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. "
C++ for Python Programmers

The Missing Link:
An Introduction to Web Development and Programming

From the Introduction:
"This text provides the developer with an understanding of the various elements of web development by focusing on the concepts and fundamentals through the examples within, providing a foundation that allows easier transition to other languages and a better understanding of how to approach their work. The reader will be introduced to topics in a manner that follows most project development methods, from initial conceptualization and design through front end development, back end development, and introducing additional concepts like accessibility and security, while focusing on responsive design techniques. Each section of the text includes opportunities to practice the material and assess increased knowledge after examining the topics. "
Includes a companion website:The Missing Link
 
Algorithms and Data Structures with Applications to Graphics and Geometry

Algorithms and Data Structures with Applications to Graphics and Geometry

From the Description:
"This is a textbook for first year computer science. It covers programming environments for motion, graphics, and geometry; programming concepts (beyond notation); objects, algorithms, and programs; complexity of problems and algorithms; data structures; and the interaction between algorithms and data structures (case studies in geometric computation)."
Peer Reviews
C++ for Python Programmers

RuneStone
C++ for Python Programmers

From the Introduction:
"This short ebook is intended to help Python programmers or students with at least one term of Python programming experience learn the basics of the C++ programming language.
This book is written using the build on what you know philosophy. In order to help you learn C++ we will start with a Python example and then implement the example in C++. We will also examine the strengths, weaknesses, and differences between these two languages. As such, this book does not attempt to replace the many good C++ reference books that are available. Please feel free to use this book for yourself, or as a resource for a class you are teaching. Some sections of this book were originally written by Dr. Brad Miller as Java for Python Programmers. These were translated to the C++ language by Dr. Jan Pearce and a team of excellent students from Berea College. Other sections were originally written as class web pages by Dr. Jan Pearce."
 
Java for Python Programmers

RuneStone
Java for Python Programmers

From the Preface:
"Welcome to Java for Python Programmers. This short ebook is an ongoing project to help Computer Science students who have had one or two semesters of Python learn the Java programming language. If you are not a part of that audience you may still find this a useful way to learn about Java. This book is written using the build on what you know philosophy. In order to help you learn Java I will start with a Python example and then implement the example in Java. Along the way we will examine the strengths, weaknesses and differences between those two languages.
This book does not attempt to replace the many good Java reference books that are available, in fact I use this in my course along with Horstman’s Core Java volumes. Please feel free to use this book for yourself, or if it fits a class you are teaching you are welcome to use this as a resource for your own class."
How to Code in Python 3

How to Code in Python 3

From the Description:
"This book is designed to be used in a way that makes sense for you. While it is arranged to ramp up an emerging developer, do not be constrained by the order: feel free to move throughout the book in a way that makes sense for you. Once you are familiar with the concepts, you can continue to use the book as a source of reference.
If you use the book in the order it is laid out, you’ll begin your exploration in Python by understanding the key differences between Python 3 and the previous versions of the language. From there, you’ll set up a programming environment for your relevant local or server-based system, and begin by learning general Python code structure, syntax, and data types. Along the way, you’ll gain a solid grounding in computational logic within Python, which can help you learn other programming languages. While the beginning of the book focuses on scripting in Python, the end of the book will take you through object-oriented coding in Python, which can make your code more modular, flexible, and complex without repetition. By the end of the book, you’ll learn how to debug your Python code and finally how to port Python code across versions."

The Rook's Guide to C++

From the Preface:
"What you are reading is the first of what I hope to be many everimproving iterations of a useful C++ textbook. We’ve gone fairly quickly from whim to print on an all-volunteer basis, and as a result, there are many things that I’d add and change if I had an infinite amount of time in my schedule. The vast majority of the contents were written in less than 36 hours by 25 students (mostly freshmen!) at Norwich University over a long weekend. Some of it is mine, and some was added by our crack team of technical editors as we translated sleep-deprived poor grammar into sleep-deprived better grammar.
Where it goes from here is mostly up to you! If there’s a section that’s missing or in need of clarification, please take a bit of time and make those changes. If you don’t want to bother yourself with the GitHub repository, send me your additions and modifications directly."

Burch's Logic & Circuits

From the Site:
"To understand how computers work, we will want to understand the fundamentals of digital circuits. As it turns out, digital circuits are built on the foundation of basic logic."

Cplusplus Tutorial

From the Introduction:
"This tutorial is for those people who want to learn programming in C++ and do not necessarily have any previous knowledge of other programming languages. Of course any knowledge of other programming languages or any general computer skill can be useful to better understand this tutorial, although it is not essential. It is also suitable for those who need a little update on the new features the language has acquired from the latest standards.
If you are familiar with the C language, you can take the first 3 parts of this tutorial as a review of concepts, since they mainly explain the C part of C++. There are slight differences in the C++ syntax for some C features, so I recommend you its reading anyway.
The 4th part describes object-oriented programming.
The 5th part mostly describes the new features introduced by ANSI-C++ standard. "

The Missing Link: An Introduction to Web Development

From the Description:
"Web development is an evolving amalgamation of languages that work in concert to receive, modify, and deliver information between parties using the Internet as a mechanism of delivery. While it is easy to describe conceptually, implementation is accompanied by an overwhelming variety of languages, platforms, templates, frameworks, guidelines, and standards. Navigating a project from concept to completion often requires more than mastery of one or two complementing languages, meaning today’s developers need both breadth, and depth, of knowledge to be effective. This text provides the developer with an understanding of the various elements of web development by focusing on the concepts and fundamentals through the examples within, providing a foundation that allows easier transition to other languages and a better understanding of how to approach their work. The reader will be introduced to topics in a manner that follows most project development methods, from initial conceptualization and design through front end development, back end development, and introducing additional concepts like accessibility and security, while focusing on responsive design techniques. Each section of the text includes opportunities to practice the material and assess increased knowledge after examining the topics. "

Programming With Robots

From the Introduction:
"Why learn the basics of programming using robots instead of more traditional method? For the last 50 years mainstream computer science has centered on the manipulation of abstract digital information. Programming for devices that interact with the physical world has always been an area of specialization for individuals that have already run the gauntlet of abstract information-based computer science. In recent years, we have seen a proliferation of processing devices that collect and manage information from their real-time environments via some physical interface component–among them, anti-lock brakes, Mars rovers, tele-surgery, artificial limbs, and even iPods. As these devices become ubiquitous, a liberally educated person should have some familiarity with the ways in which such devices work–their capabilities and limitations. "

Computer Science 2.0
from BC Campus

From the Introduction:
"Programming is not a “spectator sport”. It is something you do, something you participate in.< br /> This book is meant to provide [students] with an interactive experience as you learn to program. You can read the text, watch videos, and write and execute Python code. In addition to simply executing code, there is a unique feature called codelens that allows you to control the flow of execution in order to gain a better understanding of how the program works."
See the Instructor's Guide for more information.

Computer Networking: Principles, Protocols and Practice

From the Preface:
"This open textbook aims to fill the gap between the open-source implementations and the open-source network specifications by providing a detailed but pedagogical description of the key principles that guide the operation of the Internet. The book is released under a creative commons licence. Such an open-source license is motivated by two reasons. The first is that we hope that this will allow many students to use the book to learn computer networks. The second is that I hope that other teachers will reuse, adapt and improve it. Time will tell if it is possible to build a community of contributors to improve and develop the book further. As a starting point, the first release contains all the material for a one-semester first upper undergraduate or a graduate networking course."

Collections

 
Runestone Interactive

Runestone Interactive

From the About Page:
"The mission of Runestone Interactive is to democratize textbooks for the 21st century. Textbook prices are too high, and paper textbooks are too old fashioned. We are changing that. [Runestone Interactive offers] Freely available open source books,Easy to use Authoring Tools to create Runestone books, and Hosting services for your course.
To learn more about this project, see this overview. For more information about the whole Runestone Interactive community and project, including how to contribute, please click here!"
 

Journals

Frontiers of Computer Science

Frontiers of Computer Science

From the Description:
"Frontiers of Computer Science is intended to facilitate effective communication and exchanges between scientists in China and abroad. It will reflect the significant advances that are currently being made in computer science. The multidisciplinary character of this field will be typified by providing the readers with a broad range of articles. They include original review articles, research papers written by individual researchers and research groups which appeal to the international community of academics and other professionals.
The journal is to keep related researchers updated on the developments in a wide range of topics reporting experiments, techniques and ideas that advance the understanding of various areas of computer science. This journal especially concerns the following sub-fields (but not limited to): The journal publishes research papers and review articles in a wide range of topics, including software engineering, computer architecture, programming theory and languages, natural language processing, algorithm and complexity, artificial intelligence, network computing and service, computer graphics and virtual reality, security and cryptography, as well as papers reflecting international trends of research and development, and papers on special topics reporting progress made by Chinese computer scientists. "
Logical Methods in Computer Science

Logical Methods in Computer Science

From the About Page:
"Logical Methods in Computer Science is a fully refereed, open access, free, electronic journal. It welcomes papers on theoretical and practical areas in computer science involving logical methods, taken in a broad sense; some particular areas within its scope are listed below. Papers are refereed in the traditional way, with two or more referees per paper. Copyright is retained by the author.
Full-text access to all papers is freely available. No registration or subscription is required, and a free email notification service is available.
The journal is published by Logical Methods in Computer Science e.V., a non-profit organization whose purpose is to facilitate the dissemination of scientific results pertaining to logic in computer science."
 

Media: Podcasts, Videos, Interactives, Software

Gale Interactive: Human Anatomy

Bioconductor:
Open Source Software for Bioinformatics

From the About Page:
"Bioconductor provides tools for the analysis and comprehension of high-throughput genomic data. Bioconductor uses the R statistical programming language, and is open source and open development. It has two releases each year, and an active user community. Bioconductor is also available as an AMI (Amazon Machine Image) and a series of Docker images."
Oxford University Computer Science

Oxford University
Computer Science Podcast

From the Description:
"This series is host to episodes created by the Department of Computer Science, University of Oxford, one of the longest-established Computer Science departments in the country.
The series reflects this department's world-class research and teaching by providing talks that encompass topics such as computational biology, quantum computing, computational linguistics, information systems, software verification, and software engineering."
Oxford University Alan Turing: Centenary Lectures

Oxford University
Alan Turing: Centenary Lectures

From the Description:
"Alan Mathison Turing was born on 23 June, 1912 - exactly one hundred years before this weekend meeting which celebrates his life and achievements. Although most well-known for his work at Bletchley Park in the pioneering days which saw the birth of modern practical computing; Turing had achieved fame well before the second world war, with a seminal account of theoretical computation and his solution to the Entscheidungs problem. An Olympic-class marathon runner, whose refusal to conform to the narrow sexual standards of the day led to persecution and an early death - Turing did fundamental research on Artificial Intelligence, Computer Programming and even Mathematical Biology. This weekend attempts a rounded view of a polymath, one of the great mathematicians of the twentieth century, his life and his times."