Computer Science

CS6003Research Methods for Computer Science1 ch
This course provides incoming MCS and PhD students with basic research and working skills, facilitating a smooth transition to graduate studies and research. Topics include literature research, critically reviewing the literature, presentations, thesis proposals, plagiarism, and tools for managing references and preparing documents. Attendance at selected research talks is required. Students will prepare an annotated bibliography and give a brief presentation in class. This course is pass/fail, and does not count towards the MCS/PHD course requirements. This course is offered every fall semester, for one hour a week.
CS6025Parallel Distributed Processing II3 ch
Parallel processing systems are characterized fundamentally by the existence of multiple agents that cooperate in the execution of a task. A parallel processing system is usually called as a distributed system if its agents must rely on message passing as the only means for communicating with one another. This and the following course ( CS 6035 ) address two main aspects: (a) the study of various parallel/distributed computer architectures, and (b) the design and analysis of parallel/distributed algorithms. The emphasis in this course will be on the following topics: (a) architectures and simple computational models, (b) fundamental numeric and non-numeric algorithms, (c) applications (e.g. image processing, pattern recognition and relational databases), and (d) parallel/distributed programming using the message passing the interface (MPI) and openMP software on a PC Cluster.
CS6065Interactive Human-Centered Systems3 ch
This course will introduce current topics in the field of Human-Computer Interaction to provide a depper understanding of human needs and capabilities, and in designing and evaluating new people-centered technologies. Foundational concepts, important challenges and technologies will be presented from several domains of application, such as: collaborative technology, information visualization, games, and input and output techniques and devices.
CS6075Software Architecture3 ch
This course covers the concepts and practices of software architecture. Topics include creation, analysis, and reuse of architectures, architectural styles and design patterns, architecture description languages, architecture-based software development, and component architectures. Students are required to do two term projects on architecture design and analysis plus written and programming assignments.
CS6345Spatial Data Structures3 ch
Data structures used for multi-dimensional or spatial data. Topics include (1) point data structures (e.g. k-d tree; point, MX and PR quadtrees; range tree; bucket methods), (2) 2D boundary/vector data structures (e.g. strip tree; R-tree; PM and MX-CIF quadtrees; doubly connected edge list), (3) 2D raster representations (e.g. 2D run-length encoding, region quadtrees, linear quadtrees), (4) 3D data structures for surfaces and solids (e.g. winged-edge structures, BSP tree octrees, constructive solid geometry). A formal course in Data Structures (e.g. CS3323 or permission of the instructor is required as a prerequisite.
CS6355Cryptanalysis and Database Security3 ch
This course is a practical survey of the principles and practice of information security. Topics include conventional encryption, asymmetric and symmetric cryptology, digital signatures, key exchange, authentication, viruses, worms, electronic mail security, network management security, the common criteria, and threat risk management.
CS6365Computational Geometry3 ch
Computational Geometry is the study of algorithms for solving geometric problems, primarily discrete and combinatorial geometry, rather than continuous. The application areas are many, including graphics, databases, and robotics. This term the course will have a particular emphasis on geometric theorem proving and experimental mathematics. We will look at several tools for finding interesting geometric examples, generalizing from them, and visualizing or exploring them. There will be both an experimental and a theoretical component of the course: students will be expected both to write programs, to prove theorems, and possibly to write programs that prove theorems. Prerequisites: CS 3933.
CS6375Linear Programming3 ch
The course will introduce students to modeling “real world” problems using integer and linear programming. The theory of linear programming will be studied, using the simplex method and a geometric point of view. The relationship between linear and integer programming will be discussed, including results on integrality and rounding. Time permitting, we will cover some more advanced topics, including solving integer programs with branch and cut, and interior point methods for linear programming.
CS6405Topics in Cybersecurity3ch
This course covers emerging cybersecurity topics, from information and network security fundamentals to advanced cybersecurity and privacy issues. The course will involve presentations, a term project, and written reports. This is a topics course and course syllabus will be put forward before the course is offered each term. Prerequisites: none.
CS6411Fundamental of Information Assurance3 ch

This course gives an introduction into information assurance, describes the vulnerabilities of IT infrastructures, as well as security threats faced by enterprises today. Based on the basic principles and strategies of information assurance, the course will also examine risk management, the development of security policies, guidelines, awareness programs, employment practice and policies, legal and ethical issues, as well as auditing IT security. It covers broad topics including contemporary issues in computer security, sources of computer security threats and appropriate reactions, encryption and decryption techniques; secure encryption systems; program security algorithms, trusted operating systems; database security issues and solutions, network and distributed system security models, administering security. In all listed topics the legal and ethical security issues with respect to information assurance is also given.

CS6413Foundations of Privacy 3 ch

This course covers diverse topics on privacy preservation including basic cryptographic techniques for privacy, homomorphic encryption techniques for privacy, database privacy, big data privacy, privacy in cloud, privacy in crowdsourced platforms, privacy in healthcare, privacy in vehicular ad hoc networks, privacy in social network, and location privacy. In addition, privacy law and regulation will be also discussed. The emphasis of this course is given on both theoretical aspects and practical applications of privacy enhancing techniques.

CS6415Network Security3 ch

This course examines advanced topics in network security, including: security risks and threats, security mechanisms across OSI model layers. Students will study the analysis of systems for vulnerabilities, the implementation of security procedures and the monitoring of systems forsecurity breaches. Wireless network security will also be introduced.

CS6417Software Security3

This course sits at the intersection of computer security and software engineering. It is designed to give students practical experience with building a software system and securing it. It covers tools, guidelines, rules, principles, and other resources for addressing security issues in every phase of the software development life cycle (SDLC).  Students will engage in a significant group-programming project to develop a novel piece of software. Emphasis will be placed on the correctness and robustness of software, and on security as part of the software engineering process.

Prerequisites: INFO2403 and CS2043, or approval of the instructor.

CS6419Digital Forensics3

This course introduces digital forensics notions and methods. Students will gain a basic understanding and legal awareness of computer security and forensics, techniques used in the evidentiary process, various methodologies intrinsic to computer forensics with emphasis on computer incident response, and IT systems protection.

Prerequisites: INFO2403 or approval of the instructor.
CS6495Cybersecurity Capstone Project 3
This capstone project course provides students with an opportunity to apply the knowledge and skills acquired from the cybersecurity program coursework  to a project involving a real-world industrial application. During the project, students engage in the entire process of solving a real-world cybersecurity project, from defining a realistic cybersecurity problem to applying suitable methodology for the design, development, and evaluation of an appropriate solution to the problem. Students will write a final report on their project, structured as a typical research paper. Prerequisites: CS4415/6415, CS4419/6419
CS6525Software Requirements Analysis3 ch
An introduction to the skills needed for effective software requirements analysis. Topics include: The importance of high-quality requirements for success in software development, acquisition, integration, and maintenance, requirements analysis within iterative and non-iterative development methodologies, essential analyst mindset and skills, using and adapting a proven requirements process, stakeholder interaction including communication and managing expectations, requirements elicitation versus decision-making, managing system scope, functional and non-functional requirements, data and process modeling techniques, producing and using requirements deliverables, and requirements quality and validation.
CS6545Big Data Systems3 ch
This course presents different Big Data systems, along with the principles of query processing. Specifically, it compares Relational versus NoSQL data models and covers the foundations of query processing, including index-based access and join processing. It presents the principles of parallel databases, and explores batch processing frameworks, as well as interactive processing frameworks. It also covers SQL interfaces over these frameworks. It introduces update-intensive systems and graph data stores. It includes the special topics of spatial and spatio-temporal data processing.
CS6585Database Foundations3 ch
An overview of relational database systems design and development for graduate students who have limited exposure to database concepts. Topics include: ER modeling, relational database design, client/server architecture, application development environments, interactive and embedded SQL, data integrity, security, and database administration. Also examines several emerging trends in the information systems area. Prerequisite: Permission of instructor.
CS6605Operating Systems 3 ch
A comprehensive study of computer operating systems. Topics to be discussed include: process synchronization, concurrency and feedback for both single and multiple processor systems, virtual memory, advanced file systems, protection and security, distributed systems, users interfaces. Emphasis will be on theoretical design and performance issues. Students will be expected to do substantial reading. Some laboratory work will be held in conjunction with the course. Prerequisite: The equivalent of CS 2403.
CS6705Foundations of Artificial Intelligence 3 ch
The focus of the course is on all basic formal models that became popular in artificial intelligence as well as on their “justifications” as offered by the proponents of the corresponding models. The course is intended to be a general introduction to AI and related areas (e.g. robotics, pattern recognition, data mining).
CS6735Machine Learning and Data Mining3 ch
Machine Learning investigates the mechanisms by which knowledge is acquired through experience. The intent of this course is to cover the primary approaches to machine learning from a variety of fields, including inductive inference of decision trees, neural network learning, statistical learning methods, generic algorithms, Bayesian methods, Information-Theoretic classification, and reinforcement learning. These various approaches will be compared and contrasted in order to determine under which conditions each is most appropriate. The course will also focus on the Theoretical concepts of machine learning such as inductive bias, the PAC learning framework, occam’s razor, models of noise, uniform convergence, and Fourier analysis methods.
CS6748Decision - Theoretic Agents3 ch
Intelligent agents performing a task on behalf of a user are often faced with decisions in which one of a set of possible actions must be chosen. These decisions are typically made by considering the agent's (often incomplete) information about the possible consequences of those actions and the probability and utility (desirability) of each of these consequences of those actions and the probability and utility (desireability) of each of these consequences. The objective of this course is to introduce students to decision theory and its applications in the design of intelligent agents for achieving a wide range of task. Topics include decision analysis (payoff tables, decision trees, minimax regret analysis), preferences and utility theory, multiattribute utility functions, preference elicitation techniques, Markov Decision processes, automated negotiation, and auctions.
CS6755Adversarial Learning and Secure AI3 ch
Explores the intersection of machine learning and security, focusing on adversarial techniques and defenses. Students will learn about the various types of adversarial attacks on machine learning models, the theoretical foundations of adversarial machine learning and secure Al, and practical strategies for defending against these attacks. Through a combination of lectures, hands-on projects, and case studies, students will gain a comprehensive understanding of the security vulnerabilities and challenges in machine learning models and Al systems and how to address them. Participants should be comfortable with the basics of mathematics, linear algebra, statistics and probability. Programming skills are required in Python or R. Some practical examples and applications will be presented in Python. Basic knowledge of machine learning and deep learning is strongly recommended. 
CS6765Natural Language Processing3 ch
This course presents an introduction to methods for intelligently processing human language data in text form, as well as relevant linguistic background. It will include coverage of fundamental topics in natural language processing such as ngram language models, part-of-speeech tagging, parsing, and lexical semantics, as well as applications such as special correction, document classification, information retrieval, and machine translation. Students are expected to implement and evaluate a variety of natural language procesing methods, as well as write reports describing their implementations and their performance.
CS6785User Modeling3 ch
A user model is a system’s representation of the properties of a particular user (his/her preferences, knowledge, abilities, goals, etc.). This representation allows the system to adapt its behaviour in a manner that is appropriate for each individual user. One example of the application of user modeling is in commercial web sites that personalize the organization or the content of the web page, according to users’ previous purchases or browsing tendencies. User modeling also has applications in information filtering, intelligent tutoring systems, e-commerce, interface agents and many other areas. The objectives of this course are to introduce students to the basic concepts behind user modeling and to familiarize them with some of the applications of user modeling in research and in industry. Students will be expected to read several research papers, to participate in group discussions, to present seminars, and to complete a substantial course project.
CS6865Principles of Data Communications and Networks Modelling 3 ch
This course covers advanced concepts of design of data communications systems: architecture, media, communication channel, routing, protocols, protocol architecture and focusses on modelling and performance analysis. Includes introduction to network simulation. Prerequisites: courses in net-centric computing, computer organization, and high-level programming.
CS6885Embedded Systems3 ch
Topics include formal models and specification languages for capturing embedded system behaviour; techniques for specification, exploration and refinement; tools for validation, verification and simulation; and quality and performance metrics. Students will explore an advanced topic in depth through the term project. Prerequisite: Courses in digital logic and operating systems, such as CS 3813 and CS 3413.
CS6895Wireless Networking and Mobile Communications3 ch
This course provides introductory overview of the architecture and protocol design for wireless communication networks. Specifically, this course focuses on the topics of multimedia traffic modelling, wireless channel modelling, radio resource management, cellular concept, call admission control, wireless multiple access techniques, open-loop access control, and end-to-end flow and congestion control, a review of queueing theory for performance analysis. The goal of the course is to introduce the fundamental concepts, tools and methodologies in wireless and mobile networks, and the application of such knowledge to analytically evaluate the performance for current and emerging network design. Also, a project component is included for students to explore state-of-the-art wireless technologies and investigate novel ideas in the related areas.
CS6905Advanced Topics in Computer Science3 ch
A selected area of computer science with a unifying theme will be explored at an advanced level. The topics are normally selected from specialty fields or emerging areas which are of interest to a broad group of students. The course is delivered by offering regular classes, with a laboratory component, project and student presentations as options. Prerequisite: Prerequisites are determined upon the selection of the course topic.
CS6915Computability3 ch

Foundational course in the theory of computation, covering what is possible with different types of computational resources. Topics include automata, Turing machines, nondeterminism, reductions, decidability and undecidability, the limits of time and space resources, and complexity class hierarchies.

CS6925Patter Recognition3 ch
This course will deal at length with artificial intelligence techniques as applied to pattern recognition; topics discussed will include receptors, preprocessors, categorizes, discriminate functions, and threshold logic units, statistical decision theory, heuristic procedures, prototype determination and cluster analysis, learning with and without a teacher, removal of translation, dilation and rotational effects. Prerequisite: Students should have numerical methods, some stats and prob., and substantial programming experience.
CS6955Computer Graphics3 ch
Input and output graphics devices. Introduction and user perspective of graphics systems. Internals and system interfaces. Various algorithms such as vector generation, curve generation, character generation. Windowing and clipping. Basics of interactive graphics programming. Geometrical transformations, geometric modeling. Prerequisite: Linear Algebra, knowledge of a high level programming language.
CS6971Entrepreneurship for Digital Transformation I3 ch

This hands-on course will teach students the fundamentals of validating and designing an IT based product. Through the course students will learn the basics of forming an idea for a business venture, good team dynamics, validating product value proposition, marketing research and marketing, financial considerations and pitching business ideas. By course end, students will have the basis of a business plan for an IT product that can be developed for commercialization. 

Credit cannot be received for CS 6971 and (MBA 6114 or TME 6025). 

Prerequisite: must have permission from course instructor.
CS6972Entrepreneurship for Digital Transformation II3 ch

This hands-on course will guide students in taking their validated innovative technology to a product for initial commercialization. Using software engineering practices, students will work to iterate from idea to market with their product while balancing technology innovation and customer needs. The course culminates with the refinement of a venture development plan, the delivery of a final pitch, and the demonstration of a tangible working prototype to a group of industry professionals. This approach not only educates students for their future entrepreneurial endeavors but also trains them with the necessary skills to successfully commercialize new products into the market. 

Credit cannot be received for CS 6972 course and (MBA 6114 or TME 6026).

Prerequisite: CS 6971 or permission from course instructor.
CS6993Internship Course6 ch
This course is intended to foster the interrelation between our Master program and appropriate R&D partners, normally outside the university. Graduate students spend 13 to 16 weeks full-time (or an equivalent period part-time) at an industrial, institutional or other approved research laboratory, supervised by a CS GAU member. In this working environment, the students apply their previously learned knowledge and acquire further work-specific knowledge and practical skills, thus maximizing their professional development during.

The course contains both an educational and an R&D component. Both components must be closely related to the student's research topic and are contained in a work plan which is to be approved by the Director of Graduate Studies and by the Dean of Computer Science if paid contract work is involved. Any restrictions, such as confidentiality requirements, intellectual property and copyright of the report must be clearly identified and agreed to. This course carries 6 ch. Prerequisites: Master by Report program only. Students with supervisor and approved proposal.
CS6994Entrepreneurial Experience9 ch

This course is intended to foster the interrelation between our Master program and appropriate entrepreneurial experiences. Graduate students spend 13 to 16 weeks full-time (or an equivalent period part-time) advancing an entrepreneurial opportunity by utilizing their technical skill set, supervised by a CS GAU member. Students apply their previously learned knowledge and acquire further entrepreneurship-specific knowledge and practical skills, thus maximizing their professional and entrepreneurial development during the course. 

The course contains both an educational and a development component. Both components are contained in a work plan which is to be approved by the Director of Graduate Studies. Any restrictions, such as confidentiality requirements, intellectual property and copyright of the report must be clearly identified and agreed to. Open to students in the MCSC program only and must have an approved proposal with the course instructor.

Note: Credit cannot be received for both CS 6994 and CS 6995. 

CS6995Master' Project9 ch
This course is intended to provide a significant experience in planning and completing an advanced project in Computer Science and in presenting the results of the project both orally and in writing. Each project is supervised by a member of the Computer Science Graduate Academic Unit. Students are encouraged to carry out their project in context of an industrial internship or co-op term. CS 6995 projects with internship option will be evaluated to the same standards as other CS 6995 projects . Open to students in the MCSC program only. Must have a supervisor and approved proposal. 
CS6996Master's Report9 ch
This is a mandatory course for all graduate students entering the Master's by report program in Computer Science.
CS6997Master's Thesis18 ch
This is a mandatory course for all graduate students entering the Master's thesis program in Computer Science.
CS6998PhD Thesiscr
This is a mandatory course for all graduate students entering the PhD program in Computer Science.
CS6999Directed Studies3 ch
Course Desc