Skip to main content

Department of Computer Science and Software Engineering

Section 71.70

Please note that the current version of the Undergraduate Calendar is up to date as of February 2021.

Faculty

Chair

LATA NARAYANAN, PhD University of Rochester, ing.; Professor

Associate Chair (Computer Science)
THOMAS FEVENS, PhD Queen’s University; Associate Professor

Associate Chair (Software Engineering)
WEIYI (IAN) SHANG, PhD Queen’s University; Associate Professor

Professors
SABINE BERGLER, PhD Brandeis University
GREGORY BUTLER, PhD University of Sydney
BIPIN C. DESAI, PhD McGill University
EUSEBIUS J. DOEDEL, PhD University of British Columbia
GOSTA GRAHNE, PhD University of Helsinki
YANN-GAEL GUÉHÉNEUC, PhD University of Nantes, ing.
VOLKER M. HAARSLEV, PhD University of Hamburg
HOVHANNES A. HARUTYUNYAN, PhD Armenian Academy of Sciences
BRIGITTE JAUMARD, PhD École Nationale Supérieure des Télécommunications
LEILA KOSSEIM, PhD Université de Montréal
ADAM KRZYZAK, PhD University of Wroclaw; Provost’s Distinction
SUDHIR P. MUDUR, PhD Bombay University, PEng
JUERGEN RILLING, PhD University of Illinois
CHING Y. SUEN, PhD University of British Columbia; Provost’s Distinction

Distinguished Professors Emeriti
J. WILLIAM ATWOOD, PhD University of Illinois
VACLAV CHVATAL, PhD University of Waterloo; Provost’s Distinction
CLEMENT LAM, PhD California Institute of Technology
JOHN MCKAY, PhD University of Edinburgh; Provost’s Distinction
JAROSLAV OPATRNY, PhD University of Waterloo

Professors Emeriti
V.S. ALAGAR, PhD McGill University
TIEN D. BUI, PhD York University, ing.
DAVID FORD, PhD Ohio State University
PETER GROGONO, PhD Concordia University, PEng
H.F. LI, PhD University of California, Berkeley
R. SHINGHAL, PhD McGill University

Associate Professors
CONSTANTINOS CONSTANTINIDES, PhD Illinois Institute of Technology, PEng
TODD EAVIS, PhD Dalhousie University
TRISTAN GLATARD, PhD Université Nice Sophia Antipolis, France
DHRUBAJYOTI GOSWAMI, PhD University of Waterloo, PEng
RAJAGOPALAN JAYAKUMAR, PhD Concordia University
OLGA ORMANDJIEVA, PhD Concordia University, ing.
JOEY PAQUET, PhD Université Laval
TIBERIU POPA, PhD University of British Columbia
CHARALAMBOS POULLIS, PhD University of Southern California
DAVID K. PROBST, DSc Université de Bruxelles
PETER RIGBY, PhD University of Victoria
EMAD SHIHAB, PhD Queen’s University, PEng
NEMATOLLAAH SHIRI-VARNAAMKHAASTI, PhD Concordia University
NIKOLAOS TSANTALIS, PhD University of Macedonia, PEng
RENÉ WITTE, DrIng University of Karlsruhe, PEng
YUHONG YAN, PhD Tsinghua University/Leipzig University, PEng

Assistant Professors
EUGENE BELLILOVSKY, PhD Université Paris-Saclay
TSE-HSUN (PETER) CHEN, PhD Queen’s University
ANDREW DELONG, PhD Western University
MARTA KERSTEN-OERTEL, PhD McGill University
ESSAM MANSOUR, PhD Dublin Institute of Technology
DENIS PANKRATOV, PhD University of Chicago
YIMING XIAO, PhD McGill University
JINQIU (ALICE) YANG, PhD University of Waterloo

Senior Lecturer
AIMAN HANNA, PhD Concordia University, PEng

Lecturers
NORA HOUARI, PhD University of Calgary
KAUSTUBHA MENDHURWAR, PhD Concordia University
RODRIGO MORALES, PhD Polytechnique Montréal

Affiliate Professors
L. LAM, PhD University of Toronto
ANDRZEJ PELC, PhD University of Warsaw

Affiliate Associate Professors
GUANGI CHEN, PhD Concordia University
T. KENGATHARAM, PhD Concordia University
YASER KHAMAYSEH, PhD University of Alberta

Affiliate Assistant Professors
GILBERT HONNOUVO, PhD McGill University
FEHMI JAAFAR, PhD Université de Montréal
MUNA KHAYYAT, PhD Concordia University
MARIE-JEAN MEURS, PhD University of Avignon
SERGUEI MOKHOV, PhD Concordia University
MAMA NSANGOU MOUCHILI, PhD Patrice Lumumba Peoples Friendship University
K. PITULA, PhD Concordia University
MIAO SONG, PhD Concordia University
EMIL VASSEV, PhD Concordia University

For the complete list of faculty members, please consult the Department website.


Location

Sir George Williams Campus
Engineering, Computer Science and Visual Arts Complex, Room: EV 003.139
514‑848‑2424, ext. 3000


Objectives

The Department of Computer Science and Software Engineering offers three distinct undergraduate programs: BCompSc; BCompSc in Health and Life Sciences; and BEng in Software Engineering.
Computer Science is the study and design of computer systems: hardware and software. Computer scientists are primarily concerned with the design of algorithms, languages, hardware architecture, systems software, applications software and tools. Applications range from simple game playing to the control of space vehicles, power plants and factories, from banking machines to intelligent fault and medical diagnosis. Computer professionals, in short, are concerned with the creation of computer and information systems for the benefit of society.
The Bachelor of/Baccalaureate in Computer Science in Health and Life Sciences is offered in collaboration with the Department of Biology and shares a number of courses with the BSc Honours and Specialization programs in Systems and Information Biology. The detailed description of these programs can be found in §71.75.
Software Engineering applies the principles and practices of engineering to the creation of reliable, efficient, and economical software. Software Engineering has its roots in the theory and mathematics of computer science, but carries this knowledge further towards creative applications such as software control systems for vehicles, aircraft, industrial processes; animation, interactive video, virtual reality, commercial systems for banking and financial analysis; health systems for the analysis of biological systems and the control of therapeutic devices.
It shares with engineering the rigorous methodology of analysis and design in the search for economical, reliable, and efficient solutions. Software engineers are trained in all aspects of the software life cycle, from specification through analysis and design, to testing, maintenance and evaluation of the product. They are concerned with safety and reliability of the product as well as cost and schedule of the development process. The discipline is particularly applicable to very large software projects, as well as the re-engineering of existing products.


71.70.1    Curriculum for the Degree of Bachelor of/Baccalaureate in Computer Science

The Computer Science program emphasizes fundamentals and techniques that remain relevant and useful for many years after graduation. The program consists of a combination of core courses in computer science, elective courses in computer science and mathematics, and some free electives. The Computer Science Core provides a basic and broad study of theory, mathematical basics, programming methodology, computer architecture, data structures, operating systems, and software engineering. Elective courses are presented in groups to guide students in the selection of advanced elective courses in computer science to provide further depth in computer science and the particular application area.
The Joint Major in Computation Arts and Computer Science combines a comprehensive education in both computer science and the design of interactive multimedia (see §71.80).
The Joint Major in Mathematics and Statistics and Computer Science combines a comprehensive education in both computer science and mathematics and statistics (see §71.85).
There is an honours program corresponding to BCompSc (and associated joint majors) (see §71.70.4). In addition, all programs are offered in the co-operative format, with alternating study and work terms, for a limited number of students with suitable qualifications (see §24).


71.70.2    Degree Requirements (BCompSc)

To be recommended for the degree of BCompSc, students must satisfactorily complete an approved program of at least 90 credits comprising the courses of the Computer Science Core, the Complementary Core, Computer Science Electives, Mathematics Electives, and the remaining courses comprised of a Minor and/or General Electives in accordance with the graduation requirements of §71.10.5. The program also offers the BCompSc degree in the form of two joint major degrees (see §71.70.1).
Students may not register for a 400-level course before completing all of the 200-level Computer Science Core courses of their program.
The Gina Cody School of Engineering and Computer Science is committed to ensuring that its students possess good writing skills. Hence, every student in an undergraduate degree program is required to demonstrate competence in writing English or French prior to graduation.
All students admitted to the Gina Cody School of Engineering and Computer Science must meet the writing skills requirement as outlined in §71.20.7 (Writing Skills Requirement).
If a student has satisfied the writing skills requirement prior to transferring to the Gina Cody School of Engineering and Computer Science, that student is deemed to have satisfied the writing skills requirement.
Newly admitted students are strongly encouraged to meet the requirement very early in their program (fall term of first year for students starting in September or winter term of first year for students starting in January) to avoid the risk of delayed graduation should remedial work prove necessary. Students who are required to take ESL courses should meet the Faculty writing skills requirements in the term following completion of their ESL courses.

BCompSc Credits
  Computer Science Core 33.00
  Complementary Core 6.00
  Computer Science Electives 18.00
  Mathematics Electives 6.00
  Minor* or General Electives 27.00
    _____
    90.00

Students who wish to complete a minor offered by any other department in the University outside the Department of Computer Science and Software Engineering are strongly encouraged to declare their minor by the end of their first year. Students must satisfy the requirements for the minor program as determined by the department that offers it.
*Any credits beyond those required to complete a declared minor may be taken as General Electives.

Computer Science Core (33 credits) Credits
COMP 228 System Hardware 3.00
COMP 232 Mathematics for Computer Science 3.00
COMP 233 Probability and Statistics for Computer Science 3.00
COMP 248 Object‑Oriented Programming I 3.50
COMP 249 Object‑Oriented Programming II 3.50
COMP 335 Introduction to Theoretical Computer Science 3.00
COMP 346 Operating Systems 4.00
COMP 348 Principles of Programming Languages 3.00
COMP 352 Data Structures and Algorithms 3.00
COMP 354 Introduction to Software Engineering 4.00
    _____
    33.00

 

Complementary Core (6 credits) Credits
ENCS 282 Technical Writing and Communication 3.00
ENCS 393 Social and Ethical Dimensions of Information and
     Communication Technologies
3.00
     _____
    6.00

Computer Science Electives
Computer Science Electives must be chosen from the following list:

  • All COMP courses with numbers 325 or higher.
  • ENGR 490
  • SOEN 287, 321, 331, 387, 422, 423, 487.
  • COMP and SOEN courses with numbers between 6000 and 6951 (maximum of eight credits, and with permission from the Department).

Any credits exceeding the required number of Computer Science Elective credits will accrue towards the General Elective credits. Elective courses are listed below in groups to facilitate the selection of courses in a particular area of the field.

Artificial Intelligence Group Credits
COMP 425 Computer Vision 4.00
COMP 432 Machine Learning 4.00
COMP 472 Artificial Intelligence 4.00
COMP 473 Pattern Recognition 4.00
COMP 474 Intelligent Systems 4.00
COMP 479 Information Retrieval and Web Search 4.00

 

Computer Games Group Credits
COMP 345 Advanced Program Design with C++ 4.00
COMP 371 Computer Graphics 4.00
COMP 376 Introduction to Game Development 4.00
COMP 475 Immersive Technologies 4.00
COMP 476 Advanced Game Development 4.00
COMP 477 Animation for Computer Games 4.00

 

Data Analytics Group Credits
COMP 333 Data Analytics 3.00
COMP 353 Databases 4.00
COMP 432 Machine Learning 4.00
COMP 479 Information Retrieval and Web Search 4.00
MAST 324 Introduction to Optimization 3.00
SOEN 471 Big Data Analytics 4.00

 

Web Services and Applications Group Credits
COMP 353 Databases 4.00
COMP 445 Data Communication and Computer Networks 4.00
COMP 479 Information Retrieval and Web Search 4.00
SOEN 287 Web Programming 3.00
SOEN 387 Web‑Based Enterprise Application Design 3.00
SOEN 487 Web Services and Applications 4.00

 

Mathematics Electives  
Mathematics Electives must be chosen from the following list: Credits
COMP 339* Combinatorics 3.00
COMP 361* Elementary Numerical Methods 3.00
COMP 367* Techniques in Symbolic Computation 3.00
ENGR 213 Applied Ordinary Differential Equations 3.00
ENGR 233 Applied Advanced Calculus 3.00
MAST 218 Multivariable Calculus I 3.00
MAST 219 Multivariable Calculus II 3.00
MAST 234 Linear Algebra and Applications I 3.00
MAST 235 Linear Algebra and Applications II 3.00
MAST 324 Introduction to Optimization 3.00
MAST 332* Techniques in Symbolic Computation 3.00
MAST 334* Numerical Analysis 3.00
MATH 251 Linear Algebra I 3.00
MATH 252 Linear Algebra II 3.00
MATH 339* Combinatorics 3.00
MATH 392 Elementary Number Theory 3.00

Any credits exceeding the required number of Mathematics Elective credits will accrue towards the General Elective credits.
*Students cannot receive credit for both COMP 339 and MATH 339; COMP 361 and MAST 334; COMP 367 and MAST 332.

General Electives
General Electives must be chosen from the following list:

  • Computer Science Electives as mentioned above.
  • Mathematics Electives as mentioned above.
  • General Education Electives found in §71.110.
  • Basic and Natural Science Courses list found in §71.70.9.

A course outside this list may qualify as a General Elective only with prior written permission on an GCS Student Request form, obtainable from the Office of Student Academic Services in the Gina Cody School of Engineering and Computer Science.

Joint Major in Computation Arts and Computer Science
See §71.80 for details.

Joint Major in Mathematics and Statistics and Computer Science
See §71.85 for details.


71.70.3    Extended Credit Program

Students admitted to an Extended Credit Program (ECP) under the provisions of Sections 13.3.2 or 13.8.1 must successfully complete a minimum of 120 credits including:

90 Program requirements as set out in Section 71.70.2
9 MATH 2033, 2043, 2053
6 Chosen from courses in Humanities or Social Sciences as noted in Section 71.110. ESL courses and courses that focus on the acquisition of a language may not be used to meet this requirement.
15 ECP elective credits chosen from the following lists, depending on the student’s program:
  a) BCompSc (other than Joint Majors):
    15 elective credits chosen from outside the Gina Cody School of Engineering and Computer Science (see Note).
  b) Joint Major in Computation Arts and Computer Science:
    15 elective credits chosen from outside the Gina Cody School of Engineering and Computer Science and the Department of Design and Computation Arts (see Note).
  c) Joint Major in Mathematics and Statistics and Computer Science:
    15 elective credits chosen from outside the Gina Cody School of Engineering and Computer Science and the Department of Mathematics and Statistics (see Note).


Note: ECP elective credits may be chosen as follows:

  • General Education Electives found in §71.110.
  • Basic and Natural Science Courses found in §71.70.9.
  • Courses not included in the above lists may be taken with prior approval of the undergraduate program director.

71.70.4    Honours Program

Students should refer to §16.2.4 of the Calendar for academic regulations for the honours program. The following regulations are additional requirements for the Honours BCompSc program.

  1. Applications to enter an honours program must be submitted to the Office of the Associate Dean (Student Academic Services) at least three months before the start of the term in which the student wishes to enter an honours program.
  2. Students must complete at least 30 credits towards their degree before entering an honours program.
  3. Students who are required to withdraw from an honours program may continue in the BCompSc degree provided they are in acceptable or conditional standing according to the academic regulations in §71.10.3.

Course Requirements for Honours Programs
Honours students must fulfill the requirements of the BCompSc degree. In addition, to receive an honours degree:

  1. Students must have a final graduation GPA of at least 3.30.
  2. Students must successfully complete the course COMP 490 as one of the Computer Science electives for the BCompSc.
  3. Students must successfully complete at least six of the General Electives credits chosen from the list of Computer Science Electives with at least two of the following: COMP 339, COMP 465, and COMP or SOEN courses with a number between 6000 and 6951 not marked with (*).

71.70.5    Minor in Computer Science

NOTE: Admission profile is 10.12.

Minor in Computer Science Credits
COMP 228 System Hardware 3.00
COMP 232 Mathematics for Computer Science 3.00
COMP 248 Object‑Oriented Programming I 3.50
COMP 249 Object‑Oriented Programming II 3.50
COMP 352 Data Structures and Algorithms 3.00
  Computer Science Electives (see §71.70.2) 9.00
    _____
    25.00

Students who require any of the above courses as part of their major should replace these courses with elective courses chosen from the list of Computer Science Electives.


71.70.6    Programs Related to Computer Science

The Faculty of Fine Arts and the Department of Computer Science and Software Engineering offer the Joint Major in Computation Arts and Computer Science (see §71.80, and Fine Arts – Design and Computation Arts, §81.90). The Faculty of Arts and Science and the Department of Computer Science and Software Engineering offer the Joint Major in Mathematics and Statistics and Computer Science (see §71.85, and Arts and Science – Mathematics and Statistics, §31.200).


71.70.7    C.Edge (Career Edge) Option and Reflective Learning Courses

The C.Edge Option is administered through the Institute for Co-operative Education. See §24.
Students employed full-time in a computer science position during their non-study terms may have this C.Edge option listed on their official transcript and student record, provided they successfully complete the Reflective Learning course associated with this work term.
C.Edge work terms will be coded as COMP 107 and 207, and the associated Reflective Learning courses will be coded as COMP 108 and 208 respectively.
Students may only register for these courses with the permission of the Faculty.
The C.Edge terms COMP 107 and 207 carry no credit value and are used to indicate that the student is on a C.Edge term.
The COMP 108 and 208 C.Edge Reflective Learning courses are worth three credits and are marked on a pass/fail basis. They are above and beyond the credit requirements of the student’s program and are not transferable nor are they included in the full- or part-time assessment status.
Students studying for a co-op work term or CIADI term should not register for these C.Edge and Reflective Learning courses.


71.70.8    Curriculum for the Degree of BEng in Software Engineering

The Software Engineering program is built on the fundamentals of computer science, an engineering core, and a discipline core in Software Engineering to cover the engineering approach to all phases of the software process and related topics.
The curriculum builds on the traditional computer science core topics of computer mathematics, theory, programming methodology, and mainstream applications to provide the computing theory and practice which underlie the discipline. The engineering core covers basic science, professional topics, and introduces the engineering approach to problem solving. The program core in Software Engineering includes advanced programming techniques, software specification, design, architecture, as well as metrics, security, project management, and quality control. The electives cover a broad range of advanced topics, from formal methods to distributed systems.

Extended Credit Program
The requirements of the Extended Credit Program (ECP) are set out in Section 71.20.2.


71.70.9    Degree Requirements for the BEng in Software Engineering

Students registered in the Software Engineering program must complete a minimum of 120 credits during four years of full-time study. The program consists of the Engineering Core, Software Engineering Core, and electives.

Engineering Core (30.5 credits)
See §71.20.5

Software Engineering Core Credits
SOEN 228 System Hardware 4.00
SOEN 287 Web Programming 3.00
SOEN 321 Information Systems Security 3.00
SOEN 331 Formal Methods for Software Engineering 3.00
SOEN 341 Software Process and Practices 3.00
SOEN 342 Software Requirements and Deployment 3.00
SOEN 343 Software Architecture and Design 3.00
SOEN 345 Software Testing, Verification and
     Quality Assurance
3.00
SOEN 357 User Interface Design 3.00
SOEN 363 Data Systems for Software Engineers 3.00
SOEN 384 Management, Measurement and Quality Control 3.00
SOEN 385 Control Systems and Applications 3.00
SOEN 390 Software Engineering Team Design Project 3.50
SOEN 490 Capstone Software Engineering Design Project 4.00
  Computer Science Group 23.00
  Two Basic and Natural Science courses 6.00
    _____
    73.50

 

Computer Science Group Credits
COMP 232 Mathematics for Computer Science 3.00
COMP 248 Object‑Oriented Programming I 3.50
COMP 249 Object‑Oriented Programming II 3.50
COMP 335 Introduction to Theoretical Computer Science 3.00
COMP 346 Operating Systems 4.00
COMP 348 Principles of Programming Languages 3.00
COMP 352 Data Structures and Algorithms 3.00
    _____
    23.00

Basic and Natural Science Courses
Two Basic and Natural Science courses must be selected from the following, including at least one course marked *:

    Credits
BIOL 206* Elementary Genetics 3.00
BIOL 261* Molecular and General Genetics 3.00
CHEM 217* Introductory Analytical Chemistry I 3.00
CHEM 221* Introductory Organic Chemistry I 3.00
CIVI 231 Geology for Civil Engineers 3.00
ELEC 321 Introduction to Semiconductor Materials and Devices 3.50
ENGR 242 Statics 3.00
ENGR 243 Dynamics 3.00
ENGR 251 Thermodynamics I 3.00
ENGR 361 Fluid Mechanics I 3.00
MIAE 221* Materials Science 3.00
PHYS 252* Optics 3.00
PHYS 284* Introduction to Astronomy 3.00
PHYS 385* Astrophysics 3.00

Electives
Students in the Software Engineering program must complete at least 16 elective credits from the list of courses below.
Electives are also listed in groups to facilitate the selection of courses in a particular area of the field.

    Credits
AERO 480 Flight Control Systems 3.50
AERO 482 Avionic Navigation Systems 3.00
COEN 320 Introduction to Real‑Time Systems 3.00
COMP 333 Data Analytics 3.00
COMP 339 Combinatorics 3.00
COMP 345 Advanced Program Design with C++ 4.00
COMP 353 Databases 4.00
COMP 371 Computer Graphics 4.00
COMP 376 Introduction to Game Development 4.00
COMP 425 Computer Vision 4.00
COMP 426 Multicore Programming 4.00
COMP 428 Parallel Programming 4.00
COMP 432 Machine Learning 4.00
COMP 442 Compiler Design 4.00
COMP 444 System Software Design 4.00
COMP 445 Data Communication and Computer Networks 4.00
COMP 451 Database Design 4.00
COMP 465 Design and Analysis of Algorithms 3.00
COMP 472 Artificial Intelligence 4.00
COMP 473 Pattern Recognition 4.00
COMP 474 Intelligent Systems 4.00
COMP 475 Immersive Technologies 4.00
COMP 476 Advanced Game Development 4.00
COMP 477 Animation for Computer Games 4.00
COMP 478 Image Processing 4.00
COMP 479 Information Retrieval and Web Search 4.00
COMP 498 Topics in Computer Science 3.00
COMP 499 Topics in Computer Science with Lab 4.00
SOEN 298 System Hardware Lab 1.00
SOEN 344 Advanced Software Architecture and Design 3.00
SOEN 387 Web‑Based Enterprise Application Design 3.00
SOEN 422 Embedded Systems and Software 4.00
SOEN 423 Distributed Systems 4.00
SOEN 448 Management of Evolving Systems 3.00
SOEN 471 Big Data Analytics 4.00
SOEN 487 Web Services and Applications 4.00
SOEN 491 Software Engineering Project 1.00
SOEN 498 Topics in Software Engineering 3.00
SOEN 499 Topics in Software Engineering with Lab 4.00
ENGR 411 Special Technical Report 1.00

 

Computer Games Group Credits
COMP 345 Advanced Program Design with C++ 4.00
COMP 371 Computer Graphics 4.00
COMP 376 Introduction to Game Development 4.00
COMP 475 Immersive Technologies 4.00
COMP 476 Advanced Game Development 4.00
COMP 477 Animation for Computer Games 4.00

 

Data Engineering Group Credits
COMP 333 Data Analytics 3.00
COMP 353 Databases 4.00
COMP 432 Machine Learning 4.00
COMP 479 Information Retrieval and Web Search 4.00
SOEN 471 Big Data Analytics 4.00

 

Real‑Time, Embedded, and Avionics Software Group Credits
AERO 480 Flight Control Systems 3.50
AERO 482 Avionic Navigation Systems 3.00
COEN 320 Introduction to Real‑Time Systems 3.00
COMP 345 Advanced Program Design with C++ 4.00
COMP 444 System Software Design 4.00
SOEN 422 Embedded Systems and Software 4.00
SOEN 423 Distributed Systems 4.00

 

Web Services and Applications Group Credits
COMP 353 Databases 4.00
COMP 445 Data Communication and Computer Networks 4.00
COMP 479 Information Retrieval and Web Search 4.00
SOEN 387 Web‑Based Enterprise Application Design 3.00
SOEN 487 Web Services and Applications 4.00

71.70.10    Course Descriptions

Students from outside the Gina Cody School of Engineering and Computer Science who are not registered in a Computer Science program may not take more than five COMP courses numbered higher than 212.
Students from outside the Gina Cody School of Engineering and Computer Science who are registered for the Minor in Computer Science may not take more than 30 credits of COMP courses numbered higher than 212.


COMPUTER SCIENCE

COMP 108     Computer Science C.Edge Option Reflective Learning I (3 credits)
Prerequisite: Permission of the GCS. This course is a reflective learning module for students in their related field which is based on their academic requirements and their first C.Edge term.

COMP 208     Computer Science C.Edge Option Reflective Learning II (3 credits)
Prerequisite: COMP 108 and permission of the GCS. This course expands on the students’ second C.Edge term in their related field of study to further develop their knowledge and work-related skills.

COMP 218     Fundamentals of Programming (3 credits)
Prerequisite: MATH 201 or equivalent (no prior experience with computers is assumed). Computers and computing: problem solving with computers, basic data types, expressions, assignments, control structures, simple library functions, programmer-defined functions, arrays of basic types. Basic elements of object-oriented programming: classes, objects and methods. Lectures: three hours per week. Tutorial: one hour per week.
NOTE: Students who have received credit for COMP 248 or COEN 243 may not take this course for credit.
NOTE: This course may not be taken for credit in the regular undergraduate programs in the Gina Cody School of Engineering and Computer Science.

COMP 228     System Hardware (3 credits)
Prerequisite: COMP 248; MATH 203 or Cegep Mathematics 103 or NYA previously or concurrently; MATH 204 or Cegep Mathematics 105 or NYC previously or concurrently. Levels of system abstraction and von Neumann model. Basics of digital logic design. Data representation and manipulation. Instruction set architecture. Processor internals. Assembly language programming. Memory subsystem and cache management. I/O subsystem. Introduction to network organization and architecture. Lectures: three hours per week. Tutorial: two hours per week.
NOTE: Students who have received credit for SOEN 228 may not take this course for credit.

COMP 232     Mathematics for Computer Science (3 credits)
Prerequisite: MATH 203 or Cegep Mathematics 103 or NYA; MATH 204 or Cegep Mathematics 105 or NYC. Sets. Propositional logic and predicate calculus. Functions and relations. Elements of number theory. Mathematical reasoning. Proof techniques: direct proof, indirect proof, proof by contradiction, proof by induction. Lectures: three hours per week. Tutorial: two hours per week.
NOTE: Students who have received credit for COMP 238 or COEN 231 may not take this course for credit.

COMP 233     Probability and Statistics for Computer Science (3 credits)
Prerequisite: MATH 205 or Cegep Mathematics 203 or NYB. Combinatorics. Axioms of probability. Conditional probability. Discrete and continuous probability distributions. Expectation and moments. Hypothesis testing. Parameter estimation. Correlation and linear regression. Applications to computer science. Lectures: three hours per week. Tutorial: two hours per week.
NOTE: Students who have received credit for BIOL 322, ENGR 371, STAT 249, STAT 250, COMM 215, MAST 221, MAST 333 may not take this course for credit.

COMP 248     Object-Oriented Programming I (3.5 credits)
Prerequisite: MATH 204 or Cegep Mathematics 105 or NYC previously or concurrently. Introduction to programming. Basic data types, variables, expressions, assignments, control flow. Classes, objects, methods. Information hiding, public vs. private visibility, data abstraction and encapsulation. References. Arrays. Lectures: three hours per week. Tutorial: two hours per week. Laboratory: one hour per week.

COMP 249     Object-Oriented Programming II (3.5 credits)
Prerequisite: COMP 248; MATH 203 or Cegep Mathematics 103 or NYA; MATH 205 or Cegep Mathematics 203 or NYB previously or concurrently. Design of classes. Inheritance. Polymorphism. Static and dynamic binding. Abstract classes. Exception handling. File I/O. Recursion. Interfaces and inner classes. Graphical user interfaces. Generics. Collections and iterators. Lectures: three hours per week. Tutorial: two hours per week. Laboratory: one hour per week.

COMP 326     Computer Architecture (3 credits)
Prerequisite: COMP 346. Computer architecture models: control-flow and data-flow. Concurrency and locality, data dependency theory. Instruction level parallelism. Instruction scheduling. Pipelined processors. Vector processors. Thread level parallelism. Multiprocessors. Shared memory models. Coherence protocols. Interconnection networks. Performance issues. Advanced topics in contemporary computer architectures. Lectures: three hours per week. Tutorial: one hour per week.

COMP 333     Data Analytics (3 credits)
Prerequisite: COMP 233 or ENGR 371; COMP 352; ENCS 282. This course introduces the process of data analytics with the aid of examples from several disciplines. It covers data wrangling: extract-transform-load (ETL), cleaning, structuring, integration; data analytics activities: description, prescription, modelling, simulation, optimization, storytelling; and the Python ecosystem: language, libraries, and Jupyter environment. Lectures: three hours per week.

COMP 335     Introduction to Theoretical Computer Science (3 credits)
Prerequisite: COMP 232 or COEN 231; COMP 249 or COEN 244. Finite state automata and regular languages. Push-down automata and context-free languages. Pumping lemmas. Applications to parsing. Turing machines. Unde­cidability and decidability. Lectures: three hours per week. Tutorial: one hour per week.

COMP 339     Combinatorics (3 credits)
Prerequisite: COMP 232 or 18 credits in post-Cegep Mathematics. General principles of counting, permutations, combinations, identities, partitions, generating functions, Fibonacci numbers, Stirling numbers, Catalan numbers, principle of inclusion-exclusion. Graphs, subgraphs, isomorphism, Euler graphs, Hamilton paths and cycles, planar graphs, Kuratowski’s Theorem, trees, colouring, 5-colour theorem, matching, Hall’s theorem.
NOTE: Students who have received credit for MATH 339 may not take this course for credit.

COMP 345     Advanced Program Design with C++ (4 credits)
Prerequisite: COMP 352 previously or concurrently. Introduction to C++. I/O with stream classes. Pointers and their uses. The Standard Template Library (STL): containers, algorithms, iterators, adaptors, function objects. Class design: constructors, destructors, operator overloading, inheritance, virtual functions, exception handling, memory management. Advanced topics: libraries, locales, STL conventions, concurrency, template metaprogramming. Applications of C++: systems, engineering, games programming. Project. Lectures: three hours per week. Laboratory: two hours per week.

COMP 346     Operating Systems (4 credits)
Prerequisite: COMP 228 or SOEN 228; COMP 352. Fundamentals of operating system functionalities, design and implementation. Multiprogramming: processes and threads, context switching, queuing models and scheduling. Interprocess communication and synchronization. Principles of concurrency. Synchronization primitives. Deadlock detection and recovery, prevention and avoidance schemes. Memory management. Device management. File systems. Protection models and schemes. Lectures: three hours per week. Tutorial: one hour per week. Laboratory: two hours per week.
NOTE: Students who have received credit for COEN 346 may not take this course for credit.

COMP 348     Principles of Programming Languages (3 credits)
Prerequisite: COMP 249. Survey of programming paradigms: Imperative, functional, and logic programming. Issues in the design and implementation of programming languages. Declaration models: binding, visibility, and scope. Type systems, including static and dynamic typing. Parameter passing mechanisms. Hybrid language design. Lectures: three hours per week. Tutorial: one hour per week.

COMP 352     Data Structures and Algorithms (3 credits)
Prerequisite: COMP 232 previously or concurrently; COMP 249. Abstract data types: stacks and queues, trees, priority queues, dictionaries. Data structures: arrays, linked lists, heaps, hash tables, search trees. Design and analysis of algorithms: asymptotic notation, recursive algorithms, searching and sorting, tree traversal, graph algorithms. Lectures: three hours per week. Tutorial: one hour per week.
NOTE: Students who have received credit for COEN 352 may not take this course for credit.

COMP 353     Databases (4 credits)
Prerequisite: COMP 232 or COEN 231; COMP 352 or COEN 352. Introduction to database management systems. Conceptual database design: the entity-relationship model. The relational data model and relational algebra: functional dependencies and normalization. The SQL language and its application in defining, querying, and updating databases; integrity constraints; triggers. Developing database applications. Other data models: Datalog. Object-oriented data model and ODL. Semi-structured data. Project. Lectures: three hours per week. Tutorial: one hour per week. Laboratory: two hours per week.

COMP 354     Introduction to Software Engineering (4 credits)
Prerequisite: COMP 352; ENCS 282. Software development process models (e.g. linear vs. iterative). Project management; roles, activities and deliverables for each software life cycle phase. Requirements management: analysis, elicitation, and scope. Architecture, design and the mapping of requirements to design and design to implementation. Traceability. Software quality assurance: verification, validation and the role of testing. Maintenance and evolution. Project. Lectures: three hours per week. Tutorial: one hour per week. Laboratory: two hours per week.
NOTES: 1. Students who have received credit for SOEN 341 may not take this course for credit.
2. Students in the BEng in Software Engineering program may not take this course for credit.

COMP 361     Elementary Numerical Methods (3 credits)
Prerequisite: COMP 232, 249. Vector and matrix norms. Numerical methods for solving linear systems, Gaussian elimination, LU decomposition, error analysis. Numerical solution of nonlinear equations, Newton’s method, fixed point iterations. Interpolation and approximation, Taylor, Lagrange, Chebyshev and Legendre polynomials. Cubic spline interpolation. Numerical differentiation, numerical integration, Gauss quadrature. Discrete least-squares approximation. Initial value problems in ordinary differential equations, stiff differential equations. Boundary value problems in ordinary differential equations. Lectures: three hours per week. Tutorial: one hour per week.
NOTE: Students who have received credit for ENGR 391 or MAST 334 may not take this course for credit.

COMP 367     Techniques in Symbolic Computation (3 credits)
Prerequisite: COMP 232 or MAST 217; COMP 248 or MAST 234. Symbolic computation and its use in pure and applied mathematics, in particular in algebra, number theory, cryptography, coding theory, and combinatorics. Programming in a symbolic computing system (e.g. MAPLE).
NOTE: Students who have received credit for MAST 332 may not take this course for credit.

COMP 371     Computer Graphics (4 credits)
Prerequisite: COMP 232 or COEN 231; COMP 352 or COEN 352. Introduction to computer graphics and graphics hardware. Introduction to graphics API and graphics systems architecture. Mathematics of 2D and 3D transformations, and 2D and 3D viewing. Colour and basic rendering algorithms. Visual realism and visibility. Illumination and shading, global illumination techniques, and textures. Introduction to curves and surfaces, and 3D object modelling. Introduction to computer animation. Project. Lectures: three hours per week. Laboratory: two hours per week.

COMP 376     Introduction to Game Development (4 credits)
Prerequisite: COMP 371. Introduction to design and implementation aspects of computer gaming: basic game design, storytelling and narratives, and game genres. Virtual environments, 2D and 3D game engines, and game development tools. Character development, gameplay strategies, level design in games, and user interfaces. Architecture of game consoles, analog and digital controllers, and the incorporation of graphics, sound, and music in game implementations. Project. Lectures: three hours per week. Laboratory: two hours per week.

COMP 425     Computer Vision (4 credits)
This course introduces basic techniques and concepts in computer vision including image formation, grouping and fitting, geometric vision, recognition, perceptual organization, and the state-of-the art software tools. Students learn fundamental algorithms and techniques, and gain experience in programming vision-based components; in particular, how to program in OpenCV, a powerful software interface used to process data captured from passive and active sensors. A project is required. Laboratory: two hours per week.
NOTE: Students who have received credit for this topic under a COMP 498 or 499 number may not take this course for credit.

COMP 426     Multicore Programming (4 credits)
Prerequisite: COMP 346 or COEN 346. Fundamental concepts of computer architecture. Architecture of the selected multicore platform. Review of shared-memory parallel programming. The difficulties inherent to parallel programming. Scalability of program-
ming models. The stream programming model for multicore. Implicit and explicit threading. Implicit and explicit orchestration of data movement, both on chip and off. Adapting standard algorithms to multicore. Critical assessment of the available system-software support. Project. Lectures: three hours per week. Laboratory: two hours per week.

COMP 428     Parallel Programming (4 credits)
Prerequisite: COMP 346 or COEN 346. Parallel programming techniques as a natural extension to sequential programming. Overview of parallel programming architectures and models. Parallel programming issues: locality, granularity, scheduling, data decomposition and distribution, load balancing, communication and synchronization, determinacy and non-determinacy, cost and performance. Techniques and tools for message-passing parallel programming. Case studies. Project. Lectures: three hours per week. Tutorial: one hour per week. Laboratory: two hours per week.

COMP 432     Machine Learning (4 credits)
Prerequisite: COMP 352. This course introduces conceptual and practical aspects of machine learning. Concepts include regression, classification, maximum likelihood estimation, discriminative vs. generative modelling, generalization, supervised learning, unsupervised learning, semi-supervised learning and transfer learning. Methods include linear models, mixture models, nearest neighbours, support vector machines, random forests, boosting, and basics of deep learning. A project is required. Lectures: three hours per week. Laboratory: two hours per week.

COMP 442     Compiler Design (4 credits)
Prerequisite: COMP 228 or SOEN 228 or COEN 311; COMP 335; COMP 352 or COEN 352. Compiler organization and implementation: lexical analysis and parsing, syntax-directed translation, code optimization. Run-time systems. Project. Lectures: three hours per week. Laboratory: two hours per week.

COMP 444     System Software Design (4 credits)
Prerequisite: COMP 346. Detailed examination of the design, implementation and system call interface of a contemporary operating system: its kernel, file system, process and thread management including scheduling, file system design and implementation, memory management, device management, I/O management, interprocess communication and synchronization mechanisms, system call interface, interrupt handling, and other advanced issues. Project. Lectures: three hours per week. Laboratory: two hours per week.

COMP 445     Data Communication and Computer Networks (4 credits)
Prerequisite: COMP 346. Network architectures: OSI and Internet models. Link layer: error detection, multiple access protocols, addressing. Local area networks: Ethernet, ATM, switches and hubs. Network layer: forwarding and routing, IP, routing algorithms, multicast. Transport layer: connectionless and connection-oriented transport, reliable data transport, congestion control, QoS, UDP and TCP. Application layer: DNS, the web and http, file transfer, and email. Introduction to network security, multimedia protocols and wireless networking. Lectures: three hours per week. Laboratory: two hours per week.

COMP 451     Database Design (4 credits)
Prerequisite: COMP 353. Storage management. Buffer management. Data organization. Index structures. Query optimization and execution. Transaction management. Recovery. Concur­rency control. Database performance analysis and tuning. New trends in database technology. Project. Lectures: three hours per week. Laboratory: two hours per week.

COMP 465     Design and Analysis of Algorithms (3 credits)
Prerequisite: COMP 232 or COEN 231; COMP 339; COMP 352 or COEN 352. Order statistics: worst-case, average-case and amortized analysis. Algorithm design techniques: greedy algorithms, dynamic programming. Selected algorithms from graph theory, linear programming, number theory, string matching, and computational geometry. A survey of hard problems, NP-completeness, and approximation algorithms. Lectures: three hours per week.

COMP 472     Artificial Intelligence (4 credits)
Prerequisite: COMP 352 or COEN 352. This course initially describes the scope and history of Artificial Intelligence. Then it covers knowledge representation, heuristic search, game playing and planning. Finally, it introduces the topics of machine learning, genetic algorithms and natural language processing. A project is required. Lectures: three hours per week. Laboratory: two hours per week.

COMP 473     Pattern Recognition (4 credits)
Prerequisite: COMP 352. Preprocessing. Feature extraction and selection. Similarity between patterns and distance measurements. Syntactic and statistical approaches. Clustering analysis. Bayesian decision theory and discriminant functions. Neural networks and machine learning. Applications. Project. Lectures: three hours per week. Laboratory: two hours per week.

COMP 474     Intelligent Systems (4 credits)
Prerequisite: COMP 352 or COEN 352. Rule-based expert systems, blackboard architecture, and agent-based. Knowledge acquisition and representation. Uncertainty and conflict resolution. Reasoning and explanation. Design of intelligent systems. Project. Lectures: three hours per week. Laboratory: two hours per week.

COMP 475     Immersive Technologies (4 credits)
Prerequisite: COMP 371. This course covers the fundamentals of immersive technologies, a brief history and overview of immersive technologies, analyzes case studies of interactive experiences using immersive technologies, and identifies the main challenges of the current state of the art. Furthermore, it covers the basic principles of 3D graphics for creating virtual assets and environments, and basic concepts and technologies for interaction. A project provides hands-on experience in the design and development of interactive experiences with the user of immersive technologies. Lectures: three hours per week.

COMP 476     Advanced Game Development (4 credits)
Prerequisite: COMP 361 or ENGR 391; COMP 376. Introduction to advanced aspects of computer games. Game engine design. Artificial Intelligence (AI): non-player character movement, coordinated movement, pathfinding, world representations; decision making; tactical AI, strategic AI, learning in games. Physics-based techniques: collision detection and response. Networked gaming: multi-player games, networking and distributed game design, mobile gaming. Improving realism: cut scenes, 3D sound. Project. Lectures: three hours per week. Laboratory: two hours per week.

COMP 477     Animation for Computer Games (4 credits)
Prerequisite: COMP 361 or ENGR 391; COMP 371. Introduction to the algorithms, data structures, and techniques used in modelling and rendering dynamic scenes. Topics include principles of traditional animation, production pipeline, animation hardware and software, orientation representation and interpolation, modelling physical and articulated objects, forward and inverse kinematics, motion control and capture, key-frame, procedural, and behavioural animation, camera animation, scripting system, and free-form deformation. Project. Lectures: three hours per week. Laboratory: two hours per week.

COMP 478     Image Processing (4 credits)
Prerequisite: COMP 352. Digital image fundamentals, image transforms (Fourier, Walsh, Haar, Hotelling, wavelet), image enhancement (histogram processing, spatial filtering, high- and low-pass filtering), image restoration, image compression (elements of information theory, image compression models, error-free compression, lossy compression, image compression standards), image segmentation (line detection, Hough transform, edge detection and linking, thresholding, region splitting and merging), representation and description (chain codes, signatures, skeletons, shape descriptors, moments, texture). Project. Lectures: three hours per week. Laboratory: two hours per week.

COMP 479     Information Retrieval and Web Search (4 credits)
Prerequisite: COMP 233 or ENGR 371; COMP 352. Basics of information retrieval (IR): boolean, vector space and probabilistic models. Tokenization and creation of inverted files. Weighting schemes. Evaluation of IR systems: precision, recall, F-measure. Relevance feedback and query expansion. Application of IR to web search engines: XML, link analysis, PageRank algorithm. Text categorization and clustering techniques as used in spam filtering. Project. Lectures: three hours per week. Laboratory: two hours per week.

COMP 490     Computer Science Project I (3 credits)
Prerequisite: ENCS 282; completion of 60 credits; permission of the Department. Students work on a computer science project under the supervision of a faculty member and submit a suitable written report on the work carried out. Students planning to register for this course should consult with the Department prior to registration in the final year of study.
NOTE: Students can register for COMP 490 by itself or, with the permission of the Department, students can register for COMP 490 and 492 concurrently and carry out a major project.

COMP 492     Computer Science Project II (3 credits)
Prerequisite: COMP 490 previously or concurrently; permission of the Department. Students work on a computer science project under the supervision of a faculty member and submit a suitable written report on the work carried out. Students planning to register for this course should consult with the Department prior to registration in their final year of study.
NOTE: Students can register for COMP 492 by itself or, with the permission of the Department, students can register for COMP 490 and 492 concurrently and carry out a major project.

COMP 493     (also listed as BIOL 493)
Computational Biology Team Project
(6 credits)
Prerequisite: Minimum of 54 credits in the BCompSc in Health and Life Sciences program; BIOL 367; COMP 352; or permission of the Department. Students form teams or join existing teams (such as those in research labs) and work under faculty supervision to solve a computational biology research problem or to carry out a computational biology research project. The research problem or project involves the utilization of knowledge of biology and of computing, involves computing lab and/or wet lab practice and contributes to any of the areas of computational biology. The project fosters teamwork and allows students to develop their project management, technical writing and oral presentation skills.
NOTE: Students who have received credit for BIOL 493 may not take this course for credit.

COMP 495     Honours Seminar (1 credit)
Prerequisite: ENCS 282; registration in the final year of the honours program. Students are required to attend a number of departmental seminars and submit a written report on them.

COMP 498     Topics in Computer Science (3 credits)
Prerequisite: Permission of the Department. This course may be offered in a given year upon the authorization of the Department. The content may vary from offering to offering and will be chosen to complement the available elective courses. Lectures: three hours per week.

COMP 499     Topics in Computer Science with Lab (4 credits)
Prerequisite: Permission of the Department. This course may be offered in a given year upon the authorization of the Department. The content may vary from offering to offering and will be chosen to complement the available elective courses. Lectures: three hours per week. Laboratory: two hours per week.


SOFTWARE ENGINEERING

SOEN 228      System Hardware (4 credits)
Prerequisite: MATH 203 or Cegep Mathematics 103, MATH 204 or Cegep Mathematics 105. This course covers the following topics: Boolean Algebra, Digital logic and the design of logic circuits; CPU design; addressing modes; instruction sets and sequencing; design of datapath and control units; memory systems and types; cache memory levels; I/O devices and their interconnection to the CPU; assembly language, and Interrupts. Lectures: three hours per week. Tutorial: two hours per week. Laboratory: two hours per week.
NOTE: Students who have received credit for COMP 228 may not take this course for credit.

SOEN 287      Web Programming (3 credits)
Prerequisite: COMP 248. This course covers the following topics: internet architecture and protocols; web applications through clients and servers; modern HTML and CSS; client-side programming using modern JavaScript and an overview of the advantages of some common modern JavaScript libraries; Regular Expressions; static website contents and dynamic page generation through server-side programming; preserving state (client-side) in web applications; deploying static and dynamic websites and content management systems vs. website deployment. Lectures: three hours per week. Tutorial: two hours per week.

SOEN 298      System Hardware Lab (1 credit)
Prerequisite: Permission of the undergraduate program director. Digital design exercises including assembly and testing corresponding to the SOEN 228 lab. Laboratory: two hours per week.

SOEN 321      Information Systems Security (3 credits)
Prerequisite: COMP 346 or COEN 346. This course covers the following topics: introduction to cryptography and cryptanalysis; threats, attacks, and vulnerabilities; security services (confidentiality, authentication, integrity); public key systems including Diffie-Hellman, RSA, Rabin; Digital Signature Schemes; Hash functions and MAC schemes; authentication protocols; network layers and security; protocols; Public Key Infrastructure (PKI); Transport Layer Security (TLS); firewalls; Intrusion Detection Systems; DNS security; Denial of Service Attacks; Penetration testing; Online Privacy and anonymity; Mix networks and Onion Routing; TOR; Malware; Botnets; Spam and Hot topics in Security and Privacy. Lectures: three hours per week. Tutorial: one hour per week.

SOEN 331      Formal Methods for Software Engineering (3 credits)
Prerequisite: COMP 232, 249. This course covers the following topics: property-based (axiomatic and algebraic) formalisms and model-based (abstract and visual) formalisms; axiomatic formalisms with temporal logic, assertions and contracts; algebraic formalisms through algebraic specifications; abstract formalisms through the Z and Object-Z specification languages; visual formalisms through automata (finite state machines and extended finite state machines). Lectures: three hours per week. Tutorial: two hours per week.

SOEN 341      Software Process and Practices (3 credits)
Prerequisite: COMP 352 or COEN 352 previously or concurrently; ENCS 282 previously or concurrently. This course covers the following topics: basic principles of software engineering; introduction to software process, including activities, phases, organization, roles, teamwork, and conflict resolution; notations used in software engineering; software development practices, including documentation, modern version control, review, testing, agile, and continuous integration. Lectures: three hours per week. Tutorial: one hour per week.
NOTE: Students who have received credit for COMP 354 may not take this course for credit.

SOEN 342      Software Requirements and Deployment (3 credits)
Prerequisite: SOEN 341. This course covers the following topics: requirements engineering; eliciting and coping with changing and evolving requirements; deployment of a software system under real-life functional and non-functional requirements scenarios; understanding how requirements impact early-stage and deployed software systems through all phases of engineering, including design, implementation, test and verification, deployment, and evolution. A project is required. Lectures: three hours per week. Tutorial: one hour per week.

SOEN 343      Software Architecture and Design (3 credits)
Prerequisite: SOEN 341; SOEN 342 previously or concurrently. This course covers the following topics: from requirements to design to implementation; planned vs. evolutionary design and refactoring; model-driven design and Unified Modelling Language (UML); structural and behavioural design descriptions and specifications; general and domain-specific design principles, patterns and idioms; introduction to software architecture (styles and view models); design quality; architectural debt; design smells; refactoring Anti-Patterns to Patterns; design rationale. Lectures: three hours per week. Tutorial: one hour per week.

SOEN 344      Advanced Software Architecture and Design (3 credits)
Prerequisite: SOEN 343. This course covers the following topics: architectural activities, roles, and deliverables; architectural view models; architectural styles (including client-server, layered, pipes-and-filters, event-based, process control) and frameworks; architectural analysis and the interplay with requirements elicitation; notations for expressing architectural designs, structural and behavioural specifications; from architectural design to detailed design; domain specific architectures and design patterns; evaluation and performance estimation of designs; advanced object-oriented design patterns and idioms. Lectures: three hours per week. Tutorial: one hour per week.

SOEN 345      Software Testing, Verification and Quality Assurance (3 credits)
Prerequisite: SOEN 343 previously or concurrently. This course covers the following topics: unit testing and test-driven development; characterization testing and legacy system testing; mocking, dependency injection, and breaking system dependencies; integration and system testing; test planning and management; test order, prioritization, redundancy, and flaky tests; advanced topics including static analysis, bisection, and fuzzing; data migration testing and verification; continuous integration and delivery; DevOps testing and validation including darklaunching, A/B testing, feature toggles, and logging. Lectures: three hours per week. Tutorial: one hour per week.

SOEN 357      User Interface Design (3 credits)
Prerequisite: SOEN 341. This course covers the following topics: principles, standards and guidelines for user interface design; usability principles and user experience; standards and design rationale for user-centred design; task-centred design; rationalized design; usability engineering; user models; interface design process, including interface requirement gathering, conceptual design and prototyping, and evaluation; usability testing and analytic evaluation; data gathering and analysis techniques for qualitative and quantitative data; interface design documentation; design approaches for touch, gesture-based, and haptic interfaces. Lectures: three hours per week. Tutorial: one hour per week.

SOEN 363      Data Systems for Software Engineers (3 credits)
Prerequisite: COMP 352. This course covers the following topics: introduction to the current data ecosystem; relational databases; key-value databases; document databases; column databases; graph databases; RDF stores; parallel and distributed file systems, data processing engines; data stream analytics; and data infrastructure. Lectures: three hours per week. Tutorial: one hour per week.

SOEN 384      Management, Measurement and Quality Control (3 credits)
Prerequisite: ENCS 282; SOEN 341. Organization of large software development. Roles of team members, leaders, managers, stakeholders, and users. Tools for monitoring and controlling a schedule. Financial, organizational, human, and computational resources allocation and control. Project and quality reviews, inspections, and walkthroughs. Risk management. Communication and collaboration. Cause and effects of project failure. Project management via the Internet. Quality assurance and control. Lectures: three hours per week. Tutorial: one hour per week.

SOEN 385      Control Systems and Applications (3 credits)
Prerequisite: ENGR 213, 233. Mathematical modelling of dynamical systems; block diagrams; feedback; open and closed loops. Linear differential equations; time domain analysis; free, forced, and total response; steady state and transient response. Laplace transform and inverse transform; second order systems. Transfer functions and stability. Control system design: PID and root locus techniques. Computer simulation of control systems. Applications. Lectures: three hours per week. Tutorial: one hour per week.

SOEN 387      Web-Based Enterprise Application Design (3 credits)
Prerequisite: COMP 353 previously or concurrently; COMP 354 or SOEN 341; SOEN 287. This course covers the following topics: Hypertext Transfer Protocol (HTTP); client/server and layered architectures for Web-based Enterprise Applications (WEA); Application, Presentation, Domain and Data Source design patterns; Java servlets and Java Server Pages, and generating responses; authentication, security and transaction processing; system-level testing of web applications. Lectures: three hours per week. Tutorial: one hour per week.

SOEN 390      Software Engineering Team Design Project (3.5 credits)
Prerequisite: SOEN 345 and 357 previously or concurrently. Students work in teams to design and implement a software project from requirements provided by the coordinator. Each team will demonstrate the software and the testing of the software, and prepare adequate documentation for it. In addition, each team will generate a report based on the process of development. Lectures: two hours per week. Tutorial: one hour per week. Laboratory: three hours per week.

SOEN 422      Embedded Systems and Software (4 credits)
Prerequisite: COMP 346. This course covers the following topics: embedded computer system architectures; programming of interface and peripheral control registers; analog to digital conversion and motor control using pulse width modulation; interrupts, communication methods and their application to interface control and multi-computer systems; architecture and operating systems of advanced embedded designs; design and testing of integrated systems; advanced topics. Lectures: three hours per week. Tutorial one hour per week. Laboratory: two hours per week.
NOTE: Students who have received credit for COEN 421 may not take this course for credit.

SOEN 423      Distributed Systems (4 credits)
Prerequisite: COMP 346. This course covers the following topics: principles of distributed computing including scalability, transparency, concurrency, consistency, fault tolerance, high availability; client-server interaction technologies including interprocess communication, sockets, group communication, remote procedure call, remote method invocation, object request broker, web services; server design techniques including process replication, fault tolerance through passive replication, high availability through active replication, coordination and agreement, transactions and concurrency control. Lectures: three hours per week. Tutorial one hour per week. Laboratory: two hours per week.

SOEN 448      Management of Evolving Systems (3 credits)
Prerequisite: SOEN 342, 343. This course covers the following topics: software maintenance (corrective, perfective, and adaptive); software reuse; construction of reusable software; techniques for reverse engineering and re-engineering software; software development as “growing” software; long-term evolution of existing software systems. Lectures: three hours per week.

SOEN 471      Big Data Analytics (4 credits)
Prerequisite: COMP 352. This course focuses on the fundamentals of the big data terminology, concepts and technologies. For the technical aspects of big data management systems, the course focuses on big data engines, programming models and file systems. Specific techniques covered include supervised classification, recommender systems, data clustering, frequent itemsets mining, similarity search, data streams and graph analysis. A project provides extensive hands-on experience. Lectures: three hours per week. Laboratory: two hours per week.

SOEN 487      Web Services and Applications (4 credits)
Prerequisite: SOEN 387. This course covers the following topics: analysis and design of web services and applications; advanced architectures for the design, deployment, and testing of large multi-server web services and applications; Service Oriented Architecture (SOA); Electronic Commerce; security; load balancing; stress testing. Lectures: three hours per week. Tutorial: one hour per week. Laboratory: two hours per week.

SOEN 490      Capstone Software Engineering Design Project (4 credits)
Prerequisite: 75 credits in the program; SOEN 390. Students work in teams of at least four members to construct a significant software application. The class meets at regular intervals. Team members will give a presentation of their contribution to the project. Lectures: one hour per week. Laboratory: two hours per week. Two terms.

SOEN 491      Software Engineering Project (1 credit)
Prerequisite: Permission of the undergraduate program director. Theoretical or practical project in an advanced topic in software engineering.

SOEN 498      Topics in Software Engineering (3 credits)
Prerequisite: Permission of the Department. This course may be offered in a given year upon the authorization of the Department. The content may vary from offering to offering and will be chosen to complement the available elective courses. Lectures: three hours per week.

SOEN 499      Topics in Software Engineering with Lab (4 credits)
Prerequisite: Permission of the Department. This course may be offered in a given year upon the authorization of the Department. The content may vary from offering to offering and will be chosen to complement the available elective courses. Lectures: three hours per week. Laboratory: two hours per week.





2021-2022 Concordia University Undergraduate Calendar

Back to top Back to top

© Concordia University