Course Descriptions

CS 802 - Parallel Algorithm
Theoretical and practical aspects of parallel algorithms; functional descriptions of various parallel models of computations; interconnection networks for multi-computers. Prior to registering for this course, students should have a background in parallel computing comparable to the senior undergraduate level.

CS 805 - Computer Graphics
Geometric and other advanced modelling techniques; image rendering and synthesis techniques; interactive graphics; issues in computer animation. Prior to registering in this course, students should have a background in computer graphics comparable to the senior undergraduate level.

CS 807 - Interactive Hardware and Embedded Computing
Hardware design for physical and pervasive computing systems. Wired and wireless communication protocols; sensors and actuators; resource constraints; location- and context-awareness. Applications include: wearable computing, wireless sensor networks, robotics and automation, internet of things. Embedded hardware platforms such as ARM (raspberry Pi) and AVR (Arduino).

CS 808 - Adv Animation Software Design
Principles of animation. Current research areas in animation software design. Features and architecture of animation software. Timelines, motion pathways, parameteric keyframing kinematics, gaseous phenomena, and facial animation.

CS 809 - Interactive Entertainment SW
This course surveys current research on the design and implementation of interactive entertainment software, including computer games. Topics include: interactivity, principles of interactive entertainment, hardware platforms, current software development tools and languages, game loop, design of virtual worlds and virtual characters, real-time requirements, incorporating multimedia resources, aesthetics.

CS 811 - Theory of Computing
Study of fundamental concepts of computer science from the theoretical point of view; basic concepts of computational complexity theory, algorithm analysis and their relation to the set of problems which can be programmed; "good" algorithm design. Prior to registering in this course, students should have a background in introductory compiler design, or algorithm analysis comparable to the senior undergraduate level.

CS 815 - Computer Vision
Sensing techniques; sensing data pre-processing; higher level scene description; model-based recognition; motion analysis. Prior to registering in this course, students should have a background in image processing comparable to the senior undergraduate level.

CS 820 - Artificial Intelligence
Logics; natural language processing; knowledge representation; uncertainty reasoning; machine learning; expert systems; neutral networks. Prior to registering for this course, students should have a background in artificial intelligence comparable to the senior undergraduate level.

CS 824 - Informational Retrieval
Content analysis; types of storage and retrieval systems; retrieval models; information theory; multimedia retrieval; hypertext; information network and inference. Prior to registering for this course, students should have a background in algorithms and data structures, and database and information retrieval comparable to the senior undergraduate level.

CS 825 - Image Processing
Image models; image transformations; enhancement and restoration techniques; image segmentation; feature extractions and higher level descriptions. Prior to registering in this course, students should have a background in image processing, and numerical and symbolic computing comparable to the senior undergraduate level.

CS 826 - Bioinformatics and Biomedical Applications
This course provides an introduction to research in bioinformatics, which is the analysis of biological and medical data. Topics include sequence and image analysis, modelling of complex processes, biomedical database organization, and biomedical data mining. Selected biomedical data applications are also examined.

CS 827 - Computer Audio
Representation of audio, audio compression, spatialization and surround sound. Analysis and synthesis of sound waveforms. Speech and music. Temporal and spectral processing.

CS 828 - Human Computer Communication
Theory and practice related to the design and implementation of usable software and easy-to-learn interfaces. Specific topics will include user-centered design and task analysis; prototyping and the iterative design cycle; interface design and methods of evaluation.

CS 829 - Information Theory and Applications
This course covers the fundamentals of information theory and its application in content distribution over the Internet. Topics covered include: information theory, channel codes, content distribution network, and peer-to-peer network coding. * Note: Prior to registering in this course, students should have a background in Data Communications and Network comparable to the senior undergraduate level. *

CS 830 - Machine Learning
Models of learning; inductive inference; constructive and selective induction; learning from examples; explanation-based learning; machine discovery; grammatical inference; knowledge acquisition; applications. Prior to registering for this course, students should have a background in artificial intelligence comparable to the senior undergraduate level.

CS 831 - Knowledge Discov in Databases
Knowledge discovery from databases in the nontrivial extraction of implicit, previously unknown, and potentially useful information from databases. This course focuses on data sources, extraction techniques, efficiency concerns, and measures of novelty and usefulness. Prior to registering for this course, students should have a background in database and information retrieval, and artificial intelligence comparable to the senior undergraduate level.

CS 834 - Fundamentals of Computer Systems Security
This course presents the objectives and the fundamentals of computer and network system security: confidentiality, integrity, availability, authentication, and authorization. Common security concepts are detailed, such as cryptography, symmetric/asymmetric encryption, digital signature, certificate authority, hashing, communication protocol security, and audit. Mathematical foundations and applications of these methods will be explained.

CS 835 - Pattern Recognition
Statistical pattern recognition; parameter estimation and supervised learning; nonparametric techniques; linear discriminant funcitons; unsupervised learning and clustering; syntactic pattern recognition; applications. Prior to registering for this course, students should have a background in algorithms and data structures comparable to the senior undergraduate level.

CS 836 - Rough Sets & Applications
Theory of rough sets is a fundamental mathematical methodology for modelling classification or decision problems involving imprecise or uncertain information. Its implications include pattern classification, data mining, machine learning, control algorithm acquisition from data, circuit design and others. The course will provide the basics of the methodology and will include the study of the above applications of rough sets. Prior to registering for this course, students should have a background in discrete computational structures, artificial intelligence and statistical methods comparable to the senior undergraduate level.

CS 837 - Information Visualization
Information Visualization focuses on the design, development, and study of interactive visualization techniques for the analysis, comprehension, exploration, and explanation of large collections of abstract information. Topics to be covered include principles of visual perception, information data types, visual encodings of data, representations of relationships, interaction methods, and evaluation techniques.

CS 838 - Uncertain Reasoning in Al
Advances in using uncertain knowledge to make decisions rationally and effectively (for prediction, classification, diagnosis, etc.). Focus is placed on modelling with Bayesian networks and various methods for inference therein. Deep learning probabilistic circuits, including arithmetic circuits and sum-product networks, will be extensively studied, emphasizing construction, learning, semantics, and inference. *Note: Before registering for this course, students should have a background in discrete computational structures, artificial intelligence and statistical methods comparable to the senior undergraduate level.*

CS 839 - Web Intelligence & E-commerce
The course investigates research topics related to Web Intelligence and Electronic Commerce. The topics include: web technology, network infrastructure, web-based business models, agents, Extended Markup Language, web mining, security, web information filtering and retrieval, and intelligent information systems.

CS 842 - Introduction to Data Science
This course provides a broad overview of the data science process lifecycle which includes data discovery, data preparation, model planning, machine learning model implementation and evaluation, visualization, and delivery. The course provides hands-on data science experience via a real-world project.

CS 855 - Mobile Computing
Mobile Computing focuses on conducting research in the design, development, and evaluation of software in a networked mobile environment. The primary topics to be covered in the course include network computing, graphics programming, human-computer interaction, and evaluation methods, all focused on the challenges and opportunities afforded by modern mobile computing devices.

CS 858 - Virtual and Augmented Reality
Design and implementation of software in virtual and augmented reality environments. Development practices, assets and avatars, interaction, locomotion, psychological effects, audio, multiplayer considerations, applications. Limitations and future developments. *Additional Fee: $10.*

CS 872 - Software Engineering
Review of fundamental concepts; project planning; requirements analysis; program design, implementation and testing; object-oriented development; metrics and cost estimation; software reuse; CASE technology; configuration management; software engineering and Ada. * Note: Prior to registering in this course, students should have a background in software engineering methodology comparable to the senior undergraduate level. *

CS 875 - Database Systems
Database management system architecture; relational, network and hierarchical data models; theoretical and practical aspects of database applications; study of data definition and data manipulation facilities and database management systems; security and integrity; distributed database management system architecture. * Note: Prior to registering in this course, students should have a background in advanced topics in database systems, and database and information retrieval comparable to the senior undergraduate level. *

CS 890AA - Advanced Database Systems
A course in special topics in which the student makes an independent study in computer science under the supervision of a faculty member in the department. This course focuses on advanced database systems from theory to implementation.

CS 890AC - DataAnalysis from the Internet
Data Analysis from the Internet: Language, indexing and classification; extracting and abstracting by computer; stylistic analysis, statistical models and the entropy of English; hidden Markov models; probablistic context-free grammars; data analysis via data mining and rule induction; ELEM2.

CS 890AG - Natural Language Processing
Grammars, semantics of language, NLP systems, existing systems. *Note: Students may receive credit for one of CS 890AG or CS 490BH.*

CS 890AI - Parallel & Distributed Process
A course in special topics in which the student makes an independent study in computer science under the supervision of a faculty member in the department. * Note: The student and the supervisor must present a detailed outline of the proposed study to the head of the department for approval before registration. *

CS 890AJ - Directed Readings in Bayesian Methodologies
Students should understand basic principles of Bayesian networks, including representation (Bayesian and Markov networks) and inference (variable elimination and join tree propagation). A comprehensive project, including a functioning system and extending the field in a new direction, is required.

CS 890AK - Computability and Complexity
Finite automata. Context-free grammars and push-down automata. Turing machine. The universal Turing machine. Nondeterministic Turing machine. The halting problem and unsolvability. Post correspondence problem. Time complexity. Space complexity.

CS 890AQ - Mgmt Intelligent Info System
Strategic and tactical rewards resulting from the effective use of corporate information systems will be presented. Topics include techniques and tools for developing management support systems. Case studies on development and use of the systems will be discussed.

CS 890AU - Adv Artifical Intelligence
Advanced artificial intelligence: advanced issues in artificial intelligence.

CS 890AW - Web Mining
Overview of basic issues of Web Mining in the context of Web Intelligence (WI). Investigations of adaptive personal web page design based on results from mining web log data.

CS 890AY - Adv.Topics in Geometric Model
Advanced Topics in Geometric Modelling: Milti resolutions polygon, mesh structures, polygon mesh optimization, interactive design.

CS 890BA - Secure Computers and Networks
Secure Computers and Networks: Fundamentals of Computer Security, Cryptography and Security Standards, Fire walls and Web Security and Case studies.

CS 890BD - Adv. Topics in Visualization
Advanced Topics in Visualization: volume rendering techniques, visualization of high dimensional data, animation of dynamic simulation results.

CS 890BE - Spec. Topics in Comp. Graphics
Special Topics in Computer Graphics: 3D Toon rendering, hair modeling and rendering, volume rendering techniques.

CS 890BI - Advanced Web Browser Interface
Topics in Advanced Web Browser Interfaces.

CS 890BK - Data Cleaning
Introduction to data cleaning. Missing values. Noisy Data. Inconsistent data, Syntactiv transformation techniques. Integrity checking. Semantic transformation techniques. Software for data cleaning. Project.

CS 890BN - Cryptography and Data Security
Mathematical background of Cryptography, cryptographic protocols and techniques, symmetric-key cryptography algorithms and securtiy analysis. One-way hash functions and public-key algorithms. Examples of cryptographic systems.

CS 890BP - Computer Graphics Topics
Multi-resolution surface representations; rendering techniques for continuous levels of detail; virtual reality.

CS 890BR - Constraint Programming
Constraint satisfaction, stochastic search, CLP, TSLP.

CS 890BV - Model-Based Data Mining
Survey of statistical models. XML specification of domain knowledge. Data summarization. Anomaly detection. Java-based implementation of data mining procedures. Project.

CS 890BY - Agent Based Systems
Agent-oriented Software; Agent-oriented Software lifecycle; a real application; development in UML; Rational Rose.

CS 890CA - Foundation of Data Mining
This course investigates research topics in data mining.

CS 890CB - Research Methods in CS
Review of the major consideration and tasks involved in conducting scientific research, with emphasis on Computer Science. Research Methodology. Technical writing.

CS 890CE - Constraint-Based Agents
Agents Search paradigms and frameworks Global constraint for local search Structural constraint satisfaction Applications

CS 890CF - Human Computer Communication
Theory and practice related to the design and implementation of usable software and easy-to-learn interfaces. Specific topics will include user-centered design and task analysis; design and methods of evaluation.

CS 890CG - Computer Audio Topics
Representation of audio, compression, spatialization and surround sound, analysis and synthesis, speech, music, temporal and spectral processing. ** Written permission of the instructor is required to register. **

CS 890CI - Topics in Software Security
Research topics on security of mobile code-language environments, extensible software, and operating systems.

CS 890CJ - Specification Implementation
Algebraic Specifications Object Orientated Refinement C++ Java

CS 890CO - Heuristic Algorithms in Optim
In this course, we will study state-of-the-art heuristic algorithms for finding approximation solutions, including simulated annealing, genetic algorithms, ant colony algorithms, tabu search and others.

CS 890CP - Searching Networks
In this course, we will study state-of-the-art methods for computing the optimal search stragegies for networks under different models, including basic pursuit-evasion (BPE), combinatorial sweep, monotomic sweep, connected sweep and others.

CS 890CQ - Advanced Probabilistic Systems
State-of-the-art models for probabilistic reasoning, including hierarchical Markov networks, nested jointrees, multiply-sectioned Bayesien networks, and the maximal prime decomposition of Bayesian networks. State-of-the-art probability propagation algorithms for inference such as LAZY propagation in the HUGIN expert system

CS 890CR - Data Mining
The course involves studying classical approaches to data mining such as rule searching, rough sets, decision trees, neural networks and statistical approaches.

CS 890CS - Time Series Forecasting
The course focuses on a study of methods for the time series forecasting, with applications such as forecasting stock prices and retail prices, Traditional statistical methods and data mining methods will be examined and compared with respect to their efficiency and effectiveness for the time series forecasting. A system will be developed for forecasting retail prices for a product.

CS 890CU - DVD Design and Implementation
This course explores the technical and aesthetic skills requires to design and implement a DVD. Topics include criteria for evaluating DVDs, digital editing techniques, encoding audio and video, scripting DVDs, creation of interface components, testing techniques for navigational capabilities, and evaluation of a DVD.

CS 890CV - Automated Update of Databases
Automating the update and retrieval process for databases. Uses for automation. Wrappers and other techniques of automation. Limits of wrapper design. Implementation and analysis of wrapper design techniques.

CS 890CW - Information Visualization
Theoretic models of information visualization. Techniques, algorithms, and systems. Visual representation of complex information space and high-dimensional data sets.

CS 890CX - Rough Set Theory Adv Topics
The course involves studying advanced approaches based on rough set theory, including variable precision rough set model, bayesian rough set model and applications. This is a research-oriented course requiring the student to study a number of research papers on the subject of the class.

CS 890CY - Text Classification Algorithms
Survey of Text Classification Algorithms. Use of Ontologies in text Classification. Evaluation of wordnet as an ontology in text classification. Detailed comparison of recent text classification methods. Implementation and experimental evaluation of text classification algorithms using benchmark datasets.

CS 890CZ - Text Classification Algorithms
It extends the fundamental material related to data mining, machine learning, Bayesian networks and rough set graduate courses towards dealing with more complex knowledge representation models, encoding knowledge in various, possibly graphical forms dedicated to the application domain needs. Algorithmic approaches to learning such models from real-life data are extensively studied.

CS 890DA - Topics on Grid Computing
Research topics in grid computing: grid architecture; networking; security; resource management.

CS 890DB - Text Classification Algorithms
The course will explore methods used in computer vision and recognition (classification) of images.

CS 890DC - Implementing Probabilistic Expert Systems
This course examines the effects on computational efficiency in practice by implementing various techniques for constructing probability distributions in probabilistic expert systems. Topics include Bayesian networks, join tree propagation, and direct computation techniques.

CS 890DD - Information Theory and Applications
This course covers the fundamentals of information theory and its application in content distribution over the Internet. Topics covered include: information theory, channel codes, content distribution network, and peer-to-peer network coding.

CS 890DE - Advanced Topics in Robotics
Motion planning, configuration space, cell decomposition methods (exact vs approximate), roadmap methods (visibility graphs, Voronoi graph), potential field-based methods, planning with uncertainty, robot control using vision, multiple robots, nonholonomic robots, computational issues in planning, control, and sensing.

CS 890DF - Advanced Intrusion Detection
Investigating intrusion detection systems, particularly on Support Vector Machine and Rough Set. Developing a novel hybrid model combining SUM and Rough Set in order to improve the speed and accuracy. Apply the new model on different data sets.

CS 890DG - Agent-Oriented Distributed Systems
This course will explore distributed systems using agent technology.

CS 890DH - Topics on Communications
Communication network modeling, Multicast problem, Steiner tree problem, Network coding, Rateless codes, P2P file sharing systems, performance evaluation.

CS 890DI - Topics in Programming Languages
Topics in programming paradigms, language design, semantics, and static analysis.

CS 890DJ - Assessing Roles of Variables
The objective is to investigate the body of knowledge available on the role of variables in programs. The project will focus on the role of variables in programs written by IPSCO information specialists.

CS 890DK - Advanced Topics in Interface Personalization
Advanced topics in computer software user interface personalization will deal with one or more of areas such as: user preference modelling, temporal demand models. Filtering, interface cost models, evaluative indices, decision analysis, navigational pattern analysis, and content semantics.

CS 890DL - Special Topics in Computer Vision
Image feature extraction, segmentation, and 3D object recognition techniques.

CS 890DM - Topics in Performance Evaluation
This course covers various topics on performance evaluation of computation and communication systems. Examples include system security, privacy and communication effciency.

CS 890DN - Web Engineering
Design and implementation of web software systems and also web service based applications. Study of web architectures, design patterns and frameworks using the UML

CS 890DO - Topics in Compiler Design
Design and implementation of compilers. Topics include lexical analysis, parsing, context-sensitive analysis, intermediate representation, optimization, and code generation.

CS 890DP - Service Oriented Architecture
A study of service oriented architecture (SOA) concepts and their advantages. XML (eXtensive Markup Language) and its associated family of standards will be discussed and used in student projects.

CS 890DQ - Granular Computing
This course covers a new research field called granular computing (GrC). Topics include fundamentals of GrC and its applications in different research fields, such as rough set and formal concept analysis, current research and development, and future directions of GrC.

CS 890DR - Pattern Classification
Decision Theory, Discriminant Functions, Maximum Likelihood, Parametric and Non-Parametric Methods, Gaussian Mixture Models, Stochastic Methods, Machine Learning and Clustering.

CS 890DS - Visual Analytics
Visual analytics is a multi-disciplinary field that facilitates analytical reasoning through interactive visual interfaces. Topics of study will include aspects of visualization, human factors, and data analysis in aid of conducting an analysis of available data.

CS 890DT - End User Computing for Interaction
End user computing can be applied to a broad spectrum of approaches, with which the student will be acquainted. In particular, this class will examine and explore the means by which end-user computing can empower users and support their efforts when dealing with new situations, allowing new means of interaction with existing applications.

CS 890DU - Web Based Learning Support Systems
This course will provide a comprehensive coverage of various topics in Web mining, including Web usage mining, Web content mining, Web structure mining, Web data management, and Web personalization. The primary focus of this course is on Web usage mining and its applications to e-learning and web intelligence. Specifically, this course will consider techniques from machine learning, data mining, statistics, information retrieval, and databases to extract useful knowledge from Web data which could be used for e-learning, personalization, and user profiling.

CS 890DV - Wireless Mobile Applications
Development and deployment of software for wireless mobile applications; use of state-of-the-art development tools and integrated development environments; development strategies for performance and reliability; methods for testing and debugging; methods for experimental evaluation; use of hardware simulators.

CS 890DW - The Internet and Social Participation
The internet has the potential to enliven social participation even as traditional social structures may be in retreat. Powerful new technologies can support this potential, but only so far as they serve the people who would use them. This class will consider the growing variety of online communiities, what technology supports them, and what opportunities exist.

CS 890DX - Matchmaking Services for Auctions
Matchmaking Algorithm Design; Interest-based Matchmaking; Multi-Attribute Auctions; Reverse Auctions; Purchasing Computers with Several Attributes; Data Clustering; Interest Model Simulation; Interest Learning. 8

CS 890DY - Special Topics in Image Processing
Selected topics in one or more areas from image/video segmentation, analysis, quality measurement, transformation, encoding, compression, and other emerging areas. Reading materials include 3 to 5 book chapters and 10 to 15 recent journal/conference proceeding articles. A term project is required.

CS 890DZ - Implementing Probabilistic Expert Systems
This course examines the effects on computational efficiency in practice by implementing various techniques for constructing probability distributions in probabilistic expert systems. Topics include Bayesian networks, join tree propagation and direct computation techniques.

CS 890EA - Run Time Monitoring of Online Auctions
The objective is to monitor shills in online auctions. The student has to identify shills for reverse auctions. He will develop an architecture for monitoring shills at run-time. Performance and security are major concerns to take into account. He will develop an aggregation algorithm based on the Dempster-Shafer.

CS 890EB - Topics in Computer Animation
In this course a student makes a detailed independent study of topics in Computer Animation under the supervision of a faculty member. The student and supervisor must present a detailed outline of the proposed study to the head of the department for approval before registration.

CS 890EC - Computational Learning Theory
Selected topics in computational learning theory and applications, e.g., models of interactive machine learning, privacy-preserving learning, statistical learning, recursion-theoretic models of learning, complexity analysis of learning algorithms. Reading materials include 2 book chapters and 10-15 research articles. A term project is required.

CS 890ED - Logic Programming for Artificial Intelligence
This course considers the use of logic programming in Artificial Intelligence. Topics include using logic programming for traditonal tasks such as search, learning and game playing. A major component of the course will be the creation of a logic program to solve a nontrivial artificial intelligence task.

CS 890EE - Advanced Topics in Granular Computing
Granular computing and soft computing have begun to play important roles in bioinformatics, e-business, security, machine learning, and data mining. This course will focus on theory and applications of granular computing.

CS 890EF - Advanced Topics in Data Mining
Data Mining uses machine learning, statistical and visualization techniques to discover and present knowledge in a form which is easily comprehensible to humans. This course will focus on the theory and applications of Data Mining particulary on email systems .

CS 890EG - Topics in Mobile Computing
The student will undertake an individual research project related to Mobile Computing under the direction of a faculty member.

CS 890EH - Interactive Hardware for Computing Applications
Embedded and mobile hardware design for physical computing; wireless sensor networks, electronic circuit theory; circuit board design and fabrication and in-circuit programming; robotics, computer vision, audio, sensing and interaction; Software systems such as Processing and OpenFrameworks; hardware systems such as ARM and AVR (Arduino).

CS 890EI - Topics in Interactive Entertainment Software
This course provides an intensive study of one or more topics related to Interactive Entertainment Software. Potential topics include game architectures, virtual worlds, virtual characters, game physics, game artificial intelligence and game audio.

CS 890EJ - Topics in Intelligent Tutoring Systems
This course considers the development and application of Intelligent Tutoring Systems. It explores the relationship between intelligent tutoring, cognitive learning theories, and design. It also reviews the evolution from Computer-Assisted instruction to Intelligent Computer Assisted Instruction to modern Intelligent Tutoring Systems.

CS 890EK - Topics in Software Engineering
This course will focus on two widely used agile software development methodologies: Extreme Programming (XP) and Scrum. XP describes a process which is used to create software in an agile and productive way. It provides guidelines for managing the development process, but its primary focus is on engineering practices for a team approach to groupware style development that have been shown to lead quality software.

CS 890EL - Topics in Software Development
This course provides an intensive study of one or more topics related to Software Development. Potential topics include project planning, requirements analysis, software architecture, programming methodologies, implementation and testing, metrics and cost estimation, software reuse, computer-aided software engineering, configuration management, and current research.

CS 890EM - Topics in Algorithm Analysis
This course provides an intensive study of one or more topics related to Algorithmic Analysis. Potential topics include formal algorithmic languages, measures of complexity, type of analysis, bounds of algorithms, classes of problems, and parallel computational models and algorithms.

CS 890EN - Topics in Machine Learning
This course provides an intensive study of one or more topics related to Machine Learning. Potential topics include inductive inference; concept learning; statistical learning; learning from time series; grammatical inference; knowledge acquisition.

CS 890EO - Topics in Virtual Reality
This course provides an intensive study of one or more topics related to Virtual Reality (VR). Possible topics are VR hardware, VR software, perception quality, interaction, performance, applications, and health and safety issues.

CS 890EP - Topics in Internet of Things & Wireless Sensor Networks
Main concepts and features of the IoT paradigm, architectures, standards, and regulation. Trust, security, and privacy in IoT environments. Overview of theoretical, practical and mathematical concepts related to WSN. Examine applications for WSNs. Overview of RFID radio signals, communication modes and applications. Implementation and coding of WSN and RFID systems.

CS 890EQ - Topics in Geographic Information Systems (GIS): Spatial Analysis and Geoprocessing
An introduction to GIS and spatial analysis, including spatial data models, data visualization and mapping, remote sensing data, geodatabases, raster and vector analysis. GIS automation and programming, including model building, Python fundamentals, and geoprocessing using Python: datasets, geometries, rasters, scripting, building / sharing script tools, introduction to Web GIS.

CS 890ES - Data Science Fundamentals
Introduction to Data Science provides a broad overview of the data science process lifecycle which includes data discovery, data preparation, model planning, machine learning model implementation and evaluation, visualization, and delivery. The course provides hands-on data science experience via a real-world project.

CS 890ET - User Interface Evaluation Methods
Methods for evaluating user interfaces with human subjects. Topics include research ethics, research methods, experimental design, data collection, and data analysis.

CS 890EU - Foundations of Modern Networking
Architectures, algorithmic solutions, and protocols for modern networking technologies such as Software-Defined Networking (SDN), Network Virtualization, Network Functions Virtualization (NFV), 4G and 5G Mobile Networks, Cloud and Data Center Networks, Optical Networks, and Internet of Things (IoT).

CS 890EV - Knowledge Representation and Reasoning
The course examines some of the techniques used to represent knowledge in artificial intelligence, and the associated methods of automated reasoning. The emphasis will be on the compromises involved in providing a useful but tractable representation and reasoning service to a knowledge-based system.

CS 890EW - Reasoning about Rational Agents
Selected topics in reasoning about rational agents. The focus is on various advanced topics in knowledge representation and reasoning and multi-agent systems including but not limited to formalization of actions, knowledge, other mental states and their dynamics in various logics, rational agent programming languages, root cause analysis, abstraction mechanisms etc.

CS 890EX - Recent Developments in Three-way Clustering
Understanding differences of various machine learning techniques such as classification and clustering. Familiarization with hard clustering and soft clustering approaches. Review recent developments of three-way clustering. Summarize and classify different types of three-way clustering techniques.

CS 900 - Computer Science Graduate Seminar
CS Graduate students must complete two semesters of CS 900, with the exception of MSc Course Route students, who must complete one semester of CS 900. When enrolled in CS 900, a student must make one presentation and attend all presentations. In the first semester of CS 900, the student will choose a Computer Science topic within their research area. In the second semester of CS 900 (if required), the student will choose a topic within their own research.

CS 901 - Research
Thesis research.

CS 902 - Project Research
A supervisor approved project requiring an in-depth student investigation of a CS problem.