Credit will be granted for only one of an undergraduate or graduate level course in each group: CSCI 455, 522; CSCI 485, 523; CSCI 364, 524; CSCI 356, 541; CSCI 495, 545; CSCI 350, 546; CSCI 340, 547; CSCI 467, 561; CSCI 345, 562; STAT445, CSCI 555.
521 Real Time Systems
This course covers analysis techniques and development methodology for real-time systems. Topics include: real-time process and control, soft and hard real time systems, real-time scheduling algorithms, schedulability analysis theory, resource access control, real-time operating systems, real-time communications, performance analysis, requirement specification and system specification, verification of real-time systems, and formal development process of time critical real-time systems. Three credits.
522 High Performance Computing
This course is designed for graduate level parallel computing courses. This is not only a course which is linked to real parallel programming software, but also a course which covers many theoretical aspects on architectures, algorithms and applications. This course concentrates on parallel program to be executed not only on special multiprocessor systems or supercomputers, but also on networked workstations (Linux) or PCs using freely available parallel software tools such as Message Passing Interface (MPI) and Parallel Virtual Machine (PVM). Some emerging topics such as cluster computing, grid computing, cloud computing, peer-to-peer computing, as well as multicore systems will be introduced. Three credits.
523 Software Engineering
This course covers major concepts in software engineering. The fundamental characteristics of the software life cycle as well as tools and techniques for development and maintenance of large software systems will be presented. A major objective of this course is to give the student real-life software development experience. This objective is accomplished through the student’s participation on a team that will develop a single software product over the course of the term. Product development will follow the full software life cycle from requirements analysis through product delivery. The focus will be on an object-oriented development strategy. Three credits. Offered 2021/22
524 Mobile Application Design/Development
Mobile applications are software applications designed to run on mobile devices. The Android mobile platform has become one of the most popular platforms used by millions of devices around the world. This course introduces App development for the Android OS. The course covers the Android system, fundamental components of Android Apps, how to create user interfaces in Android, and how to create Android Apps that use databases, location, and networking, multimedia and/or other services. Three credits. Offered 2021/22
526 Embedded Systems
The course is designed to give students a grasp of the embedded systems profession, with hands-on experience developing system software. This course intends to cover C Programming on Embedded systems, Introduction to Embedded systems, Linux System Programming, Linux Kernel Programming, and Hardware Protocols (SPI, I2C, UART). Offered 2021/22
527 Big Data
The emphasis of this course is to introduce big data technology. Course topics include reliable and big data storage, efficient big data processing and analytics, and important Spark APIs. Students will gain abilities to design highly scalable systems that can store, process, and analyze a big volume of unstructured and/or semi-structured data in batch mode and/or real time. Three credits. Offered 2021/22
528 Advanced Data Analytics
The course will introduce advanced algorithms for structured data analytics and their applications in real-world problems. Course topics include classification, cluster analysis, association analysis, and anomaly detection. Students will learn these algorithms with hands-on implementation and gain abilities to derive value from collected data by applying the advanced data analytics algorithms. Three credits.
541 Theory of Computing
This course focuses on three areas central to the theory of computation: automata, computability and complexity, to investigate the question: What are the fundamental capabilities and limitations of computers? We study automata (models of computation) e.g., finite state machines, pushdown automata and Turing machines and the languages recognized by them. We investigate complexity theory, to classify problems as easy or hard and computability theory to classify problems as solvable or not. Three credits. Offered 2021/22
542 Representation & Reasoning
This course provides a survey of general methods for analyzing knowledge about the real world and mapping it to a computable form. Principles of knowledge representation and their role in adapting logic and ontology to the task of constructing computable models of an application domain are introduced. Methods for representing dynamically changing processes and events are presented. Ways of dealing with vague, uncertain, imprecise or inconsistent facts are discussed. Three credits.
543 Specification and Verification
Topics covered include: introduction to formal methods; propositional and predicate logic; verification and model checking; Hoare-style program verification; modeling systems; specification using temporal (e.g., CTL, LTL), and other modal logics; various model checkers; partial order reduction; compositional reasoning and abstraction; automated theorem proving using tableau; problems/challenges to effective verification of large scale systems. Three credits.
544 Computational Logic
This course focuses on automated theorem proving. We start with a rigorous treatment of propositional and first order calculus (with equality) and the method of natural deduction, giving a thorough investigation of the soundness and completeness proofs and decidability. Then we compare and contrast several automated theorem proving methods such as tableau, resolution, sequent style calculus and rewrite systems. Extensions to other logics will be discussed. Students will implement one of the automated theorem proving methods. Three credits. Offered 2021/22
545 Artificial Intelligence
This course covers advanced core concepts in artificial intelligence (AI). Topics covered include intelligent agents, uninformed and informed (heuristic) search, logical and probabilistic knowledge representation, logical and probabilistic inference, essentials of machine learning, neural networks, reinforcement learning, and evolutionary computation. Project requires and in-depth study of a topic related to AI. Three credits.
546 Biomedical Computation
Technological development has transformed modern biomedical data analysis. The large amounts of biomedical data currently acquired has the potential to have real world positive impacts, however, the underlying nature of the data presents major challenges for computational biomedical analysis techniques. This course focuses on advanced technologies applied to biomedical computation, a rapidly growing field with tremendous potential for having a beneficial impact on patient care and public health. Three credits. Offered 2021/22
547 Evolutionary Computation
Evolutionary computation is a family of powerful optimization algorithms often used to find solutions to computationally intractable problems. The study of these algorithms and their application to problems is a large research area within computer science. Course topics include combinatorial optimization, genetic algorithms, particle swarm optimization, search space analysis, multi-objective optimization, and neuroevolution. Research practices and technical writing will be emphasised for course assignments/projects. Three credits.
550 Approximation Algorithms
Approximation algorithms are efficient algorithms that are guaranteed to compute solutions such that the value of the solution is provably close to the optimum. This course provides an introduction at the graduate level to the area of approximation algorithms, highlighting key algorithm design techniques for approximation algorithms and the complementary study of hardness of approximation for hard optimization problems. Three credits. Offered 2021/22
554 Matrix Computation
Through the use of lectures, discussions, the text, assignments, and labs, this course will familiarize students with the advanced knowledge of triangular systems, positive definite systems, banded systems, sparse positive definite systems, general systems; Sensitivity of linear systems; orthogonal matrices and least squares; singular value decomposition; eigenvalues and eigenvectors; and QR algorithm with their applications. Three credits. Offered 2021/22
555 Data Mining and Machine Learning
The course covers the most current techniques used in data mining and machine learning and their background theoretical results. Two basic groups of methods are covered in this course: supervised learning (classification or regression) and unsupervised learning (clustering). The supervised learning methods includes Recursive Partitioning Tree, Random Forest, Linear Discriminant and Quadratic Discriminant Analysis, Neural Network, Support Vector Machine. The unsupervised learning methods include Hierarchical Clustering, K-means, K-nearest-neighbour, model-based clustering methods. Furthermore, the course also covers the dimensional reduction techniques such as LASSO and Ridge Regression, and model checking criteria. Three credits. Offered 2021/22
561 Computer and Network Security
The objective of the course is to provide a broad overview of issues and approaches, while exposing students to recent advancements in computer and network security. This course will cover the theory and practice of computer and network security. While covering the theory of computer communication security, the course will focus on using and in some cases implementing various algorithms as well. Three credits.
562 Computer Graphics
Fundamental mathematical, algorithmic and representational issues in computer graphics. Graphics programming. Geometrical objects and transformations. 2-D and 3-D data description and manipulation. Viewing, Projections, Clipping, Shading, Animation. Three credits.
563 Advanced Database Systems
Explores advanced and evolving issues in database management systems. Topics include advanced database design and normalization, database implementations and optimizations, advanced and embedded SQL, ODBC and JDBC, XML, data warehousing, and emerging database trends. A major project is a key component of the course. Three credits. Offered 2021/22
564 Constraint Processing and Heuristic Search
The course will examine combinatorial problem solving and optimization with constraint processing and heuristic search methods for a variety of real world applications. It contains two main parts. The first part covers basic and advanced search techniques and the second part studies constraint processing techniques and constraint programming. Three credits. Offered 2021/22
587 ST: Mobile Robotics
This course will introduce basic concepts and techniques used within the field of mobile robotics. Classical motion planning algorithm, such as A* and RRT will be taught. During this course, machine learning models related to robotics will also be taught. The fundamental challenges for autonomous intelligent systems will be analyzed and an approximation method to calculate a solution will be discussed. The concepts taught will include Bayesian filters, Kinematics, Sensors, Markov Decision Process, POMDP and Reinforcement Learning. Offered 2021/22
594 Computer Science Graduate Seminar
This seminar course prepares graduates for industry or academia by developing knowledge and skills that will be applicable in a variety of professional contexts. Among these skills will be professional communication with industry and non-industry audiences, social and ethical issues in the field, grant and proposal writing, job search skills, research skills, and current innovations in research. The course is facilitated by computer science faculty members and includes presentations by invited experts. Pass/Fail. Six credits. Offered 2021/22
The main objective of this course is to give the student real-life software development experience. The student will work with an industry or academic partner and develop a computing solution to a real-world problem. The student will be responsible to manage the project from development to execution. The student will gain practical experience on methods, languages, and tools in software design and development. Six credits. Offered 2021/22
596 ST: Semantic Web Technology Offered 2021/22
The Semantic Web (often referred to as Web 3.0) has been conceived as an extension of the World Wide Web that allows computers to intelligently search, combine and process Web content based on the meaning (i.e., the semantics) that this content has to humans. In addition to storing data in a machine-processable syntax, data must be endowed with a formal semantics that allows conclusions to be drawn from the collected information. Consequently, the pillars on which the Semantic Web sits are: model building (describing the world in abstract terms); computing with knowledge (constructing reasoning machines to draw conclusions from encoded knowledge) and information exchange (permitting the distribution, interlinking and reconciling of knowledge on a global scale). This leads to incorporating knowledge modelling and automated deduction into the Web while, conversely, introducing aspects of Web applications into the domain of formal modelling and knowledge representation. In this course we give the technical foundations of Semantic Web Technologies, including knowledge representation, query languages, and logical inference. In particular we will cover: vision and principles of the Semantic Web; representation languages (XML, RDF, RDF Schema, OWL); knowledge modeling: ontologies, linked data, and knowledge graphs; logical reasoning in RDF and OWL; and introduction to some open source tools and systems. Some current research areas will be briefly introduced as time permits (e.g., explainable AI; hybrid techniques for natural language processing; Web 4.0 and beyond). Offered 2021/22
597 ST: Machine Learning Design
This course covers modern technologies in computational machine learning with advanced applications in deep learning. Validation of machine learning algorithms will be taught alongside computational design considerations for the creation of reliable and robust machine learning models. Technologies taught will include autoencoders, deep learning for segmentation (U-Nets etc.), recurrent neural networks, long short-term memory learning machines and explainable artificial intelligence. Classical machine learning techniques will also be presented for breadth of background. Offered 2021/22