Skip to main content

Courses

Completion of the curriculum requires 31 graduate credits.

Core Requirements

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

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


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


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


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


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


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


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

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


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


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


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


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


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

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.