As an engineering designer, it is important to keep manufacturing constraints in mind while designing a computer system. In general, modular designs have good manufacturability and scalability. Synchronous vs. asynchronous bus timing is a good example. Synchronous timing is simple but lacks modularity because of the clock distribution and clock skew problems. Asynchronous timing, on the other hand, is easily expandable and can accommodate a variety of devices connected to a bus.
Software designs have similar issues.
Modular design makes software production clean and simple. To make your designs facilitate better manufacturability, you should keep these in mind while carrying out design projects. For example, in memory hierarchy design, we use cache memory. Engineering ethics is covered implicitly throughout the CE curriculum and explicitly in ELE 400. You have now come to your senior year and you have been well trained as a responsible engineer.