Computer Science Department

Coding for Problem Solving

CSCI
128
In-Person
This course introduces coding for everyday problem solving. Programming fundamentals are introduced with an intuitive programming language and a simple programming environment. The students will obtain first-hand experience with live coding examples and exercises. Students from all disciplines can learn to develop their programming abilities without any prior knowledge. For computer science major and honours students CSCI 128 may be used only as an approved or open elective. Students who have received credit for CSCI 161 or equivalent are not permitted to enrol in CSCI 128. Three credits.

Comp. Application Technology

CSCI
135
In-Person
This course enables students to use a variety of software tools to assist in their post-secondary 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. For computer science major and honours students CSCI 135 may be available only as an approved or open elective. Credit will be granted for only of CSCI 135 or CSCI 235. Three credits.

Intro to Programming

CSCI
161
In-Person
An introduction to computers, algorithms and programming. Topics include problem analysis, algorithm development, data representation, control structures, arrays, and file manipulation. Three credits and two-hour lab.

Programming & Data Structures

CSCI
162
In-Person
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. Prerequisite: CSCI 161. Three credits and two-hour lab.

Social Issues: Information Age

CSCI
215
In-Person
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.

Introduction to Data Science

CSCI
223
In-Person
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.

Coding in Health Analytics

CSCI
225
In-Person
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 161 or with permission of department chair. Three credits.

Advanced Data Structures

CSCI
255
In-Person
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 two-hour lab.

Computer Organization

CSCI
263
In-Person
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 two-hour lab.

Database Management Systems

CSCI
275
In-Person
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.

Discrete Structures

CSCI
277
In-Person
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.

Management Science

CSCI
335
In-Person
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. Offered 2025-2026 and in alternate years.

Biomedical Computation

CSCI
350
In-Person
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. Prerequisite: CSCI 161 or with permission of department chair. Three credits.

Data Struct & Algorithm Analy

CSCI
355
In-Person
An introduction to the design, analysis, and implementation of algorithms to solve common computational problems. Basic algorithm design techniques such as the greedy strategy, divide-and-conquer, and dynamic programming, as well as network flows, intractability, and NP-completeness will be discussed. Prerequisites: CSCI 255, 277. Three credits and two-hour lab.

Theory of Computing

CSCI
356
In-Person
An introduction to the theoretical foundations of computer science, examining finite automata, context-free grammars, Turing machines, decidability and undecidability, and complexity theory. Strategies will be developed to help categorize problems as tractable or intractable. Prerequisites: CSCI 255, 277. Three credits.

Natural Language Processing

CSCI
361
In-Person
This course presents students with methods to automatically analyze text written in a natural language. It explores traditional statistical methods for natural language processing before focusing on more modern techniques such as embedding-based models. This course represents 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. Prerequisite: CSCI 255; 223 recommended. Three credits. Offered 2025-2026 and in alternate years.

Mobile Application Development

CSCI
364
In-Person
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. Offered 2025-2026 and in alternate years.

Data Communications & Networks

CSCI
368
In-Person
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 two-hour lab.

Operating Systems

CSCI
375
In-Person
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 two-hour lab.

Machine Learning

CSCI
444
In-Person
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.

Parallel Computing

CSCI
455
In-Person
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 two-hour lab. Offered 2025-2026 and in alternate years.

Topics in Computer Science

CSCI
471
In-Person
This course explores current topics in computer science, such as big data, distributed computing, bioinformatics and machine learning. Three credits. See https://www.stfx.ca/programs-courses/programs/computer-science

Software Design

CSCI
485
In-Person
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.

Org of Programming Languages

CSCI
487
In-Person
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. Offered 2025-2026 and in alternate years.

Honours Thesis

CSCI
490
In-Person
Students will prepare and present a thesis based on original research conducted under the supervision of a faculty member. Credit will be granted for only one of CSCI 490 or CSCI 493. Restricted to students in the honours program. Required for honours students. Six credits.

Senior Seminar

CSCI
491
In-Person
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.

Senior Thesis

CSCI
493
In-Person
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.

Artificial Intelligence

CSCI
495
In-Person
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.

Machine Learning Design

CSCI
525
In-Person
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.

Embedded Systems

CSCI
526
In-Person
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.

Mobile Robotics

CSCI
529
In-Person
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.

Theory of Computing

CSCI
541
In-Person
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.

Computational Logic

CSCI
544
In-Person
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.

Processing & Heuristic Search

CSCI
564
In-Person
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.

Graduate Seminar

CSCI
594
In-Person
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 non-industry 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.