| BDA420 | High Performance Computing | | | |
| | This course explores advanced tools and techniques for working with very large datasets. In particular, students will learn how to use modern parallel data-processing frameworks and develop scripts that fully leverage parallelization to analyze data efficiently at scale. |
| BTP610 | Mobile Applications | | | |
| | The course explores the fundamental principles of developing a mobile application for IOS or Android devices. Using a mobile app software framework, learners will develop proficiency in creating graphical user interfaces, working with data persistence, implementing networking, and integrating with on-board device hardware. |
| DPI910 | Web Application Security Assessment | | | |
| | With more and more aspects of our lives involving the World Wide Web, ensuring the security of web applications is essential. Security professionals are often engaged by industry to identify key vulnerabilities which might affect web application security for organizations, and need to recognize the most common areas of security risk and determine how this can impact the reputation of the organization. This course teaches students how to identify web application security flaws, and assess the security posture of web applications. |
| DPI912 | Python for Programmers: Sockets and Security | | | |
| | This course focuses on developing intermediate and advanced competencies in socket programming, and is informed and guided by information technology and cybersecurity concepts, concerns, and problem sets. Students will explore developing applications on TCP/IP as well as in higher level protocols. Applications developed may include forensic, defensive, and offensive security tools. |
| DPS530 | Cross-platform App Development | | | |
| | In this course, learners will gain practical experience building native mobile applications using React Native, a cross-platform framework. |
| DPS909 | Topics in 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. |
| DPS911 | Open Source Project | | | |
| | This course builds on the skills and knowledge developed in a prior course 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. |
| DPS912 | Topics in 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 course explores UNIX at a technical level. The primary focus will be system and network programming using C. Students will also learn to use development tools and utilities. |
| DPS920 | 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. |
| DPS921 | Parallel Algorithms And Programming Techniques | | | |
| | Data-intensive and compute-intensive problems benefit from programming solutions that execute instructions in parallel. A variety of programming models are available for implementing parallel algorithms. Students study industry-standard parallel patterns and learn how to implement parallel algorithms on multi-processor accelerators, shared-memory systems and distributed-memory systems using these programming models. |
| DPS923 | 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. |
| DPS924 | 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. |
| DPS931 | 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. |
| DPS936 | 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. |
| DPS937 | Game Development Fundamentals | | | |
| | Commercial and open source game engines let developers focus on the design of games, including their play, progression, and flow. In this subject, students will learn to create a game level for an existing engine, and have an opportunity to customize the engine to suit their game level. |
| DPS941 | Mobile Robotics Software Design | | | |
| | 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. |
| DPS970 | AI for Software Developers | | | |
| | Artificial Intelligence (AI), and Machine Learning in particular, are having a revolutionary impact across countless fields and applications. In this course, students will be introduced to artificial intelligence-based strategies used to solve real world problems. Tools which implement these strategies will be used to infuse AI functionality into a software application. |
| SEP700 | Compiler Design | | | |
| | The structure, organization and design of the phases of a compiler are considered. A compiler translates code written in one computer language into a language understandable by the computer hardware without changing the meaning of the program. Students gain knowledge of the scope handlers and type checkers and learn to implement components of a compiler. Compiler design is also applicable to other areas of software engineering such as a lexical analyzer used in text editors, information retrieval system, and pattern recognition programs or a parser used in a query processing system such as SQL, for example. Many software having a complex front-end may need techniques used in compiler design. |