My proposed solution was four tables.
Courses (Hawkmoon's list of courses he teaches, with per-course related info such as syllabus, prerequisites, required equipment, etc)
Students
Classes (each time a Course is offered it is entered here with a date, location, cost and pertinent info to the session)
StudentClass (many to many junction table... Each class can have a different number of students in it and each student can enroll in a varied number of Classes, this is the cleanest solution. Additional info stored here could be notes on student behavior, pass/fail or grade, notes on intent to take more courses offered, etc).
Dropping to 3 tables makes it difficult to cleanly log Student-to-Class entries. It can be done by a series of columns on the Student table (class1, class2, etc) or by a series of entries on the Classes table (student1, student2, student3, etc) or by adding columns to the Student table to represent each Course offered and entering the ClassID that the student enrolled in (Student would have columns HomeDefense100, PracticalPistol100, etc and the ClassID the student enrolled in would be present) but that doesn't support multiple instances of a student taking the same class.