Resolve "Fix professor course allocation"
Overview of changes
CourseSize
and StudentGroup
Changes in - added boolean flags for English groups.
CourseServiceImpl
Changes in - fixed teachers who are both professors and assistants to be allocated to the same groups.
- enabled English groups to be allocated simultaneously.
- changed allocation algorithm to behave differently when subjects contain
STUDENT_GROUPS
orTOPICS
lecture sharing. Please review the notes on implementation for this change. - refactoring.
CourseServiceImplTest
Changes in - provided unit tests for
calculateGroupsForSubject
method and other methods.
FieldFilterSpecification
Possible breaking changes in - attempted to fix raw use of generics. Please check whether
JoinedSubjectServiceImpl.filter
works correctly when filtering based onlastUpdateTime
(orCourseServiceImpl.calculateGroups
with fieldnumberOfGroups
greater than zero).
Notes on implementation
This section gives a brief overview how teachers are allocated in STUDENT_GROUPS
and TOPICS
subjects.
If the subject has lecture sharing by TOPICS
, all professors are equally allocated to all groups.
If the subject has lecture sharing by STUDENT_GROUPS
, one group should be taught by only 1 teacher.
However, some STUDENT_GROUPS
subjects have a subset of teachers who share lectures/exercises. If only one shared group exists, the algorithm should allocate those teachers correctly. If multiple shared groups exist, the algorithm does not guarantee correct allocation (as there might not be a way to uniquely determine the shared lecture/exercise groups of a teacher).