Computer Science

32 Programming

Last update: Apr 3/24


Advanced Android Development (Google Developers Training Team) (CC BY)

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)

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.

Supplemental Materials

Guided Inquiry Activities for Programming Language Concepts (CC BY-SA)

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)

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)

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

R Tutorials (CC BY)

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)

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)

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)

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)

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 (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)

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)

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)

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

Think Python – 2nd Edition (CC BY-NC)

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.


Code Yourself! An Introduction to Programming (CC BY-NC)

A collection of 16 videos introducing different topics in programming.

Media Attributions


Icon for the Creative Commons Attribution 4.0 International License

OER by Discipline Directory Copyright © 2018 by BCcampus is licensed under a Creative Commons Attribution 4.0 International License, except where otherwise noted.

Share This Book