Skip to main content

Software Engineering

With growing market demand, software engineering is one of Canada's newest engineering disciplines; however, there are few software engineering programs in Canada. At Ontario Tech University, our Software Engineering program focuses on the design of computer software and is exposed to software design for embedded systems, enterprise and mobile systems,  distributed systems, real-time control systems, multi-media, and man-machine interfaces. Courses including software design, user interface, advanced networks, and design and analysis of algorithms prepare graduates for successful careers in the software engineering field.

You may also choose to specialize in the Internet of Things (IoT), which offers courses such as; the design and analysis of IoT software systems, connecting IoT devices and services to the cloud, and mobile programming. 

Consider Software Engineering if you find yourself asking questions such as:

  • What is cloud computing, and how can we ensure individual privacy and security?
  • How can I design and build a program for my mobile phone?
  • What impact will artificial intelligence have on the development of software and engineering design?
  • How will mobile phones communicate with vehicles of the future?
  • How can we build an intelligent traffic system?


Develop robust software systems for a continually advancing sector


Option to specialize in our Internet of Things program in 4th year


Hands-on experiments using industry-standard and open-source software technologies

After graduating you can...

  • Design and develop reliable and secure software systems for a variety of platforms and devices.
  • Design intelligent software algorithms.
  • Design and develop software systems for the enterprise, mobile, and embedded market.
  • Design distributed systems and cloud-based applications.
  • Manage software projects, computer networks, and cloud-based applications.
  • Design animation, visualization and entertainment software.

...and many more!

Sample Courses:

  • Object Oriented Programming and Design
    Introduction to the fundamentals of software design through object-oriented programming, abstraction principles, information hiding and encapsulation. Introduction to design tools like pseudo-coding and basic Unified Modelling Language (UML) diagrams. Introduction to simple data structures, including linked lists, stacks, and queues, and their applications to Engineering problems. The content outline by topic is as follows: principles of object oriented programming; debugging and analysis; maintain and document programs using techniques of good programming style; basic and advanced, aspects of abstraction, recursion, parameter passing, file I/O and classes; object libraries and packages; object-oriented analysis and design using UML object interaction, messaging, association, and composition diagrams; abstract data types and basic data structures like lists, stacks, and queues.
  • Introduction to Artificial Intelligence
    This course introduces students to basic concepts and methods of artificial intelligence from a software engineering perspective. Emphasis of the course will be on the selection of data representations and algorithms useful in the design and implementation of intelligent systems. Knowledge representation methods, state space search strategies, and use of logic for problem solving. Applications chosen from among expert systems, planning, natural language understanding, uncertainty reasoning, machine learning, and robotics. The course will contain an overview of one AI language and discussion of important applications of artificial intelligence methodology.
  • Cloud Computing
    The objective of this course is to expose students to the state of the art in cloud computing. Students will learn about issues relevant to the design, implementation and operation of cloud computing infrastructures, platforms, and services for the Internet of Things (IoT). Topics include web services, description languages, communication protocols, data centres, virtualization, storage, big data, and cloud programming models, services and resource management, and security, privacy and trust issues. In addition, students will learn about systems research through a research and development project.  
  • Computer Graphics Design
    The basic concepts, tools and techniques of computer graphics are described, and the fundamental transformations of scaling, translation, rotation, windowing, hidden line removal, image processing and clipping are presented. Mathematical tools needed for the geometrical aspects of computer graphics are discussed. Particular emphasis will be placed on new developments in microcomputer graphics. Students will be expected to develop a graphics application in C++ and/or JAVA in conjunction with available graphics libraries.

Undergraduate Labs

Undergraduate Labs

Undergraduate Labs

Explore our Undergraduate Labs