Design topics, features and issues are integrated into the entire sequence of CS courses that are part of the Computer Engineering major. Thereafter, further courses cover more advanced design topics in both the lecture material and assignments.
Students also learn how to specify and use in-lined functions appropriately.
In all subsequent courses students are expected to structure their designs according to an appropriate inheritance hierarchy. They are shown how the Unix shell structure allows the features of a command language processor to be implemented as a series of simple independent programs. Later, they will use this message transport to support a complex higher-level application, i.e., the Spanning Tree protocol for configuring the topology in Local Area Networks. Techniques for program verification and debugging are critical to the design process. In subsequent courses, students are generally required to design their own test suites.