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 28

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?
  • What Is Software Development?
  • How Does a Program Work?
  • Pseudocode
  • How to Read Pseudocode
  • Logic
  • Boolean Operators
  • Think Like a Programmer: Style and Whitespace
  • Discussion: Useful Code
  • Assignment 1: Pseudocode

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

  • Reusing Code
  • Loops
  • "For" Loops
  • Functions and Variables
  • The Stack
  • Functional Programming and Side Effects
  • Refactoring and Decomposition
  • Testing
  • Think Like a Programmer: Software Development Life Cycle Basics
  • Discussion: Code Reuse
  • Assignment 2.1: Pseudocode as Functions
  • Assignment 2.2: Refactoring Code

Lesson 3: Hello Cleveland! Part 2

  • How Do Interpreters Work?
  • Variables and Identifiers
  • Why So Many Rules about Identifiers?
  • Ifs and Elses
  • Truthiness
  • Logic
  • "While" Loops
  • Escaping a Loop
  • "For" Loops
  • Functions
  • Javascript Wizardry 101
  • Variable Scopes
  • Bugs
  • Troubleshooting
  • Discussion: Optimization
  • Think Like a Programmer: Documentation and Maintainability
  • Assignment 3: Sample Code

Lesson 4: Dangerous Type: Complex Data Types

  • Lists
  • Arrays, in Practice
  • Stacks and Queues
  • Loops and Arrays
  • Advanced Looping
  • Even More Arrays
  • Hashes, aka Objects
  • ES2015 Collections
  • Think Like a Programmer: Version Control
  • Array Practice
  • Discussion: Coding Errors
  • Assignment 4: Expanding Our Vocabulary

Lesson 5: La Vida Loca: Programming in Other Languages

  • Pseudocode, Imperatively
  • Javascript, Objectively
  • Exercise: Beyond JavaScript: Different Types of Languages
  • Declarative Languages
  • Anatomy of a Web Application
  • What the HTML Was That?
  • Sonic Pi
  • Think Like a Programmer: Agile vs. Waterfall Development
  • Discussion: Language Evolution
  • Assignment 5: Expressing Commonalities

Lesson 6: The Object of My Affection: Object Oriented Programming

  • You Down with OOP?
  • Classes and Instances
  • Contracts and Interfaces
  • Class Methods and Variables
  • Classes in Javascript
  • Object Reuse
  • Composition and Inheritance
  • Inheritance in Javascript
  • Composition in Javascript
  • Designing with Objects
  • Think Like a Programmer: Unit Testing
  • Discussion: OOP
  • Assignment 6: Javascript Practice

Lesson 7: My Back Pages: Web Pages and Interaction

  • Introducing HTML
  • The Script Tag
  • DOM Manipulation
  • Event Driven Programming
  • CSS Basics
  • Discussion: Practical Use
  • Assignment 7: The Inspector

Lesson 8: What is Data?

  • What is Data?
  • Types of Storage, or, The Why of Databases
  • Tables, Rows, Fields
  • Relational Data
  • Discussion: Data Sets
  • Creating a Database
  • SQL Basics: CRUD
  • Assignment 8: Data Connection

Lesson 9: Putting the Data to Work

  • Introduction to Services
  • Reading from APIs
  • Writing to APIs
  • Discussion: Common Nomenclature
  • Discussion: Planning a Project with APIs
  • Assignment 9: A World of APIs

Lesson 10: What is Asynchronous Code?

  • jQuery
  • Timing is Everything
  • Think Like a Programmer: Collaboration
  • Discussion: Collaboration
  • Assignment 10: Beta

Lesson 11: A Brand New Bag: Apply the Principles of Previous Lessons into a Music-Specific Application

  • Logic Recap
  • Introducing ChucK
  • Input and Output
  • Make Connections
  • Think Like a Programmer: Ship It Good
  • Discussion: How is ChucK Different from Javascript in Its Structure and Syntax?  
  • Assignment 11: Submit Code for a Piece of Music

Lesson 12: Hello Goodbye:  Final Project and Beyond

  • SDLC in Teams
  • Feedback and Bug Tracking
  • Open Source Software (Gratis vs. Libre)
  • Keep Going!
  • Discussion: Challenge in Your Final Project
  • Assignment 12: Analyze the Code and Refactor


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 (available in the course when joining your first chat)
  • 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.


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

We can also answer basic questions in the comments below. Please note that all comments are public.


Get Info