Introduction to Computer Programming for Musicians

author.full_name author.full_name

Authored by Patrick McNeill, Luke Stevens


Course Code: OLMSC-150

Next Semester Starts
June 27, 2022

Level 1

Level 1

3-Credit Tuition


Non-Credit Tuition


Now more than ever, it’s important to be able to understand how to write computer software. Being literate in code opens a number of doors, any of which can be important new destinations for a modern musician. Many pieces of software only fully come alive if you’re able to write automation scripts. 

Read More

Introduction to Computer Programming for Musicians will be like a brand new set of power tools for your profession, giving you a range of know-how in everything from developing a web page to helping you fix computer problems you may have never even noticed before. We’ll focus on code literacy, empowering you to pick up pieces of code from around the Internet, understand what these codes do, and modify them to suit your needs. Instead of focusing on a single language or platform, our goal with this course is to prepare you to understand code in general. By recognizing the concepts that are universal in computer programming, you’ll be better prepared to understand any code you come across, a skill that’s extremely important when dealing with different scripting languages.

By the end of the course, you will be able to:

  • Develop a fully-interactive website using Javascript
  • Understand how programs are structured 
  • Comprehend the major constructs common to all programming languages
  • Read and modify code in languages you haven’t yet seen
Read Less


Lesson 1: Hello Cleveland!

  • Programming: Why Is It Useful in the Music World?
  • Okay, What is Software Development?
  • How It Was
  • How Does a Program Work?
  • Pseudocode
  • Scratch
  • Variables
  • Variables in Scratch
  • Concatenation
  • A Very Simple Program
  • Semantics
  • How to Read Code
  • Logic
  • Conditional Flow
  • Nesting If Statements
  • If Statements Using Scratch
  • Boolean Operators
  • Truth Tables
  • Booleans in Scratch
  • Tips for Success
  • Think Like a Programmer: Style and Whitespace
  • User Input in Scratch
  • Assignment 1: Three Questions

Lesson 2: Modular Code: Harder, Better, Faster, Stronger

  • Reusing Code
  • Loops
  • "For" Loops
  • Loops in Scratch
  • Functions
  • Functions in Scratch
  • Variables
  • The Stack
  • Strings
  • Putting it All Together
  • Refactoring and Decomposition
  • Exercise 2.1: Refactoring
  • An Overview of Testing
  • A Basic Test in Scratch
  • Assignment 2: Pseudocode and Refactoring Code

Lesson 3: Debugging, Optimization, and Tools

  • Hello Again Cleveland!
  • Installing Node.js
  • How Do Interpreters Work?
  • Variables and Identifiers
  • Ifs and Elses
  • Truthiness
  • Exercise: Javascript
  • Logic
  • "While" Loops
  • "For" Loops
  • Functions
  • Exercise: Make a Function
  • Variable Scopes
  • Go Ahead and Jump: From Scratch to Javascript
  • More Pseudocode Translations
  • Solving Problems with Functions and Loops
  • Exercise 3.1: Code Etudes
  • Bugs
  • Troubleshooting
  • Think Like a Programmer: Documentation
  • Assignment 3: Functioning Javascript

Lesson 4: Arrays

  • Lists
  • Arrays in Practice
  • Loops and Arrays
  • Looping Over Array Elements
  • Array Loop Examples
  • Even More Arrays
  • Sorting
  • Sorting with .sort
  • References and Values
  • Array Equality
  • Field Guide for Shuffling an Array
  • Javascript Wizardry 101
  • Queues and Stacks
  • Putting it All Together
  • Exercise 4.1: Code Etudes
  • Assignment 4: MySet

Lesson 5: Objects

  • Objects
  • Objects and Loops
  • Object Equality
  • JSON
  • Composability
  • Assigning Values
  • Arrays of Objects
  • Combining Arrays and Objects
  • Putting it All Together
  • Assignment 5: Player Piano

Lesson 6: Web Pages and Interaction

  • Web Page Basics
  • Anatomy of a Web Application
  • The Web Server
  • Introducing HTML
  • Semantic HTML
  • CSS Basics
  • The Script Tag
  • Javascript and HTML
  • Document Object Model
  • Manipulating the HTML
  • Gathering Input
  • Working With Dates
  • jQuery
  • The Inspector
  • Assignment 6: HTML

Lesson 7: Event Driven Programming

  • Final Project
  • Event Driven Programming
  • Callback
  • Events in Javascript
  • A Simple Example
  • Listening on Multiple Elements
  • Gathering Input, for Real
  • More Events
  • Events and Loops
  • Timers
  • Putting it All Together
  • Assignment 7: HTML Calculator

Lesson 8: Reading Data from API Servers

  • Introduction to Services
  • JSON
  • URIs
  • My First API Request
  • RESTful API Data
  • Guessing Routes
  • Secure APIs
  • Using API Data
  • A JSONP Example
  • Dynamic JSONP
  • A World of APIs
  • Planning a Project with APIs
  • Intro to the Intro to Programming Data Storage API
  • Sample Project: Real Data
  • Assignment 8: Searching an API

Lesson 9: Object Oriented Programming

  • Who's down with OOP?
  • A Black Box
  • Nouns and Verbs
  • Classes and Instances
  • Classes in Javascript
  • Instances in Javascript
  • An Example Class
  • Getters and Setters
  • Another Example Class
  • Object Reuse
  • Sample Project: Wrapping Data with Classes
  • Assignment 9: MySet Revisited

Lesson 10: More on Objects

  • Class Methods and Variables
  • Object Factories
  • More Factories
  • Birds of a Feather
  • Inheritance
  • Composition
  • Designing with Objects
  • Working With Private Data
  • ES5 Classes
  • Sample Project: Collecting Shared Code
  • Assignment 10: Media Playlist Classes

Lesson 11: What is Asynchronous Code?

  • What is Asynchronous Code?
  • Asynchronous Javascript
  • The Event Loop
  • Callbacks
  • Async and Await
  • More About Async and Await
  • Timing Is Everything
  • Objects, APIs, and REST
  • Submitting Without Reloading
  • Sample Project: Awaitification
  • Assignment 11: Beta

Lesson 12: More Asynchronicity: Promises, Promises

  • Promises
  • More About Promises
  • Chaining Promises
  • Creating a Javascript Promise
  • Deeper into Async and Await
  • Callbacks, Promises, and Awaits
  • Using Asynchronicity
  • Sample Project: Wrap Up
  • Assignment 12: Final Project


Prerequisites and Course-Specific Requirements 

This course does not have any prerequisites. 

Required Textbook(s)

  • None required

Software Requirements

After enrolling, please check the Getting Started section of your course for potential deals on required materials. Our Student Deals page also features several discounts you can take advantage of as a current student. Please contact for any questions.

General Course Requirements

Below are the minimum requirements to access the course environment and participate in live chats. Please make sure to also check the Prerequisites and Course-Specific Requirements section above, and ensure your computer meets or exceeds the minimum system requirements for all software needed for your course. 

Mac Users

PC Users

All Users

  • Latest version of  Google Chrome
  • Zoom meeting software
  • Webcam
  • Speakers or headphones
  • External or internal microphone
  • Broadband Internet connection


Patrick McNeill

Author & Instructor

Patrick McNeill is the Manager of Software Development for Berklee Online, and has been a part of the team working on the online school since its inception in 2002. Patrick is what’s often called a “maker”: he designs and builds gadgets. This includes creating parts with a hand-crafted 3D printer, designing and soldering together the electronic components, and writing the software to put them all together. He is often the only person in his house who knows how to turn on the lights. He’s also an avid photographer, with his dogs, all whippets, being his most frequent subject.

Luke Stevens


Luke Stevens is an Engineering Manager at Wayfair. He leads the teams responsible for creating and maintaining the technology supporting business. While not working, Luke has been a church music director, jazz trumpet enthusiast, volunteer coordinator, studio melodica player (one time) and a country preacher.

Carlos Arana


Carlos "Charly" Arana is a guitarist, producer and researcher specialized in Latin American rhythms and in the application of machine learning and AI techniques to music. As a guitarist, arranger and musical director he has worked and recorded with a multitude of artists from the international scene, both in Argentina, Brazil and the United States, being worthy of mention that he was a band member of legendary Bossa Nova singer Maria Creuza. From 2004 to date, he has edited four books for the two most important music publishers, Hal Leonard and Warner Bros. Publications (Alfred Publications). For his studies and research on machine learning and artificial intelligence he has been invited as a speaker in congresses and seminars at some of the most prestigious technology universities, such as the Massachusetts Institute of Technology (MIT) and UC Berkeley.


Contact our Academic Advisors by phone at 1-866-BERKLEE (U.S.), 1-617-747-2146 (INT'L), or by email at

Get Info