Resolve "Fix professor course allocation"
Overview of changes
Changes in CourseSize and StudentGroup
- added boolean flags for English groups.
Changes in CourseServiceImpl
- 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_GROUPSorTOPICSlecture sharing. Please review the notes on implementation for this change.
- refactoring.
Changes in CourseServiceImplTest
- provided unit tests for calculateGroupsForSubjectmethod and other methods.
Possible breaking changes in FieldFilterSpecification
- attempted to fix raw use of generics. Please check whether JoinedSubjectServiceImpl.filterworks correctly when filtering based onlastUpdateTime(orCourseServiceImpl.calculateGroupswith fieldnumberOfGroupsgreater 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).
Edited  by Георгиев Пеце