Course Search

CPS401Y5 • Research and Development in Science Education

This course is intended for students in a CPS or Environmental Science Major or Specialist program. It provides an experiential learning opportunity with secondary school students and teachers. Students will research the literature of science pedagogy and acquire pedagogical content knowledge, particularly that of problem-based learning and the use of case studies. Then, through the creation of original, problem-based learning materials for Grades 11 and 12 classes and the preparation of teachers’ notes for these materials, they will enhance their subject specialization knowledge. They will then assist a teacher in implementing their materials in a school or, where the materials involve experiments, in the field or in the UTM teaching laboratories. The course is normally taken in the student's fourth year. Enrollment requires submitting an application to the CPS Department in the spring term, with the application due date being the final day of classes. Independent Studies Application Forms may be found at http://uoft.me/cpsforms. Applications should be submitted to the CPS Undergraduate Assistant. Registration on ACORN is also required.

Prerequisites: Enrolment in a CPS or Environmental Science Major or Specialist program with a minimum CGPA of 2.7 and 9.0 credits, including at least 2.0 credits at the 200-level in CHM or ERS or ENV or GGR or PHY

Course Experience: Partnership-Based Experience
Distribution Requirement: Science
Total Instructional Hours: 240P
Mode of Delivery: In Class

CPS489Y5 • Introduction to Research in the Chemical and Physical Sciences

Students will work toward the completion of an experimental or theoretical research project in an area of study within the chemical and physical sciences, namely, astronomy, chemistry, earth sciences or physics. Projects will be based on current trends in research and students will work to complete their projects with guidance provided by a team of facilitators and faculty advisors consisting of course coordinators and a researcher from the Department of Chemical and Physical Sciences. In addition to the rigorous development of research skills, the course will also provide students with training and practical experience in project management techniques and practical research, literary and communications skills development. CPS489Y5 requires submitting an application to the department Application forms may be found at http://uoft.me/cpsforms. Applications should be submitted to the CPS Undergraduate Assistant.

Prerequisites: (2.0 credits at the 300 level from BIO or CHM or JBC or JCP or ERS or ESS or PHY) and (1.0 credit from BIO206H5 or BIO314H5 or CHM372H5 or CHM373H5 or CHM394H5 or CHM395H5 or CHM396H5 or CHM397H5 or ERS201H5 or ERS202H5 or PHY324H5 or PHY347H5 or JCP321H5 or JCP322H5 or PHY325H5 or PHY332H5 or PHY333H5 or PHY343H5 or PHY351H5)
Exclusions: BIO400Y5 or BIO481Y5 or CBJ481Y5 or CHM489Y5 or ERS470Y5 or ERS471H5 or ERS472H5 or PHY489Y5 or BCH472Y1 or BCH473Y1 or CHM499Y1 or CSB497H1 or CSB498Y1 or CSB499Y1 or ESS491H1 or ESS492Y1 or MGY480Y1 or PHY478H1 or PHY479Y1 or BIOD98Y3 or CHMD90Y3 or CHMD91H3 or ESSD09H3 or ESSD10H3 or PSCD10H3

Course Experience: University-Based Experience
Distribution Requirement: Science
Total Instructional Hours: 240P
Mode of Delivery: In Class

CSC104H5 • The Why and How of Computing

A broad introduction to the field of computer science, intended for non-computer scientists. Topics include: history of computing; digital information representations; computer chip logic design; cryptography; social issues in computing; operating systems; problem solving and algorithms; a challenging programming introduction. This is a rigorous course intended to teach computer science, and will not teach the use of any particular software products. A robust understanding of modern computers and their use is assumed.

Exclusions: any CSC course

Distribution Requirement: Science
Total Instructional Hours: 24L/12T
Mode of Delivery: In Class

CSC105H5 • Artificial Intelligence Literacy

An applied introduction to the fast-evolving field of artificial intelligence with a focus on using supervised learning models (such as image classifiers) and foundational models (such as large language models) in various interdisciplinary domains. Designed for students without a programming background, this course is accessible to a broad audience and emphasizes critical analysis of the role of data, the limitations and failure modes of AI systems, and the societal impact of AI systems, including risks, ethics, and safety.


Distribution Requirement: Science
Total Instructional Hours: 24L/24P
Mode of Delivery: In Class

CSC108H5 • Introduction to Computer Programming

Structure of computers; the computing environment. Programming in a language such as Python. Program structure: elementary data types, statements, control flow, functions, classes, objects, methods, fields. List: searching, sorting and complexity.

Prerequisites: Grade 12 Advanced Functions (MHF4U).
Exclusions: CSC108H1 or CSC110Y1 or CSC120H1 or CSCA08H3 or CSCA20H3 or CSC110Y5 or MGT201H5

Distribution Requirement: Science
Total Instructional Hours: 38L/24P
Mode of Delivery: Online, In Class, Hybrid, Online (Summer only)

CSC110Y5 • Foundations of Computer Science 1

An introduction to the field of computer science that combines the tools and techniques of programming (using a modern programming language) with rigorous mathematical analysis and reasoning. Topics include data representations; program control flow (conditionals, loops, exceptions, functions); mathematical logic and formal proofs; algorithms and run-time analysis; and software engineering principles (formal specification and design, testing and verification). Prior programming experience is not required to succeed in this course.

Note:
CSC110Y5 is only offered in the Fall term. CSC110Y5 and the subsequent course, CSC111H5, are restricted to students in the first year Computer Science admission stream. Other students planning to pursue studies in computer science should enrol in CSC108H5, CSC148H5, and MAT102H5.

Prerequisites: Minimum 70% in Grade 12 Advanced Functions (MHF4U)
Exclusions: CSC108H5 or MAT102H5 or CSC108H1 or CSC110Y1 or CSC120H1 or CSC165H1 or CSCA08H3 or CSCA20H3 or CSCA67H3
Enrolment Limits: Restricted to students in year of study 1 in the 1st Year Studies in Computer Science

Distribution Requirement: Science
Total Instructional Hours: 72L/24P
Mode of Delivery: In Class

CSC111H5 • Foundations of Computer Science 2

A continuation of CSC110Y5 that extends principles of programming and mathematical analysis to further topics in computer science. Topics include object-oriented programming (design principles, encapsulation, composition, and inheritance); binary representation of numbers; recursion and mathematical induction; abstract data types and data structures (stacks, queues, linked lists, trees, graphs); and the limitations of computation.

Note:
CSC111H5 and its prerequisite, CSC110Y5, are only offered in the Winter term and are restricted to students in first year Computer Science admission stream. Other students planning to pursue studies in computer science should enrol in CSC108H5, CSC148H5, and MAT102H5.

Prerequisites: CSC110Y5 (70% or higher)
Exclusions: CSC148H5 or CSC111H1 or CSC148H1 or CSCA48H3
Enrolment Limits: Restricted to students in year of study 1 in 1st Year Studies in Computer Science

Distribution Requirement: Science
Total Instructional Hours: 36L/24P
Mode of Delivery: In Class

CSC148H5 • Introduction to Computer Science

Abstract data types and data structures for implementing them. Linked data structures. Encapsulation and information-hiding. Object-oriented programming. Specifications. Analyzing the efficiency of programs. Recursion. This course assumes programming experience in a language such as Python, C++, or Java, as provided by CSC108H5.

Prerequisites: CSC108H5
Exclusions: CSC111H5 or CSC111H1 or CSC148H1 or CSCA48H3

Distribution Requirement: Science
Total Instructional Hours: 38L/24P
Mode of Delivery: In Class

CSC199H5 • Computer Science Seminar

Introduction to a topic of current interest in computer science intended for a general audience. Content will vary from year to year.

Prerequisites: permission of instructor

Distribution Requirement: Science
Mode of Delivery: In Class

CSC207H5 • Software Design

An introduction to software design and development concepts, methods, and tools using a statically-typed object-oriented programming language such as Java. Topics from: version control, build management, unit testing, refactoring, object-oriented design and development, design patterns, advanced IDE usage, regular expressions, and reflection. Representation of floating-point numbers and introduction to numerical computation.

Prerequisites: (60% or higher in CSC111H5) or (60% or higher in CSC148H5)(Only CSC111H5 or CSC148H5 taken at the UTM campus will be accepted.)
Exclusions: CSC207H1 or CSCB07H3
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Computer Science Major or Computer Science minor programs.

Distribution Requirement: Science
Total Instructional Hours: 24L/12P
Mode of Delivery: In Class, Hybrid

CSC209H5 • Software Tools and Systems Programming

Software tools and development in a Unix/Linux environment, using a machine-oriented programming language (typically C). Core topics: software tools (shell utilities and make), processes and program execution, the memory model, system calls, file processing, interprocess communication (pipes and signals), and an introduction to concurrency, including multithreading.

Prerequisites: CSC207H5
Exclusions: CSC209H1 or CSCB09H3
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Computer Science Major or Computer Science minor programs.

Distribution Requirement: Science
Total Instructional Hours: 24L/12P
Mode of Delivery: In Class, Hybrid

CSC211H5 • Applied Artificial Intelligence Fundamentals

An applied introduction to the fast-evolving field of artificial intelligence and deep learning. Students will learn to apply supervised deep learning models, with emphasis on data preparation, model evaluation, and the critical use of foundational models such as large language models. The course integrates hands-on practice with machine learning software frameworks while also addressing societal impact, including risks, ethics, and safety.

Prerequisites: CSC148H5 and any first-year calculus.
Exclusions: CSC311H5 or CSC311H1
Enrolment Limits: Priority given to students in the Computer Science Major, Computer Science Specialist, and Information Security Specialist.

Distribution Requirement: Science
Total Instructional Hours: 24L/24P
Mode of Delivery: In Class

CSC236H5 • Introduction to the Theory of Computation

Mathematical induction; correctness proofs for iterative and recursive algorithms; recurrence equations and their solutions (including the "Master Theorem"); introduction to automata and formal languages.

Prerequisites: (60% or higher in CSC111H5)or((60% or higher inCSC148H5) and (60% or higher in MAT102H5))

Exclusions: CSC236H1 or CSC240H1 or CSCB36H3
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Computer Science Major or Computer Science minor programs.

Distribution Requirement: Science
Total Instructional Hours: 24L/12T
Mode of Delivery: In Class, Hybrid

CSC258H5 • Computer Organization

An introduction to computer organization and architecture, using a common CPU architecture. Core topics: data representations and computer arithmetic, processor organization, the memory hierarchy and caching, instruction set and addressing modes, and quantitative performance evaluation of computing systems. Students will program in assembly and will evaluate simulated processor architectures.

Note:
Students wishing to complete CSC385H1 (Microprocessor Systems) should consider enrolling in CSC258H1 and/or to self-study the use of hardware design languages to create digital logic.

Prerequisites: CSC148H5 or CSC111H5
Exclusions: CSC258H1 or CSCB58H3
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Computer Science Major or Computer Science minor programs.

Distribution Requirement: Science
Total Instructional Hours: 24L/24P
Mode of Delivery: In Class, Hybrid

CSC263H5 • Data Structures and Analysis

Algorithm analysis: worst-case, average-case, and amortized complexity. Standard abstract data types, such as graphs, dictionaries, priority queues and disjoint sets. A variety of data structures for implementing these abstract data types, such as balanced search trees, hashing, heaps and disjoint forests. Design, implementation and comparison of data structures. Introduction to lower bounds.

Prerequisites: CSC207H5 and CSC236H5 and ( STA107H5 or STA246H5 or STA256H5 or STA237H1 or STA238H1 or ECO227Y5 or ECE286H1 or MIE286H1)
Exclusions: CSC263H1 or CSC265H1 or CSCB63H3
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Computer Science Major or Computer Science minor programs.

Distribution Requirement: Science
Total Instructional Hours: 24L/12T
Mode of Delivery: In Class, Hybrid

CSC290H5 • Communication Skills for Computer Scientists

Targeted instruction and significant practice in the communications required for careers in computer science. The curriculum covers written, oral and interpersonal communication. Students will hand in short pieces of writing each week, will make oral presentations several times in the semester, and will work together in simulated project meetings and other realistic scenarios of pair and small group interaction. This can be used to satisfy the writing requirement in CSC programs.

Prerequisites: CSC148H5
Exclusions: CSC290H1

Distribution Requirement: Science
Total Instructional Hours: 24L/12T
Mode of Delivery: In Class

CSC299H5 • Research Opportunity Program

This course provides a richly rewarding opportunity for students in their second year to work in the research project of a professor in return for 299H course credit. Students enrolled have an opportunity to become involved in original research, learn research methods and share in the excitement and discovery of acquiring new knowledge. Participating faculty members post their project descriptions for the following summer and fall/winter sessions in early February and students are invited to apply in early March. See Research Opportunity Program (ROP) for more details.

Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Bioinformatics Specialist or Computer Science Major programs.

Distribution Requirement: Science
Mode of Delivery: In Class

CSC299Y5 • Research Opportunity Program

This course provides a richly rewarding opportunity for students in their second year to work in the research project of a professor in return for 299Y course credit. Students enrolled have an opportunity to become involved in original research, learn research methods and share in the excitement and discovery of acquiring new knowledge. Participating faculty members post their project descriptions for the following summer and fall/winter sessions in early February and students are invited to apply in early March. See Research Opportunity Program (ROP) for more details.

Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Bioinformatics Specialist or Computer Science Major programs.

Distribution Requirement: Science
Mode of Delivery: In Class

CSC300H5 • Computers and Society

Privacy and Freedom of Information; recent Canadian legislation and reports. Computers and work; employment levels, quality of working life. Electronic fund transfer systems; transborder data flows. Computers and bureaucratization. Computers in the home; public awareness about computers. Robotics. Professionalism and the ethics of computers. The course is designed not only for science students, but also those in social sciences or humanities.

Prerequisites: Any CSC half-course and CGPA 2.0
Exclusions: CSC300H1 or CSCD03H3
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Bioinformatics Specialist or Computer Science Major programs.

Distribution Requirement: Science
Total Instructional Hours: 24L/12T
Mode of Delivery: In Class

CSC301H5 • Introduction to Software Engineering

An introduction to agile development methods appropriate for medium-sized teams and rapidly-moving projects. Basic software development infrastructure; requirements elicitation and tracking; estimation and prioritization; teamwork skills; basic UML; design patterns and refactoring; security.

Prerequisites: CSC209H5
Exclusions: CSC301H1 or CSCC01H3
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Bioinformatics Specialist or Computer Science Major programs.

Distribution Requirement: Science
Total Instructional Hours: 24L/12T
Mode of Delivery: In Class

CSC309H5 • Programming on the Web

An introduction to software development on the web. Concepts underlying the development of programs that operate on the web; survey of technological alternatives; greater depth on some technologies. Operational concepts of the internet and the web, static client content, dynamic client content, dynamically served content, n-tiered architectures, web development processes, and security on the web. Assignments involve increasingly more complex web-based programs.

Prerequisites: CSC209H5 and CSC263H5
Exclusions: CSC309H1 or CSCC09H3
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Bioinformatics Specialist or Computer Science Major programs.

Distribution Requirement: Science
Total Instructional Hours: 24L/12P
Mode of Delivery: In Class, Hybrid

CSC310H5 • Information Theory

An introduction to reliable and accurate transmission of information. Entropy, lossless and lossy data compression, optimal compression, information channels, channel capacity, error-correcting codes, and digital fountain codes. Course concepts form the basis for practical applications such as ZIP and MP3 compression, channel coding for DSL lines, communication in deep space and to mobile devices, CDs and disk drives, the development of the Internet, as well as linguistics and human perception.

Prerequisites: ( CSC148H5 or CSC111H5) and MAT223H5 and ( STA246H5 or STA256H5 or ECO227Y5)
Exclusions: CSC310H1
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Bioinformatics Specialist or Computer Science Major programs.

Distribution Requirement: Science
Total Instructional Hours: 24L/12T
Mode of Delivery: In Class

CSC311H5 • Introduction to Machine Learning

An introduction to methods for automated learning of relationships on the basis of empirical data. Classification and regression using nearest neighbour methods, decision trees, linear models, and neural networks. Clustering algorithms. Problems of overfitting and of assessing accuracy.

Prerequisites: CSC207H5 and ( MAT223H5 or MAT240H5) and MAT232H5 and ( STA246H5 or STA256H5 or STA237H1 or STA238H1 or ECO227Y5 or ECE286H1 or MIE286H1)
Exclusions: CSC411H5 or CSC311H1 or CSCC11H3
Recommended Preparation: CSC338H5
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Bioinformatics Specialist, Computer Science Major and Applied Statistics Specialist or Major programs.

Distribution Requirement: Science
Total Instructional Hours: 24L/12P
Mode of Delivery: In Class, Hybrid

CSC318H5 • The Design of Interactive Computational Media

User-centered design of interactive systems. Methodologies, principles, metaphors, task analysis, and other topics. Interdisciplinary design; the role of industrial design and the behavioural sciences. Interactive hardware and software; concepts from computer graphics. Classes of direct manipulation systems, extensible systems, rapid prototyping tools. Additional topics in interactive computational media. Students work on projects in interdisciplinary teams. Enrolment limited, but non-computer scientists welcome. 

Prerequisites: CSC207H5
Exclusions: CSC318H1 or CSCC10H3
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Bioinformatics Specialist or Computer Science Major programs.

Distribution Requirement: Science
Total Instructional Hours: 24L/12T
Mode of Delivery: In Class

CSC322H5 • Introduction to Algebraic Cryptography

(Cross list with MAT302H5) The course will take students on a journey through the methods of algebra and number theory in cryptography, from Euclid to Zero Knowledge Proofs. Topics include: block ciphers and the Advanced Encryption Standard (AES); algebraic and number-theoretic techniques and algorithms in cryptography, including methods for primality testing and factoring large numbers; encryption and digital signature systems based on RSA, factoring, elliptic curves and integer lattices; and zero-knowledge proofs.

Prerequisites: ( MAT224H5 or MAT240H5) and MAT301H5
Exclusions: MAT302H5 or MATC16H3
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Bioinformatics Specialist, Computer Science Major and Applied Statistics Specialist or Major programs.

Distribution Requirement: Science
Total Instructional Hours: 36L/12T
Mode of Delivery: In Class

CSC324H5 • Principles of Programming Languages

Major topics in the development of modern programming languages. Syntax specification, type systems, type inference, exception handling, information hiding, structural recursion, run-time storage management, and programming paradigms. Two non-procedural programming paradigms: functional programming (illustrated by languages such as Lisp, Scheme, ML or Haskell) and logic programming (illustrated by languages such as Prolog, XSB or Coral).

Prerequisites: CSC207H5 and CSC236H5
Exclusions: CSC324H1 or CSCC24H3
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Bioinformatics Specialist or Computer Science Major programs.

Distribution Requirement: Science
Total Instructional Hours: 24L/12P
Mode of Delivery: In Class, Hybrid

CSC338H5 • Numerical Methods

Computational methods for solving numerical problems in science, engineering and business. Linear and non-linear equations, approximation, optimization, interpolation, integration and differentiation. The aim is to give students a basic understanding of floating-point arithmetic and the implementation of algorithms used to solve numerical problems, as well as a familiarity with current numerical computing environments. Course concepts are crucial to a wide range of practical applications such as computational finance and portfolio management, graphics and special effects, data mining and machine learning, as well as robotics, bioinformatics, medical imaging and others.

Prerequisites: ( CSC148H5 or CSC111H5) and ( MAT134H5 or MAT136H5 or MAT137Y5 or MAT139H5 or MAT157Y5 or MAT159H5 or MAT233H5) and ( MAT223H5 or MAT240H5) and ( CSC263H5 or 1.0 MAT credit at the 200+ level)
Exclusions: CSC350H5 or CSC336H1 or CSC350H1 or CSC351H1 or CSCC37H3
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Bioinformatics Specialist or Computer Science Major or Mathematical Sciences – Major: Applied Mathematics programs.

Distribution Requirement: Science
Total Instructional Hours: 24L/12T
Mode of Delivery: In Class, Hybrid

CSC343H5 • Introduction to Databases

Introduction to database management systems. The relational data model. Relational algebra. Querying and updating databases: the query language SQL. Application programming with SQL. Integrity constraints, normal forms, and database design. Elements of database system technology: query processing, transaction management.

Prerequisites: CSC263H5
Exclusions: CSC343H1 or CSCC43H3
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Bioinformatics Specialist or Computer Science Major programs.

Distribution Requirement: Science
Total Instructional Hours: 24L/12P
Mode of Delivery: In Class, Hybrid

CSC347H5 • Introduction to Information Security

An investigation of many aspects of modern information security. Major topics cover: Techniques to identify and avoid common software development flaws which leave software vulnerable to crackers. Utilizing modern operating systems security features to deploy software in a protected environment. Common threats to networks and networked computers and tools to deal with them. Cryptography and the role it plays in software development, systems security and network security.

Prerequisites: CSC209H5 and CSC236H5
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Bioinformatics Specialist or Computer Science Major programs.

Distribution Requirement: Science
Total Instructional Hours: 24L/12P
Mode of Delivery: In Class, Hybrid

CSC358H5 • Principles of Computer Networks

Introduction to computer networks and systems programming of networks. Basic understanding of computer networks and network protocols. Network hardware and software, routing, addressing, congestion control, reliable data transfer, and socket programming.

Prerequisites: CSC209H5 and CSC258H5 and CSC263H5
Exclusions: CSC358H1 or CSC457H1
Enrolment Limits: Priority is given to students enrolled in Computer Science Specialist, Information Security Specialist, Bioinformatics Specialist or Computer Science Major programs.

Distribution Requirement: Science
Total Instructional Hours: 24L/12P
Mode of Delivery: In Class, Hybrid