Course Descriptions
CSC600 Graduate Seminar [0-0, 0cr.]
This is a mandatory zero credit course that all graduate students have to pass. Students are required to attend a certain number of seminars/theses defences and make at least one presentation other than their own thesis defence and proposal. All work has to be completed within two years of registering the course.
CSC611 Design and Analysis of Algorithms [3-0, 3 cr.]
This course addresses both the fundamentals and the research boundaries of algorithm design and analysis. Covered topics include: complexity of algorithms, divide and conquer techniques, greedy methods, dynamic programming, recursive backtracking, amortized analysis, graph algorithms, polynomial-time problem reduction, NP-completeness, approximation algorithms and a selected advanced topic
CSC612 Foundations of Computer Science [3-0, 3 cr.]
This course covers finite automata and regular expressions, context-free grammars, pushdown automata, properties of regular and context-free languages, Turing machines, undecidability, computational complexity, Cook-Levin theorem and the polynomial time hierarchy.
CSC613 Computational Methods in Biology [3-0, 3 cr.]
This course covers the use of computer science methods and algorithms to solve problems related to biology, biochemistry, and/or medicine. Topics include fundamental algorithmic methods in computational molecular biology, and bioinformatics, such as protein sequence analysis, pair wise and multiple alignment, fragment assembly, probabilistic models, phylogenetic analysis, folding and structure prediction, biological structures (protein structures, RNA structures, etc…), and information that could be derived from them. The course is research-based. Students are required to read papers and articles, compare different techniques used to solve problems, and suggest alternatives.
CSC623 Knowledge-Based Systems [3-0, 3 cr.]
This course covers knowledge discovery and representation. Among the techniques used to represent knowledge, it focuses on trees, semantic networks, frames and production rules. The course covers search techniques and inferences used in knowledge based systems. It also covers topics such as theorem proving and expert systems.
CSC624 Data Mining [3-0, 3 cr.]
This course covers the fundamental techniques and applications for mining large data sets. Topics include techniques and algorithms for classification, clustering, association rules, scalable and distributed data mining algorithms, and applications.
CSC625 Discrete Event Simulation [3-0, 3 cr.]
This course covers the model construction and simulation applied to problems taken from such diverse fields as economics, social science, communication networks and computer systems. It includes programming in simulation languages such as SIMSCRIPT, SIMULA or GPSS. Students will be able to analyze a problem, and determine whether simulation techniques could be used to solve it. Students are also required to develop a viable model of the system program, and to execute a computer simulation of the model, and finally analyze the results of the simulation.
CSC634 Network Programming [3-0, 3 cr.]
This course covers methods and tools used for network programming and simulation. Covered topics include operating system support for network protocols, inter-process communication tools (such as pipes, sockets and remote procedure calls), design of client and server sides of network protocols, simulation tools for network design and analysis, in addition to experimental research topics in the area of computer networks.
CSC637: Pervasive Computing and Wireless Networking [3-0, 3 cr. ]
This course covers the fundamental principles of pervasive and mobile computing in addition to the design of state-of-the-art wireless technologies and wireless networking protocols. Topics include pervasive and mobile computing fundamentals and challenges; pervasive and mobile computing services and application areas; mobile device technologies; mobile device platforms; mobile device application development challenges; mobile device programming; wireless network architectures; WLAN, WiMAX, GSM, UMTS, and Bluetooth wireless technologies; Mobile IP; Wireless TCP; pervasive computing and wireless networking research trends.
CSC647 Parallel Algorithms and Programming [3-0, 3 cr.]
This course covers techniques and methods for parallel algorithms and programming. Topics include: models of parallel machines and programs, efficiency and complexity of parallel algorithms, paradigms of parallel programming and corresponding extensions to sequential programming languages, advanced parallel algorithms and programming on clusters and multi-core systems. The course is research oriented. In addition to lectures and exams, students are required to work on selected advanced topics for an experimental course project.
CSC650 Advanced Computer Graphics [3-0, 3 cr.]
The course covers major aspects of digital image generation: geometric modeling, computer animation, and rendering. It also covers recent advanced topics such as subdivision surfaces, real-time global illumination, and physically based animation.
CSC660 Artificial Intelligence: Principles and Techniques [3-0, 3 cr.]
The course covers computational approaches for modeling uncertainty and solving decision problems. Topics include search techniques, constraint satisfaction problems, game playing (including alpha-beta pruning), propositional logic, predicate logic, knowledge representation, planning, probabilistic reasoning, Bayesian networks and case-based reasoning. It also covers advanced topics in Artificial Intelligence such as natural language processing and robotics.
CSC690 Search-Based Software Engineering [3-0, 3 cr.]
Search-Based Software Engineering formulates Software Engineering problems as search problems and applies meta-heuristics to tackle these problems. The course introduces the most popular meta-heuristic techniques used in the domain such as Hill Climbing, Simulated Annealing, Genetic Algorithms and Ant Colony Optimization. This is focuses on how these methods can be used to solve problems from different stages of the software engineering lifecycle. Examples of such problems are stress testing real-time systems, predicting software quality, test case generation and software project scheduling.
CSC691 Advanced Software Engineering [3-0, 3cr.]
The course covers techniques for the construction of reliable and cost-effective large-scale software. Topics include process models, unified process, Unified Modelling Language requirements analysis and specification, design methods and principles, agile software development.
CSC694 Software Quality Assurance and Testing [3-0, 3 cr.]
The course covers the capability maturity model; process assessment, modeling, and improvement techniques; maintenance; quality; metrics; theoretical and practical aspects of testing software, including classical and object oriented testing methods at various testing levels.
CSC697 Managing Software Development [3-0, 3cr.]
Students will acquire knowledge and skills for developing a software project management plan; leading a project team; estimating time, cost, and effort; conducting risk analysis; and configuration management. as well as the legal issues involved in liability, warranty, patentability and copyright.
CSC713 / Introduction to Bioinformatics [3-0, 3 cr.]
This course covers the use of computer science tools to solve the problems related to biochemistry, and/or medicine. Topics include fundamental algorithmic methods in computational molecular biology, and bioinformatics, such as protein sequence analysis, pair wise and multiple alignment, probabilistic models, phylogenetic analysis, folding and structure prediction, biological structures (protein structures, RNA structures, etc.), and information that could be derived from them. The course is research-based. Students are required to read papers and articles, compare different techniques used to solve problems, and suggest alternatives.
CSC714 / Heuristic Optimization [3-0, 3 cr.]
This course will cover the basic heuristic optimization techniques in computing. This course describes a variety of heuristic search methods including serial simulated annealing, Tabu search, genetic algorithms, ant algorithms, de-randomized evolution strategy, and random walk. Algorithms will be described in serial as well as in parallel fashion. Students can select application projects from a range of application areas. The advantages and disadvantages of heuristic search methods, for both serial and parallel computation, are discussed in comparison to other optimization algorithms.
CSC715 / Machine Learning [3-0, 3 cr.]
This course provides an overview of popular algorithms in machine learning. Topics include supervised learning, linear and polynomial regression, classification algorithms, gradient descent, unsupervised learning, instance-based learning, neural networks, and genetic algorithms and boosting. The course requires some knowledge of artificial intelligence, and good programming skills. The theoretical aspects of the algorithms will be studied, and assignments will be given to test their applicability.
CSC716 / Cryptography and Data Security [3-0, 3 cr.]
This course is an advanced survey of modern topics of theory, foundations, and applications of modern cryptography. One-way functions, pseudo-randomness, encryption, authentication, public-key cryptosystems, and notions of security, are covered. The course also covers zero-knowledge proofs, multi-party cryptographic protocols, and practical applications.
CSC721 / Transaction Processing Systems [3-0, 3 cr.]
This course covers the theoretical foundations underlying commitment protocols that form the basis of transaction processing techniques. Transaction Processing systems have lots of moving parts, client-side forms, web servers, mid-tier application servers, and back-end databases. Although these components are distributed across multiple processes, these processes share state, and use specialized communication protocols and synchronization techniques. This course explains how these systems are constructed. Topics include the transaction abstraction, application servers, transactional communications, persistent queuing and workflow, software fault tolerance, concurrency control algorithms, database recovery algorithms, distributed transactions, two-phase commit, and data replication.
CSC722 / Distributed Systems [3-0, 3 cr.]
This course is an introduction to distributed systems, distributed system models, network architecture and protocols, inter-process communication, client-server models, group communication, TCP sockets, remote procedure calls, distributed objects and remote invocation, distributed file systems, file service architecture, name services, directory and discovery services, distributed synchronization and coordination, and distributed multimedia systems.
CSC731 / High Performance Computer Architecture [3-0, 3 cr.]
This course covers the concepts and examples of advanced computer systems, especially scalable parallel computers. Topics include memory-system design, advanced processor design techniques, pipelined, vector, shared-memory, and distributed-memory computer systems, parallel algorithms, and software and architectural issues for efficient parallel processing.
CSC732 / ULSI Testing [3-0, 3 cr.]
This course covers the problems of testing of Ultra Large Scale Integrated Circuits (ULSI), the design of circuits for testability, the design of built-in self-testing circuits, and the use of the IEEE Boundary Scan Standards. Topics include an introduction to the testing process, fault modeling and detection, logic and fault simulation, testability measures, test generation for combinational circuits, test generation for sequential circuits, design for testability, built-in self-test, delay testing, current testing, ATPG-based logic synthesis, system test and core-based design, and testing a system-on-a-chip.
CSC733 / Embedded Systems [3-0, 3 cr.]
This course introduces methodologies for the systematic design of embedded systems including processors, DSP, memory, and software. Topics include hardware and software aspects of embedded processor architectures, along with operating system fundamentals, system specification, architecture modeling, component partitioning, estimation metrics, hardware and software co-design and diagnostics, system interfacing basics, communication strategies, sensors and actuators, and mobile and wireless technology. Projects use pre-designed hardware and software components. The course covers design case studies in wireless, multimedia, and/or networking domains.
CSC796 / Human-Computer Interaction [3-0, 3 cr.]
This course provides a comprehensive introduction to the principles and techniques of human-computer interaction and user interface design, with a focus on highly usable software, user and task modeling, user centered design, evaluation of user interfaces, detailed discussion of many user interface design issues such as the use of coding techniques (color, icons, sound, etc.), screen and web page design, feedback and error messages, internationalization of user interfaces, response time, accessibility to the disabled, user interfaces for different types of devices, voice user interfaces, etc. This course requires students to implement user interfaces.
CSC788 / Advanced Topics in Computer Science [3 cr.]
This course covers selected topics in Computer Science. The course may be repeated for credits more than once.
CSC798 / Project [3 cr.]
This course entails independent development, and documentation of substantial software, or computer-based system, using recent or significant techniques and/or tools.
CSC799 / Thesis [6 cr.]
This course entails independent investigation of a topic of interest, in a basic or applied computer science area, with the objective of producing original results.