At academic teaching hospitals around the country, the majority of clinical care is provided by resident physicians. During their training, medical residents often rotate through various hospitals and/or medical services to maximize their education. Depending on the size of the training program, manually constructing such a rotation schedule can be cumbersome and time consuming. Further, rules governing allowable duty hours for residents have grown more restrictive in recent years (ACGME 2011), making day-to-day shift scheduling of residents more difficult (Connors et al., J Thorac Cardiovasc Surg 137:710-713, 2009; McCoy et al., May Clin Proc 86(3):192, 2011; Willis et al., J Surg Edu 66(4):216-221, 2009). These rules limit lengths of duty periods, allowable duty hours in a week, and rest periods, to name a few. In this paper, we present two integer programming models (IPs) with the goals of (1) creating feasible assignments of residents to rotations over a one-year period, and (2) constructing night and weekend call-shift schedules for the individual rotations. These models capture various duty-hour rules and constraints, provide the ability to test multiple what-if scenarios, and largely automate the process of schedule generation, solving these scheduling problems more effectively and efficiently compared to manual methods. Applying our models on data from a surgical residency program, we highlight the infeasibilities created by increased duty-hour restrictions placed on residents in conjunction with current scheduling paradigms.