CSC 161 Module 5: Music Composition with Dynamic Data Structures
Summary and Main Topics
The purpose of this module is to cover pointers, and their use in common self refferential data structures, such as linked lists, in detail. The main topics covered are:
- linked lists
|Friday, November 4||Pointers||Review:|
|Monday, November 7||Pointers||Read:
|Tuesday, November 8||Linked Lists||
||Scheme-like Linked Lists Lab|
|Wednesday, November 9||Linked Lists||Linked Lists and Robots Lab|
|Friday, November 11||Project: Myro Maestro||
|Project: Myro Maestro|
|Monday, November 14||Project: Myro Maestro||Project: Myro Maestro|
Project: Music Composition Myro Maestro
Doubly Linked List Music Management
Working in pairs, students should implement a program that facilitates creating and editing of a song using a doubly linked list backend that they will implement themselves. The goal of the program is to be able to create or load a tune, and then easily change it in any way you might see fit including adding, moving, and deleting notes. into the tune of a song.
A semi-functional shell will be given that will work once the doubly linked list library is implemented, as specified in the provided header, and once any other missing pieces positioned correctly. The provided program will also fascilitate saving and loading the linked list data to a specified binary file. This will come in handy if students end up writing lengthy songs (..because the program is so cool)!
This project will be worth 45 points, based on the following rubric:
- 15 points: Complete, working, correct, implementation of the dnode.h header.
- 15 points: Complete and correct implementation of all the incomplete editor functions.
- 10 points: Tests that show the functions listed in dnode.h (implemented in dnode.c) work correctly and that the editor functions work, and work properly even for boundry conditions. No segfaults!
- 5 points: A performance of your new smashing hit single as developed in Myro Maestro and performed by your Scribbler itself!
- 2 points: Write a thorough explanation of what the scheme style statements (denoted by the // wing comments) in the main switch statement are doing and why they work in C.
- 1 point: For every extra (up to three) editor functions you add to the program that operates on the doubly linked list. An example might be an option that adds N number of the same note in a row..