La idea que propone
dashtrash, es perfecta para lo que buscas. Preparas el formulario de tal forma que solamente aparezca una lista con las materias que pueda llevar, para ello, previamente haces un filtrado. En dicho filtrado, debes de tomar por referencia a los cursos que dicho usuario haya aprobado previamente, por ejemplo, para llevar Matemática 4, debe haber aprobado Matemática 3, por lo tanto, solamente debería aparecer Matemática 3 y no Matemática 4, sin embargo, si selecciona Matemática 3 en la inscripción, automáticamente se mostraría la opción para que también se matricule en Matemática 4. Ojo que esto te puede traer complicaciones si se trata de una cadena de cursos y requisitos, porque de ser así, un alumno que se matricula en Matemática 1, podría hacerlo en Matemática 2 y al matricularse en dicho curso, también podrá hacerlo en Matemática 3 y 4 y 5 y todas las que hayan, al final, llevará todos los cursos de la carrera en un semestre
, a menos de que coloques una restricción para poder llevar un curso requisito y solamente un curso superior, pero creo que te complicarías más, por eso te sugiero que replantees la idea de esta forma de matrícula de cursos para que una persona solamente se pueda inscribir en un curso si y sólo si ha aprobado el respectivo curso requisito.
Saludos