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:
- Computer Science 231, 233, 313, 321, 331, 333, 355
- Mathematics 221, 271
- Philosophy 279
- Communications (new course based on 361 and 363)
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