Even though course timetabling and student scheduling problems have been studied extensively, not much has been done for the optimization of student add/drop requests after the initial registration period. Add/drop registrations are usually processed with a first come first served policy. This, however, can introduce inefficiencies and dead-locks resulting in add/drop requests that are not satisfied even though they can, in fact, be satisfied. We model the course add/drop process as a direct bartering problem in which add/drop requests appear as bids. We formulate the resulting problem as an integer linear program. We show that our problem can be solved polynomially as a minimum cost flow network problem. In our model, we also introduce a two-level weighting system that enables students to express priorities among their requests. We demonstrate improvement in the satisfaction of students over the currently used model and also the fast performance of our algorithms on various test cases based on real-life registration data of our university. (C) 2011 Elsevier B.V. All rights reserved.