COMP 061
1.5 credits
Fundamental Computer Studies
Prerequisite(s): None. Note: Students should have basic English proficiency in order to be successful in this course.
Computers are a pervasive part of daily life in personal, work, and educational situations. This course helps students with little or no experience gain the confidence to perform basic computer operations: keyboarding, word processing, emailing, and using the Internet.
COMP 062
1.5 credits
Navigating the Digital World
Prerequisite(s): COMP 061 or equivalent. Note: Students should have basic English proficiency in order to be successful in this course.
This course introduces students to current computer technology terminology, trends, and techniques to prudently navigate the digital world. Topics covered include online safety, communication and social networking, internet, e-commerce, file management, and basic digital photography.
COMP 071
1.5 credits
Intermediate Computer Studies
Prerequisite(s): COMP 061 or equivalent. Note: Students should have basic English proficiency in order to be successful in this course.
Computers are increasingly becoming a part of daily life in personal, work and educational environments. This course introduces students with basic computer skills to the Windows environment, Blackboard, Excel spreadsheets, electronic communication, Power Point presentations, and intermediate topics in Word.
COMP 081
3 credits
Advanced Computer Studies
Prerequisite(s): COMP 071 or equivalent. Note: Students should have basic English proficiency in order to be successful in this course.
This course combines a broad range of computer theory and applications to benefit academic and employment opportunities by developing skills for Windows, Word, Excel, Power Point, and Access.
COMP 091
3 credits
Provincial-Level Computer Studies: Graphics and Publishing
Prerequisite(s): COMP 071 or equivalent. Note: Students should have basic English proficiency in order to be successful in this course.
This provincial-level computing course teaches intermediate to advanced computer skills in current online technologies, publishing, digital art, and graphics. Students will use their computer skills to develop problem solving and critical thinking skills as they apply computer applications.
COMP 092
3 credits
Provincial-Level Computer Studies: Computer Applications
Prerequisite(s): COMP 071 or equivalent. Note: Students should have basic English proficiency in order to be successful in this course.
This provincial-level computing course teaches intermediate and/or advanced computer skills in networking, programming, spreadsheets, database management, and online technologies. Students will use computer skills to develop problem solving and critical thinking skills and apply computer applications to real-life and workplace situations.
COMP 120
3 credits
Computing for the Sciences
Prerequisite(s): One of the following: (C+ or better in Principles of Mathematics 12), (C or better in one of Foundations of Mathematics 12, Pre-calculus 12, MATH 096, or MATH 110), (C or better in both MATH 092 and MATH 093), or (C or better in both MATH 094 and MATH 095).
An introduction to computing and programming, with applications in the sciences. Imperative programming, computational thinking, advanced spreadsheets, introductory databases, and publication-quality typesetting tools.
Note: Competency in computer skills is required. See CIS Required Skills section on the CIS department website for details.
COMP 125
3 credits
Principles of Computing
Prerequisite(s): One of the following: (C or better in one of Pre-calculus 11, Foundations of Mathematics 11, Principles of Mathematics 11, or MATH 085) or (one of Principles of Mathematics 12, Foundations of Mathematics 12, Pre-calculus 12, MATH 092, or MATH 094).
Provides students with a broad understanding of the fundamental concepts of computing, logic, and data processing. Concepts include introductory hardware and software architecture, models of computation, representation of data, machine arithmetic, assembler programming, command line interfaces, and an introduction to some of the logical and mathematical ideas used in computing.
Note: Competency in computer skills is required. See CIS Required Skills section on the CIS department website for details.
COMP 150
4 credits
Introduction to Programming
Prerequisite(s): One of the following: (C or better in one of Pre-calculus 11, Foundations of Mathematics 11, Principles of Mathematics 11, or MATH 085) or (one of Principles of Mathematics 12, Foundations of Mathematics 12, Pre-calculus 12, MATH 092, or MATH 094).
An introduction to computer programming using a modern programming language. Students will cover fundamental concepts such as variables, data types, control structures, collections, recursion and objects. Emphasis will be placed on clarity, style and design throughout.
Note: Competency in computer skills is required. See CIS Required Skills section on the CIS department website for details.
Note: Students with credit for COMP 152 cannot take this course for further credit.
COMP 152
4 credits
Introduction to Structured Programming
Prerequisite(s): C+ or better in one of the following: Principles of Mathematics 12, Pre-calculus 12, MATH 093, or MATH 095.
This course is an introduction to structured computer programming. Students will study algorithms and top-down design, and will implement algorithms in a procedural programming language. Lab exercises and programming assignments will emphasize scientific and numerical applications.
Note: Competency in computer skills is required. See CIS Required Skills section on the CIS department website for details.
Note: Students with credit for COMP 150 cannot take this course for further credit.
COMP 155
4 credits
Object-oriented Programming
Prerequisite(s): COMP 150 or COMP 152 with a grade of C+ or better.
This course continues the systematic study of programming started in COMP 150 focusing on object-oriented programming and design. The prevailing theme of COMP155 will be to move to large and complex collaborations of objects while adding a number of important skills.
COMP 230
3 credits
Databases and Database Management Systems
Prerequisite(s): COMP 155 or (admission to the Data Analysis Post-degree certificate program and one of the following: STAT 106 [formerly MATH 106] or MATH 270/STAT 270).
This course covers the theoretical foundations that are necessary to design and implement a database, and to use database management systems effectively. The database approach is introduced and major models are reviewed. Relational models are considered in more detail. Data modeling techniques are used as a tool for design. Students will study data manipulation languages such as relational algebra and SQL. Normalization and practical design considerations are covered.
Note: Students with credit for CIS 230 cannot take this course for further credit.
COMP 251
4 credits
Data Structures and Algorithms
Prerequisite(s): COMP 125, COMP 155, and MATH 125.
An introduction to the abstract data structures used in the solution of common computing problems. Applies concepts such as stacks, queues, trees, and graphs to problems using a modern object-oriented programming language. Also covers the correctness and efficiency of algorithms.
COMP 256
3 credits
Introduction to Machine Architecture
Prerequisite(s): COMP 125 and one of (COMP 150 or COMP 152).
Students study the fundamental digital circuits in typical microcomputer hardware, and assembly language programming as a tool for understanding the computer architecture and for controlling computer hardware devices.
COMP 325
3 credits
Malicious Software and Attack Prevention
Prerequisite(s): COMP 155 or CIS 221. Note: COMP 256 is recommended.
Students will learn about the vulnerabilities inherent in computer programs. Topics studied will include stack and buffer overflows, race conditions, file operations, string handling, interprocess communication, injection attacks. C and assembly language examples will be used.
Note: Students with credit for CIS 325 cannot take this course for further credit.
COMP 331
3 credits
Data Quality
Prerequisite(s): COMP 230 (formerly CIS 230) and one of the following: STAT 106 (formerly MATH 106) with a B, MATH 270/STAT 270, or STAT 271.
Data quality issues pertaining to data acquisition, storage, integrity, and use. Identifying and analyzing data quality problems, and assessing strategies and tools to correct them. Also covers privacy and security, and data quality needs of data warehousing and mining applications.
Note: This course is offered as COMP 331 and STAT 331 (formerly MATH 331). Students may take only one of these for credit.
COMP 340
3 credits
Operating Systems
Prerequisite(s): COMP 251 and admission to the Bachelor of Computer Information Systems degree or the Bachelor of Science with Computing Science major.
Note: Students accepted to a CIS or Computing Science minor may register with permission of the department.
An examination of computer operating system architecture. Students will gain an understanding of general as well as distinguishing features of various operating systems. Students are also expected to do some system programming on multi-user operating systems such as UNIX or LINUX.
COMP 350
3 credits
User Interface Design and Programming
Prerequisite(s): COMP 251 and admission to the Bachelor of Computer Information Systems degree or the Bachelor of Science with Computing Science major.
Note: Students accepted to a CIS or Computing Science minor may register with permission of the department.
This course introduces the topic of human-computer interaction by teaching students how to design and program enjoyable, user-centered graphical interfaces. The design principles are based on user behavior and human factors such as perception, memory, and attention. Students will learn to implement graphical user interfaces in a variety of programming environments and operating systems.
COMP 351
3 credits
Advanced Website Programming
Prerequisite(s): COMP 251 and admission to the Bachelor of Computer Information Systems degree or the Bachelor of Science with Computing Science major.
Note: Students accepted to a CIS or Computing Science minor may register with permission of the department.
This course covers current technologies for client and server-side programming of dynamic websites, web-enabled applications, and web services. Internet protocols, security issues, and database connectivity will be examined. The course will also introduce common design architectures used for the technologies.
COMP 359
3 credits
Design and Analysis of Algorithms
Prerequisite(s): COMP 251 and (MATH 125 or MATH 225) and (STAT 106 [formerly MATH 106] or MATH 270/STAT 270).
Advanced study of the analysis and design of algorithms and data structures in order to solve common computer science problems.
COMP 360
3 credits
Computer Graphics
Prerequisite(s): COMP 251 and admission to the Bachelor of Computer Information Systems degree or the Bachelor of Science with Computing Science major.
Note: Students admitted to a CIS or Computing Science minor may register with department permission.
This course focuses on the development of Computer Graphics technology. Topics include graphics hardware, lighting models, texture models and the geometric representation of shapes and surfaces.
COMP 361
3 credits
Introduction to Robotics
Prerequisite(s): COMP 251.
This course introduces the principles, design, and implementation of autonomous robotic systems. Students will learn how to program intelligent robots for applications involving sensing, navigation, planning, and uncertainty, in real and simulated environments.
COMP 370
3 credits
Software Engineering
Prerequisite(s): COMP 251 and CIS 270.
Note: Students accepted to a Computing Science major or minor may register with permission of the department. The CIS 270 prerequisite will be waived for these students.
A detailed and comprehensive study of object-oriented and classical software engineering techniques. This is an addition to the analysis and design work covered in CIS 270. Topics cover all aspects of the software life-cycle. Emphasis is placed on object-oriented techniques and the Unified Modeling Language (UML).
Note: Students with credit for CIS 370 cannot take this course for further credit.
COMP 371
3 credits
Object Oriented Modeling and Design
Prerequisite(s): Admission to the Bachelor of Computer Information Systems degree, CIS 270, COMP 230 (formerly CIS 230), and COMP 251. Note: Students accepted to a CIS or Computing Science minor may register with permission of the department.
Students will learn how to design and implement high quality computer systems. Emphasis is placed on creating a requirements model and using design principles to create a working system. The unified modeling language (UML) is used extensively throughout this course.
Note: Students with credit for CIS 371 cannot take this course for further credit.
COMP 380
3 credits
Introduction to Artificial Intelligence
Prerequisite(s): COMP 251, (one of STAT 106 or MATH 270/STAT 270), and admission to the Bachelor of Computer Information Systems degree or the Bachelor of Science with Computing Science major.
Note: Students accepted to a CIS or Computing Science minor may register with permission of the department.
A basic introduction to Artificial Intelligence. Topics include common AI techniques, including knowledge representation and reasoning, logical inference, and machine learning. Emphasis is placed on practical use of rule-based systems and the fundamentals necessary for the development of Expert Systems.
Note: Students with credit for CIS 380 cannot take this course for further credit.
COMP 381
3 credits
Introduction to Machine Learning
Prerequisite(s): (COMP 251 and one of the following: [STAT 106 or STAT 270]) or admission to the Data Analysis Post-degree certificate. Note: Students who do not have the required courses but have been admitted to the Data Analysis Post-degree certificate will need to contact the department assistant for permission to register.
Programming computers to learn from experience and from data, resulting in flexible, customized software. Applications range from simple spam detection to complex speech recognition. Emphasis on programming techniques for implementing machine learning algorithms.
COMP 382
3 credits
Language, Computation and Machines
Prerequisite(s): COMP 251 and MATH 225.
This is a theoretical computer science course, covering types of formal languages and their hierarchical relationships, and the different abstract machines that recognize each type. The course has important practical implications for all programming languages and computer applications.
COMP 386
3 credits
Coding Best Practices
Prerequisite(s): Admission to the Coding Skills associate certificate, COMP 359, and COMP 370.
Provides students with experience using software development tools and workflows. The content will emphasize best practices, quality assurance strategies, style guidelines, and professionalism. Students will learn to select and evaluate emerging technologies for use in their software development workflows.
COMP 390
3 credits
Data Communications
Prerequisite(s): Admission to the Bachelor of Computer Information Systems or the Bachelor of Science with Computing Science major, MATH 125, (one of CIS 291, CIS 292, or COMP 251), and (one of STAT 106 or MATH 270/STAT 270).
Note: Students accepted to a CIS or Computing Science minor may register with permission of the department.
Students will explore the ideas, methods, and standards for the exchange of information, and the layers, interfaces, protocols, and services on the OSI reference model and TCP/IP protocol suite. Network algorithms, design and tradeoffs, and performance analysis are emphasized.
Note: Students with credit for CIS 390 cannot take this course for further credit.
COMP 420
3 credits
Computers and Society
Prerequisite(s): 12 credits of 300-level or above in CIS or COMP.
An investigation of the basic cultural, social, legal, economic, and ethical issues inherent in the discipline of computing.
Note: Students with credit for CIS 485 cannot take this course for further credit.
COMP 430
3 credits
Advanced Database Topics
Prerequisite(s): (COMP 230 [formerly CIS 230] and COMP 251) or (60 university-level credits including COMP 230 [formerly CIS 230] and one of the following: [STAT 106 (formerly MATH 106) with a B, MATH 270/STAT 270, or STAT 271 (formerly MATH 271)] and one of the following: [COMP 150, COMP 152, or COMP 155]). Note: COMP 251 and COMP 340 are recommended.
Students will study, discuss, and compare current processes and tools being used by organizations for their data-handling needs. Topics include indexing and hashing, performance issues, hands-on database administration, an introduction to data warehousing and data mining, and object-oriented database approaches.
Note: Students with credit for CIS 430 cannot take this course for further credit.
COMP 431
3 credits
Data Mining
Prerequisite(s): COMP 230 (formerly CIS 230), STAT 271, and STAT 331/COMP 331.
Data mining provides the techniques of extracting useful information and hidden patterns from a massive amount of data. Main topics include data exploration, classification, decision trees, Bayesian classifiers, frequent item sets, association rules, clustering, K-means, EM algorithm, and anomaly detection.
Note: This course is offered as STAT 431 and COMP 431. Students may take only one of these for credit.
COMP 440
3 credits
Project in Computing Science
Prerequisite(s): 15 credits of 300-level or higher COMP and instructor's permission.
Capstone course in which each student works with a faculty advisor to complete an advanced project demonstrating knowledge and skills obtained in the Computing Science major.
COMP 445
3 credits
Web Server Installation and Maintenance
Prerequisite(s): CIS 341 or COMP 390 (formerly CIS 390) and admission to the Bachelor of Computer Information Systems degree or the Bachelor of Science with Computing Science major.
Note: Students accepted to a CIS or Computing Science minor may register with permission of the department.
Students will gain hands-on experience in installing and maintaining a web server. Both Internet and Intranet issues will be discussed. Maintenance issues such as system optimization and server activity monitoring will be discussed. In addition, server and client security will be discussed.
COMP 455
3 credits
Extreme Computing
Prerequisite(s): COMP 251.
We live in the age of “big data,” where companies need to gather and analyze truly massive amounts of information. Companies specializing in web search need to essentially archive and analyze the entire web. Social media sites need to store and work with millions of user profiles. Programmers need tools that will efficiently scale up to these kinds of tasks. This course introduces the theory and practice of distributed programming and cluster computing, where such problems are tackled by dividing the tasks into smaller parts and running them across many machines at once. In particular, we will cover the MapReduce algorithm and its popular open-source software implementations.
COMP 481
3 credits
Functional andLogic Programming
Prerequisite(s): COMP 251 with a C or better; MATH 225 recommended.
Most programming languages (e.g. Java, C, C++, Python) are imperative languages, meaning that programs are written as sequences of instructions that change program state. However, imperative programming is just one programming paradigm. This course introduces two other programming paradigms: functional and logic programming. Logic programming is based on first-order logic, while functional programming is based on the lambda calculus. Students will learn the basic theoretical foundations as well as how to program in two relevant languages. The course will also describe the importance of these languages to the field of AI.
COMP 482
3 credits
Natural Language Processing
Prerequisite(s): One of (STAT 106 or STAT 270) and one of (COMP 251 or LING 101) and 60 university-level credits.
Algorithms and tools for enabling computers to analyze, understand, and generate human language.
COMP 486
3 credits
Field Practicum
Prerequisite(s): Admission to the Coding Skills associate certificate, COMP 359, COMP 370, and department permission.
Provides students with an opportunity to gain experience in the role of a junior software developer in a workplace setting. Students will receive feedback about their competencies in relation to the demands of the practicum setting.
COMP 490
3 credits
Network Security and Cryptography
Prerequisite(s): COMP 390 (formerly CIS 390) with a grade of C or better and one of the following: STAT 106 (formerly MATH 106) or MATH 270/STAT 270.
This course will cover important concepts in conventional encryption algorithms such as AES, public-key design and algorithms such as RSA and elliptic curve, digital signatures and authentication protocols such as Kerberos, and key managements such as PKI and X.509.