The easy answer for most of you is that the course is required for the major. Well, this is a course about programming paradigms. A language is classified as belonging to one of these families based on the view it takes of describing the solution to a problem, as well as what kind of data structures it can easily describe and handle and how it treats that data.
Imperative programming is, of the three, the most closely tied to the underlying hardware.
Problems are solved by giving a series of commands that say what to do. The first-class data types are usually pretty limited and closely linked to the hardware. Variable names are just a mnemonic way of refering to memory addresses. I have a friend who describes C as a really nice macro language for accessing and setting addresses. This really isn't much of an exageration.