MCS-177 Project: Movie Query System
Due: Monday, December 3, at the beginning of class
Problem
In this project, you will finish a program that uses a natural language
interface with a database of movies by working through section 7.6 of the
text. There are two major parts to this project. One is to
write the procedures you need to search through the database. The
second is to finish the implementation of the natural language interface.
For this project, you will work in groups of two (with perhaps one
group of three, should that prove necessary due to an odd number of
students). Because your partner is counting on you,
attendance at lab is mandatory; we will take
roll.
We warn you that working in a group of two does not mean that your
work load will be halved; in fact, some groups may find that the
amount of hassle will effectively increase the work. Our intention is
that you gain experience in working in teams, since teamwork is very
common in today's workplace. You should have a clear understanding of
each other's responsibilities, and be dependable and punctual in
carrying them out. Also, be sure that neither partner monopolizes the
work, but rather that you share it as equally as possible.
We suggest you take turns at the keyboard.
Finally, we
strongly encourage you to set up a group meeting with a lab instructor
after a day or two of working together in lab
so that we can assess how the project is going and, if need be,
suggest strategies for more successfully working together.
Project Report
For this project, you need not write up a full project report.
Instead, turn in a jointly-authored document that shows your code and
testing in a simple, direct way without any attempt to tell a larger
story. You may assume your audience is familiar with Concrete Abstractions.
Computer Exercises
You are required to do exercises 7.22-7.30 (except for 7.28) for the project,
and you may additionally do as many of exercises 7.31-7.38 as you have
time and interest. You should probably do exercise 7.34 before exercise
7.35, but otherwise the optional exercises are independent of one another,
so you can generally do any of them without having done the preceding ones.
The following is a breakdown of the exercises into related groups:
- Save the following file to somewhere in your directory:
~mc27/labs/movie-queries/movie.scm
and then evaluate everything in it. This file contains the main procedures
for the movie query system from section 7.6, commented and organized for
your ease of understanding.
- Work on exercises 7.22-7.24 on pages 189-190 during the first lab day.
These exercises will give you practice manipulating lists using
filter and map. You do not yet have to work with the
movie query system.
- Next do exercises 7.25-7.27 on pages 196-197. These exercises deal with
the basics of the query system. Note that you can't actually test your
solution to exercise 7.25 using the query-loop until you reach exercise
7.27. However, other than this you should test as you go. As the text of
exercise 7.26 remarks, you should test each procedure independently rather
than only in the context of the overall query-loop.
- The final required part of the lab is exercises 7.29-7.30. For these exercises
you'll want to use the second version given in the text of the pattern/action
list and the
matches? procedure. The second of these versions
is commented out at the bottom of the movie.scm file.