Computer Science
The *L notation indicates that labs are held on alternate weeks.
The [P] designation is used to identify courses that involve significant programming work assigned to each individual student. The programming component involves substantive feedback and guidance to develop and improve programming skills. For elective courses, the programming component goes beyond the skills a BCS student can be expected to achieve as part of their core courses. Please see the Bachelor of Computer Science degree regulations for further details.
The Timetable should be used to check the term and time a course is offered. Some courses may not be offered every year.
NOTE: Only undergraduates in their final year and with a CGPA of 3.0 or better are eligible to take 5th level courses.
NOTE: See the beginning of Section H for abbreviations, course numbers and coding.
CS1003 | Programming and Problem Solving for Engineers | 4 ch (3C 1.5L) |
---|---|---|
Introduction to the use of digital computers for problem solving and communicating solutions. Covers use of procedures, decisions, loops and arrays focusing on scientific and engineering problem analysis, algorithm design, and program structure. Also includes organizing, tabulating, and graphing program output with different software tools to communicate results. This course is currently taught primarily in Python. NOTE: This course may not be taken for credit by BCS or BScSwE students. Prerequisite: High School Mathematics. Co-requisite: PHYS 1081 or equivalent, or permission from instructor. |
CS1103 | Introduction to Databases | 4 ch (3C 2L) |
---|---|---|
Prerequisites: CS 1073. |
CS2043 | Introduction to Software Engineering | 4 ch (3C 2L) |
---|---|---|
Introduction to fundamentals of the discipline of software engineering with focus on the software development life cycle. Topics include software development methodologies and processes, requirements analysis, modeling, architecture, design, implementation, testing, and maintenance. Basics of software management are also introduced. Prerequisite: CS 1083. NOTE: Credit is given for at most one of CS 2013, CS 2033, CS 2043, or ECE 4403. |
CS2053 | Introduction to Game Development | 4 ch (3C 1.5L) (P) (EL) |
---|---|---|
Introduces basic concepts and technologies for computer and video game development, including math and physics foundations for games, core technologies and algorithms in game development, game design and implementation, and game development environments and programming. By taking this course, students will understand various elements and phases of game development. Students will develop a small but complete game during the course and reflect upon the process. |
CS2063 | Introduction to Mobile Application Development | 4 ch (1.5C 3L) (P) (EL) |
---|---|---|
Introduces students to the development of application software for mobile computing platforms. Characteristics of mobile computing platforms versus non-mobile platforms. Mobile application design principles, including design of effective user interaction and factors that affect application performance. Programming common mobile application functionality such as location, orientation, and motion awareness, as well as touch, gesture, and camera input. Interacting with remote APIs. Students will create and test a small but complete mobile application for a selected currently prominent platform and reflect upon the process. |
CS2253 | Machine Level Programming | 4 ch (3C 2L) [P] |
---|---|---|
Introduces students to lower-level computer operations and the association with higher-level procedural programming constructs. Topics include binary representation of data, instruction formats and execution, assembler programming, scope, functions, user-defined data types using both low- and high-level programming languages. |
CS2263 | Systems Software Development | 4 ch (3C 2L) [P] |
---|---|---|
Procedural program development and supporting tools, using the C language. Topics include: implementation of data structures and algorithms, memory management, and performance techniques. Includes software tools for program development such as compilation/linking, building, debugging, and version control. Prerequisite: CS 1023 or CS 1083. NOTE: Credit will not be given for CS 2263 and CS 2023. |
CS2413 | Information Security | 4 ch (3C 1L) |
---|---|---|
Prerequisites: CS 1103, CS 2263, and (MATH 1833 or CS 1303 or equivalent). |
CS3035 | Building User Interfaces | 3 ch (3C) [P] |
---|---|---|
Basic approaches and techniques for implementing human-computer interfaces. Basic user interface concepts, common interaction techniques and architectural approaches for constructing user interfaces. Topics include but are not limited to 2D graphics, physics of virtual objects, event-driven programming, interface widgets, design patterns for user-interface development, the use and design of layout managers, user interface builders, programming hardware for physical devices, gesture and shape recognition, internationalization, and networked interactions. Prerequisite: CS 2043 or (CS 1083 and MAAC 3102) or permission of instructor. |
CS3103 | Programming on the Web | 3 ch (2C 1L) [P] |
---|---|---|
Modern web techniques and technologies. Exposes students to traditional web page technologies, but focuses on the dynamic web, including structure and communication between server and client, whether it be machine-to-human, machine-to-app or machine-to-machine, using web services. Topics will include transport protocols and data representation for mobile computing and machine-to-machine communication, as well as client technologies to support dynamic web pages. NOTE: Credit is only given for one of CS 3103 and INFO 3103. |
CS3113 | Introduction to Numerical Methods | 3 ch (3C) |
---|---|---|
Intended for Computer Science and Engineering students. Error analysis, convergence and stability. Approximation of functions by polynomials. Numerical quadrature and differentiation. The solution of linear and non-linear equations and the solution of ordinary differential equations. This course will emphasize the understanding of numerical algorithms and stress applications in the applied sciences, as well as the influence of finite precision and arithmetic on computational results. Credit will be given for only one of CS 3113 or MATH 3413 or ECE 2412. Prerequisites: (CS 1003 or CS 1073) and (MATH 2213 or MATH 1503). |
CS3383 | Algorithm Design and Analysis | 4 ch (3C 1T) |
---|---|---|
This course examines the characteristics of algorithms that lead to efficient computer solutions for discrete problems. A variety of different algorithm classes and design techniques, including divide and conquer, greedy, dynamic programming, and backtracking, are introduced and compared. Design and analysis of randomized algorithms is introduced, along with strategies for dealing with computationally hard problems. Normally, one or more models of parallel algorithms will be discussed. |
CS3543 | Database Systems and Administration | 3 ch (3C) |
---|---|---|
Topics include: internal database structures; query evaluation and optimization; transaction management and concurrency control; database recovery; distributed and parallel database architectures; physical database design; performance tuning and capacity planning; database administration; technical architecture design and systems integration. NOTE: Credit is only given for one of CS 3543 and INFO 3403. |
CS3853 | Computer Architecture and Organization | 4 ch (3C 2L) |
---|---|---|
Introduction to computer organization and architecture, digital logic, interfacing and I/O strategies, memory architecture, functional organization, multiprocessing, performance enhancements. Prerequisite: CS 2253. NOTE: Credit is not given for both CS 3853 and CS 3813. |
CS4065 | Interactive Human-Centered Systems | 3 ch (3C) |
---|---|---|
This course will introduce current topics in the field of Human-Computer Interaction to provide a deeper understanding of human needs and capabilities, and in designing and evaluating new people-centered technologies. Foundational concepts, important challenges and technologies will be presented from several domains of application, such as: collaborative technology, information visualization, games, and input and output techniques and devices. Prerequisites: CS2043 and 75 ch, or permission of the instructor. CS 3025 is recommended. |
CS4411 | Fundamentals of Information Assurance | 4 ch (3C 1T) |
---|---|---|
Gives an introduction to information assurance, describes the vulnerabilities of IT infrastructures, as well as security threats faced by enterprises today. Based on the basic principles and strategies of information assurance, the course will also examine risk management, the development of security policies, guidelines, awareness programs, employment practice and policies, legal and ethical issues, as well as auditing IT security. Covers broad topics including contemporary issues in computer security, sources of computer security threats and appropriate reactions, encryption and decryption techniques; secure encryption systems; program security algorithms, trusted operating systems; database security issues and solutions, network and distributed system security models, administering security. In all listed topics, the legal and ethical security issues with respect to information assurance is also given. |
CS4545 | Big Data Systems | 3 ch (3C) [P] |
---|---|---|
Data systems are going through a major transition due to the challenges of Big Data processing. The outcome of this shift is the emergence of a new breed of systems that can handle data at massive scales. This course presents some of these systems, along with the principles of query processing. Specifically, it compares Relational vs. NoSQL data models and covers the foundations of query processing, including index-based access and join processing. It presents the principles of parallel databases, and explores batch processing frameworks, as well as iterative processing frameworks. It also covers SQL interfaces over these frameworks. It introduces update-intensive systems and graph data stores. It includes the special topics of spatial and spatio-temporal data processing. Prerequisites: (CS 1103 or CS 2545) and 75 ch or permission of the instructor. CS 3543 is recommended. |
CS4613 | Programming Language Interpretation | 4 ch (3C 1L) [P] |
---|---|---|
Prerequisites: CS 2263, CS 2333, and CS 2613. |
CS4805 | Embedded Systems | 4 ch (3C 1T) |
---|---|---|
This course will give an overview of the characteristics and design of embedded systems. Topics include formal models and specification languages for capturing embedded system behaviour; techniques for specification, exploration and refinement; tools for validation, verification, and simulation; and quality and performance metrics. |
CS4983 | Senior Technical Report | 2 ch (2C) [W] |
---|---|---|
Builds on the skills developed in CS 3997 through the preparation and presentation of a technical report, which is typically a critical analysis paper. Prerequisite: CS 3997. |