Nowadays, most commercial software packages contain thousands of classes and over 1,000,000 lines of code, and are being written by several dozen (or more) programmers. Storing such a large program in a single source file would be extremely impractical. For this reason, most programs that are larger than a couple of hundred lines are split into multiple smaller files. In this set of course notes, you will see how this is done, and how we can automate the task of recompiling these packages when a change is made to one of the files.