CSC465H1 - Formal Methods in Software DesignHours: 24L/12T Using mathematics to write error-free programs. Proving each refinement; identifying errors as they are made. Program development to meet specifications; modifications that preserve correctness. Useful for all programming; essential for programs that lives depend on. Basic logic, formal specifications, refinement. Conditional, sequential, parallel, interaction, probabilistic programming, and functional programming. Prerequisite: CSC236H1/CSC240H1/MAT309H1 Recommended Preparation: CSC463H1 Distribution Requirements: Science Breadth Requirements: The Physical and Mathematical Universes (5)

CSC466H1 - Numerical Methods for Optimization ProblemsHours: 36L Numerical methods for unconstrained optimization problems, in particular line search methods and trust region methods. Topics include steepest descent, Newton's method, quasi-Newton methods, conjugate gradient methods and techniques for large problems. This course will normally be offered every other year. Prerequisite: CSC336H1, MAT221H1/MAT223H1/MAT240H1, MAT235Y1/MAT237Y1/MAT257Y1 Distribution Requirements: Science Breadth Requirements: The Physical and Mathematical Universes (5)

CSC469H1 - Operating Systems Design and ImplementationHours: 24L/12T An in-depth exploration of the major components of operating systems with an emphasis on the techniques, algorithms, and structures used to implement these components in modern systems. Project-based study of process management, scheduling, memory management, file systems, and networking is used to build insight into the intricacies of a large concurrent system. Prerequisite: CSC369H1 Distribution Requirements: Science Breadth Requirements: The Physical and Mathematical Universes (5)

CSC473H1 - Advanced Algorithm DesignHours: 24L/12P Advanced algorithm design techniques, with emphasis on the role that geometry, approximation, randomization, and parallelism play in modern algorithms. Examples will be drawn from linear programming and basics of continuous optimization; randomized algorithms for string matching, graph problems, and number theory problems; streaming algorithms and parallel algorithms in the Map-Reduce model. Prerequisite: CSC373H1, MAT221H1/MAT223H1/MAT240H1 Distribution Requirements: Science Breadth Requirements: The Physical and Mathematical Universes (5)

CSC485H1 - Computational LinguisticsHours: 36L Computational linguistics and the processing of language by computer. Topics include: context-free grammars; chart parsing, statistical parsing; semantics and semantic interpretation; ambiguity resolution techniques; reference resolution. Emphasis on statistical learning methods for lexical, syntactic, and semantic knowledge. Prerequisite: STA247H1/STA255H1/STA257H1 or familiarity with basic probability theory, including Bayes's theorem; CSC207H1/CSC209H1 or proficiency in Python and software development. Recommended Preparation: CSC324H1/CSC384H1 Distribution Requirements: Science Breadth Requirements: The Physical and Mathematical Universes (5)

CSC486H1 - Knowledge Representation and ReasoningHours: 24L/12T Representing knowledge symbolically in a form suitable for automated reasoning, and associated reasoning methods. Topics from: first-order logic, entailment, the resolution method, Horn clauses, procedural representations, production systems, description logics, inheritance networks, defaults and probabilities, tractable reasoning, abductive explanation, the representation of action, planning. Prerequisite: CSC384H1, CSC363H1/CSC365H1/CSC373H1/CSC375H1/CSC463H1 Recommended Preparation: CSC330H1 Distribution Requirements: Science Breadth Requirements: The Physical and Mathematical Universes (5)

CSC488H1 - Compilers and InterpretersHours: 24L/12T The structure of compilers, Programming language processing. Scanning based on regular expressions, Parsing using context free grammars, Semantic analysis (type and usage checking), Compiler dictionaries and tables. Runtime organization and storage allocation, code generation, optimization. Use of modern compiler building tools. Course project involves building a complete compiler. Prerequisite: CSC258H1, CSC324H1, CSC263H1/CSC265H1 Distribution Requirements: Science Breadth Requirements: The Physical and Mathematical Universes (5)

CSC490H1 - Capstone Design ProjectHours: 48L This half-course gives students experience solving a substantial problem that may span several areas of Computer Science. Students will define the scope of the problem, develop a solution plan, produce a working implementation, and present their work using written, oral, and (if suitable) video reports. Class time will focus on the project, but may include some lectures. The class will be small and highly interactive. Project themes change each year. Contact the Computer Science Undergraduate Office for information about this year's topic themes, required preparation, and course enrolment procedures. Not eligible for CR/NCR option. Prerequisite: Permission of the instructor Distribution Requirements: Science Breadth Requirements: The Physical and Mathematical Universes (5)

Class Time

Not Available (Possibly Cancelled)

CSC491H1 - Capstone Design ProjectHours: 48L This half-course gives students experience solving a substantial problem that may span several areas of Computer Science. Students will define the scope of the problem, develop a solution plan, produce a working implementation, and present their work using written, oral, and (if suitable) video reports. Class time will focus on the project, but may include some lectures. The class will be small and highly interactive. Project themes change each year. Contact the Computer Science Undergraduate Office for information about this years topic themes, required preparation, and course enrolment procedures. Not eligible for CR/NCR option. Prerequisite: Permission of the instructor Distribution Requirements: Science Breadth Requirements: The Physical and Mathematical Universes (5)

CSC494H1 - Computer Science ProjectHours: TBA This half-course involves a significant project in any area of Computer Science. The project may be undertaken individually or in small groups. The course is offered by arrangement with a Computer Science faculty member. Not eligible for CR/NCR option. Prerequisite: Three 300-/400-level CSC half-courses, and permission of the Associate Chair, Undergraduate Studies. Contact the Computer Science Undergraduate Office for information about course enrolment procedures. Distribution Requirements: Science Breadth Requirements: The Physical and Mathematical Universes (5)

CSC495H1 - Computer Science ProjectHours: TBA This half-course involves a significant project in any area of Computer Science. The project may be undertaken individually or in small groups. The course is offered by arrangement with a Computer Science faculty member. Not eligible for CR/NCR option. Prerequisite: Three 300-/400-level CSC half-courses, and permission of the Associate Chair, Undergraduate Studies. Contact the Computer Science Undergraduate Office for information about course enrolment procedures. Distribution Requirements: Science Breadth Requirements: The Physical and Mathematical Universes (5)