Software Engineering Education in Canada

advertisement
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.
Download