Lab 7 - Spring 2021

The main purpose of this lab is to practice

  • using the Design Recipe to write functions for intertwined data
  • we will use the Files and Directories example of intertwined data from Lecture 12

How to get started

  1. Open a browser and copy/paste this URL:

  2. Login to Github and you will be prompted to accept this assignment
    1. After you click on the [Accept this assignment] button, you will see a new page display in your browser with the message:
      1. You accepted the assignment, Lab 7. We're configuring your repository now. This may take a few minutes to complete. Refresh this page to see updates.
    2. After you refresh the page you should see a page with the message: “You're ready to go!”
    3. Note: this will create your own copy of Lab 7 for you to work on, but it's not on your computer yet.

  3. Click on the URL where your assignment repository has been created:
    1. you are now on the GitHub page for your Lab 7 repository

  4. Click on the green button to download your [Code]
    1. a “Clone” dialog box will appear, with the HTTPS tab underlined in red (if not, click on the HTTPS tab to select it)
    2. select the last option labeled “Download ZIP” and save it on your computer
    3. move the Lab 7 zip file from its download location to the cs101 folder that you created during lab last week.
    4. extract the contents of the zip file either by double-clicking on it or control-clicking on it and selecting the appropriate option to extract its contents
    5. navigate into your lab7 folder and confirm you see the lab7.rkt file there

Now you are ready to write some functions using the Design Recipe!


  1. Launch DrRacket and open your lab7.rkt file

  2. Fill in your name where <YOUR NAME> appears in the comments at the top of the program.

  3. Develop the four (4) versions of empty-file?.
    • one version for each intertwined data definition:
      • empty-file-for-dir?
      • empty-file-for-file?
      • empty-file-for-fod?
      • empty-file-for-lofd?
    • follow the steps of the Design Recipe for each function:
      • I've given you the signatures and function headers
      • You rewrite the purpose statements
      • Make examples in the form of check-expect's
      • I've given you templates for each intertwined data definition
      • Use the appropriate template to help you get started writing the body for each function
    • be sure your solution for each exercise includes all appropriate grading artifacts.

Get checked off! Be sure Professor Smith or one of your coaches checks you off as having completed the lab before you submit your work electronically, and before you leave. We will look for correct program behavior, as well as well-documented code, including, for each function, a signature, purpose statement, examples, and check-expect statements.

Submitting your work

  • From your browser on the GitHub page for your Lab 7 repository, click on the [Add file] drop-down button and select “Upload files”
  • From your lab7 folder on your desktop, click and drag the lab7.rkt file onto your browser where it says, “Drag files here to add them to your repository”
    • just below the region of the webpage you should see you lab7.rkt file appear; it'll be just above the Commit Changes section of the page.
  • You are now ready to commit changes! Click on the green [Commit changes] button.
  • Your updated lab7.rkt file should now be in your Lab 7 GitHub repository.
    • ask a coach to verify this with you.