One of the many benefits of being a CFM student is the ability to access specialized courses that develop your technical and financial skills in focused and practice-based ways. They may include a major project or team-based project, and are often taught differently than traditional lecture-style classes.
Explore our specialized courses
AFM 326 — Student Venture Fund - Analyst
Get hands-on training in early-stage (angel and venture capital) investing with guidance from industry experts and supervision by faculty. Analysts will attend investor meetings, assist in market research and specific deal due diligence, and prepare investment proposals.
This course allows students to evaluate founding management, complete market research, value companies, conduct thorough due diligence, recommend and make investment recommendations, work with other angel and institutional investors, and manage a portfolio of investments in early stage companies.
This course is 0.25 units, or one half of an AFM elective.
AFM 329 — Investment Management - Senior Analyst
You will receive hands-on training in equity valuation in one industry sector. As a senior analyst, you will monitor existing equity holdings in different sectors, make new equity selections in the sectors, prepare equity research reports, and present trading recommendations to an investment team in a student-run investment portfolio.
Call for applications for the Spring term will be posted on LEARN in my "My SAF Community" in late October/early November, and for the Fall and Winter terms in July.
This course is 0.25 units, or one half of an AFM elective.
AFM 328 — Investment Management - Junior Analyst
Experience hands-on training in equity valuation in one industry sector. As a junior analyst, you will understand why fund management is broken into different sectors, monitor existing equity holdings in a particular sector, make new equity selections in the sector, prepare equity research reports, and present trading recommendations to an investment team in a student-run investment portfolio.
Call for applications for the Spring term will be posted on LEARN in my "My SAF Community" in late October/early November, and for the Fall and Winter terms in July.
This course is 0.25 units, or one half of an AFM elective.
AFM 334 — International Study Experience
The course aims to teach you about the impact of relevant global world issues. Gain insight into the business operations of multinational firms and learn from business executives across multiple industries in the private and public sectors.
A significant portion of the course's evaluation is tied to a 1-week travel period where you'll meet with senior executives at international firms across different countries (e.g. Indonesia, United States, Vietnam, etc). You are expected to complete assignments and collaborate with others during and after the course.
This course is 0.5 units; or one AFM elective.
Computing and Financial Management courses
"CFM 301 has really helped me with co-op by providing me with the technical skills that I needed for interviews...In those interviews, [the course] allowed me to sort of power and speed through [the technical assignments] much better than I would have if I didn't take the course."
Computer Science courses
Many of these classes expect that students will take on a major project or team-based project during the term.
Some courses require CS 350 - Operating Systems as a pre-requisite. Review the undergraduate course requirements and plan out your classes to enroll.
All the courses below are 0.5 units and will count as one computer science elective.
CS398 — Topics in Computer Science
This course is designed to present special topics in Computer Science, and allows for visiting faculty to share their expertise.
Recent offerings of the course have included subjects in graphics programming and full-stack application development. Topics will be announced.
CS493 — Team Project 1
Work in teams on substantial open-ended computer science problems as part of the CS493/494 course sequence. Lectures describe project management fundamentals and ethical and legal issues in computing. Students form teams, select projects, define project goals, perform risk assessment, establish a project plan, and develop a prototype.
CS399 — Readings in Computer Science
This course allows exceptional students to explore areas of computer science that are not typically covered in regular classes. Independent study is required and is guided by the professor, with readings, discussions, and small projects.
Topics will be announced by the School. Previous examples of the course include:
- Quantum Computing Foundations – readings on quantum algorithms and complexity
- Artificial Intelligence Ethics – exploring fairness, accountability, and transparency in machine learning
- Cryptography and Security – advanced readings on zero-knowledge proofs, blockchain, or post-quantum cryptography
- Human-Computer Interaction – specialized studies in usability, accessibility, or design theory
- Distributed Systems – readings on consensus protocols, fault tolerance, and cloud architectures.
- Computational Complexity – deeper dives into P vs NP, circuit complexity, and probabilistic classes
CS494 — Team Project 2
CS499R — Readings in Computer Science
This is a customizable course with changing topics. Students propose an area of interest and work with the professor to design a reading list and study plan.
Reading course topics are announced by the School. Previous examples include:
- Quantum Computing and Complexity Theory – exploring quantum algorithms, computational models, and complexity classes
- Cryptography and Privacy – advanced readings on secure multiparty computation, zero-knowledge proofs, and privacy-preserving systems
- Software Engineering and Requirements Analysis – specialized readings in formal methods, requirements documentation, and verification
- Programming Languages and Type Systems – deep dives into static analysis, type safety, and language design
- Distributed Systems and Cloud Computing – consensus protocols, scalability, and fault tolerance
- Human-Computer Interaction and Usability – readings on accessibility, design theory, and evaluation methods
The Big 3
There are three computer science courses that have the reputation of being more challenging and independent. They combine deep theory with complex implementation. These classes can provide lots of experience in working towards a bigger and more focused project, spanning the term.
CS 444 – Compiler Construction
This course focuses on the design and implementation of compilers. It is heavy on theory (parsing, lexical analysis, optimization) and practical coding. It includes phases of compilation, lexical analysis and a review of parsing, compiler-compilers and translator writing systems, LEX and YACC, scope rules, block structure, and symbol tables, runtime stack management, parameter passage, heap storage management, code generation, and macros. Focus on building a working compiler from scratch.
CS 452 – Real-Time Programming
This course includes issues of microcomputer architecture, a real-time programming language and operating system, and offers hands-on experience programming a microcomputer for applications such as process control, data acquisition, and communication. Students will learn low-level systems programming with strict timing constraints and how to build an operating system kernel. Students will work with hardware-level concepts.
This class is affectionately known as the "trains" course. The lab for this class is located in MC 3018.
CS 488 – Introduction to Computer Graphics
Students will implement a graphics engine and produce a final project (often a 3D scene or game). It covers rendering, modelling, and graphics pipelines and requires software and hardware for interactive computer graphics, implementation of device drivers, 3-D transformations, clipping, perspective, and input routines. Data structures, hidden surface removal, colour shading techniques, and some additional topics will be covered. This course is ideal for students interested in visual computing.