Computer Science Courses

125 Computer Programming in C
Using C/C++ language, this course introduces the fundamental principles of
computer programming for solving engineering problems. Topics include flow
control, modularity, structured programming, algorithms for searching and sorting,
and the conversion of these algorithms to C/C++ programs, with the necessary
testing and debugging. Credit will be granted for only one of CSCI 125 or CSCI
161. Cross-listed as ENGR 144. Three credits and a two-hour lab.

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 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. Three credits and a two-hour lab.

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 instructor. Three credits.

255 Advanced Data Structures
Linear data structures such as lists, stacks, and queues are reviewed. Objects are
introduced using C++ classes and templates. Multi-linked lists and trees together
with their fundamental algorithms are covered. Searching, sorting, and hashing
are described and implemented in C++. 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 associated with the design and implementation of
databases. Topics include database models (relational model in detail), design,
normalization, SQL, and a DBMS (ORACLE). Credit will be granted for only one
of CSCI 275 or INFO 275. Prerequisite: CSCI 162. Three credits and a two-hour
lab. Offered 2017-2018 and in alternate years.


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(112) or 122 or CSCI 162. Three credits.


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. Prerequisites: MATH 111 or MATH 105 or CSCI 161. Three credits. Offered
2017-2018 and in alternate years.

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. Not offered 2017-2018; next offered 2018-2019.

355 Data Structures and Algorithm Analysis
Analysis and design techniques are applied to non-numeric algorithms for data
structures. Algorithmic analysis is used to select methods of manipulating data.
Prerequisites: CSCI 255, 277. Three credits and a two-hour lab. Not offered 2017-
2018; next offered 2018-2019.

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. Offered 2017-2018 and in alternate years.


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. Offered 2017-2018 and in alternate years.

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. Not offered 2017-2018;
next offered 2018-2019.

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.

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. Offered 2017-2018; and alternate years.

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;
system security, including intruders, malicious software, and firewalls. Students will
use and implement algorithms. Prerequisite: CSCI 368, completed or concurrent.
Three credits. Not offered 2017-2018; next offered 2018-2019.

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
http://sites.stfx.ca/mscs/cs_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.
Not offered 2017-2018; next offered 2018-2019.


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 and a
two-hour lab. Offered 2017-2018; and alternate years.

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. Not offered 2017-2018; next offered 2018-2019.

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, 277, 375(completed or concurrent). Three credits and a two-hour lab.
Not offered 2017-2018; next offered 2018-2019.