Designing a Music Tour Manager

Due: Mon Mar 18 by 7pm

Overview

This week we step back and have you think through the various ideas we've seen over the last couple of weeks (types, externalization, databases, constraints) in the context of a specific problem. You are not producing any code this week. You're producing a design document that responds to some specific questions, and a one-page document self-assessing your learning to this point in the course.

The Design Problem

Fleetwood Macbook is a rock band trying to make it big in the world. For now, the road is long, times are hard, and budgets are thin.

Their lead guitarist, Lindsey Buckingham Palace, has heard that AI is a great way to save money, so he fires their manager and replaces him with “an AI”. After doing so, they realize that their manager actually did useful work for them, like check that their concert schedules actually made sense (the band members, being in various different states of awareness of the world around them, aren't always good at checking for details), and now they don't have anyone to do it for them.

Luckily, vocalist and tambourine player Stevie Knicks has programming experience, so she comes to the rescue. She's going to write a tour checker: the band members put together a tour that they think they like, and she'll write the code to check that the tour makes sense.

Your task is to work through aspects of the design for Stevie's program.

Example

As an example of the kind of information that Stevie wants to record and check, here are the data from the Beatles' first tour of the USA:

Date Daytime Night
1964-02-07 London → New York New York
1964-02-08 personal New York
1964-02-09 Ed Sullivan Show New York
1964-02-10 personal New York
1964-02-11 New York → Washington DC Washington DC
1964-02-12 Washington Coliseum Washington DC
1964-02-13 Washington DC → Miami Miami
1964-02-14 personal Miami
1964-02-15 personal Miami
1964-02-16 Ed Sullivan Show Miami

Assignment

Your job is to plan this program as Stevie would.

Your answers must be written by you, not by genAI tools. This is vital: we are forcing you to consolidate what you have learned so far, and you may struggle a bit with the answers. If you stop, reflect, and think, you will actually learn. Otherwise, you won't.

Please turn in a PLAN.md document that answers the following questions:

  1. What should be the types of the data? You're welcome to have multiple datatypes; we just want to know concretely how you would organize the data.
  2. Should (some of) the tour data be externalized as a CSV or as SQL database? Present arguments in favor of and against each of those choices.
  3. What makes a tour valid? This is the heart of the checker: determining whether a described tour is valid. Ideally, a proper tool will provide more than a binary outcome: it will also explain why an invalid tour is invalid. But for now, focus on what validity means. Write down a series of constraints that reflect validity (this will be relative to your datatypes).
  4. Think about the testing aspects: What would be different about the tester for this assignment than the testers you have seen so far? We're not asking for a testing plan, just for you think about how the testing would need to be done.

Please also turn in a LEARNING.md document in which you tell us about how this exercise went for you. We're interested in which parts are easy and which are hard, which you feel prepared for and which you feel unprepared for, etc. There's no particular structure here; this is just you communicating with us. You don't need the usual reflection journal, just this document.

Submission

You'll submit both documents to this github classroom repo (there are no starter files, the repo just gives us an easy way to collect your work).