The conundrum of content and context
As the Pedagogy Focus Group of CC2001 (Software Engineering) settles down to work on how to pass on to students the contents of the First Draft of the Software Engineering Education Knowledge (SEEK) [PDF], we face an old problem. How can we be expected to communicate such a massive (an exponentially expanding) body of knowledge in four years? If readers are wondering why the process is taking so long, please consider the complexity of the issue.
Two possible answers present themselves. They are somewhat contradictory yet somewhat complimentary: streaming and integration.
Programs cannot maximize their usefulness if they are presented as a series of independent courses. Unfortunately, academics and universities are fiercely, competitively independent preferring to reinvent their particular wheels rather than collaborate across departmental, much less, collegiate boundaries. As a result, students graduate with impressions such as "Systems analysis has nothing to do with programming principles," "Microprocessors is a different subject from computer architecture" or "Principles of Programming Languages bears no relation to Principles of Operating Systems."
Cross-linking of programs is vital. It is also fun. In my undergraduate class at Edith Cowan University in Perth, Western Australia, I took a course in Total Quality Management at the School of Business (cross-campus, egad!), which raised a few eyebrows in the School of Computing and Information Science, even though it fit perfectly with what I was doing. Such cross-linking is unlikely to occur unless it is built in at the very basis of the curriculum with courses that will run in parallel during a program and integrate with concurrent courses, especially in the introductory semesters.
Faced with the vast body of knowledge that is designated "essential" in the SEEK and the finite amount of time we have to communicate that knowledge, we are going to be forced to put in a new tack if we are to lay the mark.
If the first two years of a software engineering baccalaureate are universal and tightly specified, potential employers will know that graduates will have grasped a given range of fundamentals. This, of course, is dependent on predefinition of a genuine (and manageable) core curriculum that all graduates could be expected to know. It must be a small and precisely defined core that can be taught in depth in two years and form the foundation on which student specialization can take place in the junior/senior years.
Given a foundation (the CORE) students should be presented with opportunities to follow their particular interests. There is not time enough available to have each and every student fully explore the intricacies of testing while they revel in the mathematical simplicity and elegance of formal proofs! If we can formulate study track options for the last two years of a program that will produce graduates who are reasonably competent at something then we will have improved on the existing system which, in attempting to teach all things to all students, runs the risk of producing graduates who are incompetent at everything.
Why not allow students to do their streaming across schools . . . across campuses . . . across universities . . . across countries. Why not try integrating the streams?
About the Author
Rick Duley, email@example.com, is engaged Software Engineering Education (specifically the Introductory Stream) research at Edith Cowan University in Perth, Western Australia and is a member of the Introductory Modules and Courses subcommittee of the Computing Curriculum 2001 (Software Engineering) Pedagogy Focus Group.