Conversions

1 What is This Assignment’s Purpose?

In this assignment we want you to get more practice with graph algorithms. This time, the task will intentionally be left somewhat open-ended, so you can explore the design space of graph algorithms and reflect on your choices. You will also reflect on your test-planning with an eye towards becoming better at that.

2 Theme Song

Payday by Doja Cat

3 Format

You should treat this assignment like an exam. Therefore, you should do this work without consulting course staff except for critical issues (broken links, possible assignment typo, etc.).

4 Assignment

Remember the Virtual Art Store? You wrote several functions to convert between prices, but left one unwritten. You will complete it now.

Concretely, assume the same table setup as in that problem, and same function signature:

get-art-in-4 :: ArtworkTable, ConversionTable, Number, String -> Number

This time, you have to deal with the transitive case: if any sequence of conversions (including inverses) can get you between currencies, you must use it. Thus, for instance, if you want to convert from A to C, and you are given A to B, D to B, and D to C, you can perform the conversion (by inverting D to B to obtain a conversion from B to D).

In the process of designing your program, you may come up against under-specifications. You must document each such point as follows:
  1. In prose, briefly describe the situation.

  2. Create a small example (which would be a pair of tables, one for artwork and one for currency) that illustrates it.

  3. Restate the situation in terms of the example.

  4. Describe which outcome you chose, in prose and in terms of the example. If you have a particularly strong justification for why you made that choice, tell us. Don’t worry, there are no secret “bad” choices for which you might be penalized; any choice you make that satisfies the problem specification is okay.

Because you are writing this as a document, you can create the table in any format convenient to you (e.g., using your editor’s table feature); you don’t have to define it in Pyret syntax. Just make sure it’s clear what we’re looking at.

Remember to test your program.

Finally, you must evaluate the testing plan from the prior Virtual Art Store assignment. Indicate how each sub-condition listed there fared: Was it useful? Was it clear? And what conditions did you miss? How did your plan fare, overall?

5 What to Turn In

You must turn in four entities:
  1. Your program.

  2. Your tests for this assignment.

  3. Documentation of your design choices.

  4. Evaluation of your earlier testing plan.

6 Starter

Template

7 Socially Responsible Computing

Credits: This assignment directly borrows from a related one by Prof. Malte Schwartzkopf.

You should consider starting this part of the assignment early, because it may take a while to obtain data. Don’t start it on the last day!

Read/View

Read this article.

Write

Before you proceed:

First: we want you to not make requests to any service you are uncomfortable with. That’s why we have the data from Brown: because you may not have any web service accounts and, even if you do, you may be uncomfortable requesting data from them. In particular, if requesting the data will put you at risk, do not do it! If you are uncomfortable getting data even from Brown, tell us why and we’ll see what we can work out.

Second: in your writeup, do not reveal to us anything meant to be private. In particular, do not give us your data! We can’t guarantee its security and don’t want to know private things about you.

Onward to what we want you to do:

In this assignment, you will investigate your personal data stored in different services. We will start with Brown! Go to https://my.brown.edu/ and login. Click on your “silhouette” (circle at top-right) and click on “Data & Privacy” under it. Please note that these data are meant for you only. Do not share these personal data with anyone else unless you fully understand the risks inherent in doing so.

(Note: if you see the message “There was an issue gathering your authorization event history. Please contact the Help Desk if the issue persists”, try again later: there are limits on how many requests can be made in a duration. If the issue persists for a day, post on EdStem.)

Look through your data with an eye to answering these questions:
  • Are the Brown data complete? In other words, are there any data you expect Brown to have collected on you that you do not see on the dashboard?

  • Do you think all the data Brown provides should be made available on your personal dashboard, or is there some information you think Brown should not share?

Optional Activity

We suggest you consider making a similar data request for other web services you use. For some large services, you can find instructions online (e.g., Google, Facebook, Twitter, Instagram, Spotify), while others may require you to make a request (e.g., Pinterest, Netflix). For other services, a web search for “<service name> download data” often helps find instructions. There may also be other information sources: Twitter, for example, gives you the option to request a list of advertisers who have “uploaded” your contact details as part of an “audience” (go to “Settings | Account | Your Twitter Data | Interests and ads data | Tailored audiences”).

Here are some questions to think about across these data:
  • Is it clear what each field represents? Do you think any groups of people might have trouble understanding the data?

  • What were you surprised by/Was there data you did not expect to see? Why?

  • Are there dangers inherent in some of the data? Relate this to the Healy article.