| CCP555 | Cloud Computing for Programmers | | | |
| CVI620 | Computer Vision | | | |
| | As cameras are becoming a popular feature of standard PCs and mobile devices, it is important to be able to extract useful information from this data. This course covers simple computer vision concepts, such as capturing digital images and video, applying simple and arithmetic changes to images (e.g. crop, rotate, enhance color), and extracting information from images (e.g. finding or counting objects). Also, concepts such as tracking objects in a video sequence are introduced. Students will work on a project targeting a computer vision application such as face recognition, security systems, medical imaging, robotics, and others. |
| DBA625 | Database Administration | | | |
| DBS501 | Stored Procedures Using Oracles PL/SQL | | | |
| | This subject uses Oracles PL/SQL language to code PL/SQL blocks, procedures, functions, packages, and database triggers for applications developed using Oracle relational databases. |
| DBT544 | DB2 | | | |
| | This subject provides experience in embedding DB2 SQL statements in high level language business-oriented programs running on the IBM i operating system on an IBM Power system. Students will learn to use the SQL communication area to trap pre-defined DB2 errors in these types of programs as well as handling errors that occur in DB2 procedures. The ability to preserve transaction integrity in a multi-user DB environment using table and row locking and Commit/Rollback techniques will be taught. A variety of toolsets will be explored when interacting with the system. |
| DEN502 | Digital Entrepreneurship for Programmers | | | |
| DSA566 | Data Structures and Algorithms II | | | |
| ELA521 | Ethics, Law and Application Development | | | |
| GAM531 | Game Engine Foundations | | | |
| | Graphics accelerators provide developers with powerful tools for displaying visual information. This course teaches students the mathematical and structural concepts required to develop 3D gaming and simulation engines and how to implement these concepts using the DirectX and OpenGL low-level APIs. |
| GAM536 | Game Content Creation | | | |
| | In game development, 3D modelling tools are used to generate graphical content such as models and animations. This course will explore how content is created both interactively and through coding. Students will learn to create and alter 3D content using both means.
|
| GAM537 | Game Development Fundamentals | | | |
| | High level game engines have become popular in recent years as they allow developers to focus on designing a game and leaving much of the low level computing to the game engine. This subject will teach students the principles of game design and give them the opportunity to create a game using an existing game engine. They will learn how to create/modify environmental effects, camera perspectives, AI behaviours and game types. |
| GPU621 | Parallel Algorithms and Programming Techniques | | | |
| MAP523 | Mobile App Development - iOS | | | |
| | This course covers the foundations of programming applications for the Apple iOS operating system. Students will learn and become proficient with the development tool environment, and create graphical end-user iOS applications that follow the MVC design pattern. Students will write their programs in the Swift and Objective-C languages, using the object-oriented Cocoa framework. A wide range of iOS development topics, including user interface programming techniques, data management, and network access will be covered. |
| MAP524 | Mobile App Development - Android | | | |
| | This course covers the foundations of programming applications for the Android operating system. Students will learn and become proficient with the Eclipse development tool environment, and create graphical end-user Android applications that follow the mobile design pattern. Students will write their programs by using the Java language and runtime platform. A wide range of Android development topics, including user interface programming techniques, data management, and network access will be covered. |
| MAP526 | Mobile App Development - Cross Platform | | | |
| OSD600 | Open Source Development | | | |
| | This course introduces students to the technological, social, and pragmatic aspects of developing open source software through direct involvement in a real open source project/projects. Students will learn to use the tools, techniques, and strategies of OS developers. This is a project-based programming course. The particular open source project(s) to be studied will vary with each offering and be announced at the beginning of the semester. |
| OSD700 | Open Source Development Project | | | |
| | This course builds on the skills and knowledge developed in OSD600 by having the student take a partially developed open source project to completion. The student must have an open source project in progress, along with a faculty mentor and coordinator approval, in order to enroll. The student will learn what is necessary to take a working program and polish, refactor, and improve it on the way to making 1.0 product release. |
| SDR520 | Software Design for Robotics Applications | | | |
| | This course provides a technical foundation into the design and development of embedded software for robotic control. Students will be introduced to the terminology and design concepts for tele-operated and autonomously controlled robotic systems. Using an education-focused robotic device platform, students will learn about analog/digital sensors, and software design for low power micro-controller applications. |
| SPO600 | Software Portability and Optimization | | | |
| | This course introduces students to the dual challenges of porting software to run on new architectures and optimizing software performance. Students will learn to identify and replace architecture-specific code segments, benchmark software performance, and alter software to increase performance. This is a project-based course, and students will work within an established Open Source community to port and/or optimize an existing program. The particular open source community or communities to be studied will vary with each offering and be announced at the beginning of the semester. |
| UIX544 | Introduction to UI/UX Design | | | |
| | UI/ UX design plays an essential role in building a successful product. In this course, students will learn fundamentals of UI and UX design. Basic principles of User Interface (UI) design, interaction models and laws, differentiation of interaction styles, and different user interface paradigms will be covered in the first half of the course. The second half of this course covers a series of methods and tools for User Experience (UX) design, such as research, analysis, design, and evaluation. Practical topics will be explored and experimented in UI/UX design. Project-based exercises will help students gain transferable insights into real world complex problems. |
| UNX511 | UNIX Systems Programming | | | |
| | UNIX, the operating system of choice for much of the Internet, is the most versatile non-platform-specific, general-purpose computing environment available. This subject explores UNIX at a technical level. The primary focus will be system and network programming using C. Students will also learn advanced scripting techniques and the use of development tools and utilities. |
| WEB524 | Web Programming Using ASP.NET | | | |
| WEB530 | Cross-platform App Development | | | |