"Programming in the Large" and the need for professional discrimination

A common goal in teaching capstone project and software engineering type courses is to develop in students the capabilities required of a professional software developer. Unfortunately their prior educational experiences in the computing discipline may have done anything but prepare them for professional practice. Although the situation may vary considerably from country to country and institution to institution, there are several common deficiencies to be addressed.