Software Engineering Education in Canada Siamak Rezaei Computer Science, UNBC siamak@unbc.ca Abstract In this work, we will look at the education of software engineering in Canada and we will discuss the software engineering curriculum proposed by international organizations such as IEEE and ACM [1] and in initiatives such as SWEBOK [2], [3], [4]. We will look at the role of professional engineering institute in Canada in shaping the software engineering curriculum in British Columbia (Canada). Finally in a case study, we will look at the formation of software engineering degree programs at McGill university [5] and the accreditation of the degrees. 1 Software Engineering The Software Engineering discipline was born in Germany in a NATO conference in 1968 [6]. The discipline was born to address the needs for creating and maintaining large software systems. Compared to other engineering disciplines such as Construction Engineering, Software Engineering is a very young discipline. Software Engineering implies the use of tools, techniques and processes for analysis, design and development of software systems from user requirements and to maintain these systems and adapting them to the changing requirements of the users. It covers a range of different topics in computer science, project management and engineering. The discipline has evolved during the past 37 years and has moved from its main focus in the early 70’s, on low-level coding and testing metrics and methods, through the life cycles of structured to object oriented, the waterfall and spiral models in the 80’s and 90’s, and from the war of methodologies to the maturity of specializations such as software processes, software economy, software architecture, software verification and validation and configuration management, UML and CASE tools in addition to the traditional areas such as user requirements, design and implementation. We are still in the middle of rapid developments in the information technology and communication and we are still a long distance away from the established engineering fields such as Construction or Electrical Engineering. But new degree programs in software engineering are being established and new criteria for accreditation of software engineering programs have been developed. 2 Software Engineering Curricula Software Engineering as a computer discipline and as an engineering discipline has its own unique characteristics. A software engineer requires the analytical and descriptive techniques and tools in computer science (with a focus on discrete mathematics) and at the same time s/he needs to be familiar with engineering design and measurement techniques unique to software development in addition to professional practice and management of the software process and its improvement Therefore, a software engineering curriculum needs to incorporate both practical/engineering and Computer Science aspects. The first curriculum for undergraduate Software Engineering program was initiated in Imperial College and the second in university of Sheffield in 1988, both at UK. In North America1, the Software Engineering Institute in Carnegie Mellon university has been a pioneer in software engineering education since late 80’s and it initiated a graduate program in Software Engineering at CMU. In Canada, many universities have developed programs for software engineering from the 90’s . [2] discusses the curriculum of a number of graduate and undergraduate Software Engineering programs in Canada and the world (as of 1998, date of publication). 2-1 ACM-IEEE Curriculum Since 1993, IEEE and ACM have been pioneering organizations in forming joint committees for the establishment of Software Engineering as a profession and later recommending curriculum of software engineering for undergraduate programs [1]. Their most recent recommendation in 2004 [1] gives a set of possible curriculum patterns to be applied for computer science or engineering departments. In their report, they include patterns for Japanese, Australian and Israel models in addition to other patterns. The patterns gives flexibility to introduce software engineering courses in the programs and they recommend around 9 new software engineering courses to be taken in the second year of program and after. Table 1 shows one of the recommended patterns for introducing software engineering in a computer science department. Year1 Sem 1A CS 101 Calc 1 NT 181 Physics Gen ed Sem 1B CS 102 Calc 2 CS 105 Science Gen ed Year 2 Sem 2A CS 103 CS 106 SE 201 NT 272 -- Sem 2B CS(Int) SE A SE 212 Lin Alg. Gen ed Year 3 Sem 3A CS(Int) MA 271 SE C NT 291 Gen ed Sem 3B CS(Int) SE D SE E Year 4 Sem 4A SE 400 SE F Sem 4B SE 400 Tech elec Tech elec Tech elec Tech elec Tech elec Tech elec Gen ed Gen ed Gen ed Table 1 Pattern N2S-1 c in a computer science department [1] 1 In Asia, to my knowledge, one of the first graduate (and later undergraduate) program in software engineering was established in Azad university in Tehran in the early 90’s. The MSc program was initiated by Dr Rostami, a PhD gradute of Manchester university. The present author graduated from that program in 1992. In this table, the following software engineering courses exist: SE 201: Introduction to Software Engineering SE 211 (A): Software Construction SE 212 (B) Software Engineering Approach to Human Computer Interaction SE 321 (C ) Software Quality Assurance and Testing SE 311 (D ) Software Design and Architecture SE322 (E) Software Requirements Analysis SE 323 (F) Software Project Management SE 400 Software Engineering Capstone (Group) Project NT 272 Engineering Economics NT 291 Professional Software Engineering Practice Additional courses such as non-technical (NT) courses support other practical aspect of software engineering. Note that the North American pattern (N2S-1e) for engineering department has the same courses and number of courses. Only in the Australian pattern (Aus1) the software engineering courses differ greatly from the other patterns. 2-2 BC APEG Syllabus The Association of Professional Engineers and Geoscientists of British Columbia is the professional body in BC that examines applicants for software engineering. In its 1999 Software Engineering syllabus, it mentions 7 required courses for software engineering in Group A. These are: 98-Soft-A1 Operating Systems 98-Soft-A2 Design and Analysis of Algorithms 98-Soft-A3 Software Design 98-Soft-A4 File and Database Systems 98-Soft-A5 Object Oriented Analysis, Design and Programming 98-Soft-A6 Software Project Management 98-Soft-A7 Software Quality Engineering The syllabus also includes 2 required basic studies (Maths and Probability/Statistics) and 3 required complementary studies courses (Engineering Economics, Engineering in Society and Management Concepts). In addition the syllabus has 4 required basic studies (from 15 courses of year 1 and 2) and 3 required Group B courses (from 15 Computer Science courses of year 3 and 4). 2-3 Curricula of Some Canadian Universities [2] discusses the curriculum of a number of graduate and undergraduate Software Engineering programs in Canada as of 1998 (date of publication). In the undergraduate section (Appendix D and E), the software engineering course contents of 5 universities are discussed. The University of Ottawa B.A.Sc in Software Engineering is one of them. The three others are in UK and one in Australia. The same report, lists the course contents of 24 graduate programs in Software Engineering (Appendix G and H). Three of these programs are in Canada. The Master in Computer Science (SE option) in Concordia, the M.Sc.A in SE of UQAM and the MSc with specialization in SE of Calgary University are compared. Although the list is not complete and does not include programs such as Waterloo, but it documents the course contents of a number of leading software engineering programs in Canada in the late 90’s. The Ottawa undergraduate program in 1998 satisfied the 1999 BC APEG and the program offered almost all the courses required by the ACM/IEEE 2004 proposal. The program only lacked a separate course on testing and a technical course on engineering economics then. Among the Canadian graduate programs listed in [2] (year 1998), the Concordia and UQAM rated better than Calgary in offering topics on testing and maintenance then. UQAM offered more material on formal methods and specification languages among the three. While Concordia rated poorer than the other two in terms of topics in organizational life cycle processes; in this category, Calgary rated the best. The graduate programs, all rate poorly in terms of special topics such as CASE tools, client-server systems, metrics and real-time software. These programs have evolved over the past 7 years after the publication of the report. For example the Calgary university has now a separate course on reliability and testing. In Concordia university, the name of the department has been changed to the department of Computer Science and Engineering (after almost 20 years from the teaching of Software Engineering course, offered by Dr Sarikaya). But the universities which are now joining the main stream of software engineering education as a separate program should take into consideration the transient weaknesses of these programs (e.g. in testing) and to bridge the gap more quickly by noting the past shortcomings. In the next section, we will discuss the introduction of software engineering program at McGill University. 3 Case Study: Software Engineering at McGill Software Engineering at McGill University began in the early 80’s when Dr Madhavji, a PhD graduate from Manchester university in UK, joined McGill university [5] and later established the Software Process research in McGill. In 2001 shortly after Dr Madhavji left McGill, the initiative for creating software engineering programs bear fruit and later two software engineering programs were created in McGill school of Computer Science and Electrical and Computer Engineering departments. School of Computer Science which was established in early 70’s as part of Mathematics department is now part of faculty of Science at McGill, while the department of Electrical and Computer Engineering at McGill is part of the faculty of Engineering. The division of Software Engineering across two programs and across two faculties points to the problems of establishing the software engineering program in bigger universities with established Computer Science and Electrical Engineering programs. It is important to note that the Software Engineering program in McGill Computer Science program (BSc with 90 credit in a 3-year [5]) is not accredited while the program at McGill Electrical and Computer Engineering (BSE with 110 credits in a 3.5 years [5]) is an accredited one. Nevertheless, the programs are offered in a joint effort by both departments. In smaller universities where there is no electrical engineering program or even a faculty of engineering, the accreditation of the software engineering programs may face similar obstacles as in Computer Science at McGill. The two programs in McGill have been established recently and no student have graduated from any of the programs yet, but the difference in the curriculum in both programs and the background of the professors of the two programs is noteworthy. 4 Conclusion In this work, we reviewed the Software Engineering curriculum proposed by international organizations such as IEEE and ACM [1] and in initiatives such as SWEBOK [2], [3], [4]. We also looked at the role of professional engineering institute in Canada in shaping the software engineering curriculum in British Columbia. The evolution of software engineering education in Canada has happened over the last 20 years. In the mid 80’s, the very first software engineering courses were being offered in Canadian universities, some of these were introduced by graduates from UK universities (e.g. in McGill), while others were introduced by graduates of Canadian universities (e.g. in Concordia). In the 90’s, we witness the transition from “teaching software engineering courses” to “developing undergraduate programs in software engineering” (e.g. in Ottawa University). Graduate programs in software engineering are also introduced. Over the past 5 years we have seen a rapid expansion of Software Engineering programs in Canada. This is happening in both Computer Science departments and in Electrical and Computer Engineering departments. It is not clear what will be the impact of the recent IT recession on the expansion of these programs. It is hard to forecast the future of Computer Science, but the field of software engineering looks more promising than before. One expects that the added value of accreditation of software engineering for its graduates will give them a competitive edge over other graduates from non-accredited programs. Acknowledment I would like to thank the members of the UNBC CS undergraduate curriculum committee (2004-2005) for many discussions on establishing a software engineering stream as part of Computer Science program in UNBC. I am also grateful to Dr Charles Snow for providing me a copy of the draft proposal of McGill’s Software Engineering proposal and sharing his valuable experience during our discussions in the corridors of McGill university. References [1] IEEE/ACM, Computing Curriculum – Software Engineering (Final report), May 2004. [2] P. Bourque, R. Dupuis, A. Abran, J. W. Moore, L. Tripp, K, Shyne, Bryan Pflug, M. Maya, G. Tremblay, Guide to the Software Engineering Body of Knowledge, A Straw Man Version, UQAM, Sept 1998. [3] A. Abran, J. W. Moore, Guide to the Software Engineering Body of Knowledge, A trial (Straw Man) Version, IEEE, May 2001. [4] A. Abran, J. W. Moore, Guide to the Software Engineering Body of Knowledge, 2004 Version, IEEE, 2004. [5] McGill University, Bachelor of Software Engineering and Bachelor of Science (Major in Software Engineering), draft proposal, 2001. [6] P. Naur and B. Randell, (Eds.). Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7-11 Oct. 1968, Brussels, Scientific Affairs Division, NATO (1969) 231pp. [7] The Association of Professional Engineers and Geoscientists of British Columbia, 1999 Software Engineering Syllabus Checklist for Self Evaluation, 1999.