The following undergraduate programs are available in the Department:

Honours in Computer Science (Software Engineering) (B.Sc. only)

Computer Internship Option (CIIO) (B.Sc. and B.Sc. Honours only)

Applied Mathematics/Computer Science Joint Major (B.Sc. only)

Computer Science/Pure Mathematics Joint Honours (B.Sc. only)
Details of our joint program offerings in the Faculties of Arts, Science, and Business Administration may be found under the heading Joint Programs following the heading Regulations for the Honours Degree of Bachelor of Science.

Fortyfive credit hours in Computer Science courses are required for a major in Computer Science:

Additional courses required of the Majors are: Mathematics 2000, 2050, Statistics 2510, and Pure Mathematics 2320.

See General Regulations for the Honours Degree (B.A. or B.Sc. as appropriate).

Sixtythree credit hours in Computer Science courses are required for the Honours Degree in Computer Science, including:

Additional courses required are: Mathematics 2000, 2050, Statistics 2510 and Pure Mathematics 2320.
Completion of the Honours in Computer Science (Software Engineering) Program does not qualify persons to hold the designation "Professional Engineer" as defined by various Provincial Acts governing the Engineering Profession.

Sixtythree credit hours in Computer Science courses are required for the Honours Degree in Computer Science (Software Engineering), including:

Additional courses required are: Mathematics 2000, 2050, Statistics 2510, and Pure Mathematics 2320.
Note:
The Honours project (4780) must be in the area of Software Engineering.
The Computer Industry Internship Option (CIIO) provides an opportunity for qualified students to obtain rewarding placements that help them develop practical skills in a real work setting before graduation. The CIIO is available to Computer Science Majors (B.Sc. and B.Sc. Honours only) who will typically apply between their third and fourth year of studies.
Admission Requirements:
In order to be considered for admission to the CIIO, an applicant must:

be a declared Computer Science Major;

have successfully completed Computer Science 1710, Computer Science 2710, Computer Science 2711, Computer Science 2742, Computer Science 2760, Computer Science 3716, and any two other core 3000level computer science courses; and

have at least one computer science course left to complete after the internship.
In addition to meeting the above applicants are also subject to academic performance.
Internship Duration:
Subject to the availability of job openings, a student may choose either an 8, 12 or 16 consecutive month internship period.
Internship Guidelines:

Internship employment is normally organized by the Internship Coordinator (hereafter referred to as the Coordinator); however, students who have been accepted to the CIIO may also obtain their own internship placements. All placements are subject to the approval of the Coordinator and of the Head of the Department of Computer Science.

Students who have applied to the internship program give permission to the Coordinator to supply prospective employers with copies of their resume.

After being placed with an employer, students are not permitted to drop their internship without prior approval from the Coordinator and the Head of the Department of Computer Science. Students who drop an internship without permission, who fail to honour an agreement to work with an employer, or who conduct themselves in such a manner as to cause their discharge from the placements, will normally be awarded a fail grade for the internship period and may not be permitted to reapply.
Note:
Students should also refer to the UNIVERSITY REGULATIONS  General Academic Regulations (Undergraduate).
Expectation of Work:
Within a month of starting the internship, students are required to submit a plan of intended work for the internship. They are also required to submit a progress report due the last day of classes of each semester in which they are working. The plan of intended work and progress reports are to be submitted to the Coordinator.
At the end of the internship period, students are required to submit a final report which will include a description of their internship projects and activities as well as their original objectives and accomplishments. The final report is to be submitted to the Coordinator by the last day of classes of the semester in question.
Registration, Assessment of Performance, and Assignment of Grades:
Students must register for the course Computer Science 3700 every semester during their internship.
Computer Science 3700 is a noncredit course open only to students who have been accepted into the Internship Program.
During the internship, the employer and intern will complete student performance evaluations every four months and will submit them to the Coordinator. The final assessment of total work performed is the responsibility of the Coordinator, and will be based upon both input from the employer and the intern’s final report.
At the end of the internship, each intern will be assigned one of the following grades after the final assessment of their performance:

Pass with Distinction (PWD): Indicates excellent performance in both the work report and work performance.

Pass (PAS): Indicates that performance meets expectations in both the work report and the work performance.

Fail (FAL): Indicates failing performance in the work report or the work performance.
Also, the following will be noted in the transcript of the intern:

Requirements for the Computer Industry Internship Option have been completed. Internship Duration:  months.

A grade of NC (No Credit) for Computer Science 3700 will be awarded in all semesters of the Internship Option prior to the final Semester.
CIIO and Honours Program:
In case a student is enrolled in both the Honours program and the CIIO, the requirements of both must be met. Upon approval from the honours project supervisor, within the Department, the employer and the Head of the Department of Computer Science, an internship project may be submitted as a component of an honours project. These arrangements must be made within the first semester of the Internship placement.

For a Minor in Computer Science, a student must complete at least 24 credit hours in Computer Science courses, including: Computer Science 1710, 2710, 2711, 2742, 2760.

The remaining 9 credit hours in Computer Science courses must be at the 3000 level or above.
There are five areas of Computer Science offered in the 3000 and 4000level courses. The meaning of the third digit of a course number is as follows:
1 Programming Languages
2 Computer Systems
3 Numerical Computations
4 Theoretical Aspects
5,6 Applications (e.g. Artificial Intelligence, Computer Graphics, Data Base, Robotics, Computational Geometry, Image Processing, Computer Networking, Computer Aided Design)
7  Project Course
8 Honours Project
9 Directed Readings
Supplementary examinations will be allowed in certain Computer Science courses which have written final examinations. Students should refer to the Faculty of Science degree regulations for details.
The Department has an Undergraduate Advisor for Computer Science majors to consult with on academic matters.
Additional information about the undergraduate Computer Science programs and courses can be found in the Computer Science Undergraduate Handbook available from the General Office, Department of Computer Science or from www.cs.mun.ca.
In accordance with Senate's Policy Regarding Inactive Courses, the course descriptions for courses which have not been offered in the previous three academic years and which are not scheduled to be offered in the current academic year have been removed from the following listing. For information about any of these inactive courses, please contact the Head of the Department.
Computer Science courses are designated by COMP.
1510
An Introduction to Programming for Scientific Computing
(F) & (W)
introduces students to basic programming in the context of numerical methods with the goal of providing the foundation necessary to handle larger scientific programming projects. Numerical methods to solve selected problems from Physics, Chemistry, and Mathematics will be covered.
Lectures: Three hours per week.
Laboratory: Two hours per week.
Prerequisite: Mathematics 1000.
Notes:

Students can receive credit for only one of COMP 1510 or COMP 2602.

Students who have received credit for the former Applied Mathematics 2120 cannot receive credit for COMP 1510.
1600
Basic Computing and Information Technology
(F) & (W)
 inactive course.
1700
Introduction to Computer Science
(F) & (W)
lays the foundation for the art and the science of computing. The course contains fundamental and topical issues in computers, languages, programming and applications. This course is designed for potential Computer Science majors without a background in programming, but is also available for non majors.
Prerequisite/Corequisite: Mathematics 1090 (or equivalent), or Mathematics 1000.
Lectures: Three hours per week.
Laboratory: Three hours per week.
1710
ObjectOriented Programming I
(F) & (W)
is an introduction to fundamental programming techniques, primitive data types and operations, program control structures and the use of objects, classes and methods.
Prerequisites: Mathematics 1000 (which can be taken concurrently), or Mathematics 1090 (or equivalent).
Lectures: Three hours per week.
Laboratory: Three hours per week.
Note:
Students who have previously completed COMP 2710 will not be permitted to register or receive credit for COMP 1710.
2500
Data Analysis with Scripting Languages
(F) & (W)
introduces the use of scripting languages to solve common data analysis tasks. The control structures and expressions of the language are first discussed. Script solution to storing/retrieving data sets, searching data sets, and performing numeric and statistical calculation are covered. Plotting and visualization for data sets are also presented.
Prerequisite: COMP 1510 or COMP 1700 or COMP 1710 or COMP 2602 (or equivalent).
2602
Computer Programming in FORTRAN
(F)
is a study of algorithmic problem solving and structured programming techniques; the Fortran programming language and its application to computer solutions of scientific problems; numeric and nonnumeric problems are examined with emphasis on code modularity and reusability of the components.
Prerequisite: Mathematics 1000.
Note:
Students can receive credit for only one of COMP 1510 or COMP 2602.
2650
ProblemSolving with Personal Computers
(F) & (W)
is an overview of tools and techniques that current computer technology offers in a PC based networked environment. The emphases are on conceptual understanding of the software, from exploring capabilities of the existing software tools to learning methods of extending these capabilities. The key topics include problemsolving strategies, visual programming, macrolanguage operations, object linking and embedding, digital communication, and developing interactive web pages. The course has a practical flavour. In structured laboratory sessions, students gain proficiency in using personal computers for solving common problems.
Prerequisite: Level III Advanced Mathematics or Mathematics 1000 (which can be taken concurrently) or Mathematics 1090 (or equivalent).
2710
ObjectOriented Programming II
(F) & (W)
continues from ObjectOriented Programming I, and studies objectoriented and eventdriven programming. Additional topics include: recursion, basic analysis of algorithms, fundamental data structures such as simple linked structures and stacks, and fundamental computing algorithms such as binary search and quadratic time sorting. A brief overview of programming languages, virtual machines and language translations is also provided.
Lectures: Three hours per week.
Laboratory: Three hours per week.
Prerequisite: COMP 1710.
2711
Introduction to Algorithms and Data Structures
(F) & (W)
includes the study of standard ways of organizing and manipulating data in computer storage. Fundamental concepts in the design and analysis of algorithms are also discussed.
Lectures: Three hours per week.
Laboratory: Three hours per week.
Prerequisite: COMP 2710.
Note:
It is recommended that students complete COMP 2742 prior to registering for COMP 2711.
2742
Logic for Computer Science
(F) & (W)
is an introduction to propositional and predicate logic with applications. The use of the system of boolean logic in reasoning and circuit design, as well as basic proof techniques and the resolution principle, for both propositional and predicate logic, will be covered. Concepts involving sets will be used to illustrate different types of proof techniques. The probable intractability of boolean logic and Goedel's incompleteness theorem will be presented.
Prerequisite: COMP 1710.
2752
Introduction to Business Data Processing
(F)
 inactive course.
2760
Encountering the Computer: Society and the Individual
(F) & (W)
examines social, ethical, legal and cultural issues surrounding the use of computers in modern society. These broader social issues are followed by an examination of the use of social and individual psychology in user interface design. Students will be expected to demonstrate an understanding of these issues both directly (through verbal and written discourse) and practically, as applied to the creation of actual software artifacts.
Prerequisites: Two 1000level English courses, or equivalent.
Corequisite: COMP 2710.
2801
Introductory Computing for Business
(F) & (W)
introduces students to computer applications in business, document processing, application development, decision support, and information management. A three hour laboratory is required.
Prerequisite: Level III Advanced Mathematics or Mathematics 1000 (which can be taken concurrently) or Mathematics 1090 (or equivalent).
3700
Industrial Experience
(F), (W), (S)
is a course for students who are admitted to CIIO. Students are required to register for this noncredit course every semester during their internship. This course is open only to students who have been accepted into the Internship Program and provides an opportunity for qualified students to obtain rewarding job experience of 8, 12 or 16 months of continuous duration, during the course of their studies.
Prerequisite: Admission to the Computer Industry Internship Option (CIIO).
3710
Vocational Languages
(W)
is a study of several programming languages of vocational significance (e.g. a selection from C, C++, Prolog, Perl, Python and LISP). The use of appropriate programming paradigms to solve some significant problems.
Prerequisite: COMP 2711.
3714
Programming Languages and their Processors
(F) & (W)
reviews typical elements of (imperative) programming languages, and then discusses language implementations in the form of compilers and interpreters. The topics include specification of syntax and semantics of programming languages, discussion of expressions and assignments, side effects, control structures, data and procedural abstractions, parameter passing mechanisms, bindings, scopes, and type systems. The recursivedescent technique is used for illustrations of different aspects of syntax analysis, code generation and error recovery. Language interpreters are discussed for both lowlevel and highlevel languages.
3715
Network Computing with WEB Applications
(F) & (W)
studies how distributed applications (e.g., client/server Web applications) are constructed using the Internet. Topics covered include: the socket interface for network communication, client/server applications, browser scripting using Javascript, content generation for web applications (e.g., jsp, php), html/css documents, and the use of cryptography to handle security.
Prerequisite: COMP 2711.
3716
Software Methodology
(F) & (W)
studies the development of software by gathering the requirements of the software program, analysing the requirements to create a development model, and creating the software and documents for the software product. This course studies techniques for all three software development activities.
Prerequisite: COMP 2711.
3717
Symbolic Computation and Recursion
(W)
 inactive course.
3718
Programming in the Small
(F)
demonstrates the tools and techniques used in the construction of small software systems. The software tools and techniques to be covered include analysis and design of software components, software construction tools (e.g. linkers, builders, debuggers), software library use and design, and system integration.
3719
Theory of Computation and Algorithms
(F) & (W)
is an introduction to formal algorithmic problem solving. Various algorithm design techniques that sometimes yield efficient solutions are studied. Deterministic and nondeterministic machines (finite state automata, pushdown automata and Turing machines) are discussed and used to efficiently solve problems such as the String Matching Problem, the parsing of Contextfree Languages, and to introduce the theory of NPcompleteness. In addition, Turing machines are used to prove the unsolvability of certain problems. Tractable, intractable and undecidable problems are contrasted. Basic issues related to parallelization are discussed as well.
Prerequisites: COMP 2711 and Pure Mathematics 2320.
Note:
Credit cannot be obtained for both COMP 3719 and the former COMP 3711. Credit cannot be obtained for both COMP 3719 and the former COMP 3740.
3723
Logic Design
(F)
 inactive course.
Note:
Credit may not be obtained for both COMP 3723 and Engineering 3861.
3724
Computer Organization
(F) & (W)
can be studied at the digital logic implementation level, the instruction set architecture level, and the translation of programming languages to the underlying machine instruction level. This course studies computer organization at these levels.
Prerequisites: COMP 2711 and COMP 2742.
Corequisite: Pure Mathematics 2320.
3725
Computer Architecture and Operating Systems
(F) & (W)
covers system design and the architectural implementations of these designs. The objective is to develop the basic concepts of processor design, memory management, operating systems, and I/O devices and their interactions.
Prerequisite: COMP 3724.
3731
Introduction to Scientific Computing
(W)
main objectives are the development of algorithms for the numerical solution of mathematical problems and the study of the numerical stability of these algorithms. The efficiency of these algorithms with respect to speed and storage requirements is considered as well. Emphasis is also placed on the study of the sensitivity of selected problems to perturbations in the data. There is also a brief introduction to the development of numerical algorithms that take advantage of advanced computer architectures, such as pipeline processors, array processors and parallel processors.
Prerequisites: Mathematics 2000 and Mathematics 2050, and one of COMP 2602 or COMP 2710.
Note:
Credit cannot be obtained for both COMP 3731 and Applied Mathematics 3132.
3751
Computational Aspects of Operations Research
(W)
 inactive course.
3753
Computational Aspects of Linear Programming
(F)
is an introduction to the Linear Programming Problem (LPP). The emphasis is placed upon developing the most recent and numerically reliable algorithms for the solution of the Linear Programming Problem. The numerical stability of these algorithms will be examined as well. Geometric understanding of the LPP. Simplex method for the LPP. Sparse matrix LPP. Duality and postoptimality analysis. Extensions to the simplex algorithm. Principles of interior algorithms for the LPP.
Prerequisite: Mathematics 2050, and one of COMP 2602 or 2710.
3754
Introduction to Information and Intelligent Systems
(F) & (W)
introduces students to application areas that are away from usual numberbased and textbased processing. Students will learn the basic concepts and become aware of the historical developments and social and ethical issues related to the application areas such as intelligent systems and information management. This exposure will help students to become knowledgeable about managing large volumes of data and dealing with problems that are well defined but whose algorithmic solutions are not feasible or problems that are fuzzily defined.
3790
Directed Readings
 inactive course.
4711
Structure of Programming Languages
covers programming language design considerations; syntactic and semantic structure; survey of typical features and operations; analysis of facilities for control and data structuring; language extensibility; execution models; formal specification of programming languages.
4712
Compiler Construction
4715 and 4717
Special Topics in Programming Languages
4718
Survey of Software Engineering
surveys the major topics of software engineering. Areas covered include: requirements capture, system design and design approaches, verification and validation (including formal methods and testing), and management of the software development process.
Prerequisite: COMP 3716.
4719
Software Specification
 inactive course.
4721
Operating Systems
studies the design and implementation of an operating system’s kernel. The main components used in operating system implementations include: context switches, process management, memory management, interprocess communication, file systems and system calls. The data structures and algorithms used in implementing the above components are studied. The different architectural styles of kernel implementation are also considered. Realtime operating systems are also discussed.
Prerequisite: COMP 3725.
Note:
Credit may not be obtained for both COMP 4721 and Engineering 8894.
4723
Introduction to Microprocessors
examines the architecture and instruction sets for several microprocessors. The use of microprocessors as device controllers; comparisons of hardware and programmed techniques; microprocessor interfacing with external devices; methods of I/O; bus structures; modern microprocessor support devices are discussed.
Prerequisite: COMP 3724.
Lecture: Three hours per week.
Laboratory: Minimum of three hours per week. Practical experience with basic principles will be obtained through laboratory experience.
47264729
Special Topics in Computer Systems
4734
Matrix Computations and Applications
is an introduction to linear algebra; solution to linear systems; scaling, improving and estimating accuracy; the linear least squares problem; the eigenvalue problem; singular value decomposition of a matrix; the generalized eigenvalue problem.
Prerequisite: COMP 3731.
4735
Advanced Matrix Computations and Applications
 inactive course.
47364739
Special Topics in Numerical Computations
4740
Design and Analysis of Algorithms
will give an overview of techniques for the design of efficient optimalsolution and heuristic algorithms. It will include an introduction to various advanced data structures for set and string processing that are used to further optimize algorithm efficiency.
Prerequisite: COMP 3719.
4741
Formal Languages and Computability
is an indepth study of various types of formal machines and their associated languages. Effective computability and other formalisms, such as lambda calculus will be studied as well.
Prerequisite: COMP 3719.
Note:
Students can receive credit for only one of the former COMP 3740 or COMP 4741.
4742
Computational Complexity
is an indepth discussion of computational complexity theory. Topics covered in the course include: models of computation (for both serial and parallel computations); complexity measures; reducibility; complexity classes (NP, PSPACE, NC, LOGSPACE and P); and randomized computations.
Prerequisite: COMP 3719.
4743
Graph Algorithms and Combinatorial Optimization
discusses classical problems in combinatorial optimization and graph algorithms, including matching, colorability, independent sets, isomorphism, network flows and scheduling. Special families of graphs are discussed and algorithms that would otherwise be NPhard or complete are shown to be polynomial time when restricted to such families.
Prerequisite: COMP 3719.
47454749 (Excluding 4748)
Special Topics in Theoretical Aspects
4748
Introduction to the Science of Complexity
is an exploration of the use of computers in the simulation of complex systems. Some theories and models, such as cellular automata, artificial life, fractals, genetic algorithms, chaos, and evolution will be discussed and will be used in the modelling of "reallife" systems. The approach in this course is practical. Students have to write a number of programs of different levels of sophistication including a final project.
Prerequisite: COMP 3719.
4751
Computer Graphics
examines display devices, display processors, display file compilers, display transformations, structured display files, graphical input devices, perspective, hidden line elimination, languages and graphics systems.
In addition to three onehour lectures, there will be a minimum three hour laboratory per week, to be scheduled by the Department.
4752
Introduction to Computational Intelligence
provides an introduction to four of the fundamental computational intelligence methods: artificial neural networks, evolutionary computation, swarm intelligence and fuzzy systems. The integration of these techniques for problem solving will also be introduced.
Lectures: Three hours per week.
4753
Artificial Intelligence
has selected topics from AI programming languages; heuristic searching; problem solving; gameplaying; knowledge representations; knowledgebased systems; reasoning in uncertainty situations; planning; natural language understanding; pattern recognition; computer vision; and machine learning.
4754
Database Systems
4756
Image Processing
will centre on the key analytical and algorithmic tools and concepts of digital image processing. Topics will include Transformations, Enhancement, Encoding, Data Bases, Segmentation and Description.
In addition to three onehour lectures, there will be a three hour laboratory per week, to be scheduled by the Department.
Prerequisite: COMP 3719.
4759
Computer Networks
looks at how the operation of computer networks requires the following: a) communication between two computers, b) information transfer between two computers not directly connected, and c) services that need computer communication. This course focuses on the standard solutions and services used to fulfill the previous requirements. These include: physical transmission of signals, reliable communication based on unreliable communication channels, the routing of messages between connected computers to reach computers that are not directly connected, email, file transfer, name servers, remote terminal access and the World Wide Web. Particular attention will be placed on the workings of the Internet.
4761
HumanComputer Interaction
emphasizes userinterface design, distinguishing usability research from testing. Students identify usability issues, and then prototype and analyse their own solutions. Representative methods, techniques and tools related to design, testing and research are discussed. Specific topics may include: environments and toolkits, task analysis, user modelling, user psychology, qualitative and quantitative data analysis.
4762
Introduction to Computational Molecular Biology
will give an overview of computational problems and algorithms for these problems associated with a variety of analyses of biological molecular data.
Prerequisite: COMP 3719.
4766
Introduction of Autonomous Robotics
examines the fundamental constraints, technologies, and algorithms of autonomous robotics. The focus of this course will be on computational aspects of autonomous wheeled mobile robots. The following topics will be covered: major paradigms in robotics, methods of locomotion, kinematics, simple control systems, sensor technologies, stereo vision, feature extraction, modelling uncertainty of sensors and positional information, localization, SLAM, obstacle avoidance, and 2D path planning.
Prerequisites: COMP 2711, Mathematics 2000, Mathematics 2050, and Statistics 2510.
4767
Information Visualization and Applications
focuses on the design and implementation of interactive visualization techniques for the analysis, comprehension, exploration, and explanation of large collections of abstract information. Topics to be covered include principles of visual perception, information data types, visual encodings of data, representation of relationships, interaction methods, understanding user goals and tasks, and evaluation techniques. Case studies of accepted techniques and the current stateoftheart in information visualization will be presented.
4770
Team Project
has as its main objective to develop a working prototype of a software system as a team effort. A group of students will work on a project for a term, experiencing the advantages and difficulties of team projects.
Prerequisite: COMP 3716, COMP 3724, COMP 3754, and one other 3000level course, preferably COMP 3715.
4780
Honours Project
introduces computer science honours students to research activities, familiarizes them with a special problem in computer science, and provides independent study on an advanced topic under the direct supervision of a member of the computer science faculty. The topic is decided in consultation with the supervisor. The student is required to produce a written report on the project, to include the literature search on the topic, and to present this work at a departmental seminar prior to the last week of the semester.
Prerequisite: Consent of the Head of Department.
Note:
This course is only available to students who have been accepted into the honours program.
48004825
Special Topics
will be offered as departmental resources permit.
Prerequisites/Corequisites: Special topics courses are not offered on a regular basis, but whenever departmental resources permit. For these reasons, the prerequisites can vary each time the courses are offered.