Introduction to Computer Programming for Musicians

Authors: Patrick McNeill, Luke Stevens   •   Course Code: OLMSC-150

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. 

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

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

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

Author & Instructor

Luke Stevens is the Director of Technology and CTO for Berklee Online. He leads the teams responsible for creating and maintaining the technology that powers the online learning experience and the 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.

Prerequisites

none


Required Textbooks

none


Software Requirements 

  • A text editor, such as Atom (https://atom.io)
  • Node.js (to be installed during an early lesson)

Mac Users

Windows Users


Hardware Requirements

  • 2 GB RAM (4 GB recommended)
  • 500 MB hard drive space
  • Speakers or headphones
  • Webcam
  • Internet connection with at least 4 Mbps download speed (http://www.speedtest.net to verify or download the Speedtest by Ookla app from your mobile app store)


Comments

Got a question? Contact our Academic Advisors by phone at 1-866-BERKLEE (U.S.), 1-617-747-2146 (INT'L), or by email at advisors@online.berklee.edu. We can also answer basic questions in the comments below. Please note that all comments are public.




  • Level
    Level 1
  • Duration
    12 weeks
  • 3-Credit Tuition
    $1,479
  • or
  • Non-Credit Tuition
    $1,229

Contact an Academic Advisor

Mon-Thu, 9AM-8PM ET
Fri, 9AM-5PM ET
Call or Text Us at

US: 1-866-BERKLEE
Int'l: +1-617-747-2146


Create a Free Account

Request Information

Create an account to download our catalog, get our newsletter, and more.

Stay Informed About This Course

Create an account to download our free course catalog, and receive updates about this course.

Sign Up to Sample a Lesson

  Secure form. Berklee Online will not sell or rent your email address to third parties.
Our privacy policy