Computer Science Courses

100 Level

128 Computing Literacy and Coding for Problem Solving
This course introduces coding for everyday problem solving. Coding is introduced through multimedia computing including manipulation of images, sound and video. Intuitive programming languages, constructs and environment are used to introduce basic coding structures. The prevalence of computing in modern society is discussed. Students from all disciplines can develop their powers of coding for problem solving. B.Sc. Advanced Major and Honours students may only count this course as an approved or open elective. Three credits.

135 Computer Application Technology
This course enables students to use a variety of software tools to assist in their postsecondary studies and future careers. The course covers a broad range of information and communication tools essential for analyzing and presenting data, communicating information, organizing and writing papers, and preparing talks, slide presentations and posters. Webpage management is introduced. Topics covered support students in education, business, humanities and the health/social/physical sciences. B.Sc. Advanced Major and Honours students may only count this course as an approved or open elective; there is no such restriction for students in Arts or Business programs. Credit will be granted for only of CSCI 135 or CSCI 235. Three credits.

161 Introduction to Programming
An introduction to computers, algorithms and programming. Topics include problem analysis, algorithm development, data representation, control structures, arrays, and file manipulation. Credit will be granted for only one of CSCI 161, CSCI 125, ENGR 144, 147 or INFO 255. Three credits and a two-hour lab.

162 Programming and Data Structures
 Continuing from the material in CSCI 161, this course covers memory management and data abstraction via classes and objects, and introduces the linear data structures lists, stacks, and queues. Structured programming is encouraged via modular development. Credit will be granted for only one of CSCI 162 and INFO 256. Prerequisite: CSCI 125 or 161 or ENGR 147. Three credits and a two-hour lab.

200 Level

215 Social Issues in the Information Age
This course exposes students to the various impacts of technology on modern society with the goal of further developing their critical thinking and their ability to make informed decisions in this rapidly changing information age. Topics covered include privacy and security, biotechnology, cybercrime, genetic engineering, artificial intelligence, digitization and intellectual property, ethical issues in computing. Other topics and/or their emphasis may vary by semester. Students from every background will benefit from this course. Three credits.

223 Introduction to Data Science
The course will provide students with the basic understanding of the theory and practice of data science and its applications in different real-world domains. Student will also gain practical skills in handling structured and unstructured data, analyzing and visualizing data, data mining, as well as gain hands-on experience of software tools and apply the basic techniques to their own different scientific, engineering and business applications. Prerequisite: One of CSCI 125, 128, 161 or 225. Three credits.

225 Coding for Health Analytics
Technological development has transformed modern healthcare. The large amounts of health data currently acquired and analyzed has the potential to positively affect a patient’s quality of life. This interdisciplinary course focuses on developing practical coding skills used in the healthcare domain, a rapidly growing field of computing that can have a beneficial impact on patient care and public health. Suitable for students from a variety of backgrounds planning a career involving health-related data. Open to students in all degree programs. Prerequisite: CSCI 128 or CSCI 125 or CSCI 161 or with permission of department chair. Three credits.

255 Advanced Data Structures
This course provides a deep investigation of foundational data structures and algorithms. Criteria for selecting appropriate data structures and algorithms for a given problem are presented. General problem solving is emphasized throughout the course. Specific topics include stacks, queues, lists, trees, searching, sorting, traversals, recursion, graphs, hashing, and complexity analysis. Prerequisite: CSCI 162. Three credits and a two-hour lab.

263 Computer Organization
This course covers basic computer arithmetic, architectures, and instruction sets; in-depth study of the central processing unit, memory and input/output organization; and microprogramming and interfacing. Credit will be granted for only one of CSCI 263 or INFO 225. Prerequisite: CSCI 162. Three credits and a two-hour lab.

275 Database Management Systems
An introduction to the theory and practice associated with the design and implementation of databases. Topics include database models (relational model in detail), design, normalization, transactions, SQL, and a DBMS (Oracle). Credit will be granted for only one of CSCI 275, BSAD 384 or INFO 275. Prerequisite: CSCI 162. Three credits and a two-hour lab.

277 Discrete Structures
An introduction to sets, binary relations and operations; induction and recursion; partially ordered sets; simple combinations; truth tables; Boolean algebras and elementary group theory, with applications to logic networks, trees and languages; binary coding theory and finite-state machines. Cross-listed as MATH 277. Prerequisites: MATH 101, 102 or 107 or 127 or 122 or CSCI 162. Three credits.

300 Level

335 Management Science
This course prepares students for careers as analysts and consultants in industries with a focus on enhancing business value through operations, logistics and supply chain management. A variety of successful implementations of management science/operations research tools in different application areas will be studied. Tools such as linear programming, project scheduling with uncertain activity times, various inventory models and simulation will be introduced and coupled with application in the fields of managing operations in manufacturing, long term financial planning and management of healthcare systems. Cross-listed as MATH 335. Prerequisite: MATH 105 or 106/126 or CSCI 161. Three credits. Not offered 2020-2021; next offered 2021-2022.

340 Evolutionary Computation
Evolutionary computation is a family of powerful optimization algorithms often used to find solutions to computationally intractable problems. The study of these algorithms and their application to problems is a large research area within computer science. Course topics include combinatorial optimization, genetic algorithms, particle swarm optimization, search space analysis, multi-objective optimization, and neuroevolution. Research practices and technical writing will be emphasized for course assignments/projects. Prerequisites: CSCI 255, CSCI 223 or 275; or permission of chair. Three credits. Not offered 2020-2021; next offered 2021-2022.

345 Computer Graphics
Covers fundamental mathematical, algorithmic, and representational issues in computer graphics. Topics include graphics programming, geometrical objects and transformations, 2-D and 3-D data description, manipulation, viewing projections, clipping, shading and animation. Prerequisites: MATH 253; CSCI 255. Three credits and a two-hour lab. Offered 2020-2021 and in alternate years.

350 Biomedical Computation
Technological development has transformed modern biomedical data analysis. The large amounts of biomedical data currently acquired has the potential to have real world positive impacts, however, the underlying nature of the data presents major challenges for computational biomedical analysis techniques. This course focuses on advanced technologies applied to biomedical computation, a rapidly growing field with tremendous potential for having a beneficial impact on patient care and public health. Three credits. Offered 2020-2021 and in alternate years.

355 Algorithm Design and Analysis
The development of provably-correct algorithms to solve problems and their analyses. Topics include basic algorithm design techniques such as greedy, divide-and-conquer, and dynamic programming, and network flows. Intractability and NP-completeness. Prerequisites: CSCI 255, 277. Three credits and a two-hour lab. Not offered 2020-2021; next offered 2021-2022.

356 Theory of Computing
An introduction to the theoretical foundations of computer science, examining finite automata, context-free grammars, Turing machines, undecidability, and NP-completeness. Abstract models are employed to help categorize problems as undecidable, intractable, tractable, and efficient. Prerequisites: CSCI 255, 277. Three credits. Not offered 2020-2021; next offered 2021-2022.

364 Mobile Application Development
A mobile application (mobile app) is a software application designed to run on smartphones, tablet and other mobile devices. The android mobile platform has become one of the most popular mobile platforms used by millions around the world. This course introduces application development for the Android OS that can run on mobile devices. The course covers the Android system, the Android development tools, Activity Lifecycle, User Interfaces in Android, and Android application development that uses SMS, databases, location tracking, and/or multimedia. Credit will be granted for only one of CSCI 364 or CSCI 471. Prerequisite: CSCI 162 or INFO 256. Three credits and two hour lab. Not offered 2020-2021; next offered 2021-2022.

368 Data Communications and Networking
This course covers communication systems; environments and components; common carrier services; network control, design and management; distributed and local networks. Credit will be granted for only one of CSCI 368 or INFO 465. Prerequisite: CSCI 255. Three credits and a two-hour lab.

371 Selected Topics
This course explores current topics in computer science, such as big data, distributed computing, bioinformatics and machine learning. Three credits. 375 Operating Systems An overview of operating systems functions: file management, CPU scheduling, process management, synchronization, memory management, and deadlock handling. UNIX will be introduced and used in this course. Prerequisite: CSCI 263, completed or concurrent. Three credits and a two-hour lab.

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.

500 Level

521 Real Time Systems 
This course covers analysis techniques and development methodology for realtime systems. Topics include: real-time process and control, soft and hard real time systems, real-time scheduling algorithms, schedulability analysis theory, resource access control, real-time operating systems, real-time communications, performance analysis, requirement specification and system specification, verification of real-time systems, and formal development process of time critical real-time systems. Three credits. 

522 High Performance Computing 
This course is designed for graduate level parallel computing courses. This is not only a course which is linked to real parallel programming software, but also a course which covers many theoretical aspects on architectures, algorithms and applications. This course concentrates on parallel program to be executed not only on special multiprocessor systems or supercomputers, but also on networked workstations (Linux) or PCs using freely available parallel software tools such as Message Passing Interface (MPI) and Parallel Virtual Machine (PVM). Some emerging topics such as cluster computing, grid computing, cloud computing, peerto-peer computing, as well as multicore systems will be introduced. Three credits.

523 Software Engineering 
This course covers major concepts in software engineering. The fundamental characteristics of the software life cycle as well as tools and techniques for development and maintenance of large software systems will be presented. A major objective of this course is to give the student real-life software development experience. This objective is accomplished through the student’s participation on a team that will develop a single software product over the course of the term. Product development will follow the full software life cycle from requirements analysis through product delivery. The focus will be on an object-oriented development strategy. Three credits. 

524 Mobile Application Design/Development
Mobile applications are software applications designed to run on mobile devices. The Android mobile platform has become one of the most popular platforms used by millions of devices around the world. This course introduces App development for the Android OS. The course covers the Android system, fundamental components of Android Apps, how to create user interfaces in Android, and how to create Android Apps that use databases, location, and networking, multimedia and/or other services. Three credits. 

525 Machine Learning Design
This course covers modern technologies in computational machine learning with advanced applications in deep learning. Validation of machine learning algorithms will be taught alongside computational design considerations for the creation of reliable and robust machine learning models. Technologies taught will include autoencoders, deep learning for segmentation (U-Nets etc.), recurrent neural networks, long short-term memory learning machines and explainable artificial intelligence. Classical machine learning techniques will also be presented for breadth of background. Three credits. 

526 Embedded Systems
This course will study embedded programming with a focus on wireless sensor networks, and the state of the art in mobile communication research. Students are expected to present research papers from the recent literature, and to learn TinyOS programming with NesC and application development in MICA2 platform. Three credits. 

527 Big Data
The emphasis of this course is to introduce big data technology. Course topics include reliable and big data storage, efficient big data processing and analytics, and important Spark APIs. Students will gain abilities to design highly scalable systems that can store, process, and analyze a big volume of unstructured and/or semi-structured data in batch mode and/or real time. Three credits. 

528 Advanced Data Analytics
The course will introduce advanced algorithms for structured data analytics and their applications in real-world problems. Course topics include classification, cluster analysis, association analysis, and anomaly detection. Students will learn these algorithms with hands-on implementation and gain abilities to derive value from collected data by applying the advanced data analytics algorithms. Three credits.  

529 Mobile Robotics
This course will introduce basic concepts and techniques used within the field of mobile robotics. Classical motion planning algorithms, such as A* and RRT will be taught. During this course, machine learning models related to robotics will also be taught. The fundamental challenges for autonomous intelligent systems will be analyzed and an approximation method to calculate a solution will be discussed. The concepts taught will include Bayesian filters, Kinematics, Sensors, Markov Decision Process, POMDP and Reinforcement Learning. Three credits.  

531 Reinforcement Learning
This course will introduce the fundamentals of Reinforcement learning and Deep learning techniques. The course will cover the Tabular solution methods, such as the finite Markov Decision Processes and Temporal-Difference learning. It will also cover approximation solution methods, as on-policy and off-policy approximations. By the end of the course, new deep-learning techniques will be introduced. Strong fundamentals in calculus and data structure are recommended. Restricted to MACS and MSc-CSCI students. Three credits.  

532 Advanced Natural Language Processing
This course presents students with methods to automatically analyze text written in a natural language and consider ethical concerns on biased data. It explores modern techniques such as embedding-based and neural models. This course presents approaches and their applicability across different tasks, such as, sentiment analysis, machine translation, and document classification. Students are expected to code solutions for assignments and a final project. Three credits.  

541 Theory of Computing
An advanced course building on foundational ideas in the theory of computing. Further properties of regular and context-free languages, language classes beyond context-free, parsing, randomness and probabilistic computation, relativized computation, complexity hierarchies, and circuit complexity will be discussed. Prior experience with theory of computing at the undergraduate level is recommended. Three credits.  

542 Representation & Reasoning
This course provides a survey of general methods for analyzing knowledge about the real world and mapping it to a computable form. Principles of knowledge representation and their role in adapting logic and ontology to the task of constructing computable models of an application domain are introduced. Methods for representing dynamically changing processes and events are presented. Ways of dealing with vague, uncertain, imprecise or inconsistent facts are discussed. Three credits.  

543 Specification and Verification
A treatment of formal logic with applications to computer science, starting with a rigorous discussion of propositional and predicate logic (with equality) and culminating in proofs of soundness and completeness. Several automated theorem proving methods such as semantic tableaux, natural deduction, and resolution will be compared. Extensions to other logics will be discussed. Three credits.  

544 Computational Logic
This course focuses on automated theorem proving. We start with a rigorous treatment of propositional and first order calculus (with equality) and the method of natural deduction, giving a thorough investigation of the soundness and completeness proofs and decidability. Then we compare and contrast several automated theorem proving methods such as tableau, resolution, sequent style calculus and rewrite systems. Extensions to other logics will be discussed. Students will implement one of the automated theorem proving methods. Three credits.  

545 Artificial Intelligence
This course covers advanced core concepts in artificial intelligence (AI). Topics covered include intelligent agents, uninformed and informed (heuristic) search, logical and probabilistic knowledge representation, logical and probabilistic inference, essentials of machine learning, neural networks, reinforcement learning, and evolutionary computation. Project requires and in-depth study of a topic related to AI. Three credits. 

546 Biomedical Computation
Technological development has transformed modern biomedical data analysis. The large amounts of biomedical data currently acquired has the potential to have real world positive impacts, however, the underlying nature of the data presents major challenges for computational biomedical analysis techniques. This course focuses on advanced technologies applied to biomedical computation, a rapidly growing field with tremendous potential for having a beneficial impact on patient care and public health. Three credits.  

547 Evolutionary Computation
Evolutionary computation is a family of powerful optimization algorithms often used to find solutions to computationally intractable problems. The study of these algorithms and their application to problems is a large research area within computer science. Course topics include combinatorial optimization, genetic algorithms, particle swarm optimization, search space analysis, multi-objective optimization, and neuroevolution. Research practices and technical writing will be emphasised for course assignments/projects. Three credits.  

550 Approximation Algorithms
An introduction to the study of approximation algorithms, highlighting key algorithm design techniques for approximation algorithms and the complementary study of hardness of approximation. Topics include greedy algorithms and local search, dynamic programming, deterministic and randomized rounding of linear and semidefinite programs, and the primal-dual method. Three credits.  

554 Matrix Computation
Through the use of lectures, discussions, the text, assignments, and labs, this course will familiarize students with the advanced knowledge of triangular systems, positive definite systems, banded systems, sparse positive definite systems, general systems; Sensitivity of linear systems; orthogonal matrices and least squares; singular value decomposition; eigenvalues and eigenvectors; and QR algorithm with their applications. Three credits.  

555 Data Mining and Machine Learning
The course covers the most current techniques used in data mining and machine learning and their background theoretical results. Two basic groups of methods are covered in this course: supervised learning (classification or regression) and unsupervised learning (clustering). The supervised learning methods includes Recursive Partitioning Tree, Random Forest, Linear Discriminant and Quadratic Discriminant Analysis, Neural Network, Support Vector Machine. The unsupervised learning methods include Hierarchical Clustering, K-means, K-nearest-neighbour, model-based clustering methods. Furthermore, the course also covers the dimensional reduction techniques such as LASSO and Ridge Regression, and model checking criteria. Three credits.  

561 Computer and Network Security
The objective of the course is to provide a broad overview of issues and approaches, while exposing students to recent advancements in computer and network security. This course will cover the theory and practice of computer and network security. While covering the theory of computer communication security, the course will focus on using and in some cases implementing various algorithms as well. Three credits.  

562 Computer Graphics
Fundamental mathematical, algorithmic and representational issues in computer graphics. Graphics programming. Geometrical objects and transformations. 2-D and 3-D data description and manipulation. Viewing, Projections, Clipping, Shading, Animation. Three credits. 

563 Advanced Database Systems
Explores advanced and evolving issues in database management systems. Topics include advanced database design and normalization, database implementations and optimizations, advanced and embedded SQL, ODBC and JDBC, XML, data warehousing, and emerging database trends. A major project is a key component of the course. Three credits.  

564 Constraint Processing and Heuristic Search
The course will examine combinatorial problem solving and optimization with constraint processing and heuristic search methods for a variety of real world applications. It contains two main parts. The first part covers basic and advanced search techniques and the second part studies constraint processing techniques and constraint programming. Three credits.  

594 Computer Science Graduate Seminar
This seminar course prepares graduates for industry or academia by developing knowledge and skills that will be applicable in a variety of professional contexts. Among these skills will be professional communication with industry and nonindustry audiences, social and ethical issues in the field, grant and proposal writing, job search skills, research skills, and current innovations in research. The course is facilitated by computer science faculty members and includes presentations by invited experts. Pass/Fail. Six credits.  

595 Project
The main objective of this course is to give the student real-life software development experience. The student will work with an industry or academic partner and develop a computing solution to a real-world problem. The student will be responsible to manage the project from development to execution. The student will gain practical experience on methods, languages, and tools in software design and development. Six credits.  

598 Research
Six credits.  

599 Thesis 
Eighteen credits. 

Contact

Computer Science Department
@email

103 Annex
2323 Notre Dame Avenue
Antigonish NS B2G 2W5
Canada