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.
CS6035Parallel Distributed Processing II3 ch
A parallel computer consists of a collection of processors that cooperate to solve a single problem. The number of processors used can range from a few tens to several millions. Consequently, the problem solution time is significantly reduced. This course addresses the two main aspects of highly parallel computing: (1) The study of various parallel computer architectures. (2) The study of various application areas of parallel computers and the methods of algorithm design and programming such computers. The course requires background mainly in the design and analysis of algorithms and computer organization.
CS6045Software Process3 ch
This course introduces the basic concepts related to software processes. The following topics are discussed: process modeling concepts, some modeling notation and paradigms, process elicitation, process enactment, process assessment (based on standards), and process improvement.
CS6055Software Engineering3 ch
This course covers advanced concepts and practices of object-oriented software construction. Topics includes software quality, modularity, and reusability, abstract data types, foundations of object techniques, design by contract, exception handling, as well as object-oriented (visual) modeling using Unified Modeling Language (UML) and formal specification using Object Constraint Language (OCL). Students are required to do both writing assignments to answer conceptual questions and programming assignments to practice the concepts, as well as a term project to practice object-oriented modeling.
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.
CS6095Internet Software Development3 ch
Software technologies, methods, and processes for modeling and developing internet based enterprise-scale application systems. Internet standards and protocols, distributed objects and components, and client-server computing. Distributed software design for functionality, performance, reliability, and security. Evaluation and implementation of technologies. Enterprise application modeling and design specifications.

CS6102Numerical Linear Algebra3 ch
Topics include standard direct methods for linear systems, standard iterative methods for linear systems, least squares, eigenvalues and eigenvectors, sparse matrices, projection methods. It is assumed that participants have an undergraduate course in numerical analysis and a background course in linear algebra.
CS6145Parallel Numerical Algorithms3 ch
This course will cover the design and analysis of a parallel algorithms with numerical applications. Algorithms will be designed for a variety of platforms including clusters, shared memory systems and hybrid platforms. Use of the MPI message passing library and OpenMP are an integral part of the course.
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).
CS6715Functional-Logic Programming3 ch
This course treats the declarative cores of functional and logic programming in the integrated manner of functional-logic programming. Applications include Semantic Web programs over metadata as well as Web Services that provide logic inferences and/or functional transformations over XML data. All theoretical notions are accompanied by practical demonstrations using the didactic functional-logic language Relfun.
CS6725Introduction to Automated Reasoning3 ch
The object of automated reasoning is to write computer programs that can assist in the solving of problems and the answer of questions that require reasoning. Most of the work in this field in the last 30 years has used Robinson's resolution method (1965). The main part of this course deals with the clause tree data structure/technique developed by the instructors since 1993. The relationship between clause trees and other techniques are also covered, including: Loveland's chain technique (1969), Bibel's connection method (1980), the tableaux method, the connection tableau calculi of Letz, Mayr and Goller (1994), and the clause graph resolution (connection graphs) of Kowalski and Eisinger. Prerequisite: An undergraduate course in algorithms (e.g. CS 3933).
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.
CS6745Multi-agent Systems3 ch
The area of multi-agent systems (MASs) has been recognized as one of the prominent areas of research in computer science. An agent can be considered as a software entity that can act autonomously. An MAS consists of many agents that typically interact to solve complex problems. Multi-agent systems have been applied many applications including e-commerce, industrial process control, and intelligent resource management. The main objectives of this course are to introduce the basic concepts, design, products and selected applications of MASs. Prerequisite: See instructors.
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.
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.
CS6795Semantic Web Techniques3 ch
The Semantic Web is a W3C Activity for representing information in the World Wide Web in a machine-readable fashion: Such that it can be used by machines not just for display purposes, but for automation, integration, and reuse across applications. This course introduces techniques that are useful stand-alone and can be integrated for building a semantic web.
CS6805Logic Synthesis3 ch
This course covers the theory for design and analysis of logic networks with special emphasis on Ordered Binary Decision Diagrams (OBDDs). Theories on logic synthesis are covered in detail: multi-valued input two-valued output functions, logic design for PLDs/FPGAs, EXOR-based design, and complexity theories of logic networks. Prerequisite: Consent of instructor.
CS6812Digital Systems Logic3 ch
The analysis and synthesis of sequential switching circuits. The logical design of digital computer systems including arithmetic, memory and I/O units. The use of microprocessors/computers in digital systems design. Introduction to PLDs (Programmable Logic Devices) including PLAs, PALs GALs and gate arrays. Several laboratories involving digital systems hardware will be held in conjunction with the course. Prerequisite: A course in combinatorial switching circuits. (held in conjunction with CS 4835).
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.
CS6875Hardware/Software Co-Design3 ch
This course will give an overview of the fundamentals of Hardware/Software Co-design and reconfigurable computing. This course will focus on the analysis of the various stages of co-deign with emphasis on understanding the problems and current solution techniques. Topics include partitioning, specification, co-synthesis and co-simulation. Some commonly used tools and techniques will also be discussed. Students will have the opportunity to explore a co-deign topic in depth through the course project. Prerequisite: CS 3813 and CS 3013.
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.
CS6945Image Processing3 ch
The fundamental processing methods for black/white and color images are studied in depth. Image representation is viewed as image description by features. Modern image acquisition and display techniques are addressed including animation. Processing of image data by domain transformation and image transformations are emphasized. Applications include image enhancement and restoration of degraded images. Properties of human vision are studied and exploited for optimal image data compression and optimal image display. Some image information investigations might be addressed including image coding. Students will participate in a course project. Prerequisite: computer graphics, linear algebra, fourier transforms, stochastic processes.
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.
CS6985Computational Biology3 ch
This course will give an overview of computational problems and algorithms for problems associated with a variety of analysis of biological molecular data. This course will focus on the computational complexity of these problems and algorithms, and an understanding of the problems and potential solutions. Topics included string and sequence matching, structure comparison and analysis, evolutionary trees, and gene impression analysis. Some commonly used tools will also be examined. Students with credit in CS 4965 or equivalent will not receive credit for CS 6985 . Prerequisites: CS 3933 or consent of the instructor.
CS6991Algorithm Analysis3 ch
The theory of NP-completeness is studies: complexity, the problem classes P and NP, intractability, Cook’s theorem. The student will learn how to recognize if a problem is NP-complete or NP-hard and how to solve these hard problems using approximation algorithms. A short introduction to complexity theory is given. Although many famous problems are studies (traveling salesman, graph coloring, knapsack), the emphasis is on the general techniques. Prerequisite: CS 3933 or consent of 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.
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