Professional Degree courses in Dentistry, Education, Law, Medicine and Theology (MTS, MDiv)
Courses offered by Continuing Studies
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.
1.0 course not designated as an essay course
0.5 course offered in first term
0.5 course offered in second term
0.5 course offered in first and/or second term
1.0 essay course
0.5 essay course offered in first term
0.5 essay course offered in second term
0.5 essay course offered in first and/or second term
1.0 accelerated course (8 weeks)
1.0 accelerated course (6 weeks)
0.5 graduate course offered in summer term (May - August)
0.25 course offered within a regular session
0.25 course offered in other than a regular session
1.0 accelerated course (full course offered in one term)
0.5 course offered in other than a regular session
0.5 essay course offered in other than a regular session
A course that must be successfully completed prior to registration for credit in the desired course.
A course that must be taken concurrently with (or prior to registration in) the desired course.
Courses that overlap sufficiently in course content that both cannot be taken for credit.
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).
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 Honors Specialization module or Double Major modules in an Honors Bachelor degree, at least 3.0 courses will be considered principal courses.
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.
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.
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.
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; pointers; recursion; file handling and storage.
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.
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.
A continuation for Engineering Science 1036A/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.
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.
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.
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.
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.
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.
Extra Information: 3 lecture hours, 2 laboratory/tutorial hours.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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): 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.
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.
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.
Introduces machine learning and statistical methods for data analysis through applied examples. Particular emphasis is placed on how to rigorously evaluate an analysis of data. Students will develop a data science analysis project using the methods covered in class. Also suitable for non-Computer Science students.
In this course, students will learn the foundational algorithms and technologies underlying the field of cognitive computing and have the opportunity to apply, in groups, what they have learned to real-world problems.
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.
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.
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.
Prerequisite(s): Registration in the fourth year of a module in Computer Science or in one of the Mathematical Sciences.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
Prerequisite(s): Registration in the Diploma in Computer Science and completion of all Diploma-credit courses.
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.
Prerequisite(s): Registration in the Diploma in Game Development and completion of all Diploma-credit courses.