Academic Calendar 2013 Search Office of the Registrar Western Homepage
Academic Calendar 2015 UNDERGRADUATE COURSE INFORMATION Computer Science (S)
INTRODUCTION
UNDERGRADUATE SESSIONAL DATES
STUDENT SERVICES
ACADEMIC INFORMATION
STUDENT FINANCIAL SERVICES
FACULTIES
UNDERGRADUATE COURSE INFORMATION
FACULTY MEMBERS
AFFILIATED UNIVERSITY COLLEGES
GLOSSARY
NEW MODULES/PROGRAMS
FIRST YEAR UPDATES
TABLE OF CONTENTS




Computer Science (S)
Computer Science 1011A/B - The Internet:  Behind the Curtain
The technological successes that have led to the Internet's wide adoption for work and social purposes. The ways in which computer technology has led to more compact representation of data, and faster, more reliable and more secure communication. Intended primarily for students not in Computer Science.
Antirequisite(s): Computer Science 2210A/B.
Prerequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 1025A/B - Computer Science Fundamentals I
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 an object-oriented language (Java). Intended for students with significant programming experience in at least one high-level block-structured or object-oriented language.
Prerequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 1026A/B - Computer Science Fundamentals I
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 an object-oriented language (Java). Intended for students with little or no background in programming.
Prerequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 2 laboratory/tutorial hours, 0.5 course.
back to top
Computer Science 1027A/B - Computer Science Fundamentals II
A continuation for both Computer Science 1025A/B and Computer Science 1026A/B. Data organization and manipulation; abstract data types and their implementations in an object-oriented setting (Java); lists, stacks, queues, trees; pointers; recursion; file handling and storage.
Antirequisite(s): Computer Science 1037A/B.
Prerequisite(s): Computer Science 1025A/B or 1026A/B.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 1 laboratory/tutorial hour, 0.5 course.
back to top
Computer Science 1032A/B - Information Systems and Design
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.
Prerequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 1033A/B - Multimedia and Communication I
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.
Antirequisite(s):
Prerequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 2 lecture hours, 2 laboratory/tutorial hours, 0.5 course.
back to top
Computer Science 1037A/B - Computer Science Fundamentals II
A continuation for Engineering Science 1036A/B and the former Computer Science 036a/b. Data organization and manipulation; abstract data types and their implementations in an object-oriented setting (C++); lists, stacks, queues, trees; pointers; recursion; file handling and storage. Intended for students in the Faculty of Engineering.
Antirequisite(s): Computer Science 1027A/B.
Prerequisite(s): Engineering Science 1036A/B.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 2 laboratory/tutorial hour, 0.5 course.
back to top
Computer Science 1046A/B - Approachable Apps:  An Introduction to Programming using JavaScript
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.
Prerequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 2 lecture hours, 2 laboratory/tutorial hours, 0.5 course.
back to top
Computer Science 2033A/B - Multimedia and Communication II
This course continues the exploration of popular media and Internet technologies. Topics include making websites more interactive, more searchable and easier to update; digital marketing; e-commerce; social integration; and mobile applications. Students will practice concepts using industry standard tools and software.
Antirequisite(s):
Prerequisite(s): Computer Science 1033A/B.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 2 lecture hours, 2 laboratory/tutorial hours, 0.5 course.
back to top
Computer Science 2034A/B - Data Analytics: Principles and Tools
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.
Antirequisite(s):
Prerequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 2 lecture hours, 2 laboratory/tutorial hours, 0.5 course.
back to top
Computer Science 2035A/B - Dealing with Data: Analysis and Visualization
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):
Prerequisite(s): 0.5 course in Applied Mathematics, Calculus, Mathematics, Statistics (including Introductory Statistics), or the former Linear Algebra at the 1000-level or above, or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 1 laboratory/tutorial hour, 0.5 course.
back to top
Computer Science 2050F/G - The Evolution of Computing and Computers
A survey course on the cultural, political, economic, military, and technological history leading to the development of the modern computer and its deployment within society; providing students with a historic context for understanding developments such as web technologies and trends, satellite imagery, virtual reality, artificial intelligence, and ubiquitous computing.
Antirequisite(s):
Prerequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 2080A/B - Computational Tools for Modeling Social Phenomena
A hands-on introduction to tools for the simulation of social phenomena from the early work of Herbert Simon to more recent work on agent-based social simulations, with particular emphasis on the way knowledge about social phenomena is represented in the simulations.
Antirequisite(s):
Prerequisite(s): Registration in a Social Science module, or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 2101A/B - Foundations of Programming for High Performance
An introduction to fundamental programming skills in the context of High Performance Computing (HPC), exploring tools, techniques, and theory used in the creation of HPC applications for a wide variety of domains. Topics include data structures and algorithms for HPC, computer achitectures, and applications. Suitable for non Computer Science students.
Antirequisite(s):
Prerequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 2 laboratory/tutorial hours, 0.5 course.
back to top
Computer Science 2120A/B - Computing and Informatics for Life Sciences
Essential information processing skills for life science 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 different areas of life sciences. No previous programming background assumed.
Prerequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 2 laboratory/tutorial hours, 0.5 course.
back to top
Computer Science 2121A/B - Data Structures and Algorithms for Informatics and Analytics
An overview of core data structures and algorithms in computing, with a focus on applications to informatics and analytics. 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
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 1 laboratory/tutorial hours, 0.5 course.
back to top
Computer Science 2124A/B - Introduction to Medical Computing
This course introduces computing fundamentals as they relate to medical computing. A series of topics is covered, including topics selected from: health information systems and standards, data privacy, medical imaging, modeling, simulation and data analysis, computer-aided diagnosis, embedded software in instruments, computer-aided procedures and telemedicine.
Antirequisite(s): Computer Science 2125F/G.
Prerequisite(s): 1.0 course from Calculus 1000A/B, 1100A/B or 1500A/B, Calculus 1301A/B or 1501A/B, Mathematics 1600A/B or the former Linear Algebra 1600A/B, Mathematics 1225A/B, 1228A/B, 1229A/B, Statistical Sciences 1024A/B, Applied Mathematics 1201A/B or the former Calculus 1201A/B, Applied Mathematics 1413.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course
back to top
Computer Science 2125F/G - Introduction to Medical Computing
This course will cover the same material as Computer Science 2124A/B, but will also provide students with the opportunity to enhance their essay-writing skills while pursuing assignments and/or projects involving medical computing.
Antirequisite(s): Computer Science 2124A/B
Prerequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 2208A/B - Introduction to Computer Organization and Architecture
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.
Antirequisite(s):
Prerequisite(s): Computer Science 1027A/B, 1037A/B, or Computer Science 2101A/B, in each case with at least 65%.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 1 laboratory hour, 0.5 course.
back to top
Computer Science 2209A/B - Applied Logic for Computer Science
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.
Antirequisite(s):
Prerequisite(s): Computer Science 1027A/B, 1037A/B, or Computer Science 2101A/B, in each case with at least 65%, and one full course or equivalent chosen from the following, with at least 60% in each: Applied Mathematics 1201A/B or the former Calculus 1201A/B, Applied Mathematics 1413, Calculus 1000A/B, 1100A/B, 1301A/B, 1500A/B, 1501A/B, Mathematics 1600A/B or the former Linear Algebra 1600A/B, or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 4 lecture hours, 0.5 course.
back to top
Computer Science 2210A/B - Data Structures and Algorithms
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): Computer Science 1027A/B or 2101A/B with at least 65% or Computer Science 1037A/B with at least 60%, and 1.0 course chosen from the following, with at least 60% in each: Applied Mathematics 1201A/B or the former Calculus 1201A/B, Applied Mathematics 1413, Calculus 1000A/B, 1100A/B, 1301A/B, 1500A/B, 1501A/B, Mathematics 1600A/B or the former Linear Algebra 1600A/B.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 2211A/B - Software Tools and Systems Programming
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.
Antirequisite(s): Software Engineering 2250A/B.
Prerequisite(s): Computer Science 1027A/B or 2101A/B with at least 65% or Computer Science 1037A/B with at least 60%.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 1 laboratory/tutorial hour, 0.5 course.
back to top
Computer Science 2212A/B/Y - Introduction to Software Engineering
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 3350Y.
Prerequisite(s): Computer Science 2210A/B and 2211A/B.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture/tutorial hours, 0.5 course.
back to top
Computer Science 2214A/B - Discrete Structures for Computing
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.
Antirequisite(s): Mathematics 2151A/B or Mathematics 2155F/G or the former Mathematics 2155A/B, the former Software Engineering 2251A/B
Prerequisite(s): Computer Science 1027A/B, 1037A/B, or Computer Science 2101A/B, in each case with at least 65%, and one full course or equivalent chosen from the following, with at least 60% in each: Applied Mathematics 1201A/B or the former Calculus 1201A/B, Applied Mathematics 1413, Calculus 1000A/B, 1100A/B, 1301A/B, 1500A/B, 1501A/B, Mathematics 1600A/B or the former Linear Algebra 1600A/B, or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 1 laboratory/tutorial hour, 0.5 course
back to top
Computer Science 3101A/B - Theory and Practice of High Performance Computing
A comprehensive exploration of High Performance Computing (HPC), examining advanced theory and practice in the creation of HPC applications for a wide variety of domains. Topics include programming shared and distributed memory machines, multicore and manycore architectures, optimization techniques and performance analysis. Suitable for non Computer Science students.
Antirequisite(s):
Prerequisite(s): Computer Science 2101A/B or 2211A/B.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 1 laboratory/tutorial hours, 0.5 course.
back to top
Computer Science 3120A/B - Databases for Informatics and Analytics
A study of modern database systems and their applications to and use in informatics and analytics. Topics include database design, querying, administration, security, and privacy. Suitable for non Computer Science students.
Prerequisite(s): Computer Science 2121A/B
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 2 lecture hours, 2 laboratory/tutorial hours, 0.5 course.
back to top
Computer Science 3121A/B - Artificial Intelligence for Informatics and Analytics
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
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 2 lecture hours, 2 laboratory/tutorial hours, 0.5 course.
back to top
Computer Science 3122A/B - Communications and Networking for Informatics and Analytics
An overview of communications networks, focused on their use to support informatics and analytics. Topics include the Internet; network architectures; network protocols; standards; network software, hardware, and tools. Suitable for non Computer Science students.
Prerequisite(s): Computer Science 2121A/B
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 2 lecture hours, 2 laboratory/tutorial hours, 0.5 course.
back to top
Computer Science 3305A/B - Operating Systems
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):
Prerequisite(s): Either (Computer Science 2208A/B and 2211A/B) or (Computer Science 2101A/B and 2208A/B) or (Computer Science 2210A/B,2211A/B, ECE 3375A/B, and registration in the fourth year of a BESc program in Computer Engineering or Mechatronic Systems Engineering.)
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 3307A/B/Y - Object-Oriented Design and Analysis
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): SE 2203A/B, 3352A/B  
Prerequisite(s): Either (Computer Science 2212A/B/Y) or (Computer Science 2210A/B, 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.)
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 3319A/B - Databases I
A comparative study of hierarchical, network and relational databases. A survey of some commercially available database systems. Database standards; security and integrity, database administration; database design; concurrency control.
Antirequisite(s): Software Engineering 3352A/B
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 3320A/B - Numerical Computing I
Numerical representations and their impact on numerical computing; error analysis. Numerical algorithms; reliability and portability of mathematical software; review of existing packages.
Antirequisite(s):
Prerequisite(s): Computer Science 2212A/B/Y; Calculus 1000A/B or 1100A/B or 1500A/B; 0.5 course from: Applied Mathematics 1201A/B or the former Calculus 1201A/B, Calculus 1301A/B, 1501A/B, Mathematics 1600A/B or the former Linear Algebra 1600A/B.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 3325A/B - Law in Computer Science
An examination of aspects of law and policy that relate to the creation, protection and implementation of software and hardware; attention is directed towards issues of current importance of which every computer scientist should be aware.
Antirequisite(s): Computer Science 3326F/G
Prerequisite(s): 1.5 courses from Computer Science 2208A/B, 2209A/B, 2210A/B, 2211A/B, 2212A/B/Y.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
Note: Cannot be taken for credit by students in the concurrent degree program in Law and Computer Science.
back to top
Computer Science 3326F/G - Law in Computer Science
This course will cover the same material as Computer Science 3325A/B, but will also provide students with the opportunity to enhance their essay-writing skills while pursuing assignments and/or projects involving law in computer science.
Antirequisite(s): Computer Science 3325A/B
Prerequisite(s): 1.5 courses from Computer Science 2208A/B, 2209A/B, 2210A/B, 2211A/B, 2212A/B/Y.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course
Note: Cannot be taken for credit by students in the concurrent degree program in Law and Computer Science.
back to top
Computer Science 3331A/B - Foundations of Computer Science I
Languages as sets of strings over an alphabet; operations on languages; finite automata, regular expressions; language hierarchy; Turing machines; models of computation.
Antirequisite(s):
Prerequisite(s): Computer Science 2214A/B or Mathematics 2155F/G or the former Mathematics 2155A/B or permission of the department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 3333A/B/Y - Selected Topics
Special topics on the frontiers of Computer Science. The topic may vary each year.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 3334A/B/Y - Selected Topics
Special topics on the frontiers of Computer Science. The topic may vary each year.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 3335A/B/Y - Selected Topics
Special topics on the frontiers of Computer Science. The topic may vary each year.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 3336A/B/Y - Selected Topics
Special topics on the frontiers of Computer Science. The topic may vary each year.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 3340A/B - Analysis of Algorithms I
Upper and lower time and space bounds; levels of intractability; graph algorithms; greedy algorithms; dynamic algorithms; exhaustive search techniques; parallel algorithms.
Antirequisite(s):
Prerequisite(s): Computer Science 2210A/B and 2211A/B; Computer Science 2214A/B or Mathematics 2155F/G or the former Mathematics 2155A/B or Computer Science 2101A/B or registration in the fourth year of a BESc program in Computer Engineering or Mechatronic Systems Engineering.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 3342A/B - Organization of Programming Languages
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.
Antirequisite(s): SE 3352A/B
Prerequisite(s): Computer Science 2211A/B.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 3346A/B - Artificial Intelligence I 
Introduction to Artificial Intelligence; logic programming; heuristic search; knowledge representation; expert systems.
Antirequisite(s):
Prerequisite(s): Either (Computer Science 2210A/B and 2211A/B) or (Software Engineering 2203A/B, 2205A/B and 2250A/B); Computer Science 2209A/B, or registration in a BESc program in Computer Engineering, Mechatronic Systems Engineering, or Software Engineering.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 3350A/B - Computer Architecture
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.  
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 3357A/B - Computer Networks I
Common network protocols; inter-networking; gateways; routers; bridges; survey of commercial architectures; standards.
Antirequisite(s): ECE 4436A/B.  
Prerequisite(s): Computer Science 2210A/B and 2211A/B.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 3374A/B - Design for Interactive Multimedia Learning
Theoretical and practical aspects related to human learning; how to design interactive multimedia technologies to support learning and knowledge construction; examination of various interactive multimedia learning environments; strategic approaches to educational multimedia design, and presentation design. Students design a scaled-down educational multimedia environment. Note: Same course as Media, Information and Technoculture 3606A/B.
Antirequisite(s): MIT 3606A/B.
Prerequisite(s): Computer Science 2212A/B/Y
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 2 lecture hours, 2 laboratory/tutorial hours, 0.5 course.
back to top
Computer Science 3375A/B - Data Visualization
This interdisciplinary course addresses three main issues: how information can and should be represented; how computers can allow us to interact with information; and how interactive information supports knowledge-driven activities. Case studies explore a variety of disciplines using various tools. Suitable for both Computer Science and non Computer Science students.
Antirequisite(s):
Prerequisite(s): Computer Science 2121A/B, Computer Science 2210A/B, Digital Humanities 2221A/B, or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 2 lecture hours, 2 laboratory/tutorial hours, 0.5 course.
back to top
Computer Science 3377A/B - Software Project Management
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.
Prerequisite(s): Computer Science 2212A/B/Y.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 3380F/G/Z - Project
A supervised study involving a research paper, the design of or development of a software project.
Antirequisite(s): Computer Science 4460Z, 4480Y, 4490Z.
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.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 3388A/B - Computer Graphics I
The viewing pipeline; clipping and visibility problems. The graphical kernel system; picture generation and user interfaces.
Antirequisite(s):
Prerequisite(s): Either Computer Science 2211A/B or 2101A/B or (Software Engineering 2203A/B, 2205A/B and 2250A/B); Mathematics 1600A/B or the former Linear Algebra 1600A/B or Applied Mathematics 1411A/B, or permission of the department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4402A/B - Distributed and Parallel Systems
Issues arising in distributed and parallel systems and applications; related architectures such as connection machines, shared memory multiprocessors.
Antirequisite(s): The former Software Engineering 4466A/B.
Prerequisite(s): Computer Science 3305A/B and 3357A/B.  
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4411A/B - Databases II
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.
Antirequisite(s):
Prerequisite(s): Computer Science 3319A/B.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4412A/B - Data Mining and its Applications 
Databases and data warehouses; online analytic processing (OLAP); applications of data mining in business intelligence, e-business, and bioinformatics; various inductive learning algorithms; clustering and learning associations; solving real-world problems with data mining.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4413A/B - Cryptography and Security
Survey of the principles and practice of cryptography and network security: classical cryptography, public-key cryptography and cryptographic protocols, network and system security.
Antirequisite(s):
Prerequisite(s): Computer Science 3340A/B.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4424A/B - Foundations of Computer Algebra
Introduction to computer algebra, algorithms and data structures for integer and polynomial arithmetic, symbolic differentiation and integration, type systems for computer algebra, mathematical communication, software systems including Maple and MathML.
Antirequisite(s):
Prerequisite(s): Registration in the fourth year of a module in Computer Science or in one of the Mathematical Sciences.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4432A/B - Foundations of Computer Science II
Formal languages; recursive functions; abstract complexity; automaton models; array machines; systolic systems; cellular automata.
Antirequisite(s):
Prerequisite(s): Computer Science 3331A/B or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4433A/B/Y - Selected Topics
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):
Prerequisite(s): 2.0 courses from: Computer Science 3305A/B, 3307A/B/Y, 3331A/B, 3340A/B, 3342A/B, 3350A/B; or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4434A/B/Y - Selected Topics
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):
Prerequisite(s): 2.0 courses from: Computer Science 3305A/B, 3307A/B/Y, 3331A/B, 3340A/B, 3342A/B, 3350A/B; or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4435A/B/Y - Selected Topics
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):
Prerequisite(s): 2.0 courses from: Computer Science 3305A/B, 3307A/B/Y, 3331A/B, 3340A/B, 3342A/B, 3350A/B; or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4436A/B/Y - Selected Topics
Computer Science topics, reflecting current research interests within the Department. The particular topics will be available from the Department prior to registration.
Antirequisite(s):
Prerequisite(s): 2.0 courses from: Computer Science 3305A/B, 3307A/B/Y, 3331A/B, 3340A/B, 3342A/B, 3350A/B; or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4437A/B/Y - Selected Topics
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):
Prerequisite(s): 2.0 courses from: Computer Science 3305A/B, 3307A/B/Y, 3331A/B, 3340A/B, 3342A/B, 3350A/B; or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4438A/B/Y - Selected Topics
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):
Prerequisite(s): 2.0 courses from: Computer Science 3305A/B, 3307A/B/Y, 3331A/B, 3340A/B, 3342A/B, 3350A/B; or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4442A/B - Artificial Intelligence II
A selection from: first order logic and theorem proving; computational linguistics; computer vision; robotics; knowledge acquisition; machine learning.
Antirequisite(s):
Prerequisite(s): Computer Science 3346A/B or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4444A/B - Semantics of Programming Languages
Operational, denotational, and axiomatic semantics; lambda-calculus.
Antirequisite(s):
Prerequisite(s): Computer Science 2209A/B and 3331A/B and 3342A/B, or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4445A/B - Analysis of Algorithms II
Parallel, distributed, probabilistic, and geometric algorithms; design and analysis; computational geometry; fractals and graphtals.
Antirequisite(s):
Prerequisite(s): Computer Science 3340A/B.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4447A/B - Compiler Theory
Syntax-directed translation; LR(k), LL(k), attribute grammars; code generation; optimization; compiler compilers; code generator generators.
Antirequisite(s):
Prerequisite(s): Computer Science 3331A/B and 3342A/B.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4457A/B/Y - Computer Networks II
Network layering, performance, management, modelling and simulation; faults and failures.
Antirequisite(s):
Prerequisite(s): Computer Science 3305A/B, 3357A/B.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4460Z - Bioinformatics Thesis
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.
Antirequisite(s): Computer Science 3380F/G/Z, 4470Y, 4480Y, 4490Z, the former Computer Science 380a/b/y, 490y.
Prerequisite(s): Computer Science 3331A/B and 3340A/B; plus 1.5 courses from: Biochemistry 2280A, Chemistry 2213A/B, Computer Science 3319A/B, 3346A/B; plus registration in the Honors Specialization in Bioinformatics (Biochemistry concentration) or the Honors Specialization in Bioinformatics (Computer Science concentration).
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4461A/B - Bioinformatics Tools and Applications
Introduction to popular bioinformatics software tools and their applications in solving complex biological problems; analysis of the algorithms behind bioinformatics tools.
Antirequisite(s): Biochemistry 4445F/G, the former Biochemistry 445a/b.  
Prerequisite(s): Computer Science 3331A/B and 3340A/B; Biochemistry 2280A is recommended.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4462A/B - DNA Computing
Biomolecular (DNA) computing is a computation paradigm that proposes the use of molecular biology tools to solve mathematical and computational problems. Ways of encoding information in DNA sequences; molecular procedures used for computation; classes of problems solvable by DNA computing; feasibility and advantages of a DNA computer.
Antirequisite(s):
Prerequisite(s): Computer Science 2209A/B and 3331A/B; Biochemistry 2280A is recommended.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4463A/B - Computational Biology
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.
Antirequisite(s):
Prerequisite(s): Computer Science 3331A/B and 3340A/B; Biochemistry 2280A is recommended.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4470Y - Software Maintenance and Configuration Management
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 4460Z, 4480Y, 4490Z, Software Engineering 4453A/B, the former Computer Science 490y.  
Prerequisite(s): Computer Science 3307A/B/Y; plus 1.5 courses from: Computer Science 3305A/B, 3331A/B, 3340A/B, 3342A/B, 3350A/B; plus registration in the Minor in Software Engineering.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4471A/B - Software Design and Architecture
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.
Antirequisite(s):
Prerequisite(s): Computer Science 3307A/B/Y.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4472A/B - Specification, Testing and Quality Assurance
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.
Prerequisite(s): Computer Science 3307A/B/Y.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4473A/B - Requirement Analysis
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 4452A/B.
Prerequisite(s): Computer Science 3307A/B/Y.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4474A/B - Human-Computer Interaction
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.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4475A/B - Open Source Software Project
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.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
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.
back to top
Computer Science 4476A/B/Y - Summer of Code
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.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
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.
back to top
Computer Science 4478A/B/Y - Master the Mainframe
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.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
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.
back to top
Computer Science 4480Y - Game Development Project
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, 4483A/B.
Pre-or Corequisite(s):
Extra Information: 2 lecture hours, 0.5 course.
back to top
Computer Science 4481A/B - Image Compression
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.
Antirequisite(s):
Prerequisite(s): 0.5 course from: Computer Science 3305A/B, 3307A/B/Y, or 3342A/B, or permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course
back to top
Computer Science 4482A/B - Game Engine Development
Core concepts and techniques of real-time rendering and physical simulation as applied to the development of interactive game and simulation software. Topics from: real-time programming, indoor and outdoor rendering algorithms, character animation, vertex and pixel shaders, shading models, real-time shadows, procedural methods, simulation of classical mechanics, numerical integration, threaded programming.
Antirequisite(s):
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course
back to top
Computer Science 4483A/B - Game Design
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.
Antirequisite(s):
Prerequisite(s): Computer Science 3307A/B/Y.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4487A/B - Algorithms for Image Analysis
Fundamental concepts in computer and robot vision, medical image analysis, photo/video editing and graphics; problems such as image segmentation, registration, correspondence, matching, object recognition, tracking, stereo, texture synthesis; gradient descent, dynamic programming, graph-based optimization, techniques from computational geometry.
Antirequisite(s):
Prerequisite(s): Computer Science 3340A/B, Mathematics 1600A/B or the former Linear Algebra 1600A/B, and one of Applied Mathematics 1201A/B or the former Calculus 1201A/B, Calculus 1301A/B, 1501A/B; or, permission of the Department.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4488A/B - Computer Graphics II
Geometric modelling; boundary and solid representations; spline curves and surfaces. Principles of animation, illumination and rendering.
Antirequisite(s):
Prerequisite(s): Computer Science 3388A/B.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4490Z - Thesis
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, 3307A/B/Y, 3331A/B, 3340A/B, 3342A/B, 3350A/B; plus registration in the Honors Specialization in Computer Science or the Combined Honors BSc Computer Science/Juris Doctor (JD) Program) or (2.0 courses from: Computer Science 3305A/B, 3307A/B/Y, 3319A/B, 3331A/B, 3340A/B, 3357A/B; plus registration in the Honors Specialization in Information Systems).
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 3 lecture hours, 0.5 course.
back to top
Computer Science 4491 - Practicum in Computer Science
Upon completion of required Diploma-credit courses, students will have the opportunity to participate in an optional practicum placement in a Computer Science position in industry or academia. Successful completion of this course will involve participation in pre-practicum workshops, application and interview processes, development of practicum learning goals, and evaluation by the practicum supervisor.
Antirequisite(s):
Prerequisite(s): Registration in the Diploma in Computer Science and completion of all Diploma-credit courses.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 2.5 courses, 560 hours.
back to top
Computer Science 4492 - Practicum in Game Development
Upon completion of required Diploma-credit courses, students will have the opportunity to participate in an optional practicum placement in a Game Development position in industry or academia. Successful completion of this course will involve participation in pre-practicum workshops, application and interview processes, development of practicum learning goals, and evaluation by the practicum supervisor.
Antirequisite(s):
Prerequisite(s): Registration in the Diploma in Game Development and completion of all Diploma-credit courses.
Corequisite(s):
Pre-or Corequisite(s):
Extra Information: 2.5 courses, 560 hours
back to top
Academic Calendar 2015 UNDERGRADUATE COURSE INFORMATION Computer Science (S)
Decision Academic