| Honours Computer Science 
          / Software Engineering Option  The term ``software crisis'' has been used since the late 1960s to describe 
        the recurring software development problems that cause products to be 
       
        late, over budget, unacceptable (with respect to customer's needs), full of errors, full of errors, difficult to maintain and/or enhance.  In response to these problems, there has been an on-going attempt to 
        turn software development into an engineering discipline. This discipline 
        is called Software Engineering -- an apparent contradiction in terms, 
        but the name has endured because it succinctly expresses the desired goal. 
        More formally, software engineering is defined to be ``the application 
        of a systematic, disciplined, quantifiable approach to the development, 
        operation, and maintenance of software; that is, the application of engineering 
        to software.'' [IEEE, 1993]. There has been a growing and increasingly 
        visible demand from industry and governments for graduates with stronger 
        software engineering qualifications. Furthermore, in the last couple of 
        years, it has become evident that there is a sufficiently rich and stable 
        body of knowledge to form the foundation of a specialized undergraduate 
        option.  In Fall 1996, the Department of Computer Science and the Department of 
        Electrical and Computer Engineering starting a jointly-offered undergraduate 
        Option in Software Engineering. The option curriculum is designed to cover 
        a range of important software engineering concepts and skills:  
        Requirements analysis, specification, design, construction, verification, 
          testing, maintenance and modification of programs, program components, 
          and software systems; Algorithm design and complexity analysis; Database design, administration, and maintenance; Knowledge of more specialized application domains, such as human-computer 
          interaction systems, compilers, real-time systems, embedded systems, 
          etc; Management of projects that accomplish the above tasks, including 
          estimating and controlling their cost and duration, organizing teams, 
          and monitoring quality; Selection and use of tools and components; Appreciation of commercial, financial, legal, and ethical issues arising 
          in software engineering projects; Non-technical skills, such as critical reasoning, technical writing, 
          and presentation skills. The option is designed to appeal to students who are interested in specializing 
        in the principles, models, methods, and techniques for developing large 
        software systems.  Option Curriculum  Below is an unofficial list of requirements for the Software Engineering 
        Option. It is intended to give a flavour of the course work involved. 
        Please see the Computer Science Undergraduate Handbook for an official 
        list.  Faculty Core  
         
          | Math 135 | Math 137 | CS 130 | Stat 230 |   
          | Math 136 | Math 138 | CS 134 | Stat 231 |   
          | Math 235 | Math 237 |  |  |  Computer Science Honours Core  
         
          | CS 246 | CS 340 | CS 354 |   
          | CS 241 | CS 342 | CS 360 |   
          | CS 370 | CS 351 |  |  Software Engineering Core  Software Intensive Courses (2 of)  
         
          | CS 444 | CS 444 Compiler Construction |   
          | CS 452/E&CE 485 | Real-time Programming |   
          | CS 454/ E&CE 428 | Distributed Systems |   
          | CS 457 | System Performance Evaluation |   
          | CS 486/E&CE 457 | Introduction to Artificial Intelligence |   
          | CS 488 | Introduction to Computer Graphics |   
          | E&CE 429 | Computer Structures |  Societal Issues (1 of)  
         
          | CS 492 | Social Implications of Computers |   
          | CS 494/ME 401/GenE 411 | Law and Technology |   
          | GenE 411 | Engineering Law |   
          | ME 401 | Law for the Professional Engineer |   
          | Phil 207 | Science, Technology & Society |   
          | Phil 215 | Professional and Business Ethics |   
          | Phil 315 | Ethics & the Engineering Profession |   
          | STV 100 | Society, Technology & Values: Intro |   
          | STV 202 | Design & Society |   
          | STV 402 | Technology & Canadian Society |  Business Issues (1 of)  
         
          | Bus 111 | Intro to Business Organization |   
          | Bus 121 | Functional Areas of the Organization |   
          | GenE 452 | Technical Entrepreneurship |   
          | HRM 200 | Basic Human Resources Management |   
          | MSci 211 | Organizational Behaviour |   
          | MSci 311 | Organizational Design & Technology |    Reasoning Methodologies (1 of)  
         
          | Phil 145 | Critical Thinking |   
          | Phil 200J | Intentional Logic |   
          | Phil 241 | Intermediate Logic |   
          | Phil 242 | Extensions/Applications of Logic |   
          | Phil 243 | Creative Thinking, Problem Solving, ... |   
          | Phil 245 | Critical Thinking 2 |   
          | PMath 330 | Intro to Mathematical Logic 1 |    Communications (1 of)  
         
          | Engl 109 | Intro. to Academic Writing |   
          | Engl 140R | The Use of English 1 |   
          | Engl 209 | Writing Strategies |   
          | Engl 210E | Technical writing |   
          | Engl 210F | Business writing |   
          | Engl 219 | Contemporary Usage |   
          | Engl 309E/DRAMA 323 | Speech Writing |   
          | Engl 335 | Creative Writing 1 |   
          | Engl 376R | Applied English Grammar |   
          | Engl 392A | Theories and Practices of Documentation |   
          | Engl 392B | The Rhetoric of Text and Image |   
          | Drama 223 | Public speaking |   
          | Drama 224 | Interpersonal Communication |   
          | Drama 225 | Interviewing |   
          | Drama 324 | Small Group Communication |  |