Computer science and engineering (CSE) departments in the nation's universities are the current targets of much criticism by software professionals. The common complaint is that the existing curricula do not relate to many of the most important problems a software engineer faces in the industrial/business environment. If we define software engineering as the establishment and application of sound engineering principles to obtain economically software that is reliable and works efficiently on real machines, it is mandatory that we recognize software engineering as more than simply converting a given set of program specifications into executable code. The software engineer must deal with the entire software life cycle which spans the time from the conception of the product, through the development phase, and finally to the end of its operational life. Medium- to large-scale software projects typically involve a myriad of managers, engineers, programmers, and customers which leads to the need for effective management and communications to ensure the best possible product. Therefore, the software engineering curriculum must include the following basic education areas: computer science and engineering, management science, communication skills, and problem solving in addition to fundamental physical and business sciences. Disparities between academic attitudes and profit-making realities are described and fundamental elements of an effective curriculum are proposed in this paper. A suggested 4-year curriculum leading to a Bachelor of Science degree in Software Engineering is also presented.