Na minha visão, a Classe Aluno poderia ser mapeada dessa forma, com as notas sendo associadas a uma disciplina, simulando assim realmente como seria um boletim escolar (deixei as notas como int apenas para simplificar).
class Aluno
{
public string Nome { get; set; }
public int Idade { get; set; }
public Dictionary<Disciplina, List<int>> Notas { get; set; } =
new Dictionary<Disciplina, List<int>>();
}
Da mesma forma, a classe professor também poderia se utilizar da classe Disciplina que criamos
class Professor
{
public string Nome { get; set; }
public List<Disciplina> disciplinasLecionadas { get; set; } = new List<Disciplina>();
}
class Disciplina
{
public string Nome { get; set; }
public List<Aluno> AlunosMatriculados { get; set; } = new List<Aluno>();
}