In university buildings with many rooms spread over different floors, large student flows between two consecutive lectures might cause congestion problems. These congestions result in long queues at elevators or at stairwells, which might lead to delays in lecture starts. The course timetable clearly has an important impact on these congestions. This paper presents a two-stage integer programming approach for building a university course timetable that aims at minimizing the resulting student flows. The first stage minimizes the violation of the teacher and educational preferences by assigning lectures to timeslots and rooms. The second stage reassigns classrooms to lectures of the timetable of the first stage and minimizes the student flow. The conceptual model is applied to the dataset of the Faculty of Economics and Business of the KU Leuven Campus Brussels and is tested and validated with 21 adapted instances from the literature. In contrast to a monolithic model, the two-stage model consistently succeeds in finding good quality feasible solutions. Moreover, the generated timetables entail significantly reduced student flows compared to the flows of the manually developed course timetable.