The study of computing ranges from hands-on applications to pure theory,
and includes the analysis of algorithms, the study of computer architectures, compilers and
operating systems, networks, and software engineering. 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
microcomputer 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 the microcomputer 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 English, Economics, Philosophy, 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.
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.
COMP 1631 (3.00)
Introduction to Computer Science
FORMAT: Lecture 3 Hours, Laboratory 3 Hours. An introduction to computer science providing a broad survey of the discipline and an introduction to programming. Survey topics will be chosen from: origins of computers, data representation and storage, Boolean algebra, digital logic gates, computer architecture, assemblers and compilers, operating systems, networks and the Internet, theories of computation, and artificial intelligence.
COMP 1731 (3.00)
Programming Techniques & Algorithms
Prereq: Take either COMP-1631 or COMP-1711
FORMAT: Lecture 3 Hours, Laboratory 3 Hours. In the context of solving several larger problems, the techniques of topdown problem solving will be emphasized in order to further develop good programming style. Topics include: documentation, debugging and testing, string processing, internal searching and sorting, elementary data structures, recursion and algorithmic analysis.
COMP 1751 (3.00)
Introduction to Scientific Programming
COMP 1991 (3.00)
Special Topics
FORMAT: Variable. 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(S): 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(S): Students may register for COMP 1991/2991/3991/4991 more than once, provided the subject matter differs.
COMP 2211 (3.00)
Discrete Structures
Prereq: MATH 1111
FORMAT: Lecture 3 Hours. An introduction to the terminology and concepts of discrete mathematics, covering such topics as: logical arguments, proofs and algorithm verification, sets, relations, functions and cardinality of sets, induction and recursion, enumeration, algorithms and complexity. NOTE(S): This course is cross-listed as MATH 2211 and may therefore count as three credits in either discipline.
COMP 2611 (3.00)
Data Structures & Algorithms I
Prereq: COMP 1721 or COMP 1731
FORMAT: Lecture 3 Hours, Laboratory 3 Hours. Effective methods of data organization, focussing on data structures and their algorithms via abstract data types with use of recursive procedures. Design of flexible file structures and related methods e.g. indexes, system file structures, hashed access. Object oriented programming techniques are used in depth.
COMP 2631 (3.00)
Data Structures and Algorithms II
Prereq: Take COMP-2611
FORMAT: Lecture 3 Hours, Laboratory 3 Hours. Advanced structures for data organization, with an emphasis on associated algorithms and their complexity. Topics include: binary and text file structures, compression, distributed computing, event-driven programming, advanced user interface design.
COMP 2931 (3.00)
Intro to Systems Programming
Prereq: Take COMP-1731
FORMAT: Lecture 3 Hours, Laboratory 3 Hours. 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.
COMP 2991 (3.00)
Special Topics
FORMAT: Variable. 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(S): 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(S): Students may register for COMP 1991/2991/3991/4991 more than once, provided the subject matter differs.
COMP 3361 (3.00)
Digital Signal Proc & Electronics
Prereq: Take COMP 1631 and PHYS 1551
FORMAT: Lecture 3 Hours, Laboratory 3 Hours. This course introduces students to both digital electronic circuits and digital signal processing, and would be valuable both for those planning to go on in technical careers in computer science or in physics, and for scientists who wish to develop tools for the collection and analysis of data. Topics to be covered include digital logic gates, Boolean algebra, counting circuits, digital signal conditioning, sampling considerations such as the Nyquist criterion, analog to digital and digital to analog conversion, Fourier Transform theory and application as FFT, correlation and convolution, digital filtering using finite impulse response and infinite impulse response circuits including the ztransform and filter design, and digital image processing including two dimensional FFT techniques, microprocessors, microcontrollers and digital signal processing integrated circuits. NOTE(S): This course is cross-listed with PHYS 3361 and may therefore count as three credits in either discipline.
COMP 3411 (3.00)
Numerical Analysis
Prereq: Take MATH-1121 and 3 credits in COMP
FORMAT: Lecture 3 Hours. This course is an introduction to numerical methods for solving a variety of problems in mathematics, the natural sciences, and engineering. Topics to be studied include numerical solution of linear and nonlinear systems of equations, Gauss elimination, pivoting strategies, numerical stability, PLU factorization, tridiagonal matrices, polynomial and cubic spline approximation and interpolation. NOTE(S): This course is cross listed as MATH 3411 and may therefore count as three credits in either discipline.
COMP 3511 (3.00)
Linear Programming
FORMAT: Lecture 3 Hours. Among the topics covered are linear and integer programming, the simplex and revised simplex methods, duality theory and sensitivity analysis, and various applications. NOTE(S): This course is cross listed as MATH 3511 and may therefore count as three credits in either discipline.
COMP 3531 (3.00)
Simulation and Modelling
FORMAT: Lecture 3 Hours. An introduction to the simulation technique for studying mathematical models. Specific topics to be considered include: systems theory and system models, continuous system simulation, discrete system simulation, Monte Carlo methods, random number generators, and simulation languages. Emphasis will be placed upon computer implementation of the methods studied. NOTE(S): This course is cross listed as MATH 3531 and may therefore count as three credits in either discipline.
COMP 3611 (3.00)
Algorithm Analysis
Prereq: Take COMP-2631 Take COMP-2211 or MATH-2211
FORMAT: Lecture 3 Hours. The purpose of this course is to apply analysis and design techniques to nonnumeric algorithms which act on data structures. Designing efficient algorithms for internal and external sorting/merging/searching leads to notions of complexity (e.g. NP-hard problems) and to memory management techniques.
COMP 3651 (3.00)
Artificial Intelligence
Prereq: Take COMP 2631 Take COMP 2211 or MATH 2211
FORMAT: Lecture 3 Hours. 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.
COMP 3711 (3.00)
Principles of Programming Languages
Prereq: Take COMP-2611 or COMP-2631 Take COMP-2931
FORMAT: Lecture 3 Hours. An introduction to the principles of design and implementation of procedural and functional programming languages; modular, object and logic programming. Topics include language syntax and processors and semantic models of data and control structures.
COMP 3721 (3.00)
Object-Oriented Design & Methodology
Prereq: Take COMP-2631
FORMAT: Lecture 3 Hours, Laboratory 3 Hours. Continues the introduction to object-oriented programming begun in earlier CS courses, emphasizing further development of algorithms, data structures, software engineering, and the social context of computing.
COMP 3811 (3.00)
Database Systems
Prereq: Take COMP-2931 COMP-2631 Take MATH/COMP 2211
FORMAT: Lecture 3 Hours. An introduction to major types of database systems, and experience with at least one database model. The theoretical and practical aspects of the relational model are emphasized, including database query systems and database design.
COMP 3831 (3.00)
Computer Graphics
Prereq: Take COMP 2631 Take COMP 2931 and MATH 2221
FORMAT: Lecture 3 Hours. 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.
COMP 3851 (3.00)
Computers and Society
Prereq: THIRD or FOURTH YEAR STANDING, 6 CREDITS FROM SCIENCE DIVISION, 3 CREDITS FROM COMPUTER SCIENCE
FORMAT: Lecture 3 Hours. This course examines the historical development and growth of the computer and related digital technology. The impact of the computer and the digitalization of society are discussed, including ethical issues related to the modern information age. Privacy and data protection, computer crime, data theft, and legal issues in software creation and use are examined. The responsibilities of the computer professional and computer user are examined from the technical, personal, and societal perspectives. NOTE(S): Counts as a Commerce elective for students taking a Bachelor of Commerce or a Major or Minor in Commerce.
COMP 3911 (3.00)
Operating Systems
Prereq: COMP 2931
FORMAT: Lecture 3 Hours. This course includes the major concepts underlying the design of operating systems. Topics include: process management, scheduling, memory management, device management, system programming, security, and network structures.
COMP 3971 (3.00)
Computer Organization and Architecture
Prereq: Take COMP 2631 Take COMP 2931
FORMAT: Lecture 3 Hours. This course provides an introduction to modern computer design and its relation to system architecture and operating system functionality. Topics include: system bus design, memory organization, I/O device access, instruction set design, RISC computers, and parallel organization.
COMP 3991 (3.00)
Special Topics
FORMAT: Variable. 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(S): 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(S): Students may register for COMP 1991/2991/3991/4991 more than once, provided the subject matter differs.
COMP 4631 (3.00)
Theory of Computation
Prereq: Take COMP-1731 or COMP-1721 and COMP/MATH-2211
FORMAT: Lecture 3 Hours. This course is an introduction to theoretical aspects of Computer Science such as formal language and automata theory and complexity theory. NOTE(S): This course is cross listed as MATH 4631 and may therefore count as three credits in either discipline.
COMP 4651 (3.00)
Cryptography
Prereq: Take COMP-1711 or 1631 and either COMP-1721 or 1731, and COMP/MATH-2211
FORMAT: Lecture 3 Hours. 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(S): This course is cross listed as MATH 4651 and may therefore count as three credits in either discipline.
COMP 4721 (3.00)
Software Design
Prereq: Take COMP-2631, 2711 or 3721, 2931, 6 credits in COMP at the 300/400 levels and have a third or fourth year standing
FORMAT: Lecture 3 Hours, Laboratory 2 Hours. This course includes the study of software design topics such as software life cycle, requirements specification, and quality assurance. Software design topics such as strategies, intractable problems, concurrent systems, and data modeling are included. This course will include a large software project.
COMP 4723 (3.00)
Software Design
COMP 4911 (3.00)
Computer Networks
Prereq: Take COMP 2931 and COMP 2631 and 3 credits from COMP at 3/4000 level
FORMAT: Lecture 3 Hours. An introduction to computer network applications and design. Topics will include: layered models, data transmission protocols, network topology, and security.
COMP 4950 (6.00)
Independent Study
FORMAT: Independent Study. This course permits senior students, under the direction 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(S): A program on Independent Study cannot duplicate subject matter covered through regular course offerings. NOTE(S): Students may register for COMP 4950/51 more than once, provided the subject matter differs.
COMP 4951 (3.00)
Independent Study
FORMAT: Independent Study. This course permits senior students, under the direction 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(S): A program on Independent Study cannot duplicate subject matter covered through regular course offerings. NOTE(S): Students may register for COMP 4950/51 more than once, provided the subject matter differs.
COMP 4990 (6.00)
Honours Thesis
FORMAT: Independent Study/Thesis. Independent research and study under direction of a member of the department; for students in History Honours program.
COMP 4991 (3.00)
Special Topics
FORMAT: Variable. 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(S): 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(S): Students may register for COMP 1991/2991/3991/4991 more than once, provided the subject matter differs.