Course Course Name/DescriptionChr Cat 
CS5725Artificial Neural Systems4 *A
Introduction to the theory, architectures, and application of Artificial Neural Systems. Topics include fundamental models of artificial neural systems, learning rules, supervised, unsupervised and reinforcement learning in single and multi-layer neural networks, radial-basis function networks, principal component analysis, self-organizing maps, adaptive resonance theory, stochastic machines, learning capacity and generalization. Prerequisites: CS 2303 and 3 terms of calculus and statistics, or permission of instructor.
CS5865Data Networks4 *S
This course deals with advanced concepts of the analysis and design of data networks and their operation. It builds on and extends the fundamental topics covered in CS4865, Data Communication. The following areas are covered in depth: Networks, Interfaces, Line Protocols, Network Analysis, Local Area Networks, Public Carrier Services and Standardization. Prerequisite: Data networks: CS 4865
CS5905Topics in the Theory of Computing4 *T
A select area of computing with a unifying theme will be explored in depth. The topics covered are selected from one or more of the following areas: algorithms, artificial intelligence, automata, computability, computer organization, languages and theoretical concepts of programming. Prerequisite: a course in Discrete Structures or a course in Algebra, and approval of the instructor.
CS6025Parallel/Distributed Processing I3S
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, (c) fundamental numeric and non-numeric algorithms, (d) applications (e.g. image processing, pattern recognition and relational databases), and (e) parallel/distributed programming using the Message Passing Interface (MPI) and openMP software on a PC cluster.
CS6035Parallel/Distributed Processing II3S
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 organizations.
CS6045Software Process3
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
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.
CS6075Software Architecture3S
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 Development3S
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 Algebra (UNBSJ)3
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 Algorithms (UNBSJ)3S
This course will cover the design and analysis of parallel algorithms with numerical applications. Algorithms will be designed for a variety of platforms including clusters, shared memory systems and hybrid systems. Use of the MPI message passing library and OpenMP are an integral part of the course. 
CS6345Spatial Data Structures3
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 Data Base Security3
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 Geometry3T
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 3913.
CS6375Linear Programming3T
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. Prerequisites: Undergraduate Algorithms Design, Undergraduate Linear Algebra.
CS6585Database Foundations3
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 Systems3S
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 AI3A
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
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 Reasoning3T
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 3913 )
CS6735Machine Learning and Data Mining3A
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, unfirm convergence, and Fourier analysis methods.
CS6745Multiagent Systems3A
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 Agents3A
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 (desirability) 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.
CS6785User Modeling3A
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 Techniques3A
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 Synthesis3S
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 Logic3S
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).
CS6845Computer Networks for Open Systems3S
Computer Networks for Open Systems. Concepts in the architecture and implementation of large internetworks. Internetwork protocols. Internetwork routing. Transport protocols. Heterogeneous internetworks. Application protocols. Prerequisite: CS 4865 or equivalent: programming ability in a high level language, preferably C; familiarity with one operating system.
CS6865Introduction to Data Communications and Networks3S
This course covers the fundamentals of data communications and their application in modern data networks, with particular emphasis on the Internet. Topics include: the general organization of networks, data transmission, point-to-point links, multi-point links and media access, packet-switching, internetworking, end-to-end protocols (transport and application), congestion control and resource allocation, compression and other data manipulation, security, and an overview of applications. Prerequisite: CS 2023 and CS 3413 and CS 3323 or their equivalents, or consent of instructor. Students with previous exposure to data communications or networks cannot receive credit for this course.
CS6875Hardware/Software Co-Design3S
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 Systems3S
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 Communications3S
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. Prerequisites: Basic knowledge of computer communications networks, probability theory, and random processes.
CS6905Advanced Topics in Computer Science3**
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.
CS6915Complexity and Intractability3T
Foundational course in the theory of computation, covering what is possible with different types of computational resources. Topics include Turing machines, nondeterminism, reductions, decidability and undecidability, the limits of time and space resources, and complexity class hierarchies. More advanced topics will also be covered such as, but no limited to, space complexity, approximation algorithms, parallel computation, parametrized complexity, interactive proof systems, including the classes PSPACE, L, NK, PTAS, BPP, IP, NC. Prerequisites: Advanced undergraduate course in algorithm analysis and design.
CS6925Pattern Recognition3A
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 Graphics3S
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 Biology3T
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 3913 or consent of the instructor.
CS6991Algorithm Analysis3T
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 3913 or consent of instructor.
CS6993Internship Program6
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.
CS6996Master's Report9
This is a mandatory course for all graduate students entering the Master's by report program in Computer Science.
CS6997Master Thesis16
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 Studies ***3