Iterables and Iterators New Teacher in Town Project

This project seems like it is poorly written and riddled with error, so I am supplying my attempt and feedback which I believe satisfies each step in the project. I would greatly appreciate any feedback or corrective direction as I spent several hours on this seemingly simple 6 step project.

classroom_organizer.py

# import itertools
from roster import student_roster
# Import modules above this line

class ClassroomOrganizer:
  def __init__(self):
    self.sorted_names = self._sort_alphabetically(student_roster)
    self.selected_students = self.get_students_with_subject(student_roster)

  def _sort_alphabetically(self,students):
    names = []
    for student_info in students:
      name = student_info['name']
      names.append(name)
    return sorted(names)

  def get_students_with_subject(self, subject):
    selected_students = []
    for student in student_roster:
      if student['favorite_subject'] == subject:
        selected_students.append((student['name'], subject))
    return selected_students

script.py

from roster import student_roster 

#Checkpoint #1
name = iter(student_roster)
# print(next(name)) repeat 9 additional times.

#Checkpoint #2
import classroom_organizer
import itertools
# Class already exsists in classroom_organizer.py
# This prompt is poorly written, implying that method definitions need to occur before proceeding. This is not the case as the required methods are already in place. 'from roster import student_roster' needs to be added to classroom_organization.py to populate the class method's arguments. 'itertools' does not need to be imported into the classroom_organization, as we are not performing any iterations within the class methods.

#Checkpoint 3
class_obj = classroom_organizer.ClassroomOrganizer()
iter_obj = iter(class_obj.sorted_names)
# for string in iter_obj:
  # print(string)

#Checkpoint #4
pairs_obj = itertools.combinations(iter_obj, 2)
# for pairs in pairs_obj:
#   print(pairs)

#Checkpoint #5
fav_subj_mat_or_sci = []
iter_obj_2 = iter(class_obj.selected_students)
for touple in iter(classroom_organizer.ClassroomOrganizer.get_students_with_subject(iter_obj_2, 'Math')):
  fav_subj_mat_or_sci.append(touple)
for touple in iter(classroom_organizer.ClassroomOrganizer.get_students_with_subject(iter_obj_2, 'Science')):
  fav_subj_mat_or_sci.append(touple)
groups_obj = itertools.combinations(fav_subj_mat_or_sci, 4)
for groups in groups_obj:
  print(groups)

#This exercise would be more approachable if there were preliminary steps to build the classroom organization class and methods from the ground up, and then using those later in the project to produce prompt resultant datasets from the dictionary in roster. Overall, very challenging.

Thanks