The techniques of algorithm design form one of the core practical technologies of computer science. This course introduces students to advanced techniques for designing and analysing algorithms, and explores their use in a variety of application areas. Topics include: sorting and search algorithms, graph traversal algorithms, combinatorial search, heuristics methods, and dynamic programming, intractable problems. Students learn the skill of understanding the computational complexities of computing problems and designing solutions for them.
This seminar introduces the fundamentals of technology entrepreneurship. It involves taking a technology idea and finding a high-potential commercial opportunity, gathering resources such as talent and capital, figuring out how to sell and market the idea, and managing rapid growth. It also involves bringing incorporating a new technology idea into an existing business. There will be guest lecturers from the industry.
This course provides students with the foundations of data analysis – a burgeoning field that allows organizations to discover patterns in data to help explain current behaviours or predict future outcomes. Students learn the underlying theories, techniques and practices involved in modern data analysis in order to effectively collect, process, interpret and use data in decision making. More specifically, the course utilizes case studies from fields such as finance and statistics to expose students to topics including data collection, storage, processing, representation, and reporting, and also further develop their decision-making skills using decision trees and artificial intelligence.
Multiple organizations, across multiple industries (e.g., finance, retail, manufacturing, communication) are mining and analyzing incredibly large sets of data in order to predict consumer behaviour and trends. This course provides students with the practical knowledge to analyze, understand and visualize data. Using data mining software such as Weka, this course introduces students to the principles of data mining.
With today’s consumers spending more time on their mobiles than on their PC, new methods of empirical stochastic modelling have emerged that can provide marketers with detailed information about the products, content, and services their customers’ desire. This course builds on the knowledge of Data Analysis by focusing explicitly on the unique data offered by mobile devices. Students learn about the types of data that can be mined from mobile devices including analyzing Wi-Fi and GPS data from websites and mobile applications. Other topics include: modelling mined data via artificial intelligence software and monetizing mobile devices’ desires and preferences.
Enterprise computing offers integrated solutions to organizations that need help managing a variety of problems including software development, resource management and data analytics. This course extends traditional Computer Science education by introducing students to a practical application of their skills through enterprise computing which integrates IT management and application development. Students are introduced to the principles, techniques and practices in modern enterprise computing with a focus on backend business logic computing and the technical foundation of data analysis. This course provides students with the foundation to manage all aspects of enterprise computing solutions including security, user experience, optimization, and distributed databases. Practical knowledge is further developed through lab work, case studies and guest-lectures of IT managers.
Machine learning is the science of getting computers to act without being explicitly programmed. In the past decade, machine learning has given us self-driving cars, practical speech recognition, effective web search, and a vastly improved understanding of the human genome. This course introduces students to machine learning, data mining, and statistical pattern recognition. Topics include supervised learning (parametric/non-parametric algorithms, support vector machines, kernels, neural networks) and unsupervised learning (clustering, dimensionality reduction, recommender systems, deep learning). Students learn a variety of learning algorithms and determine which are most likely to be successful.
The user interface, also called UI or user experience, is the “front end” of a website, computer application, or software program that people interact with. Competitive advantage can be won or lost depending on the design of the user interface. To be effective, modern software application designs must support not only the required functionality but also fully engage users. Throughout this course, students apply proven user interface design practices to gather requirements, reduce user input errors, and provide intuitive navigation pathways through complex applications to ensure usability.
Parallel computers, or supercomputers or high-performance clusters are ubiquitous today in science and engineering. Parallel programming requires inventing new algorithms and programming techniques. This course covers the fundamental paradigms of parallel programming, with an emphasis on problem solving and actual applications. The parallel programming concepts and algorithms are illustrated via implementations in OpenMP and MPI (Message Passing Interface), as well as serial farming.
As the worldwide smartphone market continues to grow, so does the demand for mobile applications. This course provides students with the skills for creating and deploying applications for mobile devices using Android, the most widely used operating system. With an emphasis on the Model-View-Controller paradigm this course provides students with the foundational knowledge that underlies many popular programming languages. The course cumulates with the development of an original Android application. Knowledge of Java is required.
Apple iPhones are one of the most popular smartphones on the market today, with thousands of applications downloaded every day. This course provides students with the knowledge to develop applications for iPhones, iPads, and iPods, using the Cocoa Touch framework on iOS and introducing students to the programming language Swift. More specifically, students learn how to develop interfaces for mobile devices and the challenges faced when developing applications that use different input modalities. Other topics include web services and memory management for mobile devices.
We see you are accessing our website on IE8. We recommend you view in Chrome, Safari, Firefox or IE9+ instead.×