MCS-177 Project: Movie Query System
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
For this project, you will work in groups of two.
Remember that working in a group of two does not necessarily mean
that your work load will be halved. Be sure that each partner
contributes and that neither partner monopolizes the process. We
encourage you to meet with your lab instructor on the second lab day
to assess how the project is going and, if need be, to come up with
strategies for more successfully working together.
You should simply turn in a DrScheme printout that shows your
procedures and the tests you did. You only need to include those
procedures which are explicitly listed in the gradesheet, and you only
need to provide final versions of those procedures.
As always, provide a section which clearly describes how you tested
your program. This means a paragraph describing your testing, along
with an example or two. If you are not confident that you clearly
communicated your testing techniques in writing, you may include more
exampes just to be safe.
Be sure to group your work into logically related sections and put a
descriptive heading at the beginning of each section. Your audience
for this report consists of people already familiar with this
To get some sense of how this project report will be
graded, look at the grading sheet
that we use.
You are required to do exercises 7.22-7.32 (except for exercise 7.28)
for the project, and you may additionally do as many of exercises
7.33-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:
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
- Skip 7.28, ignoring any portions of the text which refer
- The final required part of the project is exercises 7.29-7.32. 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.
Initially, you may be mystified about why there are two sets of parens
((bar baz)) at the bottom of page 196. In the
later exercises you'll be extending the movie query system to handle
multiple wildcards, so that
'(what movies are made between _ and _ with ...)
'(what movies are made between 1950 and 1955 with Fred Astaire))
(1950 1955 (Fred Astaire))
Note the list has length 3 because there are 3 wildcards in the query.