Graduation Requirements for Ph.D. in Computer Science
With Master’s Degree
With Undergraduate Degree
Min. Credits (ECTS)
Min. Number of Courses
Min. Credits (ECTS)
Min. Number of Courses
Fundamental Research Course
GSE 680 Graduate Study and Seminars for Research, Innovation and Ethics
CS 900 Ph.D. Qualification Exam in Computer Science
CS 970 Ph.D. Thesis Proposal in Computer Science
CS 977 Ph.D. Thesis Study I in Computer Science
CS 978 Ph.D. Thesis Study II in Computer Science
CS 979 Ph.D. Thesis Study III in Computer Science
CS 980 Ph.D. Qualification Exam in Computer Science
Publication Requirements for Ph.D. in Computer Science
In addition to mentioned graduation requirements, a PhD candidate is requested to satisfy the following publication requirement before the thesis defense:
SCI journal publication accepted OR,
SCI-Expanded journal publication accepted.
GSE 680 Graduate Study and Seminars for Research, Innovation and Ethics
CS 900 Ph.D. Qualification Exam in Computer Science Ph.D. Qualifier Exam has two parts, namely, a written exam and an oral exam. The written part tests the breadth of knowledge in the general field of CS while the oral part tests the depth of knowledge in specific areas of CS.
CS 970 Ph.D. Thesis Proposal in Computer Science This course is the proposal stage of Ph.D. thesis where the student identifies an advanced research problem and solution methodology with his/her thesis advisor.
CS 977 Ph.D. Thesis Study I in Computer Science This course belongs to the research stage of Ph.D. thesis where the student conducts the initial phase his/her work to develop a solution for the advanced research problem identified in the proposal stage.
CS 978 Ph.D. Thesis Study II in Computer Science This course belongs to the research stage of Ph.D. thesis where the student conducts the intermediate phase his/her work to develop a solution for the advanced research problem identified in the proposal stage.
CS 979 Ph.D. Thesis Study III in Computer Science This course belongs to the research stage of Ph.D. thesis where the student conducts the final phase his/her work to develop a solution for the advanced research problem identified in the proposal stage, and publishes his/her research results in a scientific journal.
CS 980 Ph.D. Thesis Defense in Computer Science This course is the defense stage of Ph.D. thesis where the student writes and presents his/her dissertation.
CS 502 Advanced Software Engineering II This course covers topics related to the measurement of quality attributes in software products and managing software development processes. The first part of the course focuses on software process engineering and quality assurance in general. Hereby, software quality metrics, standards and software development approaches are reviewed. The second part of the course particularly focuses on the reliability quality attribute and software testing.
CS 509 Advanced C++ Programming This course aims to equip students with the modern and advanced C++ Language methodologies for solving common programming and meta-programming problems. Course is based on C++17 standard and its implications on modern day programming.
CS 511 Introduction to Robot Programming The topics include introduction of robotic fundamentals (kinematics, dynamics, trajectory planning, control) and use of these knowledge to control and program robots, and robot learning.
CS 515 Research methods in human-machine interaction The topics include introduction of basic human-machine interaction scenarios and existing research, experiment design methodology, and experimental analysis techniques used in human-machine studies.
CS 517 Network Measurements Detailed study and investigation of data collection and analysis methods for network and application-level data. Techniques to improve performance using measurements. Methods used in reverse engineering for networked applications.
CS 518 Networked Entertainment This course introduces different types of applications that enhance the world of multimedia and the Web, and the systems and data structures that are used by them. Emphasis is given to explaining the current and emerging technologies in this area.
CS 519 Parallel Computing This course covers the fundamentals of parallel computing. It discusses how to use parallel computer programing for implementing parallel algorithms.
CS 522 Computer Graphics Topics include geometric transforms, camera projections, rasterization, sampling, graphics rendering pipeline, lighting and shading, texture mapping, parametric curves and surfaces, introduction to animation and ray tracing, and OpenGL programming.
CS 523 Computer Vision This course discusses cameras and projections, feature detection and matching, stereo vision and multiple view geometry, motion estimation, object tracking, principle component analysis and some other necessary machine learning tools such as clustering and segmentation.
CS 534 Software Design Patterns This course discusses object-oriented design and development heuristics and patterns to produce flexible OO programs that are suitable for change when the requirements evolve.
CS 537 Software Product Line Engineering A software product line is a set of software systems that are built based on a shared library of common assets, satisfying the needs of a market segment. As opposed to traditional paradigms, which aim at developing a single software system, software product line engineering aims at developing a family of software products. This course introduces software product lines and software product line development processes. Topics of the course include software reuse, domain engineering, application engineering, variability management and product management. A course project is assigned for gaining hands-on practice with the state-of-the-art tools and techniques developed for the design and evaluation of software product lines.
CS 538 Design of Software Architectures The course introduces the concept of a software architecture and general design principles such as modularity. Best practices, a set of popular architectural styles (design patterns) are discussed by emphasizing their advantages and disadvantages. Finally, the course focuses on documentation, reverse engineering, visualization and evaluation of software architecture designs based on several quality attributes such as maintainability and reliability. A course project is assigned for gaining hands-on practice with the state-of-the-art tools developed for software architecture design and evaluation.
CS 542 Network Security Principles of network security. Basics of cryptography. The concepts of authentication, access control, sandboxing and network exploits. Security issues in Internet protocols: TCP, DNS, and routing. Network defense tools: Firewalls, VPNs, Intrusion Detection, and filters. Unwanted traffic: denial of service attacks. Secure network programming exercises. State-of-art network security techniques.
CS 544 Compilers This course covers the structure of general-purpose compilers, including their front-end, intermediate representation, back-end, and the algorithms and data structures used in these modules.
CS 545 Deep Reinforcement Learning This course presents introductory material for a branch of machine learning, called Reinforcement Learning, that aims to build models that learn intelligent action planning. Reinforcement learning models are at present actively used in robot control, building artificial intelligence engines of computer games, and autonomous driving. The course approaches reinforcement learning from a deep learning perspective. It also covers practical aspects of constructing deep neural network architectures that can perform reinforcement learning.
CS 546 Security for Emerging Network Technologies Security primitives, basics of cryptography, Security (for/via) Software Defined Networking, Peer to Peer Networks (Distributed Hash Tables), Blockchain Technology, Security (for/via) Multi Access Edge Computing (Cloud Computing), Security of Internet of Things.
CS 547 Computer Networks Principles of data communications between computers and other computing machines. Overview of computer networking. ISO-OSI layered model as a framework. Basics of the Internet applications. TCP/IP protocol suite. Network congestion and its control. Aspects of reliable and efficient data transmission. Routing. Protocol design and analysis. Data link layer. Local area networks. Assessment of network performance. Network programming exercises.
CS 549 Introduction to Natural Language Processing This course studies the theory, design and implementation of natural language processing systems. Topics include word vector representations, language models, tagging and parsing, text classification, machine translation, speech processing, coreference resolution, question answering.
CS 550 Distributed Systems and Cloud Computing In this course students learn advanced principles of distributed systems and cloud computing including different architectural styles, inter-process communication, virtualization, naming, distributed synchronization and consensus, replication and consistency, fault tolerance, and security issues. They gain practical skills on designing, implementing or using large-scale infrastructure and platform cloud services. Topics covered also include Internet of Things (IoT), Amazon Web Services, IBM Bluemix, and Microsoft Azure, Apache Hadoop, and Google Cloud service.
CS 551 Introduction to Artificial Intelligence The aim of this course is to introduce to the students main concepts and techniques of Artificial Intelligence (AI). Also, the course targets equipping the students with the ability of building intelligent computational systems. Major topics of the course include: intelligent agents, heuristic search, planning, constraint satisfaction, knowledge representation & reasoning, and machine learning.
CS 552 Data Science with Python This course aims to equip graduate students with the practical Machine Learning skills to solve real-life Data Science problems using existing tools and Python programming language. The following topics will be covered during the lectures:
Introduction to Python
Machine Learning with Python
CS 554 Introduction to Machine Learning and Artificial Neural Networks Course introduces and teaches standard techniques in neural networks and machine learning Topics to be covered;
Concept of (machine) learning
Methods inspired from (real) neural networks of the brain (perceptron learning, Hopfield networks, feedforward networks etc.)
CS 556 Big Data Analytics The course discusses data mining and machine learning algorithms for analyzing very large amounts of data. The emphasis is on Map Reduce as a tool for creating parallel algorithms that can process very large amounts of data. This course covers topics related to Frequent item sets and Association rules, Near Neighbor Search in High Dimensional Data, Locality Sensitive Hashing (LSH), Dimensionality reduction, Recommendation Systems, Clustering, Link Analysis, Large scale supervised machine learning, Data streams, Mining the Web for Structured Data, and Web Advertising.
CS 557 Deep Natural Language Processing This course studies the theory, design and implementation of natural language processing systems using deep learning models. Topics include neural language models, word embeddings, CNNs and RNNs and their application to NLP tasks, attention mechanism and question answering.
CS 558 Introduction to Statistical Machine Learning This course covers modern statistical inference techniques from a machine learning perspective. The concept of prior knowledge is introduced and its principled incorporation into a learning model is discussed. Modern approximate inference techniques that lie at the heart of the present machine learning research are explained in great detail. The course culminates with the recent developments on how these techniques can be applied to perform deep learning.
CS 559 Advanced Natural Language Processing This course studies topics like reinforcement learning, multi-task learning and semi-supervised learning in the context of NLP. This course covers more advance NLP tasks like coreference resolution, question answering, speech processing, machine translation and text-to-speech. Topics also include parsing, document-level models, debugging neural networks and error analysis in NLP.
CS 560 Information Retrieval and Search Engines This course studies the theory, design, implementation and evaluation of text-based information retrieval systems. Topics include search engine architectures, crawling, indexing, retrieval models, ranking algorithms, link-based algorithms, clustering and classification, evaluation methods and text mining.
CS 561 Semantic Web Engineering Semantic Web is the new generation of the Web where information and services are formally and clearly defined. It allows humans and machines to understand the content in the Web, and allows interoperability of different systems. The purpose of this course is to introduce students the fundamentals of Semantic Web and practical aspects of Semantic Web technologies. The topics include; Description Logics, W3C knowledge representation standards (RDF/RDF-S, OWL, RDFa, etc.), and SPARQL semantic query language.
CS 562 Collective Decision Making in Multiagent Systems This course provides an overview of collective decision making within multiagent systems and its main concepts, theories, and algorithms. It covers utility theory, game theory, preference aggregation, voting methods, principles of automated negotiation, and (group) recommender systems.
CS 563 Advanced FPGA Design and Computer Arithmetic The course introduces advanced design techniques and approaches in FPGA and ASIC design, which include timing, area, power, and memory bandwidth optimization. It also uses RTL generation techniques for design automation. It covers some fundamental problems in computer arithmetic as well as not so fundamental problems.
CS 566 Introduction to Deep Learning This course discusses fundamental deep learning subjects such as convolutional neural networks, supervised classification, logistic regression, cross entropy. It further analyzes numerical stability of training, its importance on measuring performance. Course also applies fine tuning performance parameters and introduce various methods for fast convergence of training.
CS 567 Advanced Deep Learning This course aims to advance the basic practical knowledge of Deep Learning to the level of understanding and advancing state of the art approaches for Deep Learning.
CS 568 Contemporary Topics in Networking Brief overview of the de facto protocols for switching, routing and transport. Detailed study and analysis of newly proposed protocols. Emerging networked application paradigms including IoT, security and distributed systems. New technologies being adopted in networking.
CS 571 Social Network Analysis This course covers topics related to social network with a major emphasize on online social networks. It starts with basics of graph theory and then continues with strong and weak ties in graphs, study networks in various context and the relationships between the nodes of the graph. It discusses basic random graph models, small-world networks, and community detection in online social networks. Finally, it covers how information disseminates in networks, and opinion formation.
CS 575 Software Testing and Analysis This course focuses on improving software product quality by applying testing and analysis techniques. The covered topics include testing strategies and techniques, metrics for measuring the effectiveness of testing, analysis techniques for localizing faults in a program, test automation and tools, and testing process
CS 576 Agile Software Development This course introduces Agile Software Development methodology. The course starts with a brief overview of software development processes, perspectives on software quality, the emergence of agile methods and their distinctive features. General principles, basic values and practices of agile methods are introduced with a discussion on when, where and how these methods are successful. Existing agile approaches are reviewed and some of the most popular approaches are studied in depth, namely XP, Scrum and Lean Software Development. Introduced methods, techniques and tools are practiced with short exercises and a term project. Additional side topics include software metrics, patterns and test-driven development that are utilized by agile methods.
CS 577 Android Application Development Students learn how to setup their programming environment to develop Android applications. They are exposed to the application lifecycle and activity model. This is a practice-oriented course in which students learn the user-interface components and layouts, data storage, content providers, the MVC pattern, security concerns, and web services. Students develop their own applications as a course project.
CS 580 Quantum Computing The course starts with classical and probabilistic computational models and continues with the basics of quantum mechanics and quantum circuit model. Topics include quantum gates, quantum teleportation, superdense coding, Deutsch-Josza algorithm, Simon’s algorithm, Grover’s algorithm, quantum Fourier Transform, Shor’s algorithm, quantum key distribution.
CS 590 Special Topics in Computer Science I: Computer Systems In this course, students study recent scientific publications to gain understanding of the state of the art in a research topic in computer systems. Research gaps are identified and one of these gaps is addressed.
CS 592 Special Topics in Computer Science III: Computational Methods for Intelligent Behavior In this course, students study recent scientific papers to gain understanding on the state of the art in behavior understanding and generation from a computational perspective. The focus is on action understanding, reinforcement learning, inverse reinforcement learning and their applications to robotics.
CS 593 Special Topics in Computer Science IV: Software Engineering In this course, students study recent scientific publications to gain understanding of the state of the art in a research topic in software engineering. Research gaps are identified and one of these gaps is addressed.
CS 594 Special Topics in Computer Science V: Artificial Intelligence In this course, students study recent scientific publications to gain understanding of the state of the art in a research topic in Artificial Intelligence. Research gaps are identified and one of these gaps is addressed.
CS 595 Special Topics in Computer Science VI: Recent Advances in Computer Vision In this course, a special topic is chosen by the student and approved by the advisor. Students display knowledge in design, analysis and validation with baseline and innovative approach. This enables the students to broaden innovation skills and exemplify in a practical problem. Students are expected to show current design, analysis (analytical and numerical), and experimental validation. -, student comes with an innovative approach and show that his/her design provides unique advantages. As a closure, students are expected to analyze economic and environmental impacts of the proposed ideas.
CS 596 Special Topics in Computer Science VII: Recent Advances in Deep Learning In this course, a special topic is chosen by the student and approved by the instructor. Students display knowledge in design, analysis and validation with baseline and innovative approach. This enables the students to broaden innovation skills and exemplify in a practical problem. Students are expected to show current design, analysis (analytical and numerical), and experimental validation. -, student comes with an innovative approach and show that his/her design provides unique advantages. As a closure, students are expected to analyze economical and environmental impacts of the proposed ideas.