## Uses of Class
org.cpsolver.coursett.model.Student

- Packages that use Student
  Package | Description
  --- | ---
  org.cpsolver.coursett.constraint | University Course Timetabling: Constraints.
  org.cpsolver.coursett.criteria | University Course Timetabling: Criteria.
  org.cpsolver.coursett.criteria.additional | University Course Timetabling: Additional (Experimental) Criteria.
  org.cpsolver.coursett.custom | University Course Timetabling: Various customizations.
  org.cpsolver.coursett.model | University Course Timetabling: Model.
  org.cpsolver.coursett.sectioning | Additional Student Sectioning Algorithms.

- - ### Uses of Student in org.cpsolver.coursett.constraint

    Methods in org.cpsolver.coursett.constraint that return types with arguments of type Student
    Modifier and Type | Method and Description
    --- | ---
    `Set<Student>` | JenrlConstraint.`getInstructors()`
    `Set<Student>` | JenrlConstraint.`getStudents()`

    Methods in org.cpsolver.coursett.constraint with parameters of type Student
    Modifier and Type | Method and Description
    --- | ---
    `void` | JenrlConstraint.`decJenrl(Assignment<Lecture,Placement> assignment, Student student)` Decrement the number of joined enrollments (during student final sectioning)
    `double` | JenrlConstraint.`getJenrlWeight(Student student)`
    `void` | JenrlConstraint.`incJenrl(Assignment<Lecture,Placement> assignment, Student student)` Increment the number of joined enrollments (during student final sectioning)

  - ### Uses of Student in org.cpsolver.coursett.criteria

    Methods in org.cpsolver.coursett.criteria with parameters of type Student
    Modifier and Type | Method and Description
    --- | ---
    `void` | StudentConflict.`incJenrl(Assignment<Lecture,Placement> assignment, JenrlConstraint jenrl, double studentWeight, Double conflictPriority, Student student)`
    `boolean` | StudentConflict.`isApplicable(Student student, Lecture l1, Lecture l2)`

  - ### Uses of Student in org.cpsolver.coursett.criteria.additional

    Methods in org.cpsolver.coursett.criteria.additional with parameters of type Student
    Modifier and Type | Method and Description
    --- | ---
    `int` | IgnoredCommittedStudentConflict.`countCommittedConflicts(Student student, Placement placement)`
    `void` | ImportantStudentConflict.`incJenrl(Assignment<Lecture,Placement> assignment, JenrlConstraint jenrl, double studentWeight, Double conflictPriority, Student student)`
    `void` | InstructorStudentConflict.`incJenrl(Assignment<Lecture,Placement> assignment, JenrlConstraint jenrl, double studentWeight, Double conflictPriority, Student student)`
    `void` | QuadraticStudentConflict.`incJenrl(Assignment<Lecture,Placement> assignment, JenrlConstraint jenrl, double studentWeight, Double conflictPriority, Student student)`
    `void` | StudentMinimizeDaysOfWeek.`incJenrl(Assignment<Lecture,Placement> assignment, JenrlConstraint jenrl, double studentWeight, Double conflictPriority, Student student)`
    `void` | StudentMinimizeScheduleHoles.`incJenrl(Assignment<Lecture,Placement> assignment, JenrlConstraint jenrl, double studentWeight, Double conflictPriority, Student student)`
    `boolean` | ImportantStudentConflict.`isApplicable(Student student, Lecture l1, Lecture l2)`
    `boolean` | ImportantStudentHardConflict.`isApplicable(Student student, Lecture l1, Lecture l2)`

  - ### Uses of Student in org.cpsolver.coursett.custom

    Methods in org.cpsolver.coursett.custom with parameters of type Student
    Modifier and Type | Method and Description
    --- | ---
    `int` | DeterministicStudentSectioning.DeterministicInitialSectioning.`compare(Student s1, Student s2)` Sort students by their curriculum information and id

    Method parameters in org.cpsolver.coursett.custom with type arguments of type Student
    Modifier and Type | Method and Description
    --- | ---
    `protected InitialSectioning.Group[]` | DeterministicStudentSectioning.`studentsToConfigurations(Long offeringId, Collection<Student> students, Collection<Configuration> configurations)`
    `protected InitialSectioning.Group[]` | DeterministicStudentSectioning.`studentsToLectures(Long offeringId, Collection<Student> students, Collection<Lecture> lectures)`

    Constructor parameters in org.cpsolver.coursett.custom with type arguments of type Student
    Constructor and Description
    `DeterministicInitialSectioning(Progress progress, Long offeringId, Collection<?> lectureOrConfigurations, Collection<Student> students)`

  - ### Uses of Student in org.cpsolver.coursett.model

    Fields in org.cpsolver.coursett.model with type parameters of type Student
    Modifier and Type | Field and Description
    --- | ---
    `protected Collection<Student>` | InitialSectioning.`iStudents`

    Methods in org.cpsolver.coursett.model that return Student
    Modifier and Type | Method and Description
    --- | ---
    `Student` | FinalSectioning.Move.`firstStudent()`
    `Student` | FinalSectioning.MoveBetweenCfgs.`firstStudent()`
    `Student` | FinalSectioning.Move.`secondStudent()`
    `Student` | FinalSectioning.MoveBetweenCfgs.`secondStudent()`

    Methods in org.cpsolver.coursett.model that return types with arguments of type Student
    Modifier and Type | Method and Description
    --- | ---
    `Set<Student>` | Lecture.`conflictStudents(Assignment<Lecture,Placement> assignment)` List of students of this class which are in conflict with any other assignment
    `Set<Student>` | Lecture.`conflictStudents(Assignment<Lecture,Placement> assignment, Placement value)` List of students of this class in conflict with the given assignment
    `Set<Student>` | TimetableModel.`getAllStudents()`
    `List<Student>` | InitialSectioning.Group.`getStudents()`
    `List<Student>` | StudentGroup.`getStudents()` Return students of this group
    `Set<Student>` | Lecture.`initialStudentConflicts()` List of student conflicts caused by the initial assignment of this lecture
    `Set<Student>` | Lecture.`sameStudents(Lecture lecture)` List of students enrolled in this class as well as in the given class
    `Set<Student>` | Configuration.`students()`
    `Set<Student>` | Lecture.`students()` List of enrolled students

    Methods in org.cpsolver.coursett.model with parameters of type Student
    Modifier and Type | Method and Description
    --- | ---
    `void` | Lecture.`addStudent(Assignment<Lecture,Placement> assignment, Student student)` Add an enrolled student
    `void` | InitialSectioning.`addStudent(Student student)`
    `void` | InitialSectioning.Group.`addStudent(Student student)`
    `void` | StudentGroup.`addStudent(Student student)` Add student to this group
    `void` | TimetableModel.`addStudent(Student student)`
    `boolean` | InitialSectioning.Group.`canEnroll(Student student)`
    `int` | Student.`compareTo(Student s)`
    `List<Lecture>` | Lecture.`conflictLectures(Assignment<Lecture,Placement> assignment, Student student)` Lectures different from this one, where it is student conflict of the given student between this and the lecture
    `FinalSectioning.MoveBetweenCfgs` | FinalSectioning.`createMove(Assignment<Lecture,Placement> assignment, Configuration firstConfig, Student firstStudent, Configuration secondConfig, Student secondStudent)`
    `FinalSectioning.Move` | FinalSectioning.`createMove(Assignment<Lecture,Placement> assignment, Lecture firstLecture, Student firstStudent, Lecture secondLecture, Student secondStudent)`
    `FinalSectioning.Move` | FinalSectioning.`createMove(Assignment<Lecture,Placement> assignment, Lecture firstLecture, Student firstStudent, Lecture secondLecture, Student secondStudent, FinalSectioning.Move parentMove)`
    `protected void` | TimetableModel.`decJenrl(Assignment<Lecture,Placement> assignment, Student student, Lecture l1, Lecture l2)` Decrement `JenrlConstraint` between the given two classes by the given student
    `FinalSectioning.MoveBetweenCfgs` | FinalSectioning.`findMove(Assignment<Lecture,Placement> assignment, Configuration config, Student student)`
    `FinalSectioning.Move` | FinalSectioning.`findMove(Assignment<Lecture,Placement> assignment, Lecture lecture, Student student)`
    `double` | InitialSectioning.Group.`getDistance(Student student)`
    `double` | Student.`getDistance(Student student)`
    `Lecture` | Lecture.`getChild(Student student, Long subpartId)`
    `double` | Student.`getSameGroupWeight(Student other)`
    `double` | InitialSectioning.Group.`getStudentWeight(Student student)`
    `boolean` | Configuration.`hasConflict(Assignment<Lecture,Placement> assignment, Student student)`
    `boolean` | Lecture.`hasStudent(Student student)` Returns true if the given student is enrolled
    `protected void` | TimetableModel.`incJenrl(Assignment<Lecture,Placement> assignment, Student student, Lecture l1, Lecture l2)` Increment `JenrlConstraint` between the given two classes by the given student
    `boolean` | InitialSectioning.Group.`isEnrolled(Student student)`
    `int` | Lecture.`isInConflict(Assignment<Lecture,Placement> assignment, Student student)` True if this lecture is in a student conflict with the given student
    `void` | Lecture.`removeStudent(Assignment<Lecture,Placement> assignment, Student student)` Remove an enrolled student
    `void` | InitialSectioning.Group.`removeStudent(Student student)`
    `void` | TimetableModel.`removeStudent(Student student)`
    `double` | InitialSectioning.Group.`size(Student student)`
    `int` | FinalSectioning.`test(Assignment<Lecture,Placement> assignment, Student student, Lecture lecture)`

    Method parameters in org.cpsolver.coursett.model with type arguments of type Student
    Modifier and Type | Method and Description
    --- | ---
    `void` | DefaultStudentSectioning.`initialSectioning(Assignment<Lecture,Placement> assignment, Long offeringId, String courseName, Collection<Student> students, Collection<Configuration> configurations)` Enroll students into the given offering during the initial data load using `InitialSectioning`.
    `void` | StudentSectioning.`initialSectioning(Assignment<Lecture,Placement> assignment, Long offeringId, String courseName, Collection<Student> students, Collection<Configuration> configurations)` Enroll students into the given offering during the initial data load.
    `static void` | InitialSectioning.`initialSectioningCfg(Assignment<Lecture,Placement> assignment, Progress p, Long offeringId, String courseName, Collection<Student> students, List<Configuration> configurations)`
    `protected void` | DefaultStudentSectioning.`initialSectioningLectures(Assignment<Lecture,Placement> assignment, Long offeringId, String courseName, Collection<Student> students, Collection<Lecture> lectures)` Enroll students into the given classes during the initial data load using `InitialSectioning`.
    `protected InitialSectioning.Group[]` | DefaultStudentSectioning.`studentsToConfigurations(Long offeringId, Collection<Student> students, Collection<Configuration> configurations)` Section students into configurations.
    `protected InitialSectioning.Group[]` | DefaultStudentSectioning.`studentsToLectures(Long offeringId, Collection<Student> students, Collection<Lecture> lectures)` Section students into lectures.

    Constructors in org.cpsolver.coursett.model with parameters of type Student
    Constructor and Description
    `MoveBetweenCfgs(Configuration firstConfig, Student firstStudent, Configuration secondConfig, Student secondStudent)`

    Constructor parameters in org.cpsolver.coursett.model with type arguments of type Student
    Constructor and Description
    `InitialSectioning(Progress progress, Long offeringId, Collection<?> lectureOrConfigurations, Collection<Student> students)`

  - ### Uses of Student in org.cpsolver.coursett.sectioning

    Methods in org.cpsolver.coursett.sectioning that return Student
    Modifier and Type | Method and Description
    --- | ---
    `Student` | SctStudent.`getStudent()` Student for which the possible enrollments are being computed

    Methods in org.cpsolver.coursett.sectioning with parameters of type Student
    Modifier and Type | Method and Description
    --- | ---
    `int` | SctSectioning.GroupBasedInitialSectioning.`compare(Student s1, Student s2)`
    `int` | SctStudent.`compare(Student s1, Student s2)` Compare two students using their curriculum information
    `protected void` | SctModel.`decJenrl(Assignment<Lecture,Placement> assignment, Student student, Lecture l1, Lecture l2)` Decrement `JenrlConstraint` between the given two classes by the given student
    `protected void` | StudentSwap.`decJenrl(Assignment<Lecture,Placement> assignment, Student student, Lecture l1, Lecture l2)` Decrement `JenrlConstraint` between the given two classes by the given student
    `Neighbour<Lecture,Placement>` | StudentSwapGenerator.`generateSwap(TimetableModel model, Assignment<Lecture,Placement> assignment, Student student, Configuration config)`
    `double` | StudentSwap.`getJenrConflictWeight(List<StudentConflict> criteria, Student student, Placement p1, Placement p2)` Compute student conflict weigth between two classes.
    `protected void` | SctModel.`incJenrl(Assignment<Lecture,Placement> assignment, Student student, Lecture l1, Lecture l2)` Increment `JenrlConstraint` between the given two classes by the given student
    `protected void` | StudentSwap.`incJenrl(Assignment<Lecture,Placement> assignment, Student student, Lecture l1, Lecture l2)` Increment `JenrlConstraint` between the given two classes by the given student

    Method parameters in org.cpsolver.coursett.sectioning with type arguments of type Student
    Modifier and Type | Method and Description
    --- | ---
    `protected boolean` | SctSectioning.`hasStudentGroups(Collection<Student> students)`
    `protected boolean` | StudentSwapSectioning.`hasStudentGroups(Collection<Student> students)`
    `protected InitialSectioning.Group[]` | SctSectioning.`studentsToConfigurations(Long offeringId, Collection<Student> students, Collection<Configuration> configurations)`
    `protected InitialSectioning.Group[]` | StudentSwapSectioning.`studentsToConfigurations(Long offeringId, Collection<Student> students, Collection<Configuration> configurations)`
    `protected InitialSectioning.Group[]` | SctSectioning.`studentsToLectures(Long offeringId, Collection<Student> students, Collection<Lecture> lectures)`
    `protected InitialSectioning.Group[]` | StudentSwapSectioning.`studentsToLectures(Long offeringId, Collection<Student> students, Collection<Lecture> lectures)`

    Constructors in org.cpsolver.coursett.sectioning with parameters of type Student
    Constructor and Description
    `SctStudent(SctModel model, Student student)` Constructor.
    `StudentSwap(TimetableModel model, Assignment<Lecture,Placement> assignment, Student student, Collection<Lecture> lectures)` Move a student into some other lectures of the offering.
    `StudentSwap(TimetableModel model, Assignment<Lecture,Placement> assignment, Student firstStudent, Student secondStudent, Long offeringId)` Create a swap of two students of an offering.

    Constructor parameters in org.cpsolver.coursett.sectioning with type arguments of type Student
    Constructor and Description
    `GroupBasedInitialSectioning(Progress progress, Long offeringId, Collection<?> lectureOrConfigurations, Collection<Student> students)`