13.4 Computer Science

Computer Science courses are designated by COMP.

COMP 1000 Computer Science - An Introduction

takes a breadth-first overview approach to the discussion of important aspects of computer science including fundamentals in algorithms, binary data representation, Boolean logic, systems software, networking concepts, introductory programming, databases, and selected Computer Science subfields.

CR:

the former COMP 1700. Students cannot receive credit for COMP 1000 if they have previously successfully completed, or are currently registered for, COMP 1003.

LH:

3

COMP 1001 Introduction to Programming

covers fundamental programming concepts and introduces object-oriented programming using Python. Students learn how to use primitive data types, and create and use fundamental data structures. They learn problem solving techniques, and apply them by designing and implementing algorithms, including search and sort, and simple recursive functions. They learn how to use control constructs and implement file and exception handling.

CR:

the former COMP 1710

LH:

3

COMP 1002 Introduction to Logic for Computer Scientists

introduces methods of reasoning and logic tools that underlie computer science. In particular, this course covers propositional and predicate logic, sets and other discrete structures, as well as modular arithmetic and basic counting, with emphasis on their applications in computer science.

CR:
the former COMP 2742, Electrical and Computer Engineering 4110, the former Engineering 4424, Mathematics 2320. Students cannot receive credit for COMP 1002 if they have previously successfully completed, or are currently registered for, Mathematics 2320.
LH:
3
COMP 1003 Foundations of Computing Systems

provides an in-depth introduction to foundational topics in computer science: algorithms and data structures, theory of computing, machine architecture and their historical context.

CO:
COMP 1002 or Mathematics 2320
LH:
3
PR:
COMP 1001
COMP 1400 Computing in the 20th Century and Beyond

- inactive course.

COMP 1401 Computing at the Movies

- inactive course.

COMP 1510 An Introduction to Programming for Scientific Computing

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.

CR:
the former COMP 2602 and the former Mathematics 2120
LH:
2
PR:
Mathematics 1000
COMP 1600 Basic Computing and Information Technology

offers an overview of information technology. It provides students with an understanding of basic concepts and necessary skills required to use spreadsheet, database and presentation software to manage, analyze, and present data.

CR:
the former Business 2700, the former COMP 2650 and the former COMP 2801
LH:
3
COMP 2000 Collaborative and Emergent Behaviour

- inactive course.

COMP 2001 Object-Oriented Programming

advances from Introduction to Programming and studies object-oriented programming and user interfaces. Additional topics include event-driven programming, program correctness, and simple refactoring. A brief overview of programming languages is also provided.

CR:

the former COMP 2710

LH:

3

PR:

A minimum grade of 65% in COMP 1001; a minimum grade of 65% in COMP 1002 or a minimum grade of 65% in MATH 2320; COMP 1003; and acceptance into a major, minor, or honours program in Computer Science, Computational Chemistry, or Data Science

COMP 2002 Data Structures and Algorithms

covers fundamental data structures, algorithms and algorithm design techniques. A problem-driven course, it focuses on computational problem solving from designing an efficient algorithm to implementing it using appropriate data structures.

CR:

the former COMP 2711

LH:

3

PR:

A minimum grade of 65% in COMP 1001; a minimum grade of 65% in COMP 1002 or a minimum grade of 65% in MATH 2320; COMP 1003; and acceptance into a major, minor, or honours program in Computer Science, Computational Chemistry, or Data Science

COMP 2003 Computer Architecture

introduces computer architecture at the digital logic implementation level, at the instruction set level, and at the level where programming languages are translated into the underlying machine instructions.

CR:

the former COMP 3724

LH:

3

PR:

A minimum grade of 65% in COMP 1001; a minimum grade of 65% in COMP 1002 or a minimum grade of 65% in MATH 2320; COMP 1003; and acceptance into a major, minor, or honours program in Computer Science

COMP 2004 Introduction to Operating Systems

introduces fundamental techniques for interfacing between computer software and hardware platforms, including the composition of, and connections within, a multilevel operating system. Students learn how to design substantial parts of an operating system.

CR:

the former COMP 3725

PR:

COMP 2002, COMP 2003, and acceptance into the major or honours program in Computer Science

COMP 2005 Software Engineering

introduces students to the different software process models, to project management and the software requirements engineering process, as well as to systems analysis and design as a problem-solving activity.

CR:

the former COMP 3716

PR:

COMP 2001 and acceptance into the major or honours program in Computer Science

COMP 2006 Computer Networking

introduces students to the use of programming interfaces for computer networking and to understand how the Internet works on the level of protocols. It focuses on the most commonly used of those protocols that are in the vast majority of modern computer systems.

CH:

1

CO:

COMP 2004, COMP 2007, COMP 2008

CR:

the former COMP 3715

PR:

COMP 2001, COMP 2002, and acceptance into the major or honours program in Computer Science

COMP 2007 Introduction to Information Management

introduces the basic knowledge needed for managing large volumes of data. It covers topics in information management and database systems from storage and retrieval to security and privacy of data.

CH:

1

CO:

COMP 2004, COMP 2006, COMP 2008

CR:

the former COMP 3754

PR:

COMP 2001, COMP 2002, and acceptance into the major or honours program in Computer Science

COMP 2008 Social Issues and Professional Practice

covers ethical and social considerations of computing to provide students with the basis to address these issues by ethical and technical actions. Case studies are used to illustrate ethical and social issues of computing.

CH:

1

CO:

COMP 2004, COMP 2006, COMP 2007

CR:

the former COMP 2760

PR:

COMP 2001, COMP 2002, and acceptance into the major or honours program in Computer Science

COMP 2100 Social Web Analysis

- inactive course.

COMP 2300 Introduction to Multimedia Programming

- inactive course.

COMP 2500 Data Analysis with Scripting Languages

- inactive course.

COMP 2510 Programming in C/C++

is a comprehensive treatment of the C/C++ programming languages. It is intended for students with some first programming experience. This course starts with a discussion of fundamentals of C and C++, moves on to the object-oriented aspects of C++, and introduces some advanced topics. It is an essential course for mastering the power of this rich programming language.

CR:
Electrical and Computer Engineering 3400, the former Engineering 3891
LH:
3
PR:
COMP 1001 or COMP 1510 or the former COMP 1710 or Engineering 1020 (or equivalent)
COMP 2718 Development Tools, Work Flows and Concepts

- inactive course.

COMP 3019 Security and Privacy in Computer Systems

covers the basic principles and tools needed to design and develop secure general computer software and websites. These include regulations and other non-technical aspects of security and privacy, as well as secure practices in developing software. The knowledge, skills, and tools learned will prepare the learner to design and develop software and websites without common security vulnerabilities and to be able to protect themselves and their team from basic attacks.

PR:

COMP 2004, 2005

COMP 3100 Web Programming

studies the Web information system from a programming perspective. It teaches how Web data are transferred across the network, how to design interactive browser contents, and how to provide dynamic pages from the server.

CR:
the former COMP 3715
PR:
COMP 2006, COMP 2007
COMP 3150 Introduction to Human-Computer Interaction

focuses on the design, implementation, and evaluation of interactive computing systems. This course introduces the fundamental theories, methods, and research in human-computer interaction (HCI), with an emphasis on understanding human behaviour while interacting with technology, general knowledge of HCI design issues, and a human-centered approach to software design. Topics include design principles, methods for evaluating interfaces with or without user involvement, and techniques for prototyping and implementing user interfaces of various modalities.

PR:

COMP 2001

COMP 3200 Algorithmic Techniques for Artificial Intelligence

covers basic algorithmic techniques and data structures that are used to embed basic intelligent behaviors, such as problem solving, reasoning and learning in software systems and agents.

CR:
the former COMP 4753
PR:
COMP 2001 or the former COMP 2710, COMP 2002 or the former COMP 2711, and Statistics 2500 or Statistics 2550
COMP 3201 Introduction to Nature-Inspired Computing

provides an overview of popular nature-inspired computing methods. Methods that are inspired by both biological and non-biological systems are considered. These methods have been applied to solve problems in various areas of computing such as optimization, machine learning, and robotics. Particular examples of nature-inspired computing methods studied include cellular automata, neural networks, evolutionary computing, swarm intelligence, artificial life, and complex networks. Contributions made in the field of nature-inspired computing that have led to advances in the natural sciences are also discussed.

CR:
the former COMP 4752
PR:
COMP 2001, COMP 2002 or the former COMP 2711, and Statistics 2500 or Statistics 2550
COMP 3202 Introduction to Machine Learning

introduces concepts and algorithms in machine learning for regression and classification tasks. The course gives the student the basic ideas and intuition behind model selection and evaluation, and selected machine learning methods such as random forests, support vector machines, and hidden Markov models.

CR:

Statistics 3486

PR:

COMP 3200; or COMP 2001 or the former COMP 2710, COMP 2002 or the former COMP 2711, and Statistics 2500 or Statistics 2550; and Mathematics 2050

COMP 3300 Interactive Technologies

provides exposure to traditional desktop, mobile and games contexts with respect to interaction design theory and practice. The impact of context on design principles is explored. An introduction to each programming context will be provided and a minimal set of software development tools for each context will be introduced. Practical application of interaction design principles will involve design and prototyping of desktop, mobile and games applications.

PR:
COMP 2001 or the former COMP 2710
COMP 3301 Visual Computing and Applications

provides students with the fundamental knowledge and skills in the fields of computer vision, computer graphics, and visualization. Visual perception is responsible for most of our impressions about the world around us. This course introduces how computers are used to both mimic the human visual system (e.g., recognize shapes) and to create visual content (e.g. synthesize images). Related techniques on image synthesis, processing and analysis are discussed under a unified framework. How visual computing principles were used to create visual effects in movies and commercials is also examined.

PR:
COMP 2002 or the former COMP 2711, Mathematics 2000, and Mathematics 2050
COMP 3400 Data Preparation Techniques

will give students basic knowledge on how to pre-process raw data. The aim is to enable students to perform data pre-processing in small and large data sets, evaluate the effect of pre-processing techniques using data mining/machine learning methods, and to scale up the pre-processing of large datasets using distributed frameworks.

LH:
3
PR:
COMP 2001; Statistics 2500 or Statistics 2550
COMP 3401 Introduction to Data Mining

introduces students to the basic concepts and techniques for data mining and knowledge discovery. Students will develop an understanding of the essential data mining technologies, and be able to design and evaluate methods for simple data mining applications.

PR:
COMP 2002 or the former COMP 2711, COMP 2007 or the former COMP 3754, and Statistics 2500 or Statistics 2550
COMP 3550 Introduction to Bioinformatics

deals with the development and application of computational methods to address biological problems. The course will focus on the fundamental concepts, ideas and related biological applications of existing bioinformatics tools. This course will provide hands-on experience in applying bioinformatics software tools and online databases to analyze experimental biological data, and it will also introduce scripting language tools typically used to automate some biological data analysis tasks.

EQ:

Biology 3951

LH:

3

PR:

Biology 1001; one of COMP 1001, 1002 or 1510; and 6 credit hours in Computer Science or Biology course at the 2000 level or above, excluding Biology 2040, 2041, 2120; or permission of the course instructor

COMP 3600 Algorithm Design and Analysis

covers advanced algorithm design techniques, including divide-and-conquer, greedy algorithms, dynamic programming and network flows. The emphasis is on algorithmic problem solving and algorithm design and analysis methodologies, rather than on specific algorithms. NP-completeness and methods for dealing with intractability will also be discussed.

CR:
the former COMP 4740
PR:
COMP 2002
COMP 3602 Introduction to the Theory of Computation

examines various models of computation and their computational power. Several measures of a problem's computational difficulty will be discussed.

CR:
the former COMP 3719
PR:
COMP 2002 or the former COMP 2711
COMP 3700 Industrial Experience

is open only to students who have been accepted into the Co-operative Internship in Computer Science. This course provides an opportunity for qualified students to obtain rewarding job experience of 8, 12 or 16 months of continuous duration in fields related to computer science during the course of their studies. A grade of NC (No Credit) will be awarded for this course if the student is continuing the co-operative internship into the next semester.

CH:

0

PR:

admission to the Co-operative Internship in Computer Science (CICS)

COMP 3710 Vocational Languages

- inactive course.

COMP 3718 Programming in the Small

- inactive course.

COMP 3730 Introduction to Parallel Programming

considers the fundamental aspects of programming for parallel architectures. Almost all modern computers contain multiple processing units, since individual processors have effectively reached peak performance. This course will focus on the considerations and challenges of writing parallel programs, particularly for multicore processors and graphics processing units. Topics will include threaded programming, vectorization, parallel design patterns, synchronization and workload balancing, high-performance computing, remote procedure calls, detecting failures, and cloud systems.

CR:

ECE 7400

PR:

COMP 2001, COMP 2004

COMP 3731 Introduction to Scientific Computing

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.

CR:
Mathematics 3132
PR:
COMP 1001 or the former COMP 2710, Mathematics 2000, Mathematics 2050
COMP 3753 Computational Aspects of Linear Programming

- inactive course.

COMP 3766 Introduction to Robotic Manipulation

provides an introduction to mathematical formulation and practical aspects of robotic manipulators. It will present kinematics, dynamics, control and programming vital to the effective use of robotic arms. Moreover, a complete yet straightforward robotic manipulator model will be developed to demonstrate these concepts with the help of high-level languages and frameworks. The course will also address robotics sensing, perception, and Artificial Intelligence topics applied to robotic manipulation.

LH:

three 3-hour sessions per semester

PR:

COMP 2001 and COMP 2002, Mathematics 2000 and Mathematics 2050, and Statistics 2500 or Statistics 2550

COMP 4019 Secure System Design

covers the theory and secure practices of using cryptography in computer systems, advanced common attacks on software and websites, security and privacy on cloud, over networks, on databases, and in machine learning. Finally, it introduces active defence, penetration testing, and forensics. The knowledge, skills, and tools learned will prepare the learner to design, develop, analyze, test, and maintain a system with non-generic security and privacy requirements.

CR:

COMP 4820

LH:

2

PR:

COMP 3019, 3600

COMP 4300 Introduction to Game Programming

is an introductory course for students interested in learning the fundamentals of game programming. Topics include vector math for games, fundamentals of rendering, introduction to animation and artificial intelligence, collision detection, game physics and user-interfaces. Students are required to write a fully functional game during the course.

PR:
COMP 2001 or the former COMP 2710, Mathematics 2050, and 6 credit hours in Computer Science courses at the 3000 level or above (COMP 3301 and COMP 3731 are recommended)
COMP 4301 Computer Vision

studies how to develop methods that enable a machine to “understand” or analyze images. The course introduces the fundamental problems in computer vision and the state-of-the-art approaches that address them. Topics include feature detection and matching, geometric and multi-view vision, structure from X, segmentation, object tracking and visual recognition.

EQ:

Electrical and Computer Engineering 8410, the former Engineering 8814

LH:

six 3-hour sessions per semester

PR:

COMP 3301 or Electrical and Computer Engineering 7410 or the former Engineering 7854 or permission of the instructor

COMP 4302 3D Computer Graphics

introduces the students to the state-of-the-art concepts and developments in the field of 3D computer graphics. The underlying algorithms, as well as the basic techniques to develop interactive 3D graphics systems including games and simulators, are presented. Topics of the course include 3D geometrical transformations, 3D projections, 3D modeling and rendering, 3D graphics languages and systems. Advanced photorealistic rendering and image-based rendering techniques may also be covered.

CR:
the former COMP 4751
PR:
COMP 3301
COMP 4303 Artificial Intelligence in Computer Games

provides an introduction to specific state-of-the-art algorithmic techniques and data structures that are used to efficiently implement human-like abilities (e.g., awareness, memory, rational decision-making (under uncertainty), movement, co-operation in groups) in computer game agents.

PR:
COMP 3200
COMP 4304 Data Visualization

covers interactive representation of data using a modern programming library. Topics include an introduction to the software platform and the principles for data selection, analysis, design and creation of dynamic visualizations. Students produce interactive web-based objects, addressing problems in the presentation and understanding of large data collections. The techniques discussed are applicable to different sources and types of data.

CR:

the former COMP 4767

PR:

COMP 2001 or the former COMP 2710; COMP 2002 or the former COMP 2711; one of COMP 3202, COMP 3400, or COMP 3401; and one of Statistics 2500 or Statistics 2550

COMP 4550 Bioinformatics: Biological Data Analysis

- inactive course.

COMP 4711 Structure of Programming Languages

- inactive course.

COMP 4712 Compiler Construction

- inactive course.

COMP 4715 and 4717 Special Topics in Programming Languages

will have topics to be studied announced by the Department.

COMP 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.

PR:
COMP 2005 or the former COMP 3716
COMP 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. Real-time operating systems are also discussed.

CR:
Electrical and Computer Engineering 8400, the former Engineering 8894
PR:
COMP 2004 or the former COMP 3725
COMP 4723 Introduction to Microprocessors

- inactive course.

COMP 4726-4729 Special Topics in Computer Systems

will have topics to be studied announced by the Department.

COMP 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.

PR:
COMP 3731
COMP 4736-4739 Special Topics in Numerical Computations

will have topics to be studied announced by the Department.

COMP 4741 Formal Languages and Computability

is an in-depth 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.

CR:
the former COMP 3740
PR:
COMP 3602 or the former COMP 3719
COMP 4742 Computational Complexity

is an in-depth 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.

PR:
COMP 3602 or the former COMP 3719
COMP 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 NP-hard or complete are shown to be polynomial time when restricted to such families.

PR:
COMP 3600 or the former COMP 3719
COMP 4745-4749 Special Topics in Theoretical Aspects

will have topics to be studied announced by the Department.

COMP 4750 Introduction to Natural Language Processing

covers tasks involving human languages, such as speech recognition, text understanding, and keyword-based information retrieval which underlie many modern computing applications and their interfaces. To be truly useful, such natural language processing must be both efficient and robust. This course will give an introduction to the algorithms and data structures used to solve key NLP tasks, including utterance understanding and generation and language acquisition, in both of the major algorithmic paradigms used today (rule-based and statistical). The emphasis will be primarily on text-based processing though speech-based processing will be addressed where possible.

PR:
COMP 3600 or the former COMP 3719
COMP 4754 Database Systems

introduces students to database processing, database management systems and database design considerations. It will cover the theory and methodologies essential for the relational database design, implementation, manipulation, optimization and management.

PR:
COMP 2004 or the former COMP 3725, COMP 2007 or the former COMP 3754
COMP 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, e-mail, file transfer, name servers, remote terminal access and the World Wide Web. Particular attention will be placed on the workings of the Internet.

PR:
COMP 2006 or the former COMP 3715, and COMP 2004 or the former COMP 3725
COMP 4766 Introduction to 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 2-D path planning.

LH:
3
PR:
COMP 2002 or the former COMP 2711, Mathematics 2000, Mathematics 2050, and Statistics 2500 or Statistics 2550
COMP 4768 Software Development for Mobile Devices

focuses on the design and implementation of software in a mobile networking environment. The primary topics to be covered in this course include software engineering, network computing, graphics programming, and human-computer interaction for mobile devices. A modern mobile device with advanced networking and graphic features, including multi-touch interaction and motion sensors will be used as the primary platform for development in this course.

LH:
one and one-half hours per week
PR:
COMP 2008 or the former COMP 2760, COMP 2006 or the former COMP 3715, and COMP 2005 or the former COMP 3716
COMP 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.

AR:
attendance is required
PR:
COMP 2003, COMP 2005, COMP 2006, COMP 2007, and 6 credit hours in Computer Science courses at the 3000-level or above; or the former COMP 3715, the former COMP 3716, the former COMP 3724, and the former COMP 3754
COMP 4800-4825 Special Topics

will be offered as departmental resources permit.

CO:
Special topics courses are not offered on a regular basis, but whenever departmental resources permit. For these reasons, the co-requisites can vary each time the courses are offered.
PR:
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.
COMP 499A and 499B Honours Research in Computer Science

are consecutive linked courses, based on independent study of an approved topic in Computer Science. The topic is chosen in consultation with a Faculty Advisor. The research project and type of work required from the student will depend on the project and can involve literature review; developing methodologies; collecting, analyzing and presenting data; writing code; interpreting results and determining the significance of findings. Deliverables include a dissertation proposal, formal written report and a departmental presentation.

CH:

6

PR:

admission to the Honours Program

AN = Additional notes.

AR = Attendance requirement as noted.

CH = Credit hours: unless otherwise noted, a course normally has a credit value of 3 credit hours.

CO = Co-requisite(s): course(s) listed must be taken concurrently with or successfully completed prior to the course being described.

CR = Credit restricted: The course being described and the course(s) listed are closely related but not equivalent.  Credit is limited to one of these courses.  Normally, these courses cannot be substituted, one for the other, to satisfy program requirements.

EQ = Equivalent: the course being described and the course(s) listed are equal for credit determination.  Credit is limited to one of these courses.  These courses can be substituted, one for the other, to satisfy program requirements.

LC = Lecture hours per week: lecture hours are 3 per week unless otherwise noted.

LH = Laboratory hours per week.

OR = Other requirements of the course such as tutorials, practical sessions, or seminars.

PR = Prerequisite(s): course(s) listed must be successfully completed prior to commencing the course being described.

UL = Usage limitation(s) as noted.

Copyright © 2025 Memorial University of Newfoundland.
Newfoundland and Labrador, Canada.
calendar.editor@mun.ca