32 Programming
Courses
Advanced Android Development (Google Developers Training Team) developed by the 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 by Carnegie Mellon University (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.
Supplementary Materials
Guided Inquiry Activities for Programming Language Concepts by Brandon Myers (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 by James E. Young (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 by Hyrum Carroll, Columbus State University and Hillary Fleenor, Columbus State University (CC BY).
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 by the University of Edinburgh (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.
Textbooks
Eloquent Javascript – 3rd edition by Marijn Haverbeke (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 by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi (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.
Introduction to Python Programming edited by Udayan Das, Aubrey Lawson, Chris Mayfield, Narges Norouzi (CC BY).
This resource provides a comprehensive foundation in programming concepts and skills, and it is aligned to the scope of most introductory courses. A wide array of scenarios, contexts, and problems reflect programming applications in many disciplines and careers. The offering is suitable for a diverse learner audience, including those pursuing computer science, business, science, social science, statistics, data science, and related areas of study and employment. It is an interactive offering that teaches basic programming concepts, problem-solving skills, and the Python language using hands-on activities. The resource includes a unique, integrated code runner through which students can immediately apply what they learn to check their understanding. Embedded videos, critical thinking exercises, and explorations of external programming tools and activities all contribute to a meaningful and supportive learning experience.
Linear Regression Using R: An Introduction to Data Modeling by David J Lilja and Greta M Linse (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 Codeby Daniel Shiffman (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 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 by Kenneth Leroy Busbee and Dave Braunschweig (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 by University of Edinburgh (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 by Mark Guzdial (CC BY).
A collection of open textbooks covering various programing and computer science topics.
Think Python – 2nd Edition by Allen B. Downey (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. 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.
Videos
Code Yourself! An Introduction to Programming by Open Education Edinburgh (CC BY-NC).
A collection of 16 videos introducing different topics in programming.