PROPOSAL FOR A JOINT CS - E&CE DEGREE PROGRAM IN SOFTWARE ENGINEERING October 25, 1999 Joint Software Engineering Program Steering Committee Joint SE Degree Program Proposal Page 2/17 Acknowledgements This document is a result of considerable effort by faculty members from the Computer Science and Electrical & Computer Engineering departments, including J. Atlee, B. W. Becker, P. Dasiewicz, R. Holt, M. Godfrey, K. Kontogiannis, S. Leue, F. Mavaddat, N. Cercone, A. Pidduck, B. Preiss, P. Ragde, R. Seviora, A. Singh, D. Taylor, T. Vannelli, G. Weddell, and B. Wilson. The willingness of other colleagues both within and outside the CS and E&CE departments to share views and opinions also helped shape the proposed program. Joint SE Degree Program Proposal Page 3/17 A JOINT CS - E&CE DEGREE PROGRAM IN SOFTWARE ENGINEERING 1. RATIONALE Software has become the key implementation technology of many of today's high technology products. Progress in computer science and accumulated experience with industrial production of software have led to the emergence of software engineering as a separate discipline. This new discipline has been defined as "the application of systematic, disciplined, quantifiable approaches to the development, operation and maintenance of software; that is, the application of engineering to software" (IEEE Computer Society). The discipline of software engineering is beginning to be recognized as a professional discipline. To accelerate this process, the two principal technical societies in the field of computing, the Association for Computing Machinery and the IEEE Computer Society, set up a joint steering committee for the establishment of software engineering as a profession in 1994. This committee has organized a number of task forces, including one addressing the education of software engineers. There has been a surge in demand for software professionals, in particular software engineers, as a consequence of the rapid growth in computing power and in the application of computers. In Canada, this has been further amplified by strategic shifts in emphasis of Canadian high-technology companies to software as a means of competitive advantage. Various studies highlight critical shortages of software professionals in Canada (see, e.g., the surveys of the Software Human Resource Council, one of the sectoral councils of the Government of Canada). Industry leaders express concerns about the impact of such shortage on their ability to compete and to expand in Canada. This growth in demand is likely to accelerate, given the forecast increases in capabilities of semiconductor and communication technologies. Canadian post-secondary institutions have begun to respond to this academic development and societal need by starting software engineering options or specializations, and by introducing new undergraduate and postgraduate degree programs in software engineering. In particular, the University of Waterloo started offering a joint CS-E&CE option in Software Engineering in 1995. It is now evident that the academic compass of the discipline of software engineering has become larger than what can be accommodated through an option added to an allied engineering or science curriculum. As one of the leading institutions in the field of computing education, the University of Waterloo must respond to this academic development and societal need. This document proposes a response. It describes a joint CS-E&CE undergraduate degree program in Joint SE Degree Program Proposal Page 4/17 software engineering. The program is four years long, co-op only. Its graduates will be awarded the degree of Bachelor of Software Engineering. The program is designed to be accreditable by the Canadian Engineering Accreditation Board and by the Computer Science Accreditation Council. 2. PRINCIPLES OF PROGRAM DESIGN 2.1. Curriculum Design 2.1.1. Goals The design of the curriculum was shaped by a number of goals that correspond to those of similar professionally-oriented programs at the University. These goals mandate that: a) the curriculum be a true software engineering curriculum; b) the curriculum prepare its graduates for entry in the profession of software engineering; c) the curriculum cover scientific and mathematical foundations of the discipline; d) the curriculum include both engineering science and engineering design; e) the curriculum expose students to the ethical and societal issues associated with the discipline; f) the curriculum leave some room for elective courses (both technical and general); and g) the graduates of the program be able to apply their knowledge to specific problems and produce solutions. 2.1.2. Sources of Guidance: The main sources of guidance in the design of the curriculum included: 1) Recommendations/guidelines of the major technical societies (ACM and IEEE CS) a) Draft Accreditation Criteria for Software Engineering: These criteria allot approximately one year to institutional requirements/electives, and three years, in approximately equal segments, to: i) software engineering (software requirements, architectures, performance, testing & quality assurance, management of software processes, computer-human interaction, tools & documentation) ii) computer science and engineering (algorithms, programming languages, operating systems, databases, computer architectures) iii) supporting areas (mathematics, human communication) iv) advanced (depth, breadth, one or more significant application areas) 2) Computing Curricula '91 These Curricula list nine subject areas and indicate minimum coverage in terms of lecture hours. The main areas (>36 lecture hours) are Algorithms and Data Structures, Computer Architecture, Programming Languages, Operating Systems, and Software Methodology and Engineering. The Curricula highlight the importance of coverage of the three fundamental processes, namely theory, abstraction (modeling), and design. They also stress ethical issues and social impact. Joint SE Degree Program Proposal Page 5/17 3) SEI Undergraduate Curriculum in Software Engineering The Software Engineering Institute is a US government-funded organization. One of its goals is to advance the state of software engineering education. Its undergraduate curriculum contains: a) mathematics and basic sciences 9 courses (6 math, 3 science) b) software engineering science & design i) software analysis 3 courses ii) software architectures 4 courses (includes data structures) iii) computer systems 3 courses iv) software process 4 courses v) humanities, social science 10 courses vi) electives 6 courses 4) Accreditation criteria [program content]: a) Canadian Engineering Accreditation Board (Canadian Council of Professional Engineers) CEAB accreditation forms a base for subsequent licensing of program graduates as professional engineers. i) mathematics: min 195 AU* * 1 AU (Accreditation Unit) = 1 lecture hour, or 2 tutorial/lab/project hours ii) basic (natural) sciences: min 225 AU iii) engrg science, engrg design: min 900 AU (total; each min 225 AU) iv) complementary studies: min 225 AU (must include engrg economics, communications, impact) total: min 1800 AU. b) Computer Science Accreditation Council (Canadian Information Processing Society) CSAC accreditation facilitates certification of program graduates as Information System Professionals (I.S.P.). i) CS, engineering: min 1.5 years of study ii) mathematics/statistics: min 0.5 years iii) other (than above) min 1.0 years CSAC imposes a distribution requirement of at least one course in each of software engineering, algorithms and data structures, programming languages and user interfaces, systems software, computer elements and architecture, theory and scientific computation, with at least one-third of the courses at upper-year levels in at least two of the areas. 2.1.3. Course Development Effort In creating a new program, it makes sense from a resource standpoint to reuse courses from existing programs where those courses meet the needs of the new program. However, there is typically a need for some courses in the core curricula of professional programs which are tailored to the needs of the program. Such tailoring has occurred, for example, in the Faculty of Engineering, where several departments offer their own version of a course on a common engineering topic. Creating an "SE" designation will give this new program the scope to develop its own distinctive identity. Joint SE Degree Program Proposal Page 6/17 The SE program curriculum as described here includes ten courses with the SE designation. Of these, three (SE 463/4/5) are existing CS/E&CE courses which currently form the core of the Software Engineering Option; one (SE 112) is a discrete mathematics course which is specialized enough (it deals with program correctness) that it would not make sense to give it a C&O designation or ask that department to develop it; two (SE 141, SE 240) are obsolete courses in CS and E&CE which are being resurrected because they fit this curriculum; one (SE 382) is a new course which could well be of interest to CS and E&CE; and three (SE 101, SE 362, SE 380) are new courses which are specific to SE, the first of these being a quarter-credit introduction to the program. 3. ACADEMIC PROGRAM 3.1. Structure Co-op/regular: co-op only. Duration: 4 years, 8 months (8 study terms, 6 work terms) Normal admission term: Fall (1A) Streaming: Stream-8 (i.e. 1A and 1B are consecutive terms; subsequent terms alternate between work and study). Depending on demand in future years, another stream, stream4 may be added. Year 1 intake: 100 students (CS and E&CE ATOP allotments each decrease by 50). Promotion Rules: Term by term promotion according to the new engineering promotion rules (UW calendar 99/00, 10:15). These rules allow students to proceed to the next term provided they achieve an average of 60% or greater, and they carry no more than two failed courses that have not been cleared. They must clear all failed courses before graduation. Term Course Title 1A Linear Algebra Calculus I Mechanics Introduction to Methods of Software Engineering Discrete Math Developing Programming Principles Calculus 2 Electricity and Magnetism Logic and Computation Principles of Computer Science Digital Circuits and Systems Probability and Statistics Foundations of Sequential Programs Digital Computers Managerial and Engineering Economics General Elective 1B 2A MATH 115 MATH 137 PHYS 115 SE 101 C&O 203 CS 130 MATH 138 E&CE 126 SE 112 CS 134 SE 141 STAT 2xy CS 241 E&CE 222 MSCI 261 GE Joint SE Degree Program Proposal 2B 3A 3B 4A 4B SE 240 CS 246 SE 380 LE GE SE 362 CS 342 SE 382 LE GE SE 463 CS 457 E&CE 354/CS 354 ATE LE SE 464 E&CE 428 E&CE 456/CS 448 ATE LE SE 465 ATE ATE ATE LE Page 7/17 Algorithms and Data Structures Software Abstraction and Specification Dynamic Systems Analysis Linkage Elective General Elective Software Project Management Control Structures Human-Computer Interaction Linkage Elective General Elective Software Requirement Analysis and Specification System Performance Evaluation Real-Time Operating Systems Advanced Technical Elective Linkage Elective Software Design and Architectures Computer Networks and Security Database Systems Advanced Technical Elective Linkage Elective Software Testing and Quality Assurance Advanced Technical Elective Advanced Technical Elective Advanced Technical Elective Linkage Elective Calendar descriptions of the SE designated courses are in Appendix A. Although the program specifies the terms in which the various flavours of electives can be taken, students can alter this sequence with the consent of SE program advisors. Note that where two versions of a course are specified (e.g. E&CE 354/CS354), the SE board will specify which version is to be taken by a given class, allowing for resource constraints and other factors. Course lists Advanced Technical Electives (ATE): A minimum of two from the following list: CS 444 Compiler Construction CS 452 Real-Time Programming CS 472 Numerical Linear Algebra CS 476 Numeric Computation for Dynamic Simulation CS 480 Information System Management CS 488 Introduction to Computer Graphics E&CE 454/CS 454 Distributed Systems and Networks E&CE 457 /CS 486 Applied Artificial Intelligence Three additional courses chosen from third- and fourth-year offerings in CS and E&CE that do not overlap significantly with SE core courses. Joint SE Degree Program Proposal Page 8/17 Linkage Electives (LE): One each in the areas of Business Issues, Societal Issues, Reasoning Methodologies, and Communication as specified for the current Software Engineering Options. (UW calendar 99/00, 10:13 or 13:13), with the addition of ENGL 109M to the Communication list. One additional Breadth elective (exposure to Humanities and Social Sciences) chosen from the "C" list for Engineering complementary studies electives (Calendar, 10:7). General Electives (GE): Any University of Waterloo course which does not significantly overlap with the SE core courses. These courses may be required to be in the natural sciences in order to satisfy current CEAB accreditation requirements, or they may be constrained to be outside of CS/CE/Math in order to meet CSAC accreditation requirements. 3.1 Curriculum Rationales In addition to drawing on the sources listed above for curriculum design in software engineering, the program here was influenced by the practices and philosophies of the two home departments (CS and E&CE), which must approve this program and nurture it to maturity. 3.1.1 Mathematics content The SE program specifies six mathematics courses: one linear algebra, two calculus, two discrete mathematics (one, SE 112, tailored to this program), and one in probability and statistics. E&CE currently requires one linear algebra and no statistics; both departments require only one discrete mathematics course. E&CE requires one more calculus course and CS one more linear algebra course, as well as a foundational course on number theory. The second discrete mathematics course is aimed at strengthening the student's ability to reason about programs, something that may be of interest to both home departments. 3.1.2 Natural Science content The SE program specifies two courses in the natural sciences (mechanics and electricity/magnetism), as compared to zero in CS (though in practice many if not most students take first-year Physics and Chemistry). Current CEAB accreditation requirements would indicate that four or five courses are needed, and all other UW engineering programs meet this requirement; however, we hope that the argument that software engineering is unique among engineering disciplines in not creating physical artifacts will permit a relaxation of this requirement for SE. If this does not occur, an appropriate number of General Electives can be converted to science courses. It seems to be difficult to use existing electricity and magnetism courses offered by either Physics or E&CE; E&CE 126 (which was offered before much of its material moved into the double-weight E&CE 100) can be revived for this purpose. Joint SE Degree Program Proposal Page 9/17 3.1.3 CS foundational content The SE program shares the four-course sequence 130-134-241-246 with CS; this sequence puts in place the fundamentals of object-oriented programming, abstract data types, elementary data structures, parsing and compilation, and programming in the medium. This is done in two courses in CE. The SE program covers algorithms and advanced data structures in one course, as is the current practice in CE and as was the case in CS until recently (CS now covers these topics in two courses). The course design for the former CS 340 can be revived for the SE course. 3.1.4 E&CE foundational content The SE program covers circuits and computer organization in two courses, one more than CS but two less than CE. CS has no course in control systems; the SE course on dynamic systems analysis will be similar to a required course in CE, but tailored for SE. 3.1.5 SE content Existing courses that could be considered foundational for SE include the three-term sequence SE 463-4-5 (currently part of the CS and E&CE software engineering options), CS 362 (software project management), CS 342 (concurrency), CS 457 (system performance evaluation), E&CE 428 (networks), E&CE 354/CS 354 (operating systems), E&CE 456/CS 448 (databases). The new foundational SE courses are 101 (introduction to software engineering) and 382 (human-computer interaction); we expect that the latter will be of considerable interest to both home departments. Note that several of the foundational courses are offered in similar versions in both departments (networks, operating systems, databases). We have chosen the E&CE versions of these courses (and of certain advanced technical electives, discussed below) so as to equalize the impact of the SE program on the two home departments, as discussed in the section titled Resource Implications. 3.1.6 Elective structure We have specified three kinds of electives: advanced technical, linkage, and general. Students will choose two of the advanced technical electives from a short list, in order to meet the requirement for exposure to one or more significant application areas. The remaining three will be chosen from a much wider list which includes virtually all thirdand fourth-year courses in CS and E&CE. The question "How many ATEs are appropriate?" is a difficult one to answer, and we have chosen a number which appears reasonable without opening the program to charges of weakness or overspecialization. The spirit of the requirements of the various accreditation bodies and SE curriculum designers listed above seems to point to a minimum of half a year exposure to humanities and social sciences (SEI and the US-based CSAB recommend a full year). CEAB only requires half a year of "complementary studies", which includes such things as engineering economics. We decided to specify five Linkage electives; four of these are in the areas of Business Issues, Societal Issues, Reasoning Methodologies, and Communication, as currently specified in the elective lists for the Software Engineering Options in both home departments. These lists seemed a bit constrained to us, and we would like to recommend to the body ultimately charged with maintaining the SE curriculum that these Joint SE Degree Program Proposal Page 10/17 lists be reviewed and expanded at the earliest opportunity. The four areas derive from the description of the CSAB complementary studies requirement. The fifth Linkage Elective is in the general category of Breadth, and can be chosen from the "C" list of complementary studies electives for Engineering. Again, we consider this an initial position, to be revisited upon approval; the current list is quite broad, but somewhat out of date. The three General Electives are currently unspecified, but can be converted to science courses if CEAB holds to its current requirement of natural sciences. If the CEAB accepts the argument that software engineering can be accredited with a reduced natural science component, we would like to see one or two of these electives combined with the Breadth elective to provide in-depth exposure to the humanities and social sciences (for instance, by requiring a two- or three-course sequence in an area of concentration outside Mathematics, Science, or Engineering). The guiding principle should be to allow the students flexibility without allowing their exposure to become too broad and shallow. 4 ACADEMIC STRUCTURES 4.1 SE Program Director The SE Program Director is a faculty member from CS or E&CE. He/she is responsible for the academic issues arising in the day-to-day operation of the Program, including student contact. Preferably, the Director should hold a joint CS-E&CE appointment, or be cross-appointed. The Program Director is assisted by an Undergraduate Advisor/Coordinator (a full time staff position, shared between the two sponsoring departments). 4.2 Software Engineering Program Board Membership: a) Chair of the Board (a faculty member from CS or E&CE, alternating, chosen by department chairs of CS and E&CE) b) Ex-Officio Members: Dean of Engineering, Dean of Math, Chair of CS, Chair of E&CE, SE Program Director c) Faculty members: six (three from CS, three from E&CE, including the E&CE Associate Chair, Undergraduate, and the CS Associate Chair, Undergraduate Operations) Term of service (non ex-officio): 2 years, with possibility of renewal. Function: Oversees the operation and evolution of the program. Notes: 1. The Board is an inter-faculty board. It reports to the two faculty councils. It is expected that the Board will consult with the two home departments. 2. Excepting the ex-officio members, the CS and E&CE members of the Board are nominated by the Departments. 3. Since the SE program is to be accredited as a professional engineering program, a reasonable number of the board members should have professional engineering status. Joint SE Degree Program Proposal Page 11/17 4.3 SE Program Curriculum Committee Membership: a) The SE Program Director, as chair of the SE Program Curriculum Committee b) Faculty Members: six (three from CS, three from E&CE, including the appropriate E&CE Theme Area Chair, and the CS Associate Chair, Curricula) Function: Maintenance and evolution of program curriculum. Notes: 1. The membership may be drawn from outside of the Board. 2. The SE Program Curriculum Committee reports to the Software Engineering Program Board. It is expected that this committee will consult with the CS Curriculum Committee and the E&CE Program Committee. 4.4 SE Program Faculty Pool Membership: at least eight faculty members (initially), four from CS and four from E&CE. Function: the primary undergraduate teaching responsibility of these faculty members will be towards the SE program courses. The program courses may also be taught by other faculty members. Pool members are nominated by the CS and E&CE departments. Rationale: The Software Engineering program is a joint CS-E&CE program. Each of the two sponsoring departments offers other programs, whose enrolment is much larger. It is imperative that there be a set of faculty members who feel primary responsibility for the SE program so that the program is started and evolves in a way that matches and further enhances the reputation of the University of Waterloo in the field of computing. The need for such a dedicated group is further underscored by the relative youth of the discipline of software engineering and its ongoing rapid evolution. 4.5 Supporting Technologist Pool Membership: two technologists (CS or E&CE) Function: SE tool tutorials, student assistance, problem resolution. SE course project/lab development and evolution. SE tool selection, introduction and support. Rationale: Given the professional nature of the Program, the education of the Program students must include exposure to common tools involved in the specification, design, implementation, testing, maintenance, and operation of products implemented with software technologies as well as the tools for management of the software development processes. There is a need for staff who would have sufficient familiarity with these tools to support their use in the education process, their maintenance and updating, and provide continuity. 5 RESOURCE IMPLICATIONS Assumptions: 1) SE Year 1 intake: 100 students/year; one stream; 2) total post-ATOP Year 1 intake: CS - 550 students/year; E&CE - 305 students/year (enrollment targets reduced by 50 in each department due to the student intake in SE); Joint SE Degree Program Proposal Page 12/17 3) CS target average 'optimal' core class size = 85; E&CE average core class size = 8588; 4) SE program attrition rate not significantly different from the average for the two home departments. 5.1 Teaching Load Calculation of the precise impact of a new program is necessarily imprecise, due to uncertainty over available resources, ability to meet enrollment targets, section sizes, attrition rates, and other factors. It is clear, however, that the SE program will affect the home departments in different ways. Broadly speaking, we can rank the three programs in decreasing order by the number of home credits required as follows: CE, SE, CS. This means that bringing the SE program into existence may result in a decrease in the number of teaching tasks in E&CE and an increase in CS. We can partially compensate for this by using E&CE versions of courses in cases where similar versions exist in both departments; this will be the case in the initial implementation of the program, and we will assume such load balancing in the analyses below. In addition, we will make the following assumptions: 1. 2. 3. all SE courses are taught in a single section of 100 students, with the exception of the project courses (SE 463-4-5), which will be in sections of 50; one TA unit is allotted for every 30 students in a course; due to the growing popularity of software engineering, no decrease in the number of students pursuing the SE option in either department 5.1.1 Impact on CS department To simplify logistics and give a sense of community to the SE program, the CS department will try to put on sections comprised solely of SE students (maximum size 100 students, slightly less in upper years due to attrition). This will exceed current CS section sizes slightly in third year (where 75 is the norm) and fourth year (where 50 is the norm). The affected courses are CS 342 and CS 457. The SE project courses (SE 463, 464, 465) will be taught in two sections of 50. We assume here that on average two out of the five ATEs are CS courses (this is probably somewhat pessimistic, as many of the ATE offerings will be able to tolerate some increase in enrollment without necessitating additional sections). The main impact is from the 50 SE students that would have been in the E&CE postATOP allotment. There is also some impact from the 50 students that would have been in CS. We will assume that the latter would have been straight honours CS students without the SE option (since we assumed above that demand for the option would not decrease) and so we must add the effect of their taking SE 463, SE 464, and SE 465. We also assume that half the SE courses are taught by CS faculty and half the TA units for those courses are given to CS grad students (though, given the relative sizes of the graduate programs of the two departments, this last point may be debatable). This leads to the following table. Joint SE Degree Program Proposal Term 1A 1B 2A 2B 3A 3B 4A 4B # Sections # TAs 1 3 1.5 4.5 .5 1.5 1.5 4.5 1 3 2.5 4.5 2 3 2 3 Page 13/17 Courses (Average added sections+TA) CS 130 (.5+.1.5), SE 101 (.5+1.5) SE 112(.5+1.5), CS 134 (.5+1.5), SE 141(.5+1.5) CS 241(.5+1.5) SE 240(.5+1.5), CS 246(.5+1.5),CS 342(.5+1.5) SE 362(.5+1.5), SE 381(.5+1.5) SE 463(1+1.5), CS 457(.5+1.5), SE 382(.5+1.5) SE 464(1+1.5), ATE (1+1.5) SE 465(1+1.5), ATEs (1+1.5) This leads to a total average increase of 12 sections or teaching tasks and 27 TA units for one cohort over five years. Since four cohorts overlap at steady state, 80% of these figures (10 teaching tasks, 21.6 TA units) represent the average yearly increase. 5.1.2 Impact on E&CE department To examine the teaching load impact on the Electrical and Computer Engineering department, first consider the overall teaching task cost for the whole Software Engineering Program. The following assumptions are used in this analysis. 1. All of the SE courses, except SE 463, 464, 465, will be taught with a class size of 100 students. SE 463,464, 465 will have class sizes of 50 due to the heavy design work required. 2. All of the E&CE courses will be taught with a class size of 100. In the core program there are 10 SE courses (SE 101, 112, 141, 240, 262, 380, 382, 463, 464, 465) which require a total of 13 teaching tasks. There are 6 CS courses (CS 130, 241, 457, 134, 246, 342) which require a total of 6 teaching tasks. If E&CE 354 and 456 are used instead of CS 354 and 448, there will be 5 E&CE courses, which require a total of 5 teaching tasks. It is difficult to determine the number of teaching tasks required for the Advanced Technical Electives since this will depend on the potential increase in section numbers of existing courses in CS and E&CE due to the students from the SE program. Since there are 5 ATEs required in the program, a total of 5 teaching tasks for the ATEs is a conservative estimate. The remainder of the program is taught by other departments and we assume that the teaching load for the 100 students in SE will be no greater than the external teaching load for the same number of students in the CS and E&CE departments. Therefore, there is no significant increase in teaching load for external departments. The result is that the SE program requires a total of 29 teaching tasks in the CS and E&CE departments. Assuming these tasks are equally shared between CS and E&CE, approximately 15 teaching tasks per department are required. With the Software Engineering Program, there will be 305 students per year entering the Electrical and Computer Engineering programs. These will be taught in three streams, two Computer Engineering and one Electrical Engineering. Without the Software Engineering Program there would be 355 students in the Electrical and Computer Engineering Joint SE Degree Program Proposal Page 14/17 programs, which would require four streams. The teaching task requirements to mount the fourth stream are greater than 15 teaching tasks required by E&CE for the Software Engineering program. Therefore, participation in the Software Engineering has a beneficial effect on the teaching load for the E&CE department. 5.2 Support Staff Technologists: There should be no need to increase the number of technologists beyond the planned post-ATOP level. However, the distribution of qualifications of the technologists to be hired under ATOP would have to reflect the change in support needs arising out of the introduction of the SE program (in particular, software tool support). Administrative Staff: One full-time Undergraduate Advisor/Coordinator. Duties: interface with students, record keeping, assistance to Program Director. 5.3 Computing Infrastructure [hardware, software] Computing platforms: The primary impact of the SE program would be on main memory and CPU performance of the computing platforms. The more sophisticated software tools used in some SE program courses will require at least 64 Mb of RAM, and Pentium II/AMD K2-6 performance levels. Software tools: The introduction of the SE program will require several additional CASE tools and more licenses for the tools already used in the joint Software Engineering option. The additions will have to be acquired over the space of four years. Given the wide and unpredictable fluctuations in educational pricing policies of software tools vendors, the additional cost is difficult to estimate. Based on the cost of acquisition of specialized CASE tools for the Software Engineering option, a rough estimate of the total initial acquisition cost is $50,000. 5.4 Specialized Laboratories The SE core curriculum includes two courses that requires laboratories: the electricity and magnetism course, and the digital circuits course. The E&CE department has laboratories supporting similar courses. E&CE plans to expand these labs under ATOP. The total number of students using these laboratories will increase slightly. The 50 students in the SE degree program that would have been in CS represent a 15% increase on an annual throughput basis. However, considering the difference in the academic terms the SE students will use these labs (W and F, as opposed F and S) and the already planned expansion under ATOP, there does not appear to be need for additional expansion of these laboratories. 5.5 Office Space Office space will be needed for the SE Program Director and for the SE Program Undergraduate Advisor/ Coordinator. 6 Issues to be Resolved The following issues will be resolved by Deans and Associate Deans of the two Faculties. Joint SE Degree Program Proposal Page 15/17 6.1 Year 1 admission 6.1.1 Entrance requirement The Faculty of Mathematics requires Algebra and Geometry, Calculus, and English, and requires the Descartes Mathematics Contest. The Faculty of Engineering requires Algebra and Geometry, Calculus, Chemistry, Physics, and English 1, and mentions the Descartes contest as a factor in admissions. We suggest that the SE program require Algebra and Geometry, Calculus, Chemistry, Physics, and English, and require the Descartes contest. 6.1.2 Admission committee We suggest that admissions be handled by the Engineering committee, with a mechanism to also deflect candidates to the Mathematics process for equal consideration in Computer Science and Engineering. This will require considerable cooperation between the two admission committees at a difficult time, but it is clearly in the best interest of the students. 6.1.3 Student societies It is important that SE students not feel isolated and that they feel at home in both of the Faculties. To that end, they should be full members of both the Mathematics and Engineering student societies, and they should participate in a selected subset of both orientation programs, as determined by the SE Program Director in conjunction with the Orientation Directors. 6.2 Ongoing students Promotion will be on a term-by-term basis, handled by the Engineering Examinations and Promotions Committee, with the new Engineering rules (UW calendar 99/00, 10:14). The SE Program Director will attend the Engineering Examinations and Promotions Committee at the end of each term to help deal with any problematic cases. 6.3 Inter-faculty differences A host of hopefully minor matters need to be settled: a schedule of fees, eligibility for scholarships and bursaries, responsibility for computing needs, ELPE requirements (we suggest the stronger of the two), Faculty of Mathematics withdrawals (we suggest they be disallowed). Joint SE Degree Program Proposal Page 16/17 APPENDIX A: CALENDAR DESCRIPTIONS OF NEW/MODIFIED COURSES SE 101 Introduction to Methods of Software Engineering 1C 1T 1L F 0 .25 An introduction to some of the basic methods and principles used by software engineers, including fundamentals of technical communication, measurement, analysis, and design. Some aspects of the software engineering profession, including standards, safety and intellectual property. C&O 203 Discrete Mathematics 3C 2T F 0.5 Basic propositional logic. Set theory. Mathematical reasoning. Relations. Combinatorics. Boolean algebra. Graph theory. E&CE 126 Electricity and Magnetism 3C 1T 2L W 0.5 Electrostatics, electric field, electric flux, electric potential and potential energy. Dielectrics, capacitors and capacitance. Flow of electric charge, electric current, current density and resistance. Ohm's law, Kirchoff's voltage and current laws, electric circuits. Magnetism, Ampere's circuital law, magnetic materials, magnetic circuits. Faraday's law, inductance. SE 112 Logic and Computation 3C 2T W 0.5 Formal logic. Proof systems and styles. Rudimentary model theory. Formal models of computation. Logic-based specification. Correctness proofs. Applications in software engineering. Prereq: C&O 203 SE 141 Digital Systems 3C 1T 1.5L W 0.5 Number systems and information representation. Boolean algebra. Analysis and design of combinational and sequential circuits. Programmable logic devices and memory. Asynchronous sequential circuits. Introduction to hardware description languages. Case study: central processing unit. Coreq: SE 112, E&CE 126 STAT 2xy Probability and Statistics 3C 1T F 0.5 Axiomatic development of probability. Conditional probability and independence. Discrete and continuous random variables, distribution functions, expectations, correlations. The Poisson process. Statistical models, estimation, hypothesis testing. Prereq: C&O 203, MATH 137 SE 240 Algorithms and Data Structures 3C 1T 1.5L S 0.5 Foundational data structures: arrays and linked lists. Abstract data types: search trees and tree balancing, hash and scatter tables, priority queues and heaps, and graphs. Algorithmic patterns: brute force and greedy algorithms, divide and conquer algorithms, backtracking algorithms, branch and bound algorithms. Overview of NP-completeness. Prereq: SE 112, STAT 2xy Joint SE Degree Program Proposal Page 17/17 SE 362 Software Project Management 3C 1T W 0.5 Overview; software process models; capability maturity model; metrics; cost estimation; software project planning, organizing, resourcing, directing and controlling; risk management; software configuration management; reuse management; role of standards; management tools; case studies. Prereq: CS 246, MATH 138 SE 380 Dynamic Systems Analysis 3C 1T 1P W 0.5 Dynamic models of continuous systems, transfer functions and block diagrams. Characteristics of feedback control systems, system response characteristics and performance specifications. Stability analysis, the characteristic equation, root locus analysis, frequency response analysis. Review of z-transforms, sample data systems and digital control systems. Digital system stability, discrete root locus and s-plane to z-plane mapping. PID controllers for continuous and discrete control systems. Prereq: MATH 115, MATH 138, PHYS 115 SE 382 Human-Computer Interaction 3C 1T 1.5L F 0.5 The purpose of this course is to introduce students to the design, implementation, and evaluation of contemporary human-computer interfaces. Topics to include user-centered design, psychological considerations, and usability. Emphasis is on practical systems, such as PC-based window/mouse/keyboard systems. Prereq: SE 240, CS 246 SE 463 Software Requirement Specification and Analysis current CS 445/E&CE 451 3C 1T 3L F 0.5 This course is intended to introduce students to the requirements definition phase of software development. It will discuss models, notations, and processes for software requirements identification, representation, validation, and analysis. An important component of the course is a group project: software requirements specification of a large software system. permission of the instructor. Prereq: CS 342, SE 362 SE 464 Software Design and Architectures current CS 446/E&CE 452 3C 1T 3L S 0.5 Software design process and its models, representations of design/architecture, software architectures and design plans, design methods, design state assessment, design quality assurance, design verification. Prereq: SE 463 SE 465 Software Testing and Quality Assurance current CS 447/E&CE 453 3C 1T 3L W 0.5 Systematic testing of software systems; unit, integration and system level testing; software verification; code inspections; use of metrics; quality assurance; measurement and prediction of software reliability; software maintenance; software reuse and reverse engineering. Prereq: SE 464