Computer Programming Fundamentals


Authored by Patrick McNeill


Course Code: OLMSC-150

Next semester
starts June 24

12 Weeks

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

Computer Programming Fundamentals 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: Variables and Conditions

  • What Is a Programming Language?
  • Why JavaScript?
  • Hello Cleveland
  • Code Editors
  • Variables
  • Data Types
  • Basic Operators
  • Making Decisions
  • Comparing Values
  • Mixing Types
  • Tracing Code
  • Assignment 1: Generations

Lesson 2: Logic and Loops

  • Revisiting Comparisons
  • Truthiness
  • Boolean Logic
  • And, Or, and Not
  • Precedence
  • Truth Tables
  • Loops
  • When to Use a Loop
  • Accumulators
  • Breaking Down a Loop Problem
  • Stopping a Loop
  • Assignment 2: Prime Numbers

Lesson 3: Functions and HTML

  • Functions in JavaScript
  • Variable Scopes
  • Function Rules
  • What Is HTML?
  • HTML Structure
  • Common HTML Elements
  • Lists
  • Uniform Resource Locators
  • Browser Developer Tools
  • JavaScript and HTML
  • Assignment 3: Three Questions

Lesson 4: Strings, Loops, and CSS

  • Fundamental Data Types
  • How are Strings Different?
  • Looping Over Strings
  • The Traditional For Loop
  • For Versus While
  • Making Decisions About Strings
  • Calling String Functions
  • What Is CSS?
  • Simple Selectors
  • But Why 'Cascading?'
  • CSS Developer Tools
  • Useful Styles to Know
  • Hierarchical Matching
  • Assignment 4: Ascending Arpeggios and CSS

Lesson 5: Arrays and Input

  • The Input Element
  • Radio Buttons and Checkboxes
  • Buttons and Pseudo-Classes
  • Searching the DOM
  • Modifying a DOM Node
  • querySelectorAll
  • Arrays
  • Using Arrays
  • Comparing Arrays
  • Sorting Arrays and Callback Functions
  • Assignment 5: Arrays

Lesson 6: Objects and DOM Manipulation

  • What is an Object?
  • Arrays vs Objects
  • Using an Object
  • Looping Over Objects
  • Comparing Objects
  • Console.log Revisited
  • Everything is an Object
  • Manipulating the DOM
  • Creating Nodes
  • Code Organization
  • Assignment 6: Album Display

Lesson 7: Complex Data

  • Why Data Structures?
  • Arrays of Objects
  • Going Deeper
  • Navigating Data Structures
  • The Elvis Operator
  • Abstraction Layers
  • Sets and Maps
  • Values and References
  • Using References
  • Copying an Object
  • Dates and Times
  • Choosing Good Data Structures
  • Assignment 7: Data

Lesson 8: Events

  • Click Events Revisited
  • Single Threaded Execution
  • The Event Loop
  • Other Events
  • Defining Inline Functions
  • Fat Arrow Functions
  • Events on Other Elements
  • Events on New Elements
  • Data Availability
  • The Media Elements
  • Controlling Media Elements
  • Media Events
  • Audio Player
  • Assignment 8: Audio Memory Game

Lesson 9: More Events

  • Event Parameter Object
  • Reusing Event Handlers
  • Data Attributes
  • Event Handlers for Multiple Nodes
  • Events With Parameters
  • Timing Pseudo-Events
  • The Magic "this" Variable
  • Assignment 9: HTML Piano

Lesson 10: Loading External Data

  • Revisiting the Album Art Assignment
  • Introduction to JSON
  • Loading JSON in a browser
  • Parts of a URL
  • Fetch API
  • Async and await
  • A Real API
  • Assignment 10: API

Lesson 11: Using Data APIs

  • Getting Data From an API
  • API Authentication
  • HTTP Methods
  • The Course Data API Server
  • Writing Data to an API
  • RESTful APIs
  • Timing is Everything
  • Assignment 11: Final Project Beta

Lesson 12: Using Libraries

  • What is a Library?
  • Finding Libraries
  • Using Libraries
  • Tone.js Introduction
  • A Tone.js Example
  • The 'new' Keyword
  • Scoping and Private Data
  • JavaScript Outside a Browser
  • Assignment 12: Final Project


Prerequisites and Course-Specific Requirements 

Prerequisite Courses, Knowledge, and/or Skills
This course does not have any prerequisites.


  • No textbooks required


Student Deals
After enrolling, be sure to check out our Student Deals page for various offers on software, hardware, and more. Please contact with any questions.

General Course Requirements

Below are the minimum requirements to access the course environment and participate in Live Classes. 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.

Carlos Arana


Carlos “Charly” Arana is a guitarist, producer, and researcher. His specialties range from Latin American rhythms to the application of machine learning and artificial intelligence techniques for music. As a guitarist, arranger, and musical director he has worked and recorded with artists from all over the world, including legendary Bossa Nova singer Maria Creuza, whose band he was a member of. He has edited a number of books for Hal Leonard and Warner Bros. Publications (Alfred Publications), and for his studies and research on machine learning and AI he has been invited as a speaker in congresses and seminars at some of the most prestigious technology universities, such as 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