If you are unsure what MapStruct generated mappers do at runtime, just check the generated code... :)
We currently don't support any instanceof-checking and downcasting to known child classes, so you'd have to implement that method on your own, somehow along those lines:
@Mapper
public abstract class EmployeeMapper {
// impelementation to be generated by MapStruct
public abstract EmployeeDto toEmployeeDto(Employee employee);
protected abstract ScienceStudentDto toScienceStudentDto(ScienceStudent s);
// manually implemented helper method
protected StudentDto toStudentDto(Student student) {