For many problems in Scheduling and Timetabling the choice of an mathematical programming formulation is determined by the formulation of the graph colouring component. This paper briefly surveys seven known integer programming formulations of vertex colouring and introduces a new formulation using "supernodes". In the definition of George and McIntyre [SIAM J. Numer. Anal. 15 (1978), no. 1, 90-112], "supernode" is a complete subgraph, where each two vertices have the same neighbourhood outside of the subgraph. Seen another way, the algorithm for obtaining the best possible partition of an arbitrary graph into supernodes, which we give and show to be polynomial-time, makes it possible to use any formulation of vertex multicolouring to encode vertex colouring. The power of this approach is shown on the benchmark problem of Udine Course Timetabling. Results from empirical tests on DIMACS colouring instances, in addition to instances from other timetabling applications, are also provided and discussed.