diff --git a/labs/4/Group.java b/labs/4/Group.java
new file mode 100644
index 0000000..62c29c1
--- /dev/null
+++ b/labs/4/Group.java
@@ -0,0 +1,100 @@
+/*
+ * %W% %E% Dymik739
+ * Email: dymik739@109.86.70.81
+ *
+ * Copyright (C) 2023 FIOT Dev Team
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+import java.util.Arrays;
+
+/**
+ * Group class defines a representation of a university group with students
+ * that can be used as a convenient structure to look at students' statistics.
+ *
+ * @version 0.1 20 May 2023
+ * @author Dymik739
+ */
+public class Group {
+ /**
+ * Main method which should be executed at the start of this application.
+ *
+ * @since 0.1
+ */
+ public static void main() {
+ Student[] studentList = {
+ // name, results, motivation%, ability%, courseâ„–
+ new Student("Davie", 16.3, 93.5, 98.9, 5),
+ new Student("Terry", 99.4, 49.3, 73.2, 7),
+ new Student("Mark", 67.9, 15.5, 7.8, 4),
+ new Student("Rand", 85.5, 82.6, 99.9, 12),
+ new Student("Steve", 1.2, 99.8, 99.2, 1)
+ };
+
+ System.out.println("Original students array:");
+ printStudents(studentList);
+
+ Arrays.sort(studentList, (o1, o2) -> o1.getName().compareTo(o2.getName()));
+
+ System.out.println("\nArray, sorted by students' name:");
+ printStudents(studentList);
+
+ Arrays.sort(studentList, (o1, o2) ->
+ compareDouble(o2.getResults(), o1.getResults()));
+
+ System.out.println("\nArray, sorted by the reverse of students' " +
+ "score results:");
+ printStudents(studentList);
+
+ System.out.println("\nAs we can clearly see, " +
+ studentList[studentList.length-1].getName() + " with " +
+ studentList[studentList.length-1].getMotivationPercent() +
+ "% of motivation and " +
+ studentList[studentList.length-1].getLearningAbilitiesPercent() +
+ "% ability to learn will be the one who is kicked " +
+ "from this university, because such is our life.");
+ }
+
+ /**
+ * Outputs to stdout a given array of students in a fancy way.
+ *
+ * @param array array to print out
+ */
+ private static void printStudents(Student[] array) {
+ for (Student s : array) {
+ System.out.println(s);
+ }
+ }
+
+ /**
+ * Compares numbers of type Double
+ *
+ * @param i1 first number
+ * @param i2 second number to compare
+ * @return if the first argument is greater, 1 is returned
+ * if the second argument is greater, -1 is returned
+ * if the arguments are equal, 0 is returned
+ */
+ private static int compareDouble(double i1, double i2) {
+ if (i1 > i2) {
+ return 1;
+ } else if (i1 < i2) {
+ return -1;
+ } else {
+ return 0;
+ }
+ }
+
+}
diff --git a/labs/4/Student.java b/labs/4/Student.java
new file mode 100644
index 0000000..09af2ae
--- /dev/null
+++ b/labs/4/Student.java
@@ -0,0 +1,131 @@
+/*
+ * %W% %E% Dymik739
+ * Email: dymik739@109.86.70.81
+ *
+ * Copyright (C) 2023 FIOT Dev Team
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+/**
+ * represents a student with generic terms and phrases to let programmers
+ * write more readable code.
+ *
+ * @author Dymik739
+ * @version 0.1
+ * @since 0.1
+ */
+public class Student {
+ /**
+ * name of the student
+ */
+ private String name;
+
+ /**
+ * overall ranking the student gets after finishing all courses
+ */
+ private double results;
+
+ /**
+ * a reasonable variable showing student motivation. The higher this
+ * number is, the better this student studies.
+ */
+ private double motivationPercent;
+
+ /**
+ * general ability to learn which directly affects learning speed.
+ */
+ private double learningAbilities;
+
+ /**
+ * shows the amount of subjects this student is studying.
+ */
+ private int chosenCoursesAmount;
+
+ /**
+ * This constructor lets you create the Student class right away
+ *
+ * @param name the name of this student
+ * @param results starting point for the overall ranking score of this
+ * student
+ * @param motivationPercent this student motivation level. Higher values
+ * allow for more jobs taken consecutively.
+ * @param learningAbilities directly affect learning speed of this student
+ * @param chosenCoursesAmount amount of courses chosen by this student.
+ * Roughly shows the load being put on them
+ * @since 0.1
+ */
+ public Student(String name, double results, double motivationPercent,
+ double learningAbilities, int chosenCoursesAmount) {
+ this.name = name;
+ this.results = results;
+ this.motivationPercent = motivationPercent;
+ this.learningAbilities = learningAbilities;
+ this.chosenCoursesAmount = chosenCoursesAmount;
+ }
+
+ /**
+ * This method allows you to print out the student object in a nice way.
+ *
+ * @since 0.1
+ */
+ @Override
+ public String toString() {
+ return "Student(name = '" + this.name + "', results = " + this.results +
+ ", motivationPercent = " + this.motivationPercent +
+ ", learningAbilities = " + this.learningAbilities +
+ ", chosenCoursesAmount = " + this.chosenCoursesAmount + ")";
+ }
+
+ /**
+ * Getter for the private name field of this class
+ *
+ * @return String containing this student's name
+ * @since 0.1
+ */
+ public String getName() {
+ return this.name;
+ }
+
+ /**
+ * Getter for the private results field of this class
+ *
+ * @return double representing final score of the student
+ * @since 0.1
+ */
+ public double getResults() {
+ return this.results;
+ }
+
+ /**
+ * Getter for the private motivationPercent field of this class.
+ *
+ * @return double representing strenght of this student's motivation to
+ * learn
+ * @since 0.1
+ */
+ public double getMotivationPercent() {
+ return this.motivationPercent;
+ }
+
+ /**
+ * Getter for the private motivationPercent field of this class.
+ *
+ * @return double representing how quickly this student can learn
+ * @since 0.1
+ */
+ public double getLearningAbilitiesPercent() {
+ return this.learningAbilities;
+ }
+}