A Proposal for
a BSc in Software Engineering/Science
in the Department of Computer Science
with Optional Internship in Industry.

 

DRAFT 3 - 4 MAY 98

 

Aim:

To offer a major in Software Engineering/Science in the department of Computer Science, with an optional internship of 12 - 16 months after the third year.

Format for years 1 and 2:

5.5 full-course equivalents in Computer Science and related areas.

Required courses:

Format for years 3 and 4:

7 full-course equivalents in Computer Science and Software Engineering/Science.

Required courses as specified below.

Computer Science

Software Engineering/Science

Computer Communications

Practical Software Engineering

Principles of Operating Systems

Requirements Engineering

Elements of File Processing Data Base Management Systems

Software Process Management

Features and Applications of Contemporary Database Management Systems

Principles and Design of Human-Computer Interaction

Software Architecture

Software Testing

Object-Oriented Analysis and Design

Managing Scientific and Technical Teams

Advanced Information Systems

Software Project Management

Resources:

There are 12 proposed new half courses. Nine of these are already offered in other programs, so course development will be minimal. Two will be offered by the Project Management group as part of this expansion. Software Testing will be entirely new. At least 6 new faculty will be required to run the new courses, and at least 8 new faculty to run extra sections of existing courses. An additional faculty member will be required to manage the intern program.

Courses:Years 1 and 2 in common with the major in Computer Science

Computer Science 231 H(3-1T-2)
Introduction to Computer Science I
Problem solving and programming in a structured language. Data representation, program control, basic file handling, the use of simple data structures and their implementation.

Computer Science 233 H(3-1T-2)

Introduction to Computer Science II
Continuation of Introduction to Computer Science I. The implementation of abstract data structures using pointers and objects, with emphasis on modularity and software design.
Prerequisite: Computer Science 231.
 
Computer Science 313 H(3-1T-2)
Introduction to Computability
Abstract machines: finite automata, push down automata, and Turing machines. An introduction to formal languages; the hierarchy of languages (regular, context-free, and recursive) recognized by these machines; applications of these languages.
Prerequisites: Computer Science 233 and Mathematics 271.
 
Computer Science 321 H(3-2)
Introduction to Logic Circuit Design
Boolean algebra. Design of combinational circuits and their implementation using primitive logic gates. Design and implementation of synchronous and asynchronous sequential circuits.
Prerequisites: Computer Science 233 and Mathematics 271.
 
Computer Science 331 H(3-1T-2)
Information Structures
Dynamic and static data structures important to computer science; imperative and functional implementations. Time and space efficiency of associated algorithms.
Prerequisites: Computer Science 233 and Mathematics 271.
 
Computer Science 333 H(3-1T-2)
Foundations of Software Engineering
Introduction to software development problems and to the processes and methods used to address them. Goals and methods for requirements analysis and specification, architectural and detailed design, implementation, integration, and testing of software. An introduction to formal methods for software development, and one or more informal methods currently in widespread use.
Prerequisite: Computer Science 331. Philosophy 279 is highly recommended but not mandatory.
 
Computer Science 355 H(3-1T-2)
Computer Architecture and Low-Level Programming
Organization and operation of the functional units in a stored program computer, internal data representation and programming at the architectural level establishing the link between high level language programming and machine operation.
Prerequisites: Computer Science 233 and Mathematics 271.
 
Mathematics 221 H(3-1T-1)
Linear Algebra for Scientists and Engineers
Systems of equations and matrices, vectors, matrix representations, and determinants. Complex numbers, polar coordinates. Eigenvalues, eigenvectors. Applications in the physical sciences.
Prerequisite: See Calendar
 
Mathematics 271 H(3-1T)
Discrete Mathematics
Sets and relations. Induction. Counting, recurrence and trees. Symbolic logic. Graphs. Applications.
Prerequisite: Mathematics 221.
 
Philosophy 279 H(3-1T)
Logic I
Sentential and first-order logic from both deductive and semantic points of view. Some elementary metatheorems.
 
New Course (based on Communications Studies 361 and 363)
Technical Writing and Presentation Skills
Principles and techniques of technical writing. Through analysis of selected technical documents and directed writing practice, students will develop competence in the presentation of technical information for a variety of audiences. Spoken communication and how to present technical material.
Prerequisites: Second year standing and completion of the Effective Writing Requirement.

Courses: Years 3 and 4 in Computer Science

New Course (based on Computer Science 441)
Computer Communications
Principles and practice in modern telecommunications, computer communications and networks. Layered communication protocols and current physical, data link, network and internet protocol layers. Circuit switching, packet switching, and an introduction to broadband multimedia networking. CORBA, RMI and agents.
Prerequisite: Computer Science 333.
 
Computer Science 457 H(3-1T-2)
Principles of Operating Systems
An introduction to operating systems principles. Performance measurement; concurrent programs; the management of information, memory and processor resources.
Prerequisite: Computer Science 333.
 
New Course (based on Computer Science 461 and 471)
Elements of File Processing Data Base Management Systems
Aspects of file terminology, manipulation techniques for sequential files. Physical characteristics of direct access devices. Algorithms and techniques for implementing inverted lists, indexed sequential and hierarchical structures. Conceptual, internal and external data bases. Relational data base systems and SQL. The normal forms, data base design, and the entity-relationship approach. Object-oriented databases.
Prerequisite: Computer Science 333.
 
New Course (currently Computer Science 599)
Features and Applications of Contemporary Database Management Systems
This course will introduce students to modern commercial relational database systems and provide an opportunity to gain practical knowledge and experience in using them. It includes concepts of modern relational database systems such as stored procedures, triggers, cursors, database security and concurrency. Other topics, such as the performance and tuning of the relational database system will be covered if time permits.
Prerequisite: Elements of File Processing Data Base Management Systems.
 
New Course
Software Architecture
As the complexity of the software systems that we need to develop increases, the need to understand them at a higher level of abstraction, at the level of their architecture, becomes more pressing. This course will discuss different types of software architectures, their properties and the types of problems for which they are most appropriate, it will examine different formalisms for specifying a software architecture, and it will survey existing tools for supporting the specialization of an architecture into a system.
Prerequisite: Computer Science 451.
 
New Course
Object-Oriented Analysis and Design
A study of object-oriented concepts and their use in systems development. Object-oriented analysis, object-oriented design. UML. Frameworks. Reuse. Comparison of object-oriented and non-object-oriented methodologies.
Prerequisite: Computer Science 451.
 
New Course
Advanced Information Systems (currently Computer Science 547)
Trends in Software Engineering. Recent developments in various areas of software engineering. Topics to be covered will be primarily areas of interest in industry not covered elsewhere in the program, to include personnel psychology in industry and organizational psychology.
Prerequisite: Computer Science 451.

Courses: Years 3 and 4 in Software Engineering/Science

Computer Science 451 H(3-3
Practical Software Engineering
This course emphasizes a large-group project. Topics will include lifecycle models, project phases, software standards; data gathering techniques, human factors (including documentation and manuals), software quality assurance, cost models; an introduction to CASE tools; social, ethical, and professional issues.
Prerequisite: Computer Science 333 and 481.
 
New Course (currently Software Engineering 611 and 613)
Requirements Engineering
The elicitation, modeling, expression, and validation of requirements. Applications of requirements engineering to the management of the lifecycle of software development from requirements elicitation through analysis, design, coding, testing, enhancement and reuse.
Prerequisite: Computer Science 451.
 
New Course (currently Software Engineering 621 and 623)
Software Process Management
Analysis of software process maturity models from repeatability, through definition and management, to optimization. Analysis of applicable quality, measures for software processes, the role of reviews, metrics and tools for the automatic derivation of quantitative measures.
Prerequisite: Computer Science 451.
 
New Course
Software Testing
Different testing strategies have evolved, which include domain partitioning, random testing, and structural coverage. A broadly based overview of these strategies is essential to allow a practitioner to choose the approach that is best suited for a given software development project. This course includes a survey of testing with particular emphasis on recent developments relating to technical reviews, effectiveness of testing strategies, testing in the context of the Capability Maturity Model, classification of software faults, quantitative approaches to software reliability.
Prerequisite: Computer Science 451.
 
Computer Science 481 H(3-2)
Principles and Design of Human-Computer Interaction
Fundamental theory and practice of the design, implementation, and evaluation of human-computer interfaces. Topics include: principles of design; methods for evaluating interfaces with or without user involvement; techniques for prototyping and implementing graphical user interfaces.
Prerequisite: Computer Science 333.
 
New Course
Management of Scientific and Technical Teams (based on Management of Organizations & Human Resources 559)
This course offers balance between scientific/technical and interpersonal competencies by providing students with: an enhanced self-awareness and practical understanding of factors that influence interpersonal behaviours within organizations; and assessment and development of personal effectiveness as a team member and manager. Conflict resolution, group dynamics and team membership skills.
Prerequisite: Computer Science 333.
 
New Course
Software Project Management
Software project tracking, planning and scheduling. Subcontract management. Organizing and managing software teams. Monitoring and controlling software development. Factors influencing productivity and success. Analysis of options and risk. Planning for change. Managing expectations. Software contracts and intellectual property.
Prerequisite: Computer Science 333.


Undergraduate Courses in Software Engineering and Software Science

MSc with Software Engineering Specialization

Mildred's Homepage


mildred@cpsc.ucalgary.ca, 8-Jun-98