University Catalog 2023-2024

Computer Science

The flagship degree is the Ph.D. in Computer Science, which prepares students for leadership positions in academia, industry research labs, and government.   Alternatively, the master's degree program offers the Master of Science (thesis) and the Master of Computer Science (non-thesis, available via either distance learning or on-campus enrollment).  There is also a Master of Computer Networking degree provided jointly through the Computer Science and the Electrical and Computer Engineering departments (see Computer Networking).  Our graduate students also benefit from access to specialized career services.  This includes the Corporate & Career Services suite, with opportunities for on-campus interviews, small group career workshops, virtual practice interviews, and individual career advising.

Admissions Requirements

Minimum application requirements include an accredited Bachelor's degree with at least a B average and, for non-Computer Science majors, strong academic performance in computer science and mathematics.  Applicants must also submit the GRE General Test scores and international applicants must provide TOEFL or IELTS scores, as proof of English proficiency.  We also ask for a Statement of Purpose to be included with the application as well as three professional or academic recommendations.

Those interested in developing their computer science knowledge and skills, but not ready to commit to a degree program, might consider one of our graduate certificates.  Refer to the Graduate Certificate Programs listed in the selection under Computer Science.

Student Financial Support

Financial aid is offered to all admitted PhD students.  Masters students are not eligible for graduate assistantships until they have completed their first or second semester with a 3.0 or higher average.  However, students in our masters program have the opportunity to secure rewarding summer and winter internships.

Faculty

Department Head

  • Gregory E. Rothermel, Professor

Distinguished University Research Professor

  • Donald L. Bitzer

Distinguished Professors

  • Tiffany M. Barnes
  • Mladen A. Vouk, Vice Chancellor for Research Development
  • Laurie A. Williams, Co-Director - NCSU Science of Security Lablet

Distinguished University Professor

  • James C. Lester II, Director of the Center for Educational Informatics
  • Michael A. Rappa, Director, Institute for Advanced Analytics

Alumni Distinguished Graduate Professor

  • Georgios N. Rouskas, Director of Graduate Programs
  • Munindar P. Singh, Co- Director - NCSU Science of Security Lablet

Full Professor

  • Min Chi
  • Rada Y. Chirkova
  • Huaiyu Dai
  • Rudra Dutta, Associate Department Head
  • William H. Enck, Director of Wolfpack Security & Privacy Research (WSPR) Laboratory
  • Edward F. Gehringer
  • Xiaohui (Helen) Gu
  • Christopher G. Healey, Goodnight Distinguished Professor Analytics, Institute for Advanced Analytics
  • Steffen Heber
  • Timothy J. Menzies
  • R. Frank Mueller
  • Xipeng Shen
  • Matthias F. M. Stallmann
  • R. Raju Vatsavai

Associate Professors

  • Wesley K. G. Assunção
  • Marcelo d'Amorim
  • Zhishan Guo
  • Khaled Harfoush
  • Arnav H. Jhala
  • Alexandros Kapravelos
  • Sandeep K. Kuttal
  • Xu Liu
  • Collin F. Lynch
  • Noboru Matsuda
  • Kemafor Anyanwu Ogan
  • Sharath Kumar Raghvendra
  • Bradley G. Reaves
  • David L. Roberts, Assistant Director of Undergraduate Programs
  • Alessandra Scafuro
  • Muhammad Shahzad
  • Donald R. Sheehy
  • Kathryn T. Stolee
  • Sharma Vallin Thankachan
  • Benjamin A. Watson
  • Wujie Wen

Assistant Professors

  • Samira Mirbagher Ajorpaz
  • Veronica M. Cateté
  • Anupam Das
  • Shiyan Jiang
  • Jung -Eun Kim
  • Chin Ho Lee
  • Jiajia Li
  • Jianqing Liu
  • Xiaorui Liu
  • Yuchen Liu
  • John-Paul Ore
  • Thomason W. Price
  • Dongkuan (DK) Xu
  • Dominik Wermke
  • Bowen Xu
  • Chenhan Xu
  • Man Ki Yoon
  • Ruozhou Yu

Teaching Professor

  • Sarah S. Heckman, Director of Undergraduate Programs

Teaching Associate Professors

  • Kimberly J. Titus
  • Tzvetelina (Lina) Battestilli
  • Jamie A Jennings
  • Jason T. King
  • Chandrika Satyavolu
  • Jessica Y. Schmidt
  • David B. Sturgill

Teaching Assistant Professors

  • Suzanne M. Balik
  • Abida Haque
  • Caio Batista de Melo
  • Alexander Card
  • Ignacio X. Dominguez
  • Adam Gaweda
  • Shuyin Jiao
  • Sterling M. McLeod

Lecturers

  • B. Jasmine Adams, Director of Undergraduate Advising
  • Margaret Heil, Director of Senior Design Center
  • ToniAnn Marini, Assistant Director of Undergraduate Advising

Research Professor

  • Franc Brglez

Assistant Research Professor

  • Bita Akram

Director

  • Leslie Rand-Pickett, Graduate Career Services

Emeritus Faculty

  • Dennis R. Bahler
  • Wu-show Chou
  • Jon Doyle
  • Edward W. Davis, Jr.
  • Robert J. Fornaro
  • Thomas L. Honeycutt
  • David F. McAllister
  • Harry Perros
  • Douglas S. Reeves
  • Woodrow Robbins
  • Carla D. Savage
  • William J. Stewart
  • Alan L. Tharp
  • David J. Thuente

Adjunct Faculty

  • Ram Chillarege
  • Aldo Dagnino
  • Steven Hunter
  • Chris Martens
  • Wookhee Min
  • Peng Ning
  • Christopher Parnin
  • Injong Rhee
  • Robert St. Amant
  • Xiaogang (Cliff) Wang
  • Tao Xie

Courses

CSC 501  Operating Systems Principles  (3 credit hours)  

Fundamental issues related to the design of operating systems. Process scheduling and coordination, deadlock, memory management and elements of distributed systems.

Prerequisite: CSC 246, CSC 316 and MA 421

Typically offered in Fall and Spring

CSC 503  Computational Applied Logic  (3 credit hours)  

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.

Prerequisite: CSC 333 of LOG 335 or LOG 435

Typically offered in Fall only

CSC 505  Design and Analysis Of Algorithms  (3 credit hours)  

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).

Prerequisite: CSC 316 and CSC 226

Typically offered in Fall, Spring, and Summer

CSC 506/ECE 506/ECE 406/CSC 406  Architecture Of Parallel Computers  (3 credit hours)  

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.

Typically offered in Fall, Spring, and Summer

CSC 510  Software Engineering  (3 credit hours)  

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.

Prerequisite: CSC 316 and CSC 226

Typically offered in Fall, Spring, and Summer

CSC 512/CSC 412  Compiler Construction  (3 credit hours)  

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.

Prerequisites: Graduate standing and CSC 316 and CSC 333 or equivalent classes.

Typically offered in Fall only

CSC 513  Electronic Commerce Technology  (3 credit hours)  

Exploration of technological issues and challenges underlying electronic commerce. Distributed systems; network infrastructures; security, trust, and payment solutions; transaction and database systems; and presentation issues. Project required. No Audits.

Prerequisite: CSC 501

Typically offered in Spring only

CSC 514/MA 414/MA 514/CSC 414  Foundations of Cryptography  (3 credit hours)  

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.

Prerequisite: (CSC 226 AND CSC 333) OR MA 225

Typically offered in Fall only

CSC 515  Software Security  (3 credit hours)  

Introduces students to the discipline of designing, developing, and testing secure and dependable software-based systems. Students will learn about risks and vulnerabilities, and effective software security techniques. Topics include common vulnerabilities, access control, information leakage, logging, usability, risk analysis, testing, design principles, security policies, and privacy. Project required.

Prerequisite: CSC 510

Typically offered in Spring only

CSC 517/ECE 517  Object-Oriented Design and Development  (3 credit hours)  

The design of object-oriented systems, using principles such as the GRASP principles, and methodologies such as CRC cards and the Unified Modeling Language (ULM). Requirements analysis. Design patterns Agile Methods. Static vs. dynamic typing. Metaprogramming. Open-source development practices and tools. Test-first development. Project required, involving contributions to an open-source software project.

Prerequisite: CSC 326 or ECE 309

Typically offered in Fall and Spring

CSC 519  DevOps: Modern Software Engineering Practices  (3 credit hours)  

Modern software development organizations require entire teams of DevOps to automate and maintain software engineering processes and infrastructure vital to the organization. In this course, you will gain practical exposure to the skills, tools, and knowledge needed in automating software engineering processes and infrastructure. Students will have the chance to build new or extend existing software engineering tools and design a DevOps pipeline.

Prerequisite: CSC 510 or (graduate or senior standing with at least a 3.0 GPA) and good knowledge of at least one high level programming language

Typically offered in Fall and Spring

CSC 520  Artificial Intelligence I  (3 credit hours)  

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.

Prerequisite: CSC 316 and either CSC 226 or LOG 201 or LOG 335 or background in symbolic logic

Typically offered in Fall and Spring

CSC 522/CSC 422  Automated Learning and Data Analysis  (3 credit hours)  

This course provides an introduction to concepts and methods for extracting knowledge or other useful forms of information from data. This activity, also known under names including data mining, knowledge discovery, and exploratory data analysis, plays an important role in modern science, engineering, medicine, business, and government. Students will apply supervised and unsupervised automated learning methods to extract patterns, make predictions and identify groups from data. Students will also learn about the overall process of data collection and analysis that provides the setting for knowledge discovery, and concomitant issues of privacy and security. Examples and projects introduce the students to application areas including electronic commerce, information security, biology, and medicine. Students cannot get credit for both CSC 422 and CSC 522.

Prerequisite: CSC 226 or LOG 201, ST 370, MA 305 or MA 405

Typically offered in Fall and Spring

CSC 530  Computational Methods for Molecular Biology  (3 credit hours)  

Computer algorithms supporting genomic research: DNA sequence comparison and assembly, hybridization mapping, phylogenetic reconstruction, genome rearrangement, protein folding and threading.

Prerequisite: CSC 316, Corequisite: CSC 505

Typically offered in Fall only

CSC 533  Privacy in the Digital Age  (3 credit hours)  

Privacy is a growing concern in our modern society. We interact and share our personal information with a wide variety of organizations, including financial and healthcare institutions, web service providers and social networks. Many times such personal information is inappropriately collected, used or shared, often without our awareness. This course introduces privacy in a broad sense, with the aim of providing students an overview of the challenging and emerging research topics in privacy. This course will expose students to many of the issues that privacy engineers, program managers, researchers and designers deal with in industry. ST 370 is recommended but not mandatory.

Prerequisite: CSC 316

Typically offered in Fall only

CSC 537  Systems Attacks and Defenses  (3 credit hours)  

This class will: explore several aspects of security research with the goal of understanding the attacker's mindset; help the students to develop a foundation and a well-rounded view of security research; and cover some of the state-of-the-art attack/defense techniques and ongoing research activities in a number of topics in software security, web security, privacy and network security.

P: CSC 246 and CSC 401 or equivalent

Typically offered in Spring only

CSC 540  Database Management Concepts and Systems  (3 credit hours)  

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.

Prerequisite: CSC 316

Typically offered in Fall and Spring

CSC 541  Advanced Data Structures  (3 credit hours)  

Complex and specialized data structures relevant to design and development of effective and efficient software. Hardware characteristics of storage media. Primary file organizations. Hashing functions and collision resolution techniques. Low level and bit level structures including signatures, superimposed coding, disjoint coding and Bloom filters. Tree and related structures including AVL trees, B*trees, tries and dynamic hashing techniques.

Prerequisite: CSC 316

Typically offered in Spring only

CSC 542/ECE 542  Neural Networks  (3 credit hours)  

Techniques for the design of neural networks for machine learning. An introduction to deep learning. Emphasis on theoretical and practical aspects including implementations using state-of-the-art software libraries. Requirement: Programming experience (an object-oriented language such as Python), linear algebra (MA 405 or equivalent), and basic probability and statistics.

Typically offered in Fall and Spring

CSC 546/ISE 546  Management Decision and Control Systems  (3 credit hours)  

Planning, design, and development and implementation of comprehensive computer-based information systems to support management decisions. Formal information systems principles; information requirements analysis; knowledge acquisition techniques; information modeling. Information resource management for quality operational control and decision support; system evaluation, process improvement and cost effectiveness.

Prerequisite: CSC 423 or BUS 541

Typically offered in Fall only

CSC 547/ECE 547  Cloud Computing Technology  (3 credit hours)  

Study of cloud computing principles, architectures, and actual implementations. Students will learn how to critically evaluate cloud solutions, how to construct and secure a private cloud computing environment based on open source solutions, and how to federate it with external clouds. Performance, security, cost, usability, and utility of cloud computing solutions will be studied both theoretically and in hands-on exercises. Hardware-, infrastructure-, platform-, software-, security-, - "as-a-service".

Prerequisites: CSC 501 and either ECE/CSC 570 or ECE/CSC 573

Typically offered in Spring only

CSC 548  Parallel Systems  (3 credit hours)  

Basic concepts of parallel computation; parallel programming models and algorithm design; load balancing and performance optimization; parallel I/0 and high-end storage systems; high performance parallel applications.

Prerequisite: CSC 246 or CSC 451 or CSC 501

Typically offered in Fall only

CSC 554  Human-Computer Interaction  (3 credit hours)  

Basic theory and concepts of human-computer interaction. Human and computational aspects. Cognitive engineering. Practical HCI skills. Significant historical case studies. Current technology and future directions in user interface development.

Prerequisite: CSC 316

Typically offered in Spring only

CSC 555  Social Computing and Decentralized Artificial Intelligence  (3 credit hours)  

This course surveys the field of social computing, introducing its key concepts, paradigms, and techniques. Specific topics are selected from the following list: social media and social network analytics, sociological underpinnings, crowdsourcing and surveys, human computation, social mobilization, human decision making, voting theory, judgment aggregation, prediction markets, economic mechanisms, incentives, organizational modeling, argumentation, contracts, norms, mobility and social context, sociotechnical systems, and software engineering with and for social computing. This course incorporates ideas from diverse disciplines (including sociology, psychology, law, economics, political science, logic, statistics, philosophy, business) to provide essential background for future computer science careers in industry and research.

Typically offered in Fall only

CSC 561  Principles of Computer Graphics  (3 credit hours)  

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.

Prerequisite: CSC Majors

Typically offered in Fall only

CSC 562  Introduction to Game Engine Design  (3 credit hours)  

This course offers an advanced discussion of topics in computer graphics, with an emphasis on rendering techniques and GPU shader programming used in computer game engine design. Students are required to implement a medium-size game program that includes modeling and rendering, 2D physics, and animation of dynamic objects. Students will learn about GPU basics, mathematics of transformations, visual appearance properties, texturing, global illumination, and toon shading in computer games.

Prerequisites: CSC 561 or CSC 461 or equivalent course from a previous university

Typically offered in Spring only

CSC 563  Visual Interfaces for Mobile Devices  (3 credit hours)  

The conception and creation of effective visual interfaces for mobile devices, including ideation and prototyping for useful mobile applications, the industry and architecture of mobile devices, mobile usage context, computer graphics and interfaces for mobiles, and mobile programming.

Prerequisite: CSC 554 or CSC 561

Typically offered in Spring only

CSC 565/MA 565/OR 565  Graph Theory  (3 credit hours)  

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.

Prerequisite: CSC 226 or MA 351.

Typically offered in Spring only

CSC 568  Enterprise Storage Architecture  (3 credit hours)  

An introduction to storage systems architecture in an enterprise. Begins with a review of the individual components of a system (eg, hard disk drives, network interfaces), and shows how to aggregate those into storage systems. Tradeoffs involving factors such as cost, complexity, availability, power and performance. Discussion of information management strategies, including data migration. Guest lectures by representatives from local industry. Students work in teams on a semester-long project.

Prerequisite: CSC 246 and CSC 401 and CSC 316

Typically offered in Spring only

CSC 570/ECE 570  Computer Networks  (3 credit hours)  

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.

Prerequisite: ECE 206 or CSC 312, ST 371, CSC 258 and Senior standing or Graduate standing

Typically offered in Fall, Spring, and Summer

CSC 573/ECE 573  Internet Protocols  (3 credit hours)  

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.

Prerequisite: CSC/ECE 570

Typically offered in Fall, Spring, and Summer

CSC 574/ECE 574  Computer and Network Security  (3 credit hours)  

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.

Prerequisite: (CSC 316 or ECE309) and (CSC 401 or ECE407) or equivalent

Typically offered in Fall and Spring

CSC 575/ECE 575  Introduction to Wireless Networking  (3 credit hours)  

Introduction to cellular communications, wireless local area networks, ad-hoc and IP infrastructures. Topics include: cellular networks, mobility mannagement, connection admission control algorithms, mobility models, wireless IP networks, ad-hoc routing, sensor networks, quality of service, and wireless security.

Prerequisite: ECE/CSC 570

Typically offered in Spring only

CSC 576/ECE 576  Networking Services: QoS, Signaling, Processes  (3 credit hours)  

Topics related to networking services, signaling for setting up networking services, such as SIP and IMS, networking architectures for providing QoS for networking services, such as MPLS, DiffServ and RAC, signaling protocols for setting up QoS connections in the transport stratum, such as LDP and RSVP-TE, video-based communications, and capacity planning models for dimensioning services.

Prerequisite: CSC/ECE 570

Typically offered in Fall and Spring

CSC 577/ECE 577  Switched Network Management  (3 credit hours)  

Topics related to design and management of campus enterprise networks, including VLAN design; virtualization and automation methodologies for management; laboratory use of open space source and commercial tools for managing such networks.

Typically offered in Fall only

CSC 578/ECE 578  LTE and 5G Communications  (3 credit hours)  

The course provides an introduction to the theoretical fundamentals and practical/experimental aspects of Long Term Evolution (LTE) and 5G systems. A basic understanding of digital communications and radio access networks is required. Following topics will be studied: 1) User and control plane protocols, 2) physical layer for downlink, 3) physical layer for uplink, 4) practical deployment aspects, 5) LTE-Advanced, 6) 5G communications. Fundamental concepts to be covered in the context of LTE/5G systems include OFDMA/SC-FDMA, synchronization, channel estimation, link adaptation, MIMO, scheduling, and millimeter wave systems. Students are recommended to have the prior knowledge gained from ECE 570 or ECE 582 before taking this course. The course will also require using Matlab software for homeworks, including its LTE and 5G toolboxes.

Typically offered in Fall only

CSC 579/ECE 579/OR 579  Introduction to Computer Performance Modeling  (3 credit hours)  

Workload characterization, collection and analysis of performance data, instrumentation, tuning, analytic models including queuing network models and operational analysis, economic considerations.

Prerequisite: CSC 312 or ECE 206 and MA 421

Typically offered in Fall and Spring

CSC 580/MA 580  Numerical Analysis I  (3 credit hours)  

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.

Prerequisite: MA 405; MA 425 or MA 511; high-level computer language

Typically offered in Fall only

CSC 581/CSC 481  Game Engine Foundations  (3 credit hours)  

In this course we will examine some of the components of a commercial strength game engine. We will survey different genres of games, using some of the unique design challenges each genre provides as a motivation for an in-depth examination of the affordances games engines provide for designing games of that genre. We will cover topics ranging from data structures, resource management, game loops and logical timing systems, scripting, error logging, and networking. A sequence of programming assignments will lead students through the implementation of their own game engine, which they will use to design their own game.

Prerequisite: CSC 316 or ECE 309; Restriction: CSC Majors Only

Typically offered in Fall only

CSC 582  Computer Models of Interactive Narrative  (3 credit hours)  

A theoretical and practical study of the computational models supporting the creation of interactive narrative systems. Topics include basic introductions to cognitive, linguistic and film theoretic models of narrative; representations and reasoning techniques from artificial intelligence related to the creation of storylines, dialog, camera control and other features of narrative in text-based and/or 3D virtual worlds; mechanisms for controlling character behavior in multi-agent multi-user stories; and applications of these techniques ranging from interactive entertainment to educational software to training simulations.

Typically offered in Fall only

CSC 583/MA 583  Introduction to Parallel Computing  (3 credit hours)  

Introduction to basic parallel architectures, algorithms and programming paradigms; message passing collectives and communicators; parallel matrix products, domain decomposition with direct and iterative methods for linear systems; analysis of efficiency, complexity and errors; applications such as 2D heat and mass transfer.

Prerequisite: CSC 302 or MA 402 or MA/CSC 428 or MA/CSC 580

Typically offered in Spring only

CSC 584/CSC 484  Building Game AI  (3 credit hours)  

In this course we will examine Artificial Intelligence (AI) techniques that are used in the design of computer games. We will look at techniques for game playing as well as the design of AI opponents tasked with creating "good experiences" for players. The course will begin with a discussion of general AI, common algorithms, data structures, and representations. From there, we will cover topics in character movement, pathfinding, decision making, strategy, tactics, and learning. In a sequence of programming assignments students will create increasingly sophisticated AI implementations. Students will also critically review the projects conducted by graduate students enrolled in CSC584. CSC majors only. Students cannot get credit for both CSC 484 and CSC 584.

Prerequisite: CSC 316

Typically offered in Spring only

CSC 591  Special Topics In Computer Science  (1-6 credit hours)  

Topics of current interest in computer science not covered in existing courses.

Prerequisite: B average in technical subjects

Typically offered in Fall and Spring

CSC 595  Cybersecurity Practicum  (3 credit hours)  

Application of cybersecurity principles and computer science and engineering to solve a cybersecurity problem. A project with comprehensive written and oral project report is required. Enrollment is open to Graduate Certificate in Cybersecurity (CYS GCP) students and CSC and ECE majors only.

Prerequisite: CSC/ECE 574

Typically offered in Fall only

CSC 600  Computer Science Graduate Orientation  (1 credit hours)  

Introduction for new graduate students to (a) information about graduate program, department, and university resources, and (b) research projects conducted by CSC faculty.

Typically offered in Fall and Spring

CSC 630  Master's Independent Study  (1-3 credit hours)  

Individual investigation of topics under the direction of member(s) of the graduate faculty.

Typically offered in Fall, Spring, and Summer

CSC 685  Master's Supervised Teaching  (1-3 credit hours)  

Teaching experience under the mentorship of faculty who assist the student in planning for the teaching assignment, observe and provide feedback to the student during the teaching assignment, and evaluate the student upon completion of the assignment.

Prerequisite: Master's student

Typically offered in Fall, Spring, and Summer

CSC 688  Non-Thesis Masters Continuous Registration - Half Time Registration  (1 credit hours)  

For students in non-thesis master's programs who have completed all credit hour requirements for their degree but need to maintain half-time continuous registration to complete incomplete grades, projects, final master's exam, etc.

Prerequisite: Master's student

Typically offered in Fall, Spring, and Summer

CSC 689  Non-Thesis Master Continuous Registration - Full Time Registration  (3 credit hours)  

For students in non-thesis master's programs who have completed all credit hour requirements for their degree but need to maintain full-time continuous registration to complete incomplete grades, projects, final master's exam, etc. Students may register for this course a maximum of one semester.

Prerequisite: Master's student

Typically offered in Fall, Spring, and Summer

CSC 690  Master's Examination  (1-9 credit hours)  

For students in non thesis master's programs who have completed all other requirements of the degree except preparing for and taking the final master's exam.

Prerequisite: Master's student

Typically offered in Fall, Spring, and Summer

CSC 693  Master's Supervised Research  (1-9 credit hours)  

Instruction in research and research under the mentorship of a member of the Graduate Faculty.

Prerequisite: Master's student

Typically offered in Fall, Spring, and Summer

CSC 695  Master's Thesis Research  (1-9 credit hours)  

Thesis research.

Prerequisite: Master's student

Typically offered in Fall, Spring, and Summer

CSC 696  Summer Thesis Research  (1 credit hours)  

For graduate students whose programs of work specify no formal course work during a summer session and who will be devoting full time to thesis research.

Prerequisite: Master's student

Typically offered in Summer only

CSC 699  Master's Thesis Preparation  (1-9 credit hours)  

For students who have completed all credit hour requirements and full-time enrollment for the master's degree and are writing and defending their thesis.

Prerequisite: Master's student

Typically offered in Fall, Spring, and Summer

CSC 705  Operating Systems Security  (3 credit hours)  

Fundamentals and advanced topics in operating system (OS) security. Study OS level mechanisms and policies in investigating and defending against real-world attacks on computer systems, such as self-propagating worms, stealthy rootkits and large-scale botnets. OS security techniques such as authentication, system call monitoring, as well as memory protection. Introduce recent advanced techniques such as system-level randomization and hardware virtualization.

Prerequisite: CSC 501

Typically offered in Spring only

CSC 707  Automata, Languages and Computability Theory  (3 credit hours)  

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.

Prerequisite: CSC 226 required, CSC 333 recommended

Typically offered in Fall only

CSC 710  Software Engineering as a Human Activity  (3 credit hours)  

This course addresses the human aspect of software engineering, by studying the people who practice it. Students will explore software engineering as traditionally defined, and also consider techniques that transform how we understand software engineering, such as methods from psychology and sociology. Students will study the usability of software engineering tools, the psychology of programming, performance of software developers, experimental methods in observing software engineers, distributed development and coordination, and cultural differences between software developers.

Prerequisite: CSC 510

Typically offered in Spring only

CSC 711/GIS 711  Geospatial Data Management  (3 credit hours)  

Data management principles and technologies for efficient implementation of geospatial applications. This course introduces students to: spatial and temporal data types, data models, geometry models, spatial predicates, spatial access methods, and spatial query processing. In addition, students will be exposed to modern data management systems for geospatial application development and data integration principles. Prior GIS programming knowledge and knowledge of database management systems and SQL is preferred.

Typically offered in Spring only

CSC 712  Software Testing and Reliability  (3 credit hours)  

An advanced introduction to software testing and reliability. The course is a balanced mixture of theory, practice, and application. Methods, techniques, and tools for testing software and producing reliable and secure software are used and analyzed. Software reliability growth models and techniques for improving and predicting software reliability are examined, and their practical use is demonstrated. Good knowledge of C++ or Java. Knowledge of the basics of statistics, calculus, and linear algebra.

Prerequisite: CSC 510

Typically offered in Fall only

CSC 714  Real Time Computer Systems  (3 credit hours)  

Design and implementation of computer systems required to provide specific response times. Structure of a real-time kernel, fixed and dynamic priority scheduling algorithms, rate monotonic scheduling theory, priority inheritance protocols, real-timebenchmarks, case study of a real-time kernel.

Prerequisite: CSC 451 or CSC 501

Typically offered in Spring only

CSC 720  Artificial Intelligence II  (3 credit hours)  

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.

Prerequisite: CSC 520

Typically offered in Spring only

CSC 722  Advanced Topics in Machine Learning  (3 credit hours)  

A broad range of advanced topics in machine learning, the building of computer-based systems that can adapt to their environment and learn from their own experience. Theory of learnability, technical details of various learning methods, combination of multiple methods, evaluation of methods, and related topics (at the discretion of the instructor).

Prerequisite: CSC 520

Typically offered in Fall only

CSC 724  Advanced Distributed Systems  (3 credit hours)  

Principles in the design and implementation of modern distributed systems; recent techniques used by real-world distributed systems such as peer-to-peer file sharing, enterprise data center, and internet search engines; state-of-the-art architectures, algorithms, and performance evaluation methodologies in distributed systems.

Prerequisite: CSC 501 or equivalent. Programming in C++ or Java in Unix environments

Typically offered in Spring only

CSC 742  Database Management Systems  (3 credit hours)  

Database concepts. Database design. Data models: entity-relationship and relational. Data manipulation languages including SQL. Data Dictionaries. Query processing. Concurrency. Software development environments using a database system. Expert, object-oriented, multimedia and distributed database systems. Database systems architecture. Use of a commercial database management system.

Prerequisite: CSC 431 or 541

Typically offered in Spring only

CSC 743  Secure Data Management  (3 credit hours)  

Advanced topics in secure data management with techniques in traditional database management systems as well as in recent advances in emerging areas. Emphasis on new security issues and challenges imposed by the Internet and the Web on cross-organization data sharing and management. Example topics include XML, data management in P2P, trust management, data authorship, and the integration of security and privacy policies with information systems.

Prerequisite: CSC/ECE 574 and (CSC 440 or CSC 540). Background in databases and basic security concepts required.

Typically offered in Fall only

CSC 750  Service-Oriented Computing  (3 credit hours)  

Concepts, theories, and techniques for computing with services. This course examines architectures for Web applications based on the classical publish, find, and bind triangle, but formulates it at a higher level. It considers sophisticated approaches for the description, discovery, and engagement of services, especially over the Web and the Grid. This course emphasizes service composition. Key topics include semantics, transactions, processes, agents, quality of service, compliance, and trust.

Prerequisite: CSC 540: Database Management Concepts and Systems

Typically offered in Fall only

CSC 761  Advanced Topics in Computer Graphics  (3 credit hours)  

Understanding and discussing current advances and research topics in computer graphics. Possible topics include nonphotorealistic rendering, modeling natural phenomena, illumination and rendering techniques, model simplification, animation, visualization, graphics hardware. Learning to critique research papers from important venues in the computer graphics field. Learning to read, interpret, and present computer graphics research papers in a conference-type environment.

Prerequisite: Graduate standing in Computer Science

Typically offered in Spring only

CSC 762/OR 762/ISE 762  Stochastic Simulation  (3 credit hours)  

Basic discrete event simulation methodology: random number generators, generating random objects, design of discrete event simulation, validation, analysis of simulation output, variance reduction techniques, Markov chain Monte Carlo, simulation optimization. The course has computer assignments and projects. This course is a sequel to ISE/OR 760 Stochastic Models which serves as a prerequisite. This is NOT a software based course! Students who are looking for a class on simulation software, such as Arena and Simio, are recommended to take ISE 562 (master-level simulation class).

Students should have completed a course on stochastic models (similar to ISE 560 or ISE 760) and have a working knowledge of a programming language (e.g., Python, Matlab, R, or others).

Typically offered in Fall and Spring

CSC 766  Code Optimization for Scalar and Parallel Programs  (3 credit hours)  

Advanced research issues in code optimization for scalar and parallel programs; program analysis, scalar and parallel optimizations as well as various related advanced topics.

Prerequisite: CSC 512, or CSC 548, or CSC 501

Typically offered in Spring only

CSC 772  Survivable Networks  (3 credit hours)  

Principles of network and service continuity and related metrics; the theory of network availability, survivability, and restoration; a comprehensive coverage of network architectures, protocols, algorithms, and related technology for survivability; advanced topics in network survivability; hands-on experience in the implementation of protocols and software for survivable systems and the operation of survivable networks.

Typically offered in Spring only

CSC 773/ECE 773  Advanced Topics in Internet Protocols  (3 credit hours)  

Cutting-edge concepts and technologies to support internetworking in general and to optimize the performance of the TCP/IP protocol suite in particular. Challenges facing and likely evolution for next generation intenetworking technologies. This course investigates topics that include, but may be not limited to: Internet traffic measurement, characteriztion and modeling, traffic engineering, network-aware applications, quality of service, peer-to-peer systems, content-distribution networks, sensor networks, reliable multicast, and congestion control.

Prerequisite: CSC/ECE 573

Typically offered in Spring only

CSC 774/ECE 774  Advanced Network Security  (3 credit hours)  

A study of network security policies, models, and mechanisms. Topics include: network security models; review of cryptographic techniques; internet key management protocols; electronic payments protocols and systems; intrusion detection and correlation; broadcast authentication; group key management; security in mobile ad-hoc networks; security in sensor networks.

Prerequisite: CSC/ECE 570, CSC/ECE 574

Typically offered in Spring only

CSC 775/ECE 775  Advanced Topics in Wireless Networking  (3 credit hours)  

Reviews the current state of research in wireless networks, network architectures, and applications of wireless technologies; students will design, organize, and implement or simulate systems in a full-semester research project. For students with background in networking and communications who wish to explore research and development topics.

Prerequisite: ECE/CSC 575

Typically offered in Fall only

CSC 776/ECE 776  Design and Performance Evaluation of Network Systems and Services  (3 credit hours)  

Introduction to the design and performance evaluation of network services. Topics include top-down network design based on requirements, end-to-end services and network system architecture, service level agreements, quantitative performance evaluation techniques. Provides quantitative skills on network service traffic and workload modeling, as well as, service applications such as triple play, internet (IPTV), Peer-to-peer (P2P), voice over IP (VoIP), storage, network management, and access services.

Prerequisite: CSC(ECE) 570 and CSC(ECE) 579

Typically offered in Spring only

CSC 777/ECE 777  Telecommunications Network Design  (3 credit hours)  

Analytic modeling and topological design of telecommunications networks, including centralized polling networks, packet switched networks, T1 networks, concentrator location problems, routing strategies, teletraffic engineering and network reliability.

Prerequisite: CSC(ECE) 570

Typically offered in Spring only

CSC 780/MA 780  Numerical Analysis II  (3 credit hours)  

Approximation and interpolation, Fast Fourier Transform, numerical differentiation and integration, numerical solution of initial value problems for ordinary differential equations.

Prerequisite: MA 580

Typically offered in Spring only

CSC 791  Advanced Topics In Computer Science  (1-6 credit hours)  

Advanced topics of current interest in computer science not covered by existing courses.

Typically offered in Fall and Spring

CSC 801  Seminar in Computer Science  (1-3 credit hours)  

Faculty and graduate student research presentations and discussions centered around current research problems in Computer Science and advanced theories in these areas. Students are expected to make presentations of published works and, depending onthe course credit received and their academic degree progress, present their own research results. Critical discussions of the various research approaches and results and their relationships based on the presentations and additional readings and research. Departmental Approval Required.

Prerequisite: Graduate standing

Typically offered in Fall and Spring

CSC 830  Doctoral Independent Study  (1-3 credit hours)  

Individual investigation of advanced topics under the direction of member(s) of the graduate faculty.

Typically offered in Fall, Spring, and Summer

CSC 885  Doctoral Supervised Teaching  (1-3 credit hours)  

Teaching experience under the mentorship of faculty who assist the student in planning for the teaching assignment, observe and provide feedback to the student during the teaching assignment, and evaluate the student upon completion of the assignment.

Prerequisite: Doctoral student

Typically offered in Fall and Summer

CSC 890  Doctoral Preliminary Exam  (1-9 credit hours)  

For students who are preparing for and taking written and/or oral preliminary exams.

Prerequisite: Doctoral student

Typically offered in Fall, Spring, and Summer

CSC 893  Doctoral Supervised Research  (1-9 credit hours)  

Instruction in research and research under the mentorship of a member of the Graduate Faculty.

Prerequisite: Doctoral student

Typically offered in Fall, Spring, and Summer

CSC 895  Doctoral Dissertation Research  (1-9 credit hours)  

Dissertation research

Prerequisite: Doctoral student

Typically offered in Fall, Spring, and Summer

CSC 896  Summer Dissertation Research  (1 credit hours)  

For graduate students whose programs of work specify no formal course work during a summer session and who will be devoting full time to thesis research.

Prerequisite: Doctoral student

Typically offered in Summer only

CSC 899  Doctoral Dissertation Preparation  (1-9 credit hours)  

For students who have completed all credit hour, full-time enrollment, preliminary examination, and residency requirements for the doctoral degree, and are writing and defending their dissertations.

Prerequisite: Doctoral student

Typically offered in Fall, Spring, and Summer