37 Programming

Last update: Apr 3/24


Advanced Android Development (Google Developers Training Team) (CC BY) Developed by the Google Developers Training Team

This is the concepts reference for Advanced Android Development, a training course created by the Google Developers Training team. This course builds on the skills you learned in the Android Developer Fundamentals course. This course is intended to be taught in a classroom, but all the materials are available online for individual study.

Principles of Computation with Python (CC BY-NC-SA) by Carnegie Mellon University

This course provides an introduction to Python and elementary principles of computing, including iteration, recursion, and binary representation of data. Additional topics on cellular automata, encryption, and the limits of computation are also introduced. The main goal of this course is to teach the fundamental principles used in computer science to a general audience so that they understand how computer scientists use these principles to solve complex problems to improve their daily lives.

Supplementary Materials

Guided Inquiry Activities for Programming Language Concepts (CC BY-SA) by Brandon Myers.

This collection of activities is intended to support the use of POGIL in intermediate-level undergraduate computer science courses on functional programming and the implementation of programming languages.

Learn to Program: Intro Java with interactive graphics, via Processing This is a Canadian created resource(CC BY-NC-SA) by James E. Young

This collection of free notes is aimed at helping the complete beginner learn the basics of computer programming using Processing, a free and easy to use program available for many platforms. With Processing, students start with making graphics, and skip much of the ugly, memorization-based syntax of beginner Java. Unlike other guides, this focuses on learning programming, not the features of Processing.

Python Practice Assignments for Computer Science I (CC BY) by Hyrum Carroll, Columbus State University and Hillary FleenorColumbus State University

The assignments use the Python coding language and the repl.it coding platform and cover the following topics: Modules, Functions, Selections, Loops, Strings, Lists, Files, Dictionaries.

R Tutorials (CC BY) by the University of Edinburgh

R is a programming language and free software environment for statistical computing and graphics supported by the R Foundation for Statistical Computing. The R language is widely used among statisticians and data miners for developing statistical software and data analysis. R Conversations are a series of six videos created to teach R at a distance to online MSc students.


Eloquent Javascript – 3rd edition (CC BY-NC)  by Marijn Haverbeke.

This is a book about JavaScript, programming, and the wonders of the digital. Translations of this book are also available:

Third Edition

Second Edition

How to Design Programs, 2nd Edition (CC BY-ND-ND) by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi

Many professions require some form of programming. Accountants program spreadsheets; musicians program synthesizers; authors program word processors; and web designers program style sheets. This book approaches the creation of software that relies on systematic thought, planning, and understanding from the very beginning, at every stage, and for every step. To emphasize this point, we speak of systematic program design and systematically designed programs.

Linear Regression Using R: An Introduction to Data Modeling (CC BY-NC) by Lilja, David J; Linse, Greta M

This book presents one of the fundamental data modeling techniques in an informal tutorial style. Learn how to predict system outputs from measured data using a detailed step-by-step process to develop, train, and test reliable regression models. Key modeling and programming concepts are intuitively described using the R programming language. All of the necessary resources are freely available online.

The Nature of Code (CC BY-NC, GNU) by Daniel Shiffman

Learn the basics of programming (variables, conditionals, loops, objects, arrays) as well as a survey of applications related to making interactive projects (images, pixels, computer vision, networking, data, 3D).

Patterns for Beginning Programs: With Examples in Java  by David Bernstein (CC BY)

Programming patterns are solutions to problems that require the creation of a small fragment of code that will be part of a larger program. Hence, this book is about teaching you how to write such fragments of code. However, it is not about teaching you the syntax of the statements in the fragments, it assumes that you already know the syntax. Instead, it is about finding solutions to problems that arise when first learning to program.

Programming Fundamentals (CC BY-SA) by Kenneth Leroy Busbee and Dave Braunschweig

The goal for this textbook is to make it programming-language neutral, so that it may serve as an introductory programming textbook for students using any of a variety of programming languages, including C++, C#, Java, JavaScript, Python, and Swift.

R @ R(D)SVS (CC0) by University of Edinburgh

This open textbook, created by Dr Jill Mackay, Lecturer (Veterinary Medical Education) at the Royal (Dick) School of Veterinary Studies, is designed to help staff and students get to grips with with R. The book includes everything you need to get started and includes code blocks and plain English explanations of what the code is doing.

Runestone Interactive Library of Books (CC BY) by Mark Guzdial

A collection of open textbooks covering various programing and computer science topics.

Think Python – 2nd Edition (CC BY-NC) by Allen B. Downey

An introduction to Python programming for beginners. It starts with basic concepts of programming; it 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. There are several translations of the textbook including a  Spanish translation by Jorge Espinoza, a Chinese translation (traditional and simplified) by Du Wenbin, a  Vietnamese translation by Tan H. Nguyen and a  Marathi translation by Sagar Kale.


Code Yourself! An Introduction to Programming (CC BY-NC) by Open Education Edinburgh

A collection of 16 videos introducing different topics in programming.

Media Attributions

This chapter is adapted from Programming in OER by Discipline Directory by Edited by Lauri M. Aesoph and Josie Gray.


Icon for the Creative Commons Attribution 4.0 International License

OER by Subject Directory Copyright © 2022 by Saskatchewan Polytechnic is licensed under a Creative Commons Attribution 4.0 International License, except where otherwise noted.

Share This Book