Course Overview

Course Description

Content
This course applies computer science to the domain of digital music with emphasis on similarity analysis, visualization, and scalability to large music databases.

Background
When I was in college, my dream was to create a compelling music visualization that revealed the beautiful structure within a song and perhaps why I like the music I like. It's hard to put into words why we like the music we like and I thought that maybe I could use computer science to learn how. I took classes in computer graphics, computer animation, and signal processing to try and learn how to write programs to analyze/understand music. Unfortunately, I still didn't really know how to get started. It wasn't until I got into graduate school that I had the time to explore these topics on my own in a problem-focused way. I found a book in the library, Music and Schema Theory, that opened up the world of music informatics to me. It might be hard to believe but before I read this book I didn't know there was a community of researchers interested in the same thing as me. The author, Marc Leman, was an active researcher in the International Society of Music Information Retrieval and I attended my first academic conference in 2002 on this topic. Suddenly, everything seemed possible and I began learning Matlab and trying out other researcher's Matlab code to analyze music. Before long I was writing my own programs to analyze music and even presenting my work at conferences.

Motivation
One thing that I noticed during this time is that I learned way more difficult concepts when I was motivated to solve a problem. Deep in my heart, I really really wanted to understand music better and see what I was hearing. I also noticed that when I applied an existing technology to a new problem, it never quite worked right the first time. I always needed to make modifications so that it worked better for this new application. Every time something didn't work, it opened the door for innovation. If I could fix it or figure out a better way, I could extend the knowledge and publish my findings so that others could learn from or build off of my work. Something that I didn't expect was that all those difficult concepts that I learned trying to understand music were actually directly applicable to problems in other disciplines. Since then I've collaborated with researchers in biomedical engineering, chemistry, biology, medicine, electrical engineering, and, of course, computer science. In this class, you will learn about similarity analysis, visualization, and scalability for large datasets. These concepts are central to the current hot topics of "big data" and "data science" that apply computer science and statistics to other domains. If you want to use computer science to solve problems in other disciplines, this is the course for you!

Structure
I hope that this class will give you an experience that was similar to mine in that you will (1) learn new things on your own well enough to (2) demonstrate what you've learned by writing cool programs and (3) teach the rest of us what you learned so that we can build off of your work to make even more cool things. This process of (1) learning, (2) demonstrating, and (3) teaching is called research. If you are considering participating in research, this class will give you an idea of what that is like. It will also help prepare you for your graduate project or thesis.

This class focuses on the large-scale problem of understanding large music databases in different orders of magnitude: individual songs, a ten-thousand song subset of the MSD, the million song dataset (MSD), and Spotify's roughly 80 million tracks. It is inspired by the idea of extending the Paul Lamere's Eternal Jukebox to a large music database. There are three main research areas we will focus on: music (1) similarity, (2) visualization, and (3) search. The first part of the semester will be devoted to learning fundamental algorithms and learning enough Python to take advantage of some of the existing open-source projects in the area. As a class we will brainstorm and plan a research strategy where we identify learning goals and project objectives. Once the foundation has been set, the class will propose research units that tie together a learning objective, coding demonstration, and a class presentation. Because students will have different research objectives they are free to work together to understand the core technologies. It will be up to each individual student to figure out how to leverage our combined knowledge to build cool things.

Because we're all working together and taking advantage of existing open-source code and libraries, it is important to give others credit in the work you do. Always acknowledge what resources you used to build your research module. Of particular interest is the process you used to make it happen. Did you find some research articles, how-to blogs or webpages? Did you talk with other students who had done something similar? What obstacles did you encounter and how did you smash through them or side-step them? Understanding the process other people use to learn and build things helps us overcome obstacles in our own research.

Objectives

  1. learn some basics of music informatics,
  2. set and meet learning objectives,
  3. demonstrate what you've learned by writing code,
  4. teach others what you've learned, and
  5. build something cool.

Instructor Information

Biography
Dr. Parry grew up in Indiana, went to college at Univ. of Virginia, and graduate school at Georgia Tech. His research interests include artificial intelligence, date mining, and visualization, especially applied to music, sports, and education. He prefers teaching and learning when it can be motivated by challenging and interesting problems.

Course Requirements

Materials

Required

Resources

Assignments

Common Assignments
There will be a small set of common assignments that every student completes on their own, likely music similarity, music visualization, and music search.

Inquiry Reports
Students will submit biweekly research updates describing what they have done since the last report and what they plan to do before the next one. Students will focus on a research problem and set learning objectives that will help them solve it. Students earn points by

Research Modules
Students will develop research modules that demonstrate how to solve problems and build music apps with the Spotify API. They will use a GitHub repository to share their work with the class. These research modules serve multiple purposes:

Class Work
Class time will be devoted to knowledge sharing. Initially, the instructor will present material providing a foundation for the research. Then, we will brainstorm ideas, set learning objectives and research goals. Students will pursue the research outside of class and report their findings during class. Great emphasis will be placed on making positive contributions during class:

Final Project
Students will package their semester-long activities into a research portfolio documenting their work during the semester. This will also include the final project proposal, report, and presentation.

Grading & Policies

Course Policies

Updated COVID-19 policies

Current policy is indicated here: App State Coronavirus Information

Attendance Policy

This class meets in person and attendance is mandatory; unexcused absences will deduct 1% from the final grade. I have no plan to record class sessions or provide a Zoom session.

Statement on Student Engagement with Courses

In its mission statement, Appalachian State University aims at "providing undergraduate students a rigorous liberal education that emphasizes transferable skills and preparation for professional careers" as well as "maintaining a faculty whose members serve as excellent teachers and scholarly mentors for their students." Such rigor means that the foremost activity of Appalachian students is an intense engagement with their courses. In practical terms, students should expect to spend two to three hours of studying for every hour of class time. Hence, a fifteen-hour academic load might reasonably require between 30 and 45 hours per week of out-of-class work.

Printable PDF of the Statement of Student Engagement with Courses

Since our class is a 3 credit-hour class, you should expect to spend at least 9 hours per week outside of class. Because programming can be more time-consuming than studying things in other disciplines, that amount of time should be considered a minimum.

Instructor Responsibilities

I will vigorously pursue knowledge and share my learning process with you. Just like debugging, a scientific approach to learning nearly always provides a path forward. I will be accessible during class, office hours and over email. If you need to meet outside of those times, email me to set up an appointment. I really do want this class to succeed. So, please send me your comments, positive or negative, that will help improve the course.

Academic Integrity

You must cite any work that is not yours that you use to produce work for this class.

If you use other code (no matter the source), you must cite the source, for example, as a URL or book citation. This class emphasizes using computer science to solve problems in music informatics. You will be solely responsible for building software that does cool things. You are not expected to do this from scratch. During class meeting times, you will help each other understand the concepts and how to get things done. Outside class, you will work on your own project independently. You may use existing libraries, open-source code, code from the textbook, code that you've used for other classes to solve problems in this class. However, you must cite all of it.

ASU Academic Integrity Statement

Appalachian State University's Academic Integrity Code is designed to create an atmosphere of trust, respect, fairness, honesty, and responsibility. The Academic Integrity Code outlines "user-friendly" procedures and mechanisms for resolving alleged violations of academic integrity. The Academic Integrity Code is the result of cooperation among Appalachian's faculty, students, and administrators, and promotes a campus dialogue about academic integrity. All members of the Appalachian State University community are responsible for promoting an ethical learning environment.

Students attending ASU agree to abide by the following Code:

Printable PDF of the Complete Academic Code available on the Academic Integrity site

Public Sharing of Course Materials

All course materials, including video, may be subject to intellectual property protections under applicable law and regulation and are for the sole use of students enrolled in this class. Students do not have permission to copy or record materials except for personal use in the context of this class and students do not have permission to share any class materials, including videos, in any manner on any platform without the prior express permission of the faculty member teaching this course.

Grading

Calendar

The official sequence of class activities is maintained on ASULearn.