# Unit 2 – Advanced Practice: Student, Course, and Teacher

Extends the enrolment practice. Students still belong to a course, but 
now they can also have a personal tutor — a teacher assigned to support 
them individually. Not every student has one: the tutor slot starts empty 
and can be assigned or removed at any time.

`Course` is provided as a complete class — implement `Teacher` and extend 
`Student`.

## Instructions

### `Teacher`

1. Add a name and a subject to the constructor. Can these change after 
   the teacher is created?
2. Implement `credentials()` — return a short string identifying the 
   teacher, e.g. `"Ms. Garcia (Biology)"`.

### `Student`

1. Add a name and a course to the constructor — same decisions as in the 
   basic practice.
2. Add a tutor property. Does every student have a tutor from the start? 
   Can the tutor change over time? Choose the type and mutability 
   accordingly.
3. Implement `enrolmentInfo()` — return the student's name and course 
   title, e.g. `"Alice — enrolled in: Kotlin Basics"`.
4. Implement `assignTutor(t: Teacher)` — record the new tutor and print 
   a confirmation message.
5. Implement `removeTutor()` — clear the tutor and print a confirmation 
   message.
6. Implement `status()` — return a string showing the student's course 
   and tutor. It must work correctly whether a tutor is assigned or not.

### Testing

1. Create `Course("Kotlin Basics", 30)` and 
   `Student("Alice", kotlinBasics)`.
2. Call `status()` — no tutor assigned yet.
3. Create `Teacher("Ms. Garcia", "Biology")`. Call `assignTutor(garcia)` 
   on Alice, then `status()`.
4. Call `removeTutor()`, then `status()` — the fallback returns.
5. Create `Student("Bob", kotlinBasics)` and assign the same teacher. 
   A teacher can be referenced by multiple students simultaneously.
6. Call `removeTutor()` on Alice — Bob's tutor is unaffected.
