Section 71.70.10 Computer Science and Software Engineering Courses

Computer Science Courses

Notes

Prerequisite/Corequisite: Permission of the GCS is required.

Description: 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.

Component(s): Lecture

Prerequisite/Corequisite: The following course must be completed previously: COMP 108. Permission of the GCS is required.

Description: 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.

Component(s): Lecture

Prerequisite/Corequisite: The following course must be completed previously: MATH 201 or equivalent. No prior experience with computers is assumed.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week

Notes:
  • This course may not be taken for credit in the regular undergraduate programs in the Gina Cody School of Engineering and Computer Science.

  • Students who have received credit for COMP 248 or COEN 243 may not take this course for credit.

Prerequisite/Corequisite:

The following course must be completed previously: COMP 248. The following courses must be completed previously or concurrently: MATH 203 or Cegep Mathematics 103 or NYA; MATH 204 or Cegep Mathematics 105 or NYC.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 2 hours per week

Notes:
  • Students who have received credit for SOEN 228 may not take this course for credit.

Prerequisite/Corequisite: The following courses must be completed previously: MATH 203 or Cegep Mathematics 103 or NYA; MATH 204 or Cegep Mathematics 105 or NYC.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 2 hours per week

Notes:
  • Students who have received credit for COMP 238 or COEN 231 may not take this course for credit.

Prerequisite/Corequisite: The following course must be completed previously: MATH 205 or Cegep Mathematics 203 or NYB.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 2 hours per week

Notes:

Prerequisite/Corequisite: The following courses must be completed previously or concurrently: MATH 204 or Cegep Mathematics 105 or NYC.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 2 hours per week; Laboratory 1 hour per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 248; MATH 203 or Cegep Mathematics 103 or NYA. The following courses must be completed previously or concurrently: MATH 205 or Cegep Mathematics 203 or NYB.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 2 hours per week; Laboratory 1 hour per week

Prerequisite/Corequisite: The following course must be completed previously: COMP 346.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 233 or ENGR 371; COMP 352; ENCS 282.

Description: 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 232 or COEN 231; and COMP 249 or COEN 244.

Description: Finite state automata and regular languages. Push‑down automata and context‑free languages. Pumping lemmas. Applications to parsing. Turing machines. Undecidability and decidability.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week

Prerequisite/Corequisite: The following course must be completed previously: COMP 232; or students must complete have completed 18 credits in post‑Cegep Mathematics prior to enrolling.

Description: 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.

Component(s): Lecture; Tutorial

Notes:
  • Students who have received credit for MATH 339 may not take this course for credit.

Prerequisite/Corequisite: The following course must be completed previously or concurrently: COMP 352.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 2 hours per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 228 or SOEN 228; COMP 352.

Description: 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.

Component(s): Lecture 2 hours per week

Notes:
  • Students who have received credit for COEN 346 may not take this course for credit.

Prerequisite/Corequisite: The following courses must be completed previously or concurrently: COMP 249.

Description: 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.

Component(s): Lecture 2 hours per week; Tutorial 1 hour per week

Prerequisite/Corequisite: The following course must be completed previously or concurrently: COMP 232. The following courses must be completed previously: COMP 249.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week

Notes:
  • Students who have received credit for COEN 352 may not take this course for credit.

Prerequisite/Corequisite: The following courses must be completed previously: COMP 232 or COEN 231; and COMP 352 or COEN 352.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 352; ENCS 282.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week; Laboratory 2 hour per week

Notes:
  • Students who have received credit for SOEN 341 may not take this course for credit. Students in the BEng in Software Engineering program may not take this course for credit.

Prerequisite/Corequisite: The following courses must be completed previously: COMP 232, COMP 249.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week

Notes:
  • Students who have received credit for ENGR 391 or MAST 334 may not take this course for credit.

Prerequisite/Corequisite: The following courses must be completed previously: COMP 232 or MAST 217; COMP 248 or MAST 234.

Description: 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).

Component(s): Lecture

Notes:
  • Students who have received credit for MAST 332 may not take this course for credit.

Prerequisite/Corequisite: The following courses must be completed previously: COMP 232 or COEN 231; COMP 352 or COEN 352.

Description: 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 371.

Description: 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Description: 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.

Component(s): Laboratory 2 hours per week

Notes:
  • Students who have received credit for this topic under a COMP 498 or COMP 499 number may not take this course for credit.

Prerequisite/Corequisite: The following courses must be completed previously: COMP 346 or COEN 346.

Description: 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 programming 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 346 or COEN 346.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following course must be completed previously: COMP 352.

Description: 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite:

The following course must be completed previously: COMP 352.

Description:

This course introduces conceptual and practical aspects of deep learning and their implementation in software. Topics covered include commonly used deep learning model architectures, loss functions, regularization, optimization methods, and a strong emphasis is placed on review of their foundations and use of software tools such as pytorch, jax, and tensorflow to implement and/or apply these models. Applications in computer vision and natural language processing are covered. A final project is required.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite:

The following course must be completed previously: COMP 352.

Description:

This course exposes students to the geometric modelling pipeline. It includes topics such as efficient mesh data structures such as half-edge and cornertable, digital differential geometry, spectral mesh processing, discrete modelling tools and analytic modelling tools (B-Splines, Bezier and subdivision surfaces), optimization-driven modelling and simulation, 3D shape acquisition, 3D printing and prototyping. Application-related topics are discussed such as smoothing, resampling, compression, as well as deep neural network architectures for geometric data and modelling problems. A project is required.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 228 or SOEN 228 or COEN 311; COMP 335; COMP 352 or COEN 352.

Description: Compiler organization and implementation: lexical analysis and parsing, syntax‑directed translation, code optimization. Run‑time systems. Project.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 346.

Description: 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 346.

Description: 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 353.

Description: Storage management. Buffer management. Data organization. Index structures. Query optimization and execution. Transaction management. Recovery. Concurrency control. Database performance analysis and tuning. New trends in database technology. Project.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 232 or COEN 231; COMP 339; COMP 352 or COEN 352.

Description: 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.

Component(s): Lecture 3 hours per week

Prerequisite/Corequisite: The following course must be completed previously: COMP 352 or COEN 352.

Description: 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 352.

Description: 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following course must be completed previously: COMP 352 or COEN 352.

Description: 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following course must be completed previously: COMP 371.

Description: 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.

Component(s): Lecture 3 hours per week

Prerequisite/Corequisite: The following course must be completed previously: COMP 361 or ENGR 391; COMP 376.

Description: 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 361 or ENGR 391, COMP 371.

Description: 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 352.

Description: 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 233 or ENGR 371; COMP 352.

Description: 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be completed previously: ENCS 282. Students must complete 60 credits prior to enrolling. Permission of the Department is required.

Description: 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.

Component(s): Lecture

Notes:
  • 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.

Prerequisite/Corequisite: The following courses must be completed previously or concurrently: COMP 490. Permission of the Department is required.

Description: 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.

Component(s): Lecture

Notes:
  • Students can register for COMP 492 by itself or, with the permission of the Department, students can register for COMP 490 and COMP 492 concurrently and carry out a major project.

(also listed as BIOL 493)

Prerequisite/Corequisite: The following courses must be completed previously: BIOL 367; COMP 352. Students must complete a minimum of 54 credits in the BCompSc in Health and Life Sciences program prior to enrolling. If prerequisites are not satisfied, permission of the Department is required.

Description: 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.

Component(s): Research

Notes:
  • Students who have received credit for BIOL 493 may not take this course for credit.

Prerequisite/Corequisite: The following courses must be completed previously: ENCS 282. Registration in the final year of the honours program is required.

Description: 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.

Component(s): Seminar

Prerequisite/Corequisite: Permission of the Department is required.

Description: 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.

Component(s): Lecture 3 hours per week

Prerequisite/Corequisite: Permission of the Department is required.

Description: The content may vary from offering to offering and will be chosen to complement the available elective courses.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Software Engineering Courses

Prerequisite/Corequisite: The following courses must be completed previously: MATH 203 or Cegep Mathematics 103, MATH 204 or Cegep Mathematics 105.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 2 hours per week; Laboratory 2 hours per week

Notes:
  • Students who have received credit for COMP 228 may not take this course for credit.

Prerequisite/Corequisite: The following course must be completed previously: COMP 248.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 2 hours per week

Prerequisite/Corequisite: Permission of the undergraduate program director is required.

Description: Digital design exercises including assembly and testing corresponding to the SOEN 228 lab.

Component(s): Laboratory 2 hours per week

Prerequisite/Corequisite: The following course must be completed previously: COMP 346 or COEN 346.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week

Prerequisite/Corequisite: The following courses must be completed previously: COMP 232, COMP 249.

Description: 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).

Component(s): Lecture 3 hours per week; Tutorial 2 hours per week

Prerequisite/Corequisite:

The following courses must be completed previously or concurrently: COMP 352 or COEN 352; ENCS 282.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week

Notes:
  • Students who have received credit for COMP 354 may not take this course for credit.

Prerequisite/Corequisite: The following course must be completed previously: SOEN 341.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week

Prerequisite/Corequisite: The following courses must be completed previously or concurrently: SOEN 341; SOEN 342.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week

Prerequisite/Corequisite: The following course must be completed previously: SOEN 343.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week

Prerequisite/Corequisite: The following courses must be completed previously or concurrently: SOEN 343.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week

Prerequisite/Corequisite: The following course must be completed previously: SOEN 341 or COMP 354.

Description:

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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week

Prerequisite/Corequisite: The following course must be completed previously: COMP 352.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week

Prerequisite/Corequisite: The following courses must be completed previously: ENCS 282; SOEN 341.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week

Prerequisite/Corequisite: The following courses must be completed previously: ENGR 213, ENGR 233.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week

Prerequisite/Corequisite: The following course must be completed previously or concurrently: COMP 353 or SOEN 363. The following course must be completed previously: COMP 354 or SOEN 341; SOEN 287.

Description: This course introduces Hypertext Transfer Protocol (HTTP), and client/server and layered architectures for Web-based Enterprise Applications (WEA). The course covers Application, Presentation, Domain and Data Source design patterns. Students learn how to use Java servlets and Java Server Pages. The course also covers authentication, security and transaction processing, as well as system-level testing of web applications.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week

Prerequisite/Corequisite: The following courses must be completed previously or concurrently: SOEN 345 and SOEN 357.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week; Laboratory 3 hours per week

Prerequisite/Corequisite: The following course must be completed previously: COMP 346.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week; Laboratory 2 hours per week

Notes:
  • Students who have received credit for COEN 421 may not take this course for credit.

Prerequisite/Corequisite: The following course must be complete previously: COMP 346.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be complete previously: SOEN 342, SOEN 343.

Description: 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.

Component(s): Lecture 3 hours per week

Prerequisite/Corequisite: The following course must be complete previously: COMP 352.

Description: 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be complete previously: SOEN 387.

Description: 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.

Component(s): Lecture 3 hours per week; Tutorial 1 hour per week; Laboratory 2 hours per week

Prerequisite/Corequisite: The following courses must be completed previously: SOEN 390. Students must have completed 75 credits in the program prior to enrolling.

Description: 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

Prerequisite/Corequisite: Permission of the undergraduate program director is required.

Description: Theoretical or practical project in an advanced topic in software engineering.

Component(s): Lecture

Prerequisite/Corequisite: Permission of the undergraduate program director is required.

Description: 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.

Component(s): Lecture 3 hours per week.

Prerequisite/Corequisite: Permission of the Department is required.

Description: 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.

Component(s): Lecture 3 hours per week; Laboratory 2 hours per week

© Concordia University