AdaCore University: Programming in the Large

This course describes Ada programming features for developing large applications, including exception handling, type safety, access types, encapsulation, and genericity.