Course Scheduling
Stanford CS221 Fall 20162017
Owner CA: Yixin Cai
Version: 1
General Instructions
This (and every) assignment has a written part and a programming part.
You should modify the code in submission.py
...
Course Scheduling
Stanford CS221 Fall 20162017
Owner CA: Yixin Cai
Version: 1
General Instructions
This (and every) assignment has a written part and a programming part.
You should modify the code in submission.py between
# BEGIN_YOUR_CODE
and
# END_YOUR_CODE
but you can add other helper functions outside this block if you want. Do not make changes to files other than submission.py.
Your code will be evaluated on two types of test cases, basic and hidden, which you can see in grader.py. Basic tests, which
are fully provided to you, do not stress your code with large inputs or tricky corner cases. Hidden tests are more complex and do
stress your code. The inputs of hidden tests are provided in grader.py, but the correct outputs are not. To run all the tests, type
python grader.py
This will tell you only whether you passed the basic tests. On the hidden tests, the script will alert you if your code takes too long or
crashes, but does not say whether you got the correct output. You can also run a single test (e.g., 3a-0-basic) by typing
python grader.py 3a-0-basic
We strongly encourage you to read and understand the test cases, create your own test cases, and not just blindly run
grader.py.
a. There will be a lot of reading in this assignment. Be patient. It's worth your time! :)
b. Start early. Ask questions. Have fun.
What courses should you take in a given quarter? Answering this
question requires balancing your interests, satisfying prerequisite
chains, graduation requirements, availability of courses; this can be a
complex tedious process. In this assignment, you will write a program
that does automatic course scheduling for you based on your
preferences and constraints. The program will cast the course
scheduling problem (CSP) as a constraint satisfaction problem (CSP)
and then use backtracking search to solve that CSP to give you your
optimal course schedule.
You will first get yourself familiar with CSP by doing warmup exercises
in Problem 0. In Problem 1, you will implement two of the three
heuristics you learned from the lectures that will make CSP solving
much faster. In problem 2, you will add a helper function to reduce
ary factors to unary and binary factors. Lastly, in Problem 3, you will
create the course scheduling CSP and solve it using the code from
previous parts
[Show More]