Courses
Completion of the curriculum requires 31 graduate credits.
Core Requirements
CSC 600 - Computer Science Graduate Orientation
Units: 1
Introduction for new graduate students to [a] information about graduate program, department, and university resources, and [b] research projects conducted by CSC faculty.
Offered in Fall and Spring
At least three courses must be taken from the following list of core courses, one taken from one category, and two taken from the other category:
Category 1: Theory
CSC 503 - Computational Applied Logic
Units: 3
Introduction to the conceptual and formal apparatus of mathematical logic, to mathematical concepts underlying the process of logical formalization, and to the applications of various logics across a broad spectrum of problems in computer science and artificial intelligence.
Offered in Fall Only
CSC 505 - Design and Analysis Of Algorithms
Units: 3
Algorithm design techniques: use of data structures, divide and conquer, dynamic programming, greedy techniques, local and global search. Complexity and analysis of algorithms: asymptotic analysis, worst case and average case, recurrences, lower bounds, NP-completeness. Algorithms for classical problems including sorting, searching and graph problems [connectivity, shortest paths, minimum spanning trees].
Offered in Fall Spring Summer
CSC 512 - Compiler Construction
Units: 3
The course will concentrate on the theory and practice of compiler-writing. Topics to be covered will include techniques for parsing, code generation, and optimization. Furthermore, the theoretical underpinnings of compilers such as LR parsing will be covered. Finally, the students will be exposed to compiler construction tools, and will obtain hands-on experience in building a compiler for a small programming language. Besides the listed prerequisite courses, other helpful courses include CSC 253, CSC 224, CSC 234, and MA 121.
Offered in Fall Only
CSC 514 - Foundations of Cryptography
Units: 3
Cryptography is the study of mathematical techniques for securing digital information, systems and distributed computation against adversarial attacks. In this class you will learn the concepts and the algorithms behind the most used cryptographic protocols: you will learn how to formally define security properties and how to formally prove/disprove that a cryptographic protocol achieves a certain security property. You will also discover that cryptography has a much broader range of applications. It solves absolutely paradoxical problems such as proving knowledge of a secret without ever revealing the secret [zero-knowledge proof], or computing the output of a function without ever knowing the input of the function [secure computation]. Finally, we will look closely at one of the recent popular application of cryptography: the blockchain technology. Additionally, graduate students will study some of the topics in greater depth.
Offered in Fall Only
CSC 565 - Graph Theory
Units: 3
Basic concepts of graph theory. Trees and forests. Vector spaces associated with a graph. Representation of graphs by binary matrices and list structures. Traversability. Connectivity. Matchings and assignment problems. Planar graphs. Colorability. Directed graphs. Applications of graph theory with emphasis on organizing problems in a form suitable for computer solution.
Offered in Spring Only
YEAR: Offered Alternate Even Years
CSC 579 - Introduction to Computer Performance Modeling
Units: 3
Workload characterization, collection and analysis of performance data, instrumentation, tuning, analytic models including queuing network models and operational analysis, economic considerations.
Offered in Fall and Spring
CSC 580 - Numerical Analysis I
Units: 3
Algorithm behavior and applicability. Effect of roundoff errors, systems of linear equations and direct methods, least squares via Givens and Householder transformations, stationary and Krylov iterative methods, the conjugate gradient and GMRES methods, convergence of method.
Offered in Fall Only
CSC 707 - Automata, Languages and Computability Theory
Units: 3
Formal models of language and computation; finite automata and regular languages, pushdown automata and context-free languages, Turing machines. Relative power of models, Chomsky hierarchy. Inherent complexity of problems: undecidability, computational complexity, intractable problems.
Offered in Fall Only
Category 2: Systems
CSC 501 - Operating Systems Principles
Units: 3
Fundamental issues related to the design of operating systems. Process scheduling and coordination, deadlock, memory management and elements of distributed systems.
Offered in Fall and Spring
CSC 506 - Architecture Of Parallel Computers
Units: 3
The need for parallel and massively parallel computers. Taxonomy of parallel computer architecture, and programming models for parallel architectures. Example parallel algorithms. Shared-memory vs. distributed-memory architectures. Correctness and performance issues. Cache coherence and memory consistency. Bus-based and scalable directory-based multiprocessors. Interconnection-network topologies and switch design. Brief overview of advanced topics such as multiprocessor prefetching and speculative parallel execution. Credit is not allowed for more than one course in this set: ECE 406, ECE 506, CSC 406.
Offered in Fall Spring Summer
CSC 510 - Software Engineering
Units: 3
An introduction to software life cycle models; size estimation; cost and schedule estimation; project management; risk management; formal technical reviews; analysis, design, coding and testing methods; configuration management and change control; and software reliability estimation. Emphasis on large development projects. An individual project required following good software engineering practices throughout the semester.
Offered in Fall Spring Summer
CSC 520 - Artificial Intelligence I
Units: 3
Introduction to and overview of artificial intelligence. Study of AI programming language such as LISP or PROLOG. Elements of AI problem-solving technique. State spaces and search techniques. Logic, theorem proving and associative databases. Introduction to knowledge representation, expert systems and selected topics including natural language processing, vision and robotics.
Offered in Fall and Spring
CSC 720 - Artificial Intelligence II
Units: 3
A second course in artificial intelligence emphasizing advanced concepts of AI including logic programming, automatic programming, natural language understanding, visual perception by machine, learning and inference, intelligent computer-aided instruction, knowledge representation, robotics and other topics to be chosen by instructor. Students asked to write programs in AI programming language such as LISP and PROLOG.
Offered in Spring Only
CSC 540 - Database Management Concepts and Systems
Units: 3
Advanced database concepts. Logical organization of databases: the entity-relationship model; the relational data model and its languages. Functional dependencies and normal forms. Design, implementation, and optimization of query languages; security and integrity, consurrency control, transaction processing, and distributed database systems.
Offered in Fall and Spring
CSC 561 - Principles of Computer Graphics
Units: 3
Fundamentals of the OpenGL API. 2D and 3D transformations, perspective and orthographic projection, and the mathematical foundations that underlie these concepts. Geometric primitives, clipping, depth buffering, scan conversion, and rasterization. Lighting, shadows, and texture mapping. Curves and surfaces.
Offered in Fall Only
CSC 570 - Computer Networks
Units: 3
General introduction to computer networks. Discussion of protocol principles, local area and wide area networking, OSI stack, TCP/IP and quality of service principles. Detailed discussion of topics in medium access control, error control coding, and flow control mechanisms. Introduction to networking simulation, security, wireless and optical networking.
Offered in Fall Spring Summer
CSC 573 - Internet Protocols
Units: 3
Principles and issues underlying provision of wide area connectivity through interconnection of autonomous networks. Internet architecture and protocols today and likely evolution in future. Case studies of particular protocols to demonstrate how fundamental principles applied in practice. Selected examples of networked clinet/server applications to motivate the functional requirements of internetworking. Project required.
Offered in Fall and Spring
CSC 574 - Computer and Network Security
Units: 3
This course presents foundational concepts of computer and network security and privacy. It covers a wide breadth of concepts, including; Fundamentals of computer security and privacy, including security models, policies, and mechanisms; Cryptography for secure systems, including symmetric and asymmetric ciphers, hash functions, and integrity mechanisms; Authentication of users and computers; Network attacks and defenses at the network and application layers; Common software vulnerabilities and mitigation strategies; Secure operating systems and seminal access control models and policies; Principles of intrusion detection; Privacy, including considerations of end-user technologies.
Offered in Fall and Spring
Advanced or specialized versions of core courses may be used as substitutes (e.g., CSC 720 (AI II) may substitute for CSC 520 (AI), and CSC 573 (Internet Protocols) may substitute for CSC 570 (Computer Networks)). Special topics courses (CSC 59x or 79x) may not be used to satisfy core course requirements.
Additionally:
- At least 21 hours must be in graduate 500- and 700-level Computer Science courses. (Note: the Graduate School does not allow 500- and 700-level courses to be taken pass-fail.)
- "Restricted elective" courses may be any graduate letter-graded (500- or 700-level) course within the College of Engineering (including Computer Science), or within the College of Sciences. Exceptions that will *not* count towards graduation:
- ST 511(if taken after Spring 2014)
- special topics courses (including EGR 590) in departments other than Computer Science (if taken after Fall 2012).
- All Computer Science credits must be at or above the 500 level. At most 3 credits outside of Computer Science may be at the 400 level.
- To graduate, a student must have at least a 3.00 grade point average (GPA). In addition, for students beginning their degree on or after Fall 2013, the GPA in the group of courses used to satisfy the core course requirement must be at least 3.0 as well. See the Graduate Handbook for additional Graduate School regulations concerning grades.
- A maximum of four special topics courses (either CSC 591 or CSC 791) may be counted towards graduation (for students beginning Fall 2012 or later).
- Registration by MCS students in Independent Study (CSC 630) requires approval by the faculty member who will supervise the work, followed by submission to the DGP of a one page written description of the topic and expected outputs, and approval of the DGP. A grade of "S" will require submission of a report describing the work done, and the results obtained. A maximum of three credits of CSC 630 may be counted towards graduation.
- Minors are neither required nor permitted.