Academic Calendar - 2024

Western University Academic Calendar. - 2024

Courses


Course Numbering

0001-0999* Pre-University level introductory courses
1000-1999 Year 1 courses
2000-4999 Senior-level undergraduate courses
5000-5999 Professional Degree courses in Dentistry, Education, Law, Medicine and Theology (MTS, MDiv)
6000-6999 Courses offered by Continuing Studies
9000-9999 Graduate Studies courses

* These courses are equivalent to pre-university introductory courses and may be counted for credit in the student's record, unless these courses were taken in a preliminary year. They may not be counted toward essay or breadth requirements, or used to meet modular admission requirements unless it is explicitly stated in the Senate-approved outline of the module.


Suffixes

no suffix 1.0 course not designated as an essay course
A 0.5 course offered in first term
B 0.5 course offered in second term
A/B 0.5 course offered in first and/or second term
E 1.0 essay course
F 0.5 essay course offered in first term
G 0.5 essay course offered in second term
F/G 0.5 essay course offered in first and/or second term
H 1.0 accelerated course (8 weeks)
J 1.0 accelerated course (6 weeks)
K 0.75 course
L 0.5 graduate course offered in summer term (May - August)
Q/R/S/T 0.25 course offered within a regular session
U 0.25 course offered in other than a regular session
W/X 1.0 accelerated course (full course offered in one term)
Y 0.5 course offered in other than a regular session
Z 0.5 essay course offered in other than a regular session

Glossary


Prerequisite

A course that must be successfully completed prior to registration for credit in the desired course.


Corequisite

A course that must be taken concurrently with (or prior to registration in) the desired course.


Antirequisite

Courses that overlap sufficiently in course content that both cannot be taken for credit.


Essay Courses

Many courses at Western have a significant writing component. To recognize student achievement, a number of such courses have been designated as essay courses and will be identified on the student's record (E essay full course; F/G/Z essay half-course).


Principal Courses

A first year course that is listed by a department offering a module as a requirement for admission to the module. For admission to an Honours Specialization module or Double Major modules in an Honours Bachelor degree, at least 3.0 courses will be considered principal courses.



Campus




Course Level






Course Type




Computer Science


This introductory computer science course covers core concepts such as logic, proofs, number systems, and probability theory, linking theory to practical applications. It highlights various Computer Science streams and their real-world uses, preparing students for second-year courses and guiding their future academic and career paths.

Prerequisite(s): (Ontario Secondary School MHF4U and Ontario Secondary School MCV4U) or Mathematics 0110A/B; and registration in the Computer Science Program or completion of first-year requirements.

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
The nature of Computer Science as a discipline; the design and analysis of algorithms and their implementation as modular, reliable, well-documented programs written in a modern programming language. Intended for students with significant programming experience in at least one high-level block-structured or object-oriented language.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
The nature of Computer Science as a discipline; the design and analysis of algorithms and their implementation as modular, reliable, well-documented programs written in a modern programming language. Intended for students with little or no background in programming.


Extra Information: 3 lecture hours, 2 laboratory/tutorial hours.

Course Weight: 0.50
More details
Return to top
A continuation for both Computer Science 1025A/B and Computer Science 1026A/B. Data organization and manipulation; abstract data types and their implementations in a modern programming language; lists, stacks, queues, trees; recursion; file handling and storage.


Prerequisite(s): Computer Science 1025A/B, Computer Science 1026A/B, Data Science 1200A/B, or Engineering Science 1036A/B, (in each case with a mark of at least 65%).

Extra Information: 3 lecture hours, 1 laboratory/tutorial hour.

Course Weight: 0.50
More details
Return to top
Techniques used for determining technological needs of businesses; building and managing systems to meet those needs; development roles of individuals and organizations; planning and management of concepts, personnel and processes; related software tools (spreadsheets, databases). Intended primarily for Management and Organizational Studies students.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
This course explores the use of different types of media (e.g., text, images, sound, animation) to convey ideas and facilitate interaction. Topics include the design and use of a range of software tools for media creation and editing, covering image, sound, animation and video. This knowledge will be applied to authoring web sites.

Extra Information: 2 lecture hours, 2 laboratory/tutorial hours.

Course Weight: 0.50
More details
Return to top
A continuation for Engineering Science 1036A/B. Data organization and manipulation; abstract data types and their implementations in the C programming language; lists, stacks, queues, trees; pointers; recursion; file handling and storage. Intended for students in the Faculty of Engineering.


Prerequisite(s): Engineering Science 1036A/B.

Extra Information: 3 lecture hours, 2 laboratory/tutorial hour.

Course Weight: 0.50
More details
Return to top
Foundations of app development for the web and mobile devices. An introduction to basic programming and scripting concepts, and technologies such as JavaScript, HTML, and CSS, which will be used to create a variety of apps and games. This course is intended for students with no prior programming or computing background.


Extra Information: 2 lecture hours, 2 laboratory/tutorial hours.

Course Weight: 0.50
More details
Return to top
This course continues the exploration of popular media and Internet technologies. Topics include advanced photo editing techniques; website development with HTML, CSS, and JavaScript; making websites more interactive; form validation; Bootstrap websites; and the significance of CMS's and e-commerce platforms.


Prerequisite(s): Computer Science 1033A/B.

Extra Information: 2 lecture hours, 2 laboratory/tutorial hours.

Course Weight: 0.50
More details
Return to top
A comprehensive and interdisciplinary introduction to data analytics using modern computing systems, with equal attention to fundamentals and practical aspects. Topics include sources of data, data formats and transformation, usage of spreadsheets and databases, statistical analysis, pattern recognition, data mining, big data, and methods for data presentation and visualization.


Extra Information: 2 lecture hours, 2 laboratory/tutorial hours.

Course Weight: 0.50
More details
Return to top
Essential skills and computational tools for working with data from a number of disciplines. Uses MATLAB for data analysis and visualization through basic statistics, numerical computing, and programming, with interdisciplinary applications ranging from image processing to financial computing, and more. Suitable for both Computer Science and non-Computer Science students.

Antirequisite(s): Earth Sciences 2222A/B.

Prerequisite(s): 0.5 course in Applied Mathematics, Calculus, Mathematics, Statistics (including Introductory Statistics) at the 1000-level or above.

Extra Information: 3 lecture hours, 1 laboratory/tutorial hour.

Course Weight: 0.50
More details
Return to top
Essential information processing and coding skills for students. Includes core concepts of algorithms and data structures; creating programs and scripts to address problems that arise in applied research; examples of data sets and analyses drawn from a variety of disciplines. No previous programming background assumed.


Extra Information: 3 lecture hours, 2 laboratory/tutorial hours.

Course Weight: 0.50
More details
Return to top
An overview of core data structures and algorithms in computing, with a focus on applications to informatics and analytics in a variety of disciplines. Includes lists, stacks, queues, trees, graphs, and their associated algorithms; sorting, searching, and hashing techniques. Suitable for non-Computer Science students.


Prerequisite(s): Computer Science 2120A/B, Digital Humanities 2220A/B, Computer Science 1026A/B with a mark of at least 60% and registration in Medical Sciences First Entry, or Integrated Science 1001X with at least 60%.

Extra Information: 3 lecture hours, 1 laboratory/tutorial hours.

Course Weight: 0.50
More details
Return to top
This course gives an understanding of what a modern computer can do. It covers the internal representation of various data types and focuses on the architectural components of computers (how these components are interconnected and the nature of the information flow between them). Assembly language is used to reinforce these issues.

Prerequisite(s): Computer Science 1027A/B, Computer Science 1037A/B, or the former Computer Science 2101A/B, in each case with at least 65%; or Integrated Science 1001X with at least 60%.

Extra Information: 3 lecture hours, 1 laboratory hour, 1 tutorial hour.

Course Weight: 0.50
More details
Return to top
Propositional and predicate logic; representing static and dynamic properties of real-world systems; logic as a tool for representation, reasoning and calculation; logic and programming.

Prerequisite(s): Either 1) Computer Science 1027A/B, Computer Science 1037A/B, the former Computer Science 2101A/B, Computer Science 2121A/B or Digital Humanities 2221A/B in each case with at least 65%, and 1.0 course with at least 60% in each from: Applied Mathematics 1201A/B, Numerical and Mathematical Methods 1411A/B, Numerical and Mathematical Methods 1412A/B, Numerical and Mathematical Methods 1414A/B, Calculus 1000A/B, Calculus 1301A/B, Calculus 1500A/B, Calculus 1501A/B, Mathematics 1600A/B, the former Applied Mathematics 1411A/B, the former Applied Mathematics 1412A/B, the former Applied Mathematics 1414A/B, the former Applied Mathematics 1413; or 2) Integrated Science 1001X with at least 60%.

Extra Information: 3 lecture hours, 1 laboratory/tutorial hour.

Course Weight: 0.50
More details
Return to top
Lists, stacks, queues, priority queues, trees, graphs, and their associated algorithms; file structures; sorting, searching, and hashing techniques; time and space complexity.

Antirequisite(s): Software Engineering 2205A/B.

Prerequisite(s): Either 1) Computer Science 1027A/B, Computer Science 1037A/B, the former Computer Science 2101A/B, Computer Science 2121A/B or Digital Humanities 2221A/B in each case with at least 65%, and 1.0 course with at least 60% in each from: Applied Mathematics 1201A/B, Numerical and Mathematical Methods 1411A/B, Numerical and Mathematical Methods 1412A/B, Numerical and Mathematical Methods 1414A/B, Calculus 1000A/B, Calculus 1301A/B, Calculus 1500A/B, Calculus 1501A/B, Mathematics 1600A/B, the former Applied Mathematics 1411A/B, the former Applied Mathematics 1412A/B, the former Applied Mathematics 1414A/B, the former Applied Mathematics 1413; or 2) Integrated Science 1001X with at least 60%.

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
An introduction to software tools and systems programming. Topics include: understanding how programs execute (compilation, linking and loading); an introduction to a complex operating system (UNIX); scripting languages; the C programming language; system calls; memory management; libraries; multi-component program organization and builds; version control; debuggers and profilers.

Prerequisite(s): Either 1) Computer Science 1027A/B, Computer Science 1037A/B, or the former Computer Science 2101A/B, in each case with a mark of at least 65% or 2) Integrated Science 1001X with at least 60%.

Extra Information: 3 lecture hours, 1 laboratory/tutorial hour.

Course Weight: 0.50
More details
Return to top
A team project course that provides practical experience in the software engineering field. Introduction to the structure and unique characteristics of large software systems, and concepts and techniques in the design, management and implementation of large software systems.

Antirequisite(s): Software Engineering 2203A/B if taken before the 2022-2023 academic year.


Extra Information: 3 lecture/tutorial hours.

Course Weight: 0.50
More details
Return to top
This course presents an introduction to the mathematical foundations of computer science, with an emphasis on mathematical reasoning, combinatorial analysis, discrete structures, applications and modeling, and algorithmic thinking. Topics include sets, functions, relations, algorithms, number theory, matrices, mathematical reasoning, counting, graphs and trees.


Prerequisite(s): Either 1) Computer Science 1027A/B, Computer Science 1037A/B, or the former Computer Science 2101A/B, in each case with at least 65%, and 1.0 course with at least 60% in each from: Applied Mathematics 1201A/B, Numerical and Mathematical Methods 1411A/B, Numerical and Mathematical Methods 1412A/B, Numerical and Mathematical Methods 1414A/B, Calculus 1000A/B, Calculus 1301A/B, Calculus 1500A/B, Calculus 1501A/B, Mathematics 1600A/B, the former Applied Mathematics 1411A/B, the former Applied Mathematics 1412A/B, the former Applied Mathematics 1414A/B, the former Applied Mathematics 1413; or 2) Integrated Science 1001X with at least 60%.

Extra Information: 3 lecture hours, 1 laboratory/tutorial hour.

Course Weight: 0.50
More details
Return to top
A study of relational databases. Theoretical concepts will be covered, including relational algebra and relational calculus. Commercially available database systems will be used to demonstrate concepts such as Structured-Query-Language (SQL), writing code to connect and query a database, query optimization, Atomicity-Consistency-Isolation-Durability (ACID) concepts, and database design.



Extra Information: 3 lecture hours

Course Weight: 0.50
More details
Return to top
An introduction to artificial intelligence, focused on its application to informatics and analytics. Topics include knowledge representation; logic and reasoning; searching; inferencing; expert systems. Suitable for non Computer Science students.

Antirequisite(s): Computer Science 3346A/B.

Prerequisite(s): Computer Science 2121A/B.

Extra Information: 3 lecture hours..

Course Weight: 0.50
More details
Return to top
Survey of major operating systems; interprocess communication; multi-tasking; scheduling; memory management; performance and measurement issues; trade-offs in operating system design; concurrency and deadlock.

Antirequisite(s): Software Engineering 3313A/B.

Prerequisite(s): Either (Computer Science 2208A/B and Computer Science 2211A/B) or (the former Computer Science 2101A/B and Computer Science 2208A/B) or (Computer Science 2210A/B, Computer Science 2211A/B, ECE 3375A/B, and registration in the fourth year of a BESc program in Computer Engineering or Mechatronic Systems Engineering.)

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Software design and analysis techniques with particular emphasis on object-oriented design and analysis; a team project will be developed using an object-oriented language such as Java, C++ or Smalltalk.

Antirequisite(s): Software Engineering 3350A/B if taken before the 2022-2023 academic year.

Prerequisite(s): Either (Computer Science 2212A/B/Y) or (Computer Science 2210A/B, Computer Science 2211A/B, Electrical and Computer Engineering 3375A/B,and registration in the fourth year of a BESc program in Computer Engineering or Mechatronic Systems Engineering.)

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
A study of relational databases. Theoretical concepts will be covered, including relational algebra and relational calculus. Commercially available database systems will be used to demonstrate concepts such as Structured-Query-Language (SQL), writing code to connect and query a database, query optimization, Atomicity-Consistency-Isolation-Durability (ACID) concepts, and database design.



Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Languages as sets of strings over an alphabet; operations on languages; finite automata, regular expressions; language hierarchy; Turing machines; models of computation.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Special topics on the frontiers of Computer Science. The topic may vary each year.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Special topics on the frontiers of Computer Science. The topic may vary each year.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Special topics on the frontiers of Computer Science. The topic may vary each year.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Upper and lower time and space bounds; levels of intractability; graph algorithms; greedy algorithms; dynamic algorithms; exhaustive search techniques; parallel algorithms.

Prerequisite(s): Computer Science 2210A/B and Computer Science 2211A/B; Computer Science 2214A/B or Mathematics 2155F/G; or registration in the fourth year of a BESc program in Computer Engineering.

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Specification and analysis of programming languages; data types and structures; bindings and access structures; run-time behavior of programs; compilation vs. interpretation. Comparative presentation of at least three programming languages addressing the above concepts.


Extra Information: 3 lecture hours. Completion of Computer Science 3331A/B prior to enrolling in Computer Science 3342A/B is recommended but not required.

Course Weight: 0.50
More details
Return to top
Introduction to Artificial Intelligence; logic programming; heuristic search; knowledge representation; expert systems.

Antirequisite(s): Computer Science 3121A/B.

Prerequisite(s): Either (Computer Science 2210A/B and Computer Science 2211A/B) or (Software Engineering 2203A/B, Software Engineering 2205A/B and Software Engineering 2250A/B); Computer Science 2209A/B, or registration in a BESc program in Computer Engineering, Mechatronic Systems Engineering, or Software Engineering.

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Topics include: semiconductor technologies, gates and circuits, buses, semiconductor memories, peripheral interfaces, I/O techniques, A/D conversion, standards, RISC.

Antirequisite(s): ECE 3375A/B.

Prerequisite(s): Computer Science 2208A/B, Computer Science 2210A/B, Computer Science 2211A/B, and either Computer Science 2209A/B or the former Computer Science 2101A/B.

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Common network protocols; inter-networking; gateways; routers; bridges; survey of commercial architectures; standards.

Antirequisite(s): ECE 4436A/B, AISE 4430A/B.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
The software development life cycle; resourcing, scheduling and estimating techniques for software project management; project management organizational concerns, including project economic analysis, human resources, proposal development, risk management, software implementation, and technology-strategic alignment.

Antirequisite(s): Science 3377A/B, SE 3351A/B.

Prerequisite(s): Registration in third or fourth year of any module offered by the Department of Computer Science.

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
A supervised study involving a research paper, the design of or development of a software project.


Prerequisite(s): Permission from the department, plus: Computer Science 2212A/B/Y and registration in the Specialization or Major in Computer Science. To be allowed into this course, the student must have found a topic and a willing departmental supervisor before the end of the add period.

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
The viewing pipeline; clipping and visibility problems. The graphical kernel system; picture generation and user interfaces.

Prerequisite(s): (Computer Science 2211A/B or the former Computer Science 2101A/B) or (Software Engineering 2203A/B, Software Engineering 2205A/B and Software Engineering 2250A/B); one of Mathematics 1600A/B, Numerical and Mathematical Methods 1411A/B or the former Applied Mathematics 1411A/B.

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
This course studies the fundamental aspects of parallel and distributed systems, providing an integrated view of the various facets of software development on such systems: hardware architectures, programming languages, computational models, software development tools and design patterns, performance modelling and analysis, experimenting and measuring, application to scientific computing.


Extra Information: 3 lecture hours. Note: Computer Science 3331A/B and Computer Science 3305A/B or equivalent are recommended.

Course Weight: 0.50
More details
Return to top
Advanced database topics such as: query optimization and execution; advanced concurrency control and recovery concepts; distributed databases; XML databases; database security and privacy; databases in the cloud; information retrieval.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Survey of the principles and practice of cryptography and network security: classical cryptography, public-key cryptography and cryptographic protocols, network and system security.

Prerequisite(s): Computer Science 3340A/B.

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Students will learn to develop and extend data science methods in order to solve new problems. Approaches covered will include convex loss/regularization, graphical models, and neural networks.

Prerequisite(s): Data Science 3000A/B (or the former Computer Science 4414A/B) or Computer Science 4437A/B/Y if taken during Fall/Winter 2016 or 2017.

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Management and analysis of unstructured data, with a focus on text data, for example transaction logs, news text, article abstracts, and microblogs. Overview of unstructured image, audio, and video data. Hands-on experience with modern distributed data management and analysis infrastructure.

Antirequisite(s): Computer Science 4433A/B/Y if taken during Fall/Winter 2017 or 2018.

Prerequisite(s): Computer Science 3319A/B

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Students will learn how to conceptualize and design systems that integrate data visualization, interactive machine learning, and human-data interaction to support complex data-driven analytical tasks and activities which humans encounter in different fields. Visual analytics concepts and components will be studied in the context of human-centred computing.

Prerequisite(s): Data Science 3000A/B (or the former Computer Science 4414A/B) or Computer Science 4437A/B/Y if taken during Fall/Winter 2016 or 2017. Pre-or Corequisite(s): Computer Science 4416A/B is recommended.

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Advanced Computer Science topics, reflecting current research interests within the Department. The particular topics will be available from the Department prior to registration.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Advanced Computer Science topics, reflecting current research interests within the Department. The particular topics will be available from the Department prior to registration.

Antirequisite(s): Computer Science 4457A/B/Y.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Advanced Computer Science topics, reflecting current research interests within the Department. The particular topics will be available from the Department prior to registration.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Computer Science topics, reflecting current research interests within the Department. The particular topics will be available from the Department prior to registration.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Advanced Computer Science topics, reflecting current research interests within the Department. The particular topics will be available from the Department prior to registration.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Advanced Computer Science topics, reflecting current research interests within the Department. The particular topics will be available from the Department prior to registration.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
A selection from: first order logic and theorem proving; computational linguistics; computer vision; robotics; knowledge acquisition; machine learning.

Prerequisite(s): Mathematics 1600A/B or Applied Mathematics 1411A/B, and Computer Science 3307A/B/Y or Software Engineering 3350A/B.

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Parallel, distributed, probabilistic, and geometric algorithms; design and analysis; computational geometry; fractals and graphtals.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
This course focuses on the study of algorithms for solving problems that arise from the design and use of large networks, like the Internet. Topics include: Computer networks and internets, distributed algorithms, peer-to-peer systems, the Web graph and searching for information in the Web, caching, and Game Theory.

Antirequisite(s): Computer Science 4438A/B, if taken during the 2018-2019, 2021-2022 academic years; Software Engineering 3314A/B.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Syntax-directed translation; LR(k), LL(k), attribute grammars; code generation; optimization; compiler compilers; code generator generators.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
This course explores fundamental concepts, algorithms, and applications in reinforcement learning, bridging AI and machine learning. Through lectures and practical exercises, students study Markov Decision Processes, Bellman equations, and key algorithms such as Q-learning, and DQN. They discover Reinforcement Learning’s road applicability in robotics, gaming, finance, and healthcare domains.

Prerequisite(s): Data Science 3000A/B.

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Network layering, performance, management, modelling and simulation; faults and failures.

Prerequisite(s): Computer Science 3357A/B.

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
This course will aim at providing a comprehensive understanding of various security issues in an end-to-end network. The list of these topics includes message/user authentication, cryptographic key management, web security, TLS, wireless/5G security, e-mail security, DNS security, IPSec, VPN security, Malware, Firewall, network intrusion detection/prediction/prevention, DoS/DDoS, Cloud and IoT Security.

Antirequisite(s): Computer Science 4434A/B, if taken during the 2021-2022 academic year; Computer Science 4457A/B, if taken during the 2020-2021 academic year.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
This course presents fundamental concepts related to the design and implementation of distributed systems. The course teaches the abstractions, design and algorithms that enable the development of scalable and robust distributed systems. Topics include interprocess communication, clocks, replication, data consistency models, consistent hashing, and failure handling.

Antirequisite(s): Computer Science 4435A/B, if taken during the 2021-2022 academic year.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
A project or research paper in an area related to bioinformatics, completed under faculty supervision. An oral presentation plus a written submission will be required.


Prerequisite(s): Computer Science 3331A/B and Computer Science 3340A/B; plus 1.5 courses from: Biochemistry 2280A, Chemistry 2213A/B, Computer Science 3319A/B, Computer Science 3346A/B; plus registration in the Honours Specialization in Bioinformatics (Biochemistry concentration) or the Honours Specialization in Bioinformatics (Computer Science concentration).

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Introduction to popular bioinformatics software tools and their applications in solving complex biological problems; analysis of the algorithms behind bioinformatics tools.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Bioinformatics studies biological problems using biological, computational, and mathematical methods. Computational biology studies computational techniques that can solve biological problems efficiently. This course emphasizes the design, analysis and implementation of algorithms for problems motivated from molecular biology research.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
An examination of industrial-style software development issues related to managing and maintaining large-scale software systems; in a group project, students will examine software maintenance and configuration management concepts, tools, techniques, risks and benefits; case studies.

Antirequisite(s): Computer Science 3380F/G/Z, Computer Science 4460Z, Computer Science 4480Y, Computer Science 4490Z, the former Software Engineering 4453A/B.

Prerequisite(s): Computer Science 3307A/B/Y; plus 1.5 courses from: Computer Science 3305A/B, Computer Science 3331A/B, Computer Science 3340A/B, Computer Science 3342A/B, Computer Science 3350A/B; plus registration in the Minor in Software Engineering.

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Introduction to advanced software design concepts; architectures of complex software systems; domain-independent design patterns; creation of a functional partitioning for a novel domain; recognition of common architectural idioms.

Prerequisite(s): Computer Science 3307A/B/Y

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Concepts and state of the art techniques in software specification and quality assessment for software engineering; quality attributes; formal specification and analysis; verification and validation.

Antirequisite(s): Software Engineering 4452A/B, the former Software Engineering 4453A/B.

Prerequisite(s): Computer Science 3307A/B/Y

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
The development of requirements for software-intensive systems through successful requirements analysis techniques and requirements engineering; an in-depth study of methods, tools, notations, and validation techniques for the analysis and specification of software requirements.

Antirequisite(s): Software Engineering 3352A/B.

Prerequisite(s): Computer Science 3307A/B/Y

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Exposure to topics in human-computer interaction, including: frameworks for human-computer interaction; requirements gathering; rapid prototyping; user interface systems and tool kits.

Antirequisite(s): Software Engineering 3353A/B.

Prerequisite(s): Computer Science 3307A/B/Y

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
An examination of large-scale software development in the context of a distributed, multi-university open source software project organized by the Undergraduate Capstone Open Source Projects (UCOSP) initiative (see http://ucosp.ca for details). Students will receive practical hands-on experience in working in software development, as well as valuable soft skills and team experience.

Antirequisite(s): Computer Science 4438A/B/Y if taken during the 2012-2013 academic year.

Prerequisite(s): Computer Science 3307A/B/Y or permission of the Department.

Extra Information: 3 lecture hours. Note: Students must notify the Department of their interest in registration in the course prior to the preceding May 1st for Computer Science 4475A or September 1st for Computer Science 4475B. Registration in the course is conditional and competitive as course costs and coordination are provided by UCOSP. A committee will adjudicate students on the basis of grades in program courses and a statement of interest submitted as part of the application process. Students must be able to travel to an initial meeting at the beginning of the course; in the case that this meeting is outside of Canada, students will need valid travel documentation and must consult with the Department in advance if this is an issue. Costs related to this travel will be reimbursed by UCOSP; details will be provided prior to registration.

Course Weight: 0.50
More details
Return to top
An examination of open source software development through Google's annual Summer of Code program. Students are exposed to real-world software development scenarios in mentored projects from a number of open source projects, gaining valuable and practical skills and experience in open source software development and maintenance.

Antirequisite(s): Computer Science 4437A/B/Y if taken during the Summer 2013 or 2014 academic terms.

Prerequisite(s): Computer Science 3307A/B/Y or permission of the Department.

Extra Information: 3 lecture hours. Note: Students must notify the Department of their interest in registration in the course prior to the preceding May 1st for Computer Science 4476A/B/Y. Registration in the course is conditional upon acceptance into the Google Summer of Code program. Students are advised that the timeline for this program varies from year to year and it is their responsibility to ensure that they can participate in the program according to their schedule and needs.

Course Weight: 0.50
More details
Return to top
The mainframe remains a critical piece of infrastructure for enterprise computing, with experts highly sought after by industry. This course studies the mainframe through IBM's annual Master the Mainframe program. Students are exposed to real-world development through hands-on projects, gaining valuable experience and skills for working with modern mainframe systems.

Antirequisite(s): Computer Science 4434A/B/Y if taken during Fall/Winter 2014.

Prerequisite(s): Computer Science 3307A/B/Y or permission of the Department.

Extra Information: 3 lecture hours. Note: Registration in the course is conditional upon acceptance into the IBM Master the Mainframe program. Students are advised that the timeline for this program varies from year to year and it is their responsibility to ensure that they can participate in the program according to their schedule and needs; consultation with the Department prior to registration is highly recommended.

Course Weight: 0.50
More details
Return to top
Industrial-style development issues related to the creation of games of commercial scale and quality, both for entertainment and serious game applications; in a group project, students will examine concepts, theories, tools, technologies, and techniques for code and content generation for modern games.


Prerequisite(s): Registration in the Minor in Game Development. Corequisite(s): Computer Science 4482A/B, Computer Science 4483A/B.

Extra Information: 2 lecture hours.

Course Weight: 0.50
More details
Return to top
Dealing with digital pictures (images) requires far more computer memory and transmission time than is needed for plain text. This course provides students with a solid understanding of the fundamentals and the principles of various digital still-image compression schemes.

Prerequisite(s): 0.5 course from: Computer Science 3305A/B, 3307A/B/Y, or 3342A/B.

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Core concepts and techniques of game programming, including the development and usage of game engines for the creation of games. Topics from: game engine architecture; real-time 2D and 3D rendering; character animation; shaders; real-time physics simulation, artificial intelligence, and networking; procedural methods; player input and controls; platform considerations; tools development.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
Concepts and issues that arise in the development of games for entertainment and serious game applications, focusing on providing players with more engaging, immersive, and rewarding gameplay experiences. Group project normally required.


Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top
A project or research paper completed with minimal faculty supervision. An oral presentation plus a written submission will be required.


Prerequisite(s): (2.0 courses from: Computer Science 3305A/B, Computer Science 3307A/B/Y, Computer Science 3331A/B, Computer Science 3340A/B, Computer Science 3342A/B, Computer Science 3350A/B; plus registration in the Honours Specialization in Computer Science) or (2.0 courses from: Computer Science 3305A/B, Computer Science 3307A/B/Y, Computer Science 3319A/B, Computer Science 3331A/B, Computer Science 3340A/B, Computer Science 3357A/B; plus registration in the Honours Specialization in Information Systems).

Extra Information: 3 lecture hours.

Course Weight: 0.50
More details
Return to top