Lo que sucede es que aqui..
Código PHP:
Materia mat[];
Solo estas asignando una referencia a un arreglo de objetos Materia, sin embargo el compilador aun no sabe cuantos objetos materia va a alojar, podrias enviarlo en el constructor o definirlo..
En el caso de que fueran 10 materias
Código PHP:
Materia mat[] = new Materia[10];