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
- learn some basics of music informatics,
- set and meet learning objectives,
- demonstrate what you've learned by writing code,
- teach others what you've learned, and
- 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
- Fundamentals of Music Processing, Meinard Müller, Springer, 2021.
Resources
- Code Academy - Python
- Khan Academy
- Paul Lamere's Music Machinery
- Bryan Pardo's Interactive Audio Lab
- Dan Ellis's LabROSA: Laboratory for the Recognition and Organization of Speech and Audio
- Analyzer Documentation,T Jehan & D DesRoches, The Echo Nest, 2011.
- Audio Analysis Documentation,Spotify for Developers, 2022.
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
- finding appropriate resources,
- summarizing the resources,
- explaining their relevance to the problem, and
- demonstrating how to use the resource to solve their problem.
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:
- learning how to build something new,
- demonstrating your skill by writing some code, and
- teaching the class what you've learned.
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:
- Presenting what you've learned
- Asking probing questions
- Encouraging others to particpate
- Setting learning objectives to meet research goals
- Reflecting on research progress and strategies
- Displaying enthusiasm
- Staying on task
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 InformationAttendance 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:
- Students will not lie, cheat, or steal to gain academic advantage.
- Students will oppose every instance of academic dishonesty.
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
- Each common assignment will be worth the same amount.
- Each research update will be worth the same amount, weekly throughout the semester
- Each research module will be worth the same amount, up to three for the semester
- Class work will be evaluated by the instructor by noting positive and negative contributions during class
- The final project will build on class work during the semester. Your project grade will be determined by proposal, report, and presentation
- The final grade will determined using the following point system:
- All grades will be posted to ASULearn.
- The maximum percentage required to earn each letter grade is shown below:
Category | Points |
---|---|
Common Assignments | |
Inquiry Reports | |
Research Modules (3) | |
Class Work | |
Final Project | |
Total |
Grade |
Percentage Required |
---|---|
A | |
A- | |
B+ | |
B | |
B- | |
C+ | |
C | |
C- | |
F |
Calendar
The official sequence of class activities is maintained on ASULearn.