{"id":774,"date":"2023-11-03T15:15:13","date_gmt":"2023-11-03T19:15:13","guid":{"rendered":"https:\/\/pressbooks.bccampus.ca\/oerguideuvic\/?post_type=chapter&#038;p=774"},"modified":"2026-04-13T16:06:54","modified_gmt":"2026-04-13T20:06:54","slug":"programming","status":"publish","type":"chapter","link":"https:\/\/pressbooks.bccampus.ca\/oerguideuvic\/chapter\/programming\/","title":{"raw":"Programming","rendered":"Programming"},"content":{"raw":"<div class=\"textbox textbox--sidebar\">Last update: Oct 25\/23<\/div>\r\n&nbsp;\r\n<h1>Courses<\/h1>\r\n<a href=\"https:\/\/google-developer-training.github.io\/android-developer-advanced-course-concepts\/\">Advanced Android Development (Google Developers Training Team)<\/a> (CC BY)\r\n\r\nThis is the <em>concepts reference<\/em> for <a href=\"https:\/\/developers.google.com\/training\/courses\/android-advanced\">Advanced Android Development<\/a>, a training course created by the Google Developers Training team. This course builds on the skills you learned in the <a href=\"https:\/\/developers.google.com\/training\/courses\/android-fundamentals\">Android Developer Fundamentals<\/a> course. This course is intended to be taught in a classroom, but all the materials are available online for individual study.\r\n\r\n<a href=\"https:\/\/oli.cmu.edu\/courses\/principles-of-computation-with-python-open-free\/\">Principles of Computation with Python<\/a> (CC BY-NC-SA)\r\n\r\nThis 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.\r\n<h1>Supplemental Materials<\/h1>\r\n<a href=\"https:\/\/iro.uiowa.edu\/discovery\/fulldisplay?context=L&amp;vid=01IOWA_INST:ResearchRepository&amp;search_scope=Research&amp;tab=Research&amp;docid=alma9983984394202771\">Guided Inquiry Activities for Programming Language Concepts<\/a> (CC BY-SA)\r\n\r\nThis collection of activities is intended to support the use of\u00a0<a href=\"https:\/\/pogil.org\/\" target=\"_blank\" rel=\"noopener noreferrer\" data-auth=\"NotApplicable\">POGIL<\/a>\u00a0in intermediate-level undergraduate computer science courses on functional programming and the implementation of programming languages.\r\n\r\n<a href=\"https:\/\/web.archive.org\/web\/20190214175838\/http:\/\/cs.umanitoba.ca\/~young\/learnToProgram\/LTP\/LTP-AllUnits.pdf\">Learn to Program: Intro Java with interactive graphics, via Processing<\/a> <img class=\"alignleft size-full wp-image-729\" src=\"https:\/\/pressbooks.bccampus.ca\/emmatestbook\/wp-content\/uploads\/sites\/2108\/2023\/10\/icons8-canada-map-50.png\" alt=\"This is a Canadian created resource\" width=\"50\" height=\"50\" \/>(CC BY-NC-SA)\r\n\r\nThis 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.\r\n\r\n<a href=\"https:\/\/oer.galileo.usg.edu\/compsci-ancillary\/15\/\">Python Practice Assignments for Computer Science I<\/a> (CC BY)\r\n\r\nThe 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\n\r\n<a href=\"https:\/\/open.ed.ac.uk\/r-tutorials\/\">R Tutorials<\/a> (CC BY)\r\n\r\nR 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.\r\n<h1>Textbooks<\/h1>\r\n<a href=\"https:\/\/eloquentjavascript.net\/\">Eloquent Javascript - 3rd edition<\/a> (CC BY-NC)\r\n\r\nThis is a book about JavaScript, programming, and the wonders of the digital. Translations of this book are also available:\r\n<table style=\"border-collapse: collapse;width: 100%;height: 144px\" border=\"0\">\r\n<tbody>\r\n<tr style=\"height: 144px\">\r\n<td style=\"width: 50%;height: 144px\">\r\n<h3>Third Edition<\/h3>\r\n<ul class=\"translations\">\r\n \t<li><a href=\"http:\/\/eloquentjs.ir\/\">\u0641\u0627\u0631\u0633\u06cc (Persian)<\/a><\/li>\r\n<\/ul>\r\n<\/td>\r\n<td style=\"width: 50%;height: 144px\">\r\n<h3>Second Edition<\/h3>\r\n<ul class=\"translations\">\r\n \t<li><a href=\"https:\/\/rabahboudia.gitbooks.io\/arabic-eloquent-js\/content\/index.html\">\u0639\u064e\u0631\u064e\u0628\u0650\u064a\u0651\u200e (Arabic)<\/a><\/li>\r\n \t<li><a href=\"https:\/\/to6esko.github.io\/\">\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 (Bulgarian)<\/a><\/li>\r\n \t<li><a href=\"https:\/\/karmazzin.gitbooks.io\/eloquentjavascript_ru\/content\/\">\u0420\u0443\u0441\u0441\u043a\u0438\u0439 (Russian)<\/a><\/li>\r\n<\/ul>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<a href=\"https:\/\/htdp.org\/2021-3-8\/Book\/index.html\">How to Design Programs, 2nd Edition<\/a> (CC BY-ND-ND)\r\n\r\nMany 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 <span class=\"emph\">program design<\/span> and systematically <span class=\"emph\">designed programs<\/span>.\r\n\r\n<a href=\"https:\/\/conservancy.umn.edu\/handle\/11299\/189222\">Linear Regression Using R: An Introduction to Data Modeling<\/a> (CC BY-NC)\r\n\r\nThis 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.\r\n\r\n<a href=\"https:\/\/natureofcode.com\/\">The Nature of Code<\/a> (CC BY-NC, GNU)\r\n\r\nLearn 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).\r\n\r\n<a href=\"https:\/\/press.rebus.community\/programmingfundamentals\/\">Programming Fundamentals<\/a> (CC BY-SA)\r\n\r\nThe 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\n\r\n<img class=\"alignnone size-full wp-image-19\" src=\"https:\/\/pressbooks.bccampus.ca\/oerguideuvic\/wp-content\/uploads\/sites\/2108\/2018\/11\/BCOutlineFlag-e1601489104809.png\" alt=\"This is a British Columbia created resource.\" width=\"50\" height=\"56\" \/> <a href=\"https:\/\/www.ece.uvic.ca\/~frodo\/cppbook\/\">Programming in C++ - The C++ Language, Libraries, Tools, and Other Topics<\/a> (CC BY-NC-ND 3.0)\r\n\r\nThe textbook provides a large collection of exercises for learning to program in C++. The lecture slides provide very detailed coverage of the C++ language, standard library, and much more. For more details, please refer to the\u00a0<a href=\"https:\/\/www.ece.uvic.ca\/~frodo\/cppbook\/#abstract\">abstract<\/a>\u00a0for the textbook and lecture slides.\r\n\r\n<a href=\"https:\/\/open.ed.ac.uk\/r-rdsvs\/\">R @ R(D)SVS<\/a> (CC0)\r\n\r\nThis open textbook, created by <a href=\"https:\/\/www.ed.ac.uk\/profile\/dr-jill-mackay\">Dr Jill Mackay<\/a>, 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.\r\n\r\n<a href=\"https:\/\/runestone.academy\/runestone\/books\/index\">Runestone Interactive Library of Books<\/a> (CC BY)\r\n\r\nA collection of open textbooks covering various programing and computer science topics.\r\n<h1>Videos<\/h1>\r\n<a href=\"https:\/\/www.youtube.com\/playlist?list=PLwJ2VKmefmxptdDzQCV6xbHItnHQnm-3M\">Code Yourself! An Introduction to Programming<\/a> (CC BY-NC)\r\n\r\nA collection of 16 videos introducing different topics in programming.","rendered":"<div class=\"textbox textbox--sidebar\">Last update: Oct 25\/23<\/div>\n<p>&nbsp;<\/p>\n<h1>Courses<\/h1>\n<p><a href=\"https:\/\/google-developer-training.github.io\/android-developer-advanced-course-concepts\/\">Advanced Android Development (Google Developers Training Team)<\/a> (CC BY)<\/p>\n<p>This is the <em>concepts reference<\/em> for <a href=\"https:\/\/developers.google.com\/training\/courses\/android-advanced\">Advanced Android Development<\/a>, a training course created by the Google Developers Training team. This course builds on the skills you learned in the <a href=\"https:\/\/developers.google.com\/training\/courses\/android-fundamentals\">Android Developer Fundamentals<\/a> course. This course is intended to be taught in a classroom, but all the materials are available online for individual study.<\/p>\n<p><a href=\"https:\/\/oli.cmu.edu\/courses\/principles-of-computation-with-python-open-free\/\">Principles of Computation with Python<\/a> (CC BY-NC-SA)<\/p>\n<p>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.<\/p>\n<h1>Supplemental Materials<\/h1>\n<p><a href=\"https:\/\/iro.uiowa.edu\/discovery\/fulldisplay?context=L&amp;vid=01IOWA_INST:ResearchRepository&amp;search_scope=Research&amp;tab=Research&amp;docid=alma9983984394202771\">Guided Inquiry Activities for Programming Language Concepts<\/a> (CC BY-SA)<\/p>\n<p>This collection of activities is intended to support the use of\u00a0<a href=\"https:\/\/pogil.org\/\" target=\"_blank\" rel=\"noopener noreferrer\" data-auth=\"NotApplicable\">POGIL<\/a>\u00a0in intermediate-level undergraduate computer science courses on functional programming and the implementation of programming languages.<\/p>\n<p><a href=\"https:\/\/web.archive.org\/web\/20190214175838\/http:\/\/cs.umanitoba.ca\/~young\/learnToProgram\/LTP\/LTP-AllUnits.pdf\">Learn to Program: Intro Java with interactive graphics, via Processing<\/a> <img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-729\" src=\"https:\/\/pressbooks.bccampus.ca\/emmatestbook\/wp-content\/uploads\/sites\/2108\/2023\/10\/icons8-canada-map-50.png\" alt=\"This is a Canadian created resource\" width=\"50\" height=\"50\" \/>(CC BY-NC-SA)<\/p>\n<p>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.<\/p>\n<p><a href=\"https:\/\/oer.galileo.usg.edu\/compsci-ancillary\/15\/\">Python Practice Assignments for Computer Science I<\/a> (CC BY)<\/p>\n<p>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.<\/p>\n<p><a href=\"https:\/\/open.ed.ac.uk\/r-tutorials\/\">R Tutorials<\/a> (CC BY)<\/p>\n<p>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.<\/p>\n<h1>Textbooks<\/h1>\n<p><a href=\"https:\/\/eloquentjavascript.net\/\">Eloquent Javascript &#8211; 3rd edition<\/a> (CC BY-NC)<\/p>\n<p>This is a book about JavaScript, programming, and the wonders of the digital. Translations of this book are also available:<\/p>\n<table style=\"border-collapse: collapse;width: 100%;height: 144px\">\n<tbody>\n<tr style=\"height: 144px\">\n<td style=\"width: 50%;height: 144px\">\n<h3>Third Edition<\/h3>\n<ul class=\"translations\">\n<li><a href=\"http:\/\/eloquentjs.ir\/\">\u0641\u0627\u0631\u0633\u06cc (Persian)<\/a><\/li>\n<\/ul>\n<\/td>\n<td style=\"width: 50%;height: 144px\">\n<h3>Second Edition<\/h3>\n<ul class=\"translations\">\n<li><a href=\"https:\/\/rabahboudia.gitbooks.io\/arabic-eloquent-js\/content\/index.html\">\u0639\u064e\u0631\u064e\u0628\u0650\u064a\u0651\u200e (Arabic)<\/a><\/li>\n<li><a href=\"https:\/\/to6esko.github.io\/\">\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 (Bulgarian)<\/a><\/li>\n<li><a href=\"https:\/\/karmazzin.gitbooks.io\/eloquentjavascript_ru\/content\/\">\u0420\u0443\u0441\u0441\u043a\u0438\u0439 (Russian)<\/a><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><a href=\"https:\/\/htdp.org\/2021-3-8\/Book\/index.html\">How to Design Programs, 2nd Edition<\/a> (CC BY-ND-ND)<\/p>\n<p>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 <span class=\"emph\">program design<\/span> and systematically <span class=\"emph\">designed programs<\/span>.<\/p>\n<p><a href=\"https:\/\/conservancy.umn.edu\/handle\/11299\/189222\">Linear Regression Using R: An Introduction to Data Modeling<\/a> (CC BY-NC)<\/p>\n<p>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.<\/p>\n<p><a href=\"https:\/\/natureofcode.com\/\">The Nature of Code<\/a> (CC BY-NC, GNU)<\/p>\n<p>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).<\/p>\n<p><a href=\"https:\/\/press.rebus.community\/programmingfundamentals\/\">Programming Fundamentals<\/a> (CC BY-SA)<\/p>\n<p>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.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-19\" src=\"https:\/\/pressbooks.bccampus.ca\/oerguideuvic\/wp-content\/uploads\/sites\/2108\/2018\/11\/BCOutlineFlag-e1601489104809.png\" alt=\"This is a British Columbia created resource.\" width=\"50\" height=\"56\" \/> <a href=\"https:\/\/www.ece.uvic.ca\/~frodo\/cppbook\/\">Programming in C++ &#8211; The C++ Language, Libraries, Tools, and Other Topics<\/a> (CC BY-NC-ND 3.0)<\/p>\n<p>The textbook provides a large collection of exercises for learning to program in C++. The lecture slides provide very detailed coverage of the C++ language, standard library, and much more. For more details, please refer to the\u00a0<a href=\"https:\/\/www.ece.uvic.ca\/~frodo\/cppbook\/#abstract\">abstract<\/a>\u00a0for the textbook and lecture slides.<\/p>\n<p><a href=\"https:\/\/open.ed.ac.uk\/r-rdsvs\/\">R @ R(D)SVS<\/a> (CC0)<\/p>\n<p>This open textbook, created by <a href=\"https:\/\/www.ed.ac.uk\/profile\/dr-jill-mackay\">Dr Jill Mackay<\/a>, 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.<\/p>\n<p><a href=\"https:\/\/runestone.academy\/runestone\/books\/index\">Runestone Interactive Library of Books<\/a> (CC BY)<\/p>\n<p>A collection of open textbooks covering various programing and computer science topics.<\/p>\n<h1>Videos<\/h1>\n<p><a href=\"https:\/\/www.youtube.com\/playlist?list=PLwJ2VKmefmxptdDzQCV6xbHItnHQnm-3M\">Code Yourself! An Introduction to Programming<\/a> (CC BY-NC)<\/p>\n<p>A collection of 16 videos introducing different topics in programming.<\/p>\n","protected":false},"author":20,"menu_order":16,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-774","chapter","type-chapter","status-publish","hentry"],"part":136,"_links":{"self":[{"href":"https:\/\/pressbooks.bccampus.ca\/oerguideuvic\/wp-json\/pressbooks\/v2\/chapters\/774","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pressbooks.bccampus.ca\/oerguideuvic\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/pressbooks.bccampus.ca\/oerguideuvic\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/pressbooks.bccampus.ca\/oerguideuvic\/wp-json\/wp\/v2\/users\/20"}],"version-history":[{"count":4,"href":"https:\/\/pressbooks.bccampus.ca\/oerguideuvic\/wp-json\/pressbooks\/v2\/chapters\/774\/revisions"}],"predecessor-version":[{"id":1118,"href":"https:\/\/pressbooks.bccampus.ca\/oerguideuvic\/wp-json\/pressbooks\/v2\/chapters\/774\/revisions\/1118"}],"part":[{"href":"https:\/\/pressbooks.bccampus.ca\/oerguideuvic\/wp-json\/pressbooks\/v2\/parts\/136"}],"metadata":[{"href":"https:\/\/pressbooks.bccampus.ca\/oerguideuvic\/wp-json\/pressbooks\/v2\/chapters\/774\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/pressbooks.bccampus.ca\/oerguideuvic\/wp-json\/wp\/v2\/media?parent=774"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/pressbooks.bccampus.ca\/oerguideuvic\/wp-json\/pressbooks\/v2\/chapter-type?post=774"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/pressbooks.bccampus.ca\/oerguideuvic\/wp-json\/wp\/v2\/contributor?post=774"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/pressbooks.bccampus.ca\/oerguideuvic\/wp-json\/wp\/v2\/license?post=774"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}