Lesson types (incomplete)
Implemented Lecture lesson type (some tests are broken though)
Fixed tests
Moved study_lecture from student to lecture
Added INFINITY constant to replace until=None everywhere
Fleshed out Exam `interact` method
Polishing lesson types - renamed interact to take (which is more natural in context of lectures and exams), added docstrings
Pulled preconfigured students into agents.student package
Added activity to pass an exam
Detailed exam feedback: ratio, pass/fail, attempts, etc. + infrastructure to track exam feedback (incomplete)
Fixed resource choice tests, removed stale student tests.
Student class changes too often - it's central element in the whole simulation, so it's critical to keep it correct, but on the other hand the tendency was to move pieces of functionality out of it.
On the other hand student tests already had low coverage, so they add little value, while draw much attention. Thus I decided to hold on with those Student tests until Student class stabilized.
Improved lesson search by type in resource and curriculum
Added PassExamGoal
Refactored PassExamActivity so that exam is chosen as part of activity:
* Added weight to exams
* Added student methods for choosing the exam
* Rewritten PassExamActivity so that exam choice happens inside it
Improved studying - student does not study lectures that have no new facts.
Publish time for lessons + calculation of available lessons based on publish time
Choosing exam to pass according to time bounds (in line with other activities)
Renamed module study_period to activity_period + added tests
Exams + goal for studying exams + infrastructure to implement chain of behavior handlers