Mount Allison University Campus

Academic Calendar 2023-2024

Table of Contents

Computer Science

The field of computing ranges from hands-on applications to pure theory, and includes the analysis of algorithms, software design, and the study of computer architecture, operating systems, networks, and databases. Our goal is to introduce students to all facets of the discipline, and to give them an appreciation of the historical, ethical, and social context of computing, and the responsibility of the computer professional and casual computer user in a modern society.

The Department offers a broad variety of courses and programs in Computer Science. Introductory courses may teach programming and theories of computing or offer a general overview of the use and application of popular software; more advanced courses deal with topics ranging from artificial intelligence and the role of computers in society to the design and implementation of advanced hardware or software systems. All courses in the computing curriculum offer a blend of theory and practical application, with many of the offerings having a significant project component in which students are given the opportunity to apply the classroom material to real-world problems. Courses are designed to address the needs of a wide variety of users, from the casual to the professional. Some students may enrol in a course to familiarize themselves with computer systems and application software, while others may choose to pursue a minor or a major in Computer Science. Students may choose to select Computer Science in combination with areas such as Mathematics, Geography, GIS, Economics, Music or Physics. Mount Allison has been quite successful in placing its students in graduate programs in Computer Science, while many others have found employment after graduation in one of the many computer-related fields.

Disciplinary B.A. and B.Sc. Programs

B.A. or B.Sc. MINOR in Computer Science is 24 credits earned as follows:

12from COMP 1631, 1731, 2611, 2711
3from MATH 1111, 1151
3from COMP 2211, 2931
6from Computer Science at the 3/4000 level

B.A. MAJOR in Computer Science is 60 credits earned as follows:

18from COMP 1631, 1731, 2211, 2611, 2711, 2931
12from COMP 3611, 3911, 4721, 4911
3from COMP 3361, 3971
9from Computer Science at the 3/4000 level
3from MATH 1111, 1151
3from MATH 2221
3from MATH 1121, 1311
9from complementary courses in Arts and Letters, Humanities and Social Sciences chosen in consultation with the Program Advisor

B.Sc. MAJOR in Computer Science is 63 credits earned as follows:

18from COMP 1631, 1731, 2211, 2611, 2711, 2931
12from COMP 3611, 3911, 4721, 4911
3from COMP 3361, 3971
9from Computer Science at the 3/4000 level
3from MATH 1111, 1151
3from MATH 2221
6from MATH 1121, 1311
6from CHEM 1001, PHYS 1051, 1551
3from BIOL 1001, BIOL 1501, BIOC 1001, GENS 1401, PSYC 1001 or PSYC 1011

B.A. HONOURS in Computer Science is 75 credits earned as follows:

60Credits as in the B.A. Major, plus
3from Computer Science at the 3/4000 level
6from Computer Science or Mathematics at the 3/4000 level
6from COMP 4990

B.Sc. HONOURS in Computer Science is 78 credits earned as follows:

63Credits as in the B.Sc. Major, plus
3from Computer Science at the 3/4000 level
6from Computer Science or Mathematics at the 3/4000 level
6from COMP 4990

B.A. or B.Sc. HONOURS in Computer Science and Mathematics is 75 or 87 credits earned as follows:

18from COMP 1631, 1731, 2211, 2611, 2711, 2931
3from MATH 1111, 1151
12from MATH 1121, 2111, 2121, 2221
9from MATH 3111, 3211, 3311
3from MATH 3221, 3231, 3251, 4011, 4221
3from Mathematics at the 3/4000 levels
3from COMP 3361, 3971
12from COMP 3411, 3611, 3911, 4721
12from Computer Science or Mathematics at the 3/4000 level, which may include COMP 4990
9from CHEM 1001, 1021; PHYS 1051, 1551 (only for B.Sc.)
3from BIOL 1001, BIOL 1501, BIOC 1001, GENS 1401, PSYC 1001 or PSYC 1011 (only for B. Sc.)

Interdisciplinary B.A. and B.Sc. Programs

B.A. or B.Sc. MINOR in Geographic Information Systems is 24 credits earned as follows:

6from COMP 1631, 1731
3from GENS 1401, GENV 1201
3from GENS 2431, BIOL 2701, MATH 1311
6from GENS 2441, GENS 4721
3from COMP at the 2/3/4000 level
3from GENS or GENV at the 3/4000 level

B.A. JOINT MAJOR in Computer Science and Economics is 81 credits earned as follows:

18from COMP 1631, 1731, 2211, 2611, 2711, 2931
9from COMP 3611, 3811, 3851
6from COMP at the 3/4000 level, chosen in consultation with the CS Program Advisor
3from MATH 1111, 1151
6from MATH 1121, 2221
21from ECON 1001, 1011, 2001, 2011, 2101, 2111, 2701
3from ECON 1701, MATH 1311, 2311
6from ECON 4711, 4721
9from Economics at the 3/4000 level

Note:  COMM 3411, 3501, 4501, 4521, and 4541 may be designated as Economics electives for students taking a Joint Major in Computer Science and Economics, a Major, Minor or Honours in Economics or the Major or Honours in Philosophy, Politics, and Economics.

Note:  Students in the BA Joint Major in Computer Science and Economics are required to integrate knowledge in both Economics and Computer Science in the research project component of ECON 4721.

B.A. JOINT MAJOR in Computer Science and Music is 90 credits earned as follows:

9from MATH 1151, 1121, 2221
27from COMP 1631, 1731, 2211, 2611, 2711, 2931, 3361, 3611, 3811
6from COMP 3711, 3831, 3911, 3971
3from PHYS 1401
30from MUSC 1101, 1201, 1221, 1703, 2141, 2151, 2171, 3141, 3151, 3171
9from MUSC 1111, 1211, 1991*, 2021, 2101, 2111, 2121, 2201, 2211, 2703, 2991*, 3001, 3121, 3161, 3991*, 4991*
3from MUSC 1619-4619, 1629-4629, 1639-4639, 1649-4649, 1659-4659, 1669-4669, 1689-4689, 1699-4699
3from MUSC 4951

Note:  * indicates that the Department may approve the course for inclusion when the topic is relevant to the program.

Note:  MUSC 4951 will take the form of an independent capstone project co-supervised by faculty in Computer Science and Music.

Note:  Students in the BA Joint Major in Computer Science and Music are required to integrate knowledge in both Computer Science and Music in their independent capstone project (MUSC 4951).

B.Sc. HONOURS in Computer Science and Physics is 87 credits earned as follows:

6from COMP 1631, 1731
6from CHEM 1001, 1021
3from BIOL 1001, 1501, BIOC 1001, GENS 1401, PSYC 1001, 1011
3from MATH 1111 or 1151
12from MATH 1121, 2111, 2121, 2221
12from PHYS 1051, 1551, 2251, 2801
18from COMP 2211, 2611, 2711, 2931, 3811, 3851
3from COMP/MATH/PHYS 3411
3from COMP/PHYS 3361
15from PHYS 3101, 3451, 3701, 3811, 4411
6from PHYS 4990

Note: The topic of the Honours project or thesis, PHYS 4990, must be chosen in consultation with both departments

Note: Students in the BSc Joint Honours in Computer Science and Physics are required to integrate knowledge in both Physics and Computer Science in their Honours project or thesis (PHYS 4990).

B.A. JOINT MAJOR in Geocomputing is 87 credits earned as follows:

18from COMP 1631, 1731, 2211, 2611, 2711, 2931
9from COMP 3611, 3811, 3851
6from COMP at the 3/4000 level, chosen in consultation with the CS Program Advisor
3from MATH 1111, 1151
6from MATH 1121, 2221
6from GENV 1201, GENS 1401
6from GENV 2001, 2101, 3201
9from GENS 2431, 2441, 4721
3from GENS 3401, GENV 3701
18from GENV or GENS, of which at least nine credits must be at the 3/4000 level (GENV 3211 recommended)
3from GENS 4951, with topic chosen in consultation with the CS and GENS Program Advisors

COMPUTER SCIENCE COURSES

Note:  The listing of a course in the Calendar is not a guarantee that the course is offered every year.

Note:  Students must obtain a grade of at least C- in all courses used to fulfill prerequisite requirements. Otherwise, written permission of the appropriate Department Head or Program Co-ordinator must be obtained.

Introduction to Computer Science

This course provides an introduction to computer science and the fundamentals of computer programming. Topics include: designing a computational solution to a problem using algorithms; converting an algorithm effectively into a program; ensuring program correctness; and the proper use of variables, loops, conditionals, modularity, and simple data structures in formulating problem solutions. [Note 1: University preparatory level course in Mathematics is required.] (Format Integrated Lab/Lecture 4 Hours) (Exclusion: COMP 1611; COMP 1711; any COMP course at the 2000 level or higher)

Programming Techniques and Algorithms

Prereq: COMP 1631; or permission of the Department
This course introduces program design techniques and algorithmic thinking using a high-level computer programming language. Topics include: fundamental control structures, elementary data structures, code reuse, basic algorithms, and debugging and testing. (Format: Lecture 3 Hours, Laboratory 3 Hours)

Special Topic in Computer Science

This course either focuses on topics not covered by the current course offerings in a department or program or offers the opportunity to pilot a course that is being considered for inclusion in the regular program. [Note 1: Prerequisite set by Department/Program when the topic and level are announced. Note 2: When a Department or Program intends to offer a course under this designation, it must submit course information, normally at least three months in advance, to the Dean. Note 3: Students may register for COMP 1991 more than once, provided the subject matter differs.] (Format: Variable)

Discrete Structures

Prereq: 3 credits from MATH 1111, 1151; or permission of the Department
This course introduces the terminology and concepts of discrete mathematics. Topics may include: logical arguments, proofs and algorithm verification, sets, relations, functions and cardinality of sets, induction and recursion, enumeration, and algorithms and complexity. [Note 1: This course is cross-listed with MATH 2211 and may therefore count as three credits in either discipline.] (Format: Lecture 3 Hours)

Data Structures and Algorithms

Prereq: COMP 1731; or permission of the Department
This course introduces effective methods of data organization, focussing on data structures and their algorithms via abstract data types with the use of recursive procedures. It explores the design of flexible file structures and related methods such as indexes, system file structures, and hashed access, and it emphasizes object-oriented programming techniques.(Format: Lecture 3 Hours, Laboratory 3 Hours) (Exclusion: Any version of COMP 2611 previously offered with a different title)

Object-Oriented Design and Methodology

Prereq: COMP 2611; or permission of the Department
This course further explores the object-oriented paradigm with emphasis on inheritance, polymorphism, and encapsulation. Topics include: design principles, such as abstraction, decomposition, and generalization, and an introduction to graphical design notation and object-oriented design patterns. (Format: Lecture 3 Hours, Laboratory 3 Hours) (Exclusion: COMP 3721)

Introduction to Systems Programming

Prereq: COMP 1731; or permission of the Department
This course is an introduction to programming at the systems level. Topics include: basic machine organization, assembly language, the UNIX environment, shell scripting, and C/C++ programming. (Format: Lecture 3 Hours, Laboratory 3 Hours)

Special Topic in Computer Science

This course either focuses on topics not covered by the current course offerings in a department or program or offers the opportunity to pilot a course that is being considered for inclusion in the regular program. [Note 1: Prerequisite set by Department/Program when the topic and level are announced. Note 2: When a Department or Program intends to offer a course under this designation, it must submit course information, normally at least three months in advance, to the Dean. Note 3: Students may register for COMP 2991 more than once, provided the subject matter differs.] (Format: Variable)

Digital Signal Processing and Electronics

Prereq: COMP 1631; PHYS 1551; or permission of the department
This course introduces students to digital electronic circuits and digital signal processing, with a focus of understanding current applications and concepts. Topics include: transistors, digital logic gates, Boolean algebra, logic circuit design, latches and flip-flops, counting circuits, adder circuits, digital logic families, digital sampling, analog-to-digital and digital-to-analog conversion, Fourier Transforms, correlation and convolution, noise, digital filtering, and digital image processing. Students will gain hands-on experience working with integrated circuits and micro-controllers. [Note 1: This course is cross-listed with PHYS 3361 and may therefore count as three credits in either discipline.] (Format: Lecture 3 Hours, Laboratory 3 Hours)

Numerical Analysis

Prereq: MATH 1121; 3 credits from MATH 2221, MATH/PHYS 3451; 3 credits from COMP or PHYS; or permission of the Department
This course introduces numerical methods for solving a variety of problems in the sciences. Topics include numerical errors and precision, root finding, model fitting, integration and solution of differential equations, solution of linear and nonlinear systems of equations, and matrix factorization. [Note 1: This course is cross-listed as PHYS 3411 and MATH 3411 and may therefore count as three credits in any of the three disciplines.] (Format: Lecture 3 Hours)

Simulation and Modeling

Prereq: 3 credits from MATH 1111, 1151; 3 credits from MATH 1311, MATH 2311, MATH-3311 PSYC 2001, PSYC 2011; 3 credits from COMP; or permission of the Department.
This course introduces the simulation technique for studying mathematical models. Topics include: systems theory and system models, continuous system simulation, discrete system simulation, Monte Carlo methods, random number generators, and simulation languages. It emphasizes computer implementation of the methods studied. [Note 1: This course is cross-listed with MATH 3531 and may therefore count as three credits in either discipline.] (Format: Lecture 3 Hours)

Algorithm Analysis

Prereq: COMP 2711; COMP/MATH 2211; or permission of the Department
This course applies analysis and design techniques to non-numeric algorithms that act on data structures. The design of efficient algorithms leads to in-depth investigations of computational complexity such as NP-hard problems. (Format: Lecture 3 Hours)

Advanced Data Structures

Prereq: COMP 2711; or permission of the Department
This course introduces advanced structures for data organization, with an emphasis on associated algorithms and their complexity. Topics include: binary and text file structures, compression balanced trees, and advanced graph algorithms. (Format: Lecture 3 Hours, Laboratory 3 Hours) (Exclusion: COMP 2631)

Artificial Intelligence

Prereq: COMP 2711; COMP/MATH 2211; or permission of the Department
This course introduces general problem solving methods associated with automated reasoning and simulated intelligence. Topics include: state space heuristic search theory, mechanical theorem proving, game playing, natural language processing, propositional logic, learning and cognitive models and expert systems. (Format: Lecture 3 Hours)

Principles of Programming Languages

Prereq: COMP 2711; COMP 2931; or permission of the Department
This course introduces the principles of design and implementation of programming languages. Topics include: language syntax and processors, and semantic models of data and control structures. (Format: Lecture 3 Hours)

Database Systems

Prereq: COMP 2711; COMP/MATH 2211; or permission of the Department
This course introduces the major types of database systems and provides experience with at least one database model. It emphasizes the theoretical and practical aspects of the relational model, including database query systems and database design. (Format: Lecture 3 Hours)

Computer Graphics

Prereq: COMP 2711; COMP 2931; MATH 2221; or permission of the Department
This course introduces the principles and tools of interactive computer graphics: implementation of device drivers, 3D transformations, clipping, perspective views, input routines, user interface design, data structures, hidden lines, surface removal, colour shading and ray tracing. (Format: Lecture 3 Hours)

Computers and Society

Prereq: Third-year standing; 3 credits from COMP; 3 credits from Science; or permission of the Department
This course examines the externalities arising from the introduction of technical innovations into society. The social context is central to understanding not only the effects of a technology but also informs the computing profession of the appropriate technical content of the innovation. An emphasis on the philosophical basis for computing ethics, including ethical issues faced by and brought about by computing professions, is the starting point for topics such as security, privacy, intellectual property, reliability and liability. [Note 1: Counts as a Commerce elective for students taking a Bachelor of Commerce or a Major or Minor in Commerce.] (Format: Lecture 3 Hours)

Operating Systems

Prereq: COMP 2711; COMP 2931; or permission of the Department
This course examines the major concepts underlying the design of operating systems such as process management, scheduling, memory management, device management, security, and network structures. (Format: Lecture 3 Hours)

Computer Organization and Architecture

Prereq: COMP 2711; COMP 2931; or permission of the Department
This course introduces modern computer design and its relation to system architecture and program function. Topics include system bus design, memory organization, I/O device access, instruction set design, instruction pipelining, leading to an investigation of how these tools are used to support multi-processor systems. (Format: Lecture 3 Hours)

Special Topic in Computer Science

This course either focuses on topics not covered by the current course offerings in a department or program or offers the opportunity to pilot a course that is being considered for inclusion in the regular program. [Note 1: Prerequisite set by Department/Program when the topic and level are announced. Note 2: When a Department or Program intends to offer a course under this designation, it must submit course information, normally at least three months in advance, to the Dean. Note 3: Students may register for COMP 3991 more than once, provided the subject matter differs.] (Format: Variable)

Theory of Computation

Prereq: COMP 1731; COMP/MATH 2211; or permission of the Department
This course is an introduction to theoretical aspects of Computer Science such as formal language and automata theory and complexity theory. [Note 1: This course is cross-listed with MATH 4631 and may therefore count as three credits in either discipline.] (Format: Lecture 3 Hours)

Cryptography

Prereq: COMP 1731; COMP/MATH 2211; MATH 2221; or permission of the Department
This course is an introduction to cryptographic algorithms and to the cryptanalysis of these algorithms, with an emphasis on the fundamental principles of information security. Topics include: classical cryptosystems, modern block and stream ciphers, public-key ciphers, digital signatures, hash functions, key distribution and agreement. [Note 1: This course is cross-listed with MATH 4651 and may therefore count as three credits in either discipline.] (Format: Lecture 3 Hours)

Software Design

Prereq: Third-year standing; COMP 2711; or permission of the Department
This course focuses on software design culminating in a major project. It studies life cycle models and their phases: planning, requirements, specifications, design, implementation, testing, and maintenance. (Format: Lecture 3 Hours, Laboratory 2 Hours)

Computer Networks

Prereq: COMP 2711; COMP 2931; or permission of the Department
This course introduces computer network applications and design. Topics include: layered models, data transmission protocols, network topology, and security. (Format: Lecture 3 Hours)

Independent Study in Computer Science

This course permits senior students, under the direction of faculty members, to pursue their interest in areas not covered, or not covered in depth, by other courses through a program of independent study. [Note 1: Permission of the Department/Program Advisor. Students must obtain consent of an instructor who is willing to be a supervisor and must register for the course prior to the last day for change of registration in the term during which the course is being taken. Note 2: A program on Independent Study cannot duplicate subject matter covered through regular course offerings. Note 3: Students may register for COMP 4950/51 more than once, provided the subject matter differs.] (Format: Independent Study)

Independent Study in Computer Science

This course permits senior students, under the direction of faculty members, to pursue their interest in areas not covered, or not covered in depth, by other courses through a program of independent study. [Note 1: Permission of the Department/Program Advisor. Students must obtain consent of an instructor who is willing to be a supervisor and must register for the course prior to the last day for change of registration in the term during which the course is being taken. Note 2: A program on Independent Study cannot duplicate subject matter covered through regular course offerings. Note 3: Students may register for COMP 4950/51 more than once, provided the subject matter differs.] (Format: Independent Study)

Honours Thesis

This course comprises independent research and study under the direction of a member of the Department; for students in Computer Science or Computer Science and Mathematics Honours program. [Note 1: Consent of supervising staff member and permission of the Department required.] (Format: Independent Study/Thesis)

Special Topic in Computer Science

This course either focuses on topics not covered by the current course offerings in a department or program or offers the opportunity to pilot a course that is being considered for inclusion in the regular program. [Note 1: Prerequisite set by Department/Program when the topic and level are announced. Note 2: When a Department or Program intends to offer a course under this designation, it must submit course information, normally at least three months in advance, to the Dean. Note 3: Students may register for COMP 4991 more than once, provided the subject matter differs.] (Format: Variable)