1) Introduction to Machine Learning (last offered Fall 2020)
Course objectives
This course will follow “The One Hundred Page Machine Learning Book” by Andriy Burkov from cover-to-cover. Students will gain an introductory-level understanding of both supervised and unsupervised machine learning (ML), including deeper knowledge of a number of algorithms of each type. Students will learn how to evaluate and quantify predictive performance of ML systems. Students will also become familiar with one or more ML development environments with practical assignments and demonstrations.

Permission of the Department.
SYSC 2006, 4th Year Status, and (ECOR 2050, SYSC 2510, STAT 2605 or STAT 3502)

Prior knowledge
Students should:
• Be proficient in software development in at least one language.
• Be able to program in Python or learn to do so on their own time within the first two weeks of class.
• Understand basic probability and statistics.
• Have strong math skills, including working with differential equations, matrix operations, and gradients.

Learning outcomes
By the end of this course, students should be able to:
• Demonstrate understanding of basic supervised and unsupervised machine learning models.
• Develop models to solve various types of machine learning problems, including regression.
• Classification, natural language processing, and clustering.
• Demonstrate a theoretical and practical understanding of a number of machine learning approaches including decision trees, logistic and linear regression, support vector machines, neural, networks, convolutional networks, and recurrent neural networks.
• Apply existing machine learning platforms to develop classification and regression models.
• Understand how to quantify predictive performance of machine learning models (i.e. metrics and basic experiment design).

2) Introduction to Data Science (last offered Winter 2021)
Course Objectives
This course is not intended to cover all principles of data science in details. Instead, it provides a wide overview of the main concepts in data science for beginners. It introduces a set of preliminary tools and techniques to perform data science tasks. Students will gain an introductory level understanding of methodologies to infer insights from data by focusing on analytical techniques. They will learn the basics of the different properties of data (structure, size, and type), data collection and cleansing, descriptive and inferential statistics, data visualization, modeling, and network analysis. In addition, students will learn how to apply some software engineering principles and concepts such as anticipation of change and separation of concerns in the context of data science.

Permission of the Department.
SYSC 2006, 4th Year Status, and (ECOR 2050, SYSC 2510, STAT 2605 or STAT 3502)

Prior Knowledge
Students should
• Understand basic statistical concepts.
• Have mathematical skills in linear algebra and probabilities.
• Have knowledge of python or be prepared to acquire the basics of python independently.

Learning Outcomes
By the end of this course, students should be able to:
• Demonstrate an understanding of data properties and to categorize data.
• Perform basic statistical analysis (descriptive and inferential)
• Be able to make predictions using regression analysis.
• Use fundamental python libraries/toolboxes for reading, filtering, manipulating, and plotting data.
• Distinguish between good and bad data visualization, understand graphs, and make sound data visualization choices.
• Design, create, validate, and evaluate simple data models.
• Understand the basics of Machine Learning: supervised, unsupervised, and reinforcement learning
• Use applicable software engineering principles for the data science process.

3) Advanced Operating Systems (last offered Winter 2021)

Course Description:
SYSC 4001 (Operating Systems) introduced students to basic Operating System concepts: processes and threads, support for concurrency, memory management, CPU and disk scheduling, and file system. This course builds on this background and will discuss how actual, modern operating systems implement these basic concepts. It will cover a range of different operating systems, each with their own unique constraints and challenges: Linux/PC-class devices, Virtual Machines and Containers, Embedded (real-time) Systems, Operating Systems for Mobile/Handheld Devices, and Distributed Operating Systems.

Prerequisites: SYSC 4001 (Operating Systems) and 4th year status. Restricted to Computer Systems Engineering and Software Engineering.