CS 2135 (C03) Homework 3: Complex Data Definitions

Due: January 30 (Thursday) at 11:59pm via turnin (assignment name hwk3).

Assignment Goals


The Assignment

For an operating systems class, you've been asked to implement a simple filesystem. The HTDP text provides three models for filesystems. Use Model 3, the one at the bottom of the page, for these exercises.

If you want to test your filesystems programs on a real filesystem (your own, for example), use the dir.ss library described in HTDP, exercise 16.3.1.

In these exercises, a "filesystem" is a directory (the root directory).

  1. Write three examples of data created with the filesystem data definition.

  2. Write the template for programs over filesystems.

  3. Write a program file-containing? that consumes a filesystem and a value and returns a boolean indicating whether any file has the given value as its contents. You can compare random Scheme values for equality using the primitive equal?.

  4. Write a program count-large-files that consumes a filesystem and a number (a file size) and returns the number of files in the filesystem that are larger than the given size.

  5. Write a program add-empty-file that consumes a filesystem, an existing directory name, and a new file name and returns a filesystem. In the returned filesystem, the named directory should contain all of its old files plus a new file with the given name; the new file should have size 0 and empty for its contents. All other files and directories should be the same between the input and returned filesystems.

    Assume that the given directory name is only in the system once.

  6. Write a program find-file-path that consumes a filesystem and a filename and returns either the path (a list of directory names, in order from root to the one containing the file) to that filename or false if the filename is not in the filesystem.

    Assume that the given file name is only in the system once.


What to Turn In

Turn in a single file hwk3.ss (or hwk3.scm) containing all code and documentation for this assignment. Make sure that both students' names are in a comment at the top of the file.


Hints and Guidelines


Back to the Assignments page