DOMAIN DESCRIPTION:

This domain is intended to generate course schedules for computer
science students.  This domain will will generate a schedules of classes,
their lecture times, meeting days, and which quarter and year the class
will meet.  The domain will ensure that the correct number of credits
are taken to satisfy innercore, outercore, and elective requirements.
The master domain problem, GOLDEN.LISP schedules within 9 quarters or
3 years.  The domain schedules using the entire CS course offering
schedule provided by the projected course offerings pamphlet available
in the CS department office.  The entire offering is encoded in 
predicate in GOLDEN.LISP.

Interesting aspects:

The user must specify what quarters he plans to attend.  This is 
	flexible so that he can do Co-ops or skip a few quarters. 
	The domain will schedule the classes in the quarters he
	plans to attend.  Good constraint handling here.

Class prerequisites are handled and scheduled appropriately.  Classes
	with prerequisites will NOT be scheduled in the same quarter / year
	with the class.  The prerequisites will be scheduled in an 
	earlier quarter / year.

Suicide quarters:  There are unwritten rules and strong advisories in
	the department about NOT taking certain classes together in the
	same quarter unless one wants to risk serious physical and mental
	damage.  This domain will ensure that, before scheduling a class
	that it's suicidal partner(s) are not scheduled in the
	same quarter / year.

Class time conflicts are handled such that no class scheduled in the same
	quarter / year will conflict with lecture and sections times and dates
	with other courses scheduled in the same quarter / year.

A limit to the number of CS courses to be taken in any one quarter is also 
	enforced.  The recommended maximum is 3 classes to preserve sanity.

Variable Senior Honors and Research classes will NOT be scheduled by the 
	domain.  The user must specify these courses and times by hand in the 
	initial state.  The domain will work around them.  Examples of encoding
	of these are provided.


APPROXIMATE TIME EXPENDITURE:
	
6 hours * 10 days.  I have spent an ENORMOUS amount of time on this project.
Most of it in trying to learn all the problematic aspects of Prodigy. I
have been able to get each feature listed above working independently
on small subsets of the offerings.  BUT THE DOMAIN CANNOT DO THEM ALL AT ONCE
as the search for even simply things is ENORMOUS.  I have started to
work on SCRs but have had little time as the due date approached AND the
hours available from the instructors is limited.


IMPORTANT NOTE !!  IMPORTANT NOTE !!  IMPORTANT NOTE !!  IMPORTANT NOTE !!
IMPORTANT NOTE !!  IMPORTANT NOTE !!  IMPORTANT NOTE !!  IMPORTANT NOTE !!

To reiterate:

Currently, the domain DOES NOT DO ALL THE ABOVE MENTIONED all together!!
The scope of Prodigy's search is SO LARGE that only very simple tests can be 
run to ensure that the individual features described above work...
AND THEY DO!  The domain WILL do ALL the features described above, just
not all at once.  

A number of smaller domains have been provided to test the individual
aspects of the domain.  A listing is provided at the top of "domain.lisp".
The problems innercore* have simple examples of scheduling innercore
classes with some scheduling and prerequisite conflicts.

A major headache for this domain is handling variable credit values.
I have forced the domain to schedule in fixed increments of 5 credits.

5 credits for each class, not variable.  
The reason is that Prodigy must unify credits accumulated above or
equal to a goal value.  Prodigy wants to know ahead of time how
many credits it expects to schedule.  Prodigy will pick the goal
as the initial value.  If it fails to schedule exactly it will pick
a new ending credit value to unify with AND RETRIES the entire
scheduling again!  Each failure effectively doubles the search of
the domain.  

In the limited domains, Prodigy INAPPROPRIATLY tries to schedule classes 
in a quarter where no time slots are available.. I've tried writing an SCR
to help, but I keep getting a syntax error in the RHS.. so it cannot
has not been implemented.

The only way to get this domain working effectively is to write SCR's which
is NOT a part of this initial assignment AND since I've had the other aspects
of the domain working.. counting, conflict resolution.. which required 
extensive time.. I have had NO time to get help in writing these SCRs.

The bottom line:  This domain needs extensive help with SCRs AND I need
help in constructing them properly.  Overall, the smaller tests prove
the correctness of the domain.
