Schoodule is a set of programs to create schedules for schools. It is primerally meant for the Flemish educational system but it might be useful for other systems as well. It is written in java so you will need the latest java runtime environment to run it. All the file formats are in XML and the output can be converted to LaTeX format, from which you can generate a pdf. You can download LaTeX here. For an example of the results look here.
For the second step you need to use SchooLinker. With this program you can create links between the subjects and the teachers and classes. When all the links are defined you need to export the puzzle file (*.sdlp).
Then you can use SchooRoster to partially fill in the rosters. You can fill the slots with subjects or some other text. SchooRoster will save the result in two files: the puzzle file (*.sdlp) and the layout file (*.sdll).
Next up is Schoodule. It takes the puzzle file (*.sdlp) and does the actual schedule generation. This process is completely automated. The output of this program is an *.sdlo file.
Finally you use SchooLaTeX to generate the LaTeX file using the output file (*.sdlo) and the layout file (*.sdll). You can convert this LaTeX file to the pdf format with the pogram pdflatex.