This course introduces students to the fundamental concepts of computing science and computer programming. Students will learn the process of program design to solve real-world problems and the fundamental building blocks of a computer program. By the end of this course, students will be able to develop computer programs in a high-level computer programming language (such as Python). This course is intended for students with little or no prior programming experience.
This course provides an introduction to computing science and programming, intended for students with little or no programming background. Students will learn how to analyze problems and design algorithms as well as implement their solutions using a high-level programming language such as C++. Topics include structured programming fundamentals, control structures, procedural programming, recursion, arrays, basic sorting and searching algorithms, strings, pointers, dynamic memory allocation, files, exceptions, and an introduction to object-oriented programming.
This is a second course in computing science and programming, presented using an object-oriented perspective and intensive hands-on experience. Students will learn how to apply fundamental object-oriented concepts using a high-level programming language like C++ to efficiently program applications that have an intermediate level of difficulty. Topics include encapsulation, inheritance, aggregation, polymorphism, templates, and virtual functions. Software development lifecycle and modelling, code efficiency analysis, event-driven programming, and exception handling are also introduced in this course.
This course introduces students to computer programming methods for game development. Students will use a hands-on approach to learn practical programming concepts for interactive game design as well as coding methods for implementing their designed games using object-oriented programming languages (such as C++). Topics include core concepts underlying computer graphics and games, designing game objects, Open Graphics Library (OpenGL), 2D and 3D graphics, audio, camera models, collision detection, and game user interface design.
This course introduces students to the design and development of interactive computer games using modern game engines (such as Unreal Engine). Students will gain experience in game development with an emphasis on visual scripting. Topics include the game development environment, creating custom classes, adding code to visual scripting projects, asset creation, multiplayer games, game user interface design, optimization, testing, and packaging.
This course provides the student with the necessary knowledge of the Raspberry Pi to design and develop practical applications. Initial emphasis will be placed on the embedded Linux OS, configuring, setting up and programming the Pi. In the latter part of the course, students will be able to apply that knowledge to case studies and projects.
This course provides an overview of standard paradigms and engineering practices as applied to software development. Topics include major phases incorporated in Systems Development Life Cycle (SDLC), software project management issues, and software development core activities from planning to implementation and deployment. Students will participate in a team project that employs an iterative development process and utilizes modern tools that are vital to the success of software development projects to construct a software solution to a real-world case study.
This course introduces students to a variety of fundamental data structures and their related algorithms. Topics include: abstract data types, data structures implementation and analytical evaluation methods, problem solving using divide and conquer, sorting and searching algorithms, complexity analysis of algorithms, iterators, hashing, and C++ Standard Template Library (STL). Students will apply object-oriented programming techniques to implement important linear and non-linear data structures such as stacks, queues, priority queues, lists, trees (including binary search trees and binary heaps), sets, and graphs.
This course is an introduction to modern computer graphics systems. Fundamental concepts of computer graphics systems are covered, including mathematical foundations, architecture of high-resolution graphics systems, and the algorithms used in computer graphics programming. Topics include graphics systems and models, graphics hardware, implementation of computer graphics using the Open Graphics Library (OpenGL), geometrical transformations, viewing and projections, lighting and shading, clipping and rasterization, rendering, and interaction techniques.
This is a project-based course providing a comprehensive introduction to user interface (UI) design. Topics include goals and history of UI design, human-computer interactions and user experience, social impact of UI, and the UI design process. Students will incorporate major aspects of user interface design, including user research, user interface patterns, prototyping, and evaluation, into a group project that provides them with hands-on experience of UI design disciplines.
This course is project based, giving students supervised practical experience in a field of study within Computing Science. Students will engage in various stages of project development from scope definition and design to implementation and deployment. Through completion of a semester-long project, students will acquire experience in activities related to applied projects, such as systems analysis and design, technical documentation, effective team collaboration, project management, testing, and quality control.
This course introduces students to fundamental aspects of computer system architecture and low-level programming. Topics include data representations, building blocks of computers, central processing unit organization, bus structures, memory management, computer interfacing, assembly programming, and system software. Students will apply principles and concepts learned in this course to improve program efficiency and reliability. Programs will be written in C and x86-64 assembly languages.