CS 400 Level

435 Algorithms and Complexity
This course provides an introduction to some fundamental areas of research in algorithms and computational complexity theory. Flow networks and randomized, approximation, parameterized, and online algorithms and complementary techniques in hardness of approximation and lower bounds are presented. This course is a broad exploration of these topics to provide a well-rounded introduction to modern theories in algorithms and theoretical computer science. Prerequisites: CSCI 355, or permission of the chair. Recommended: CSCI 356. Three credits. Next offered 2020-2021

444 Machine Learning
This course covers modern technologies in computational machine learning. Validation of machine learning algorithms will be taught alongside computational design considerations for the creation of reliable and robust machine learning models. Machine learning techniques will be taught in detail from a computational technology perspective, including decision trees, bootstrapping, bagging, super learners, AdaBoost, artificial & convolutional neural networks and methods for minimizing error on unseen data. Classical learning techniques will also be presented. Prerequisites: CSCI 161, STAT 224 or 231 or 101 or permission of department chair. Three credits. Next offered 2020-2021

455 Parallel and Distributed Computing
Introduces parallel programming techniques as a natural extension to sequential programming. Students will learn techniques of message-passing parallel programming; study problem-specific algorithms in both non-numeric and numeric domains. Topics will include numeric algorithms; image processing and searching; optimization. Prerequisites: CSCI 263; 375 recommended. Three credits and a two-hour lab. Not offered 2020-2021; next offered 2021-2022.

467 Cyber Security
Covers the theory and practice of computer and network security, including cryptography, authentication, network security, and computer system security. Topics include secret and public key cryptography; message digests; authentication, including password-based, address-based, and cryptographic; network security; systemsecurity, including intruders,malicious software, and firewalls. Students will use and implement algorithms. Prerequisite: CSCI 368, completed or concurrent. Three credits. Offered 2020-2021 and in alternate years.

471 Topics in Computer Science
This course explores current topics in computer science, such as big data, distributed computing, bioinformatics and machine learning. Three credits. See https://www.mystfx.ca/computer-science/computer-science-courses for more information.

483 Interactive Programming with Java
This course introduces the object-oriented language Java and its application to interactive programming. Topics include Java syntax and object inheritance structure, exception handling, GUI and Applet programming, Java networking and multithreading. Credit will be granted for only one of CSCI 483 or INFO 355. Prerequisite: CSCI 162; 255 is recommended. Three credits and a two-hour lab. Offered 2020-2021 and in alternate years.

485 Software Design
The course covers techniques for the design and management of large software projects, including structured programming, debugging, and testing methodologies. Examples of large systems will be provided and a programming project will be completed. Prerequisite: CSCI 162; 483 is recommended. Three credits.

487 Organization of Programming Languages
Topics include structure of language definitions, control structures, data types and data flow, compilers vs interpreters, introduction to lexical analysis and parsing. Prerequisite: CSCI 263, and 375 completed or concurrent. Three credits and a two-hour lab. Offered 2020-2021 and in alternate years.

491 Senior Seminar
Cross-listed as MATH 491 and STAT 491. The purpose of this non-credit course is to assist students in carrying out research, composition, and oral presentation. Students will present a project topic in the fall term and their project in the spring. Attendance at departmental seminars is mandatory. No credit.

493 Senior Thesis
Students will prepare and present a thesis based on original research conducted under the supervision of a faculty member. Required for honours students; permitted for advanced major students. Three credits.

495 Artificial Intelligence
An introduction to the core concepts of artificial intelligence, including state space, heuristic search techniques, knowledge representation, logical inference, uncertain reasoning, and machine learning. Specific methods covered include neural networks, genetic algorithms, and reinforcement learning. Prerequisites: CSCI 255, 263, 277. Three credits.