Graduate Special Topics
Information for the current or upcoming semester's offerings of CSC 591 and CSC 791.
These are planned classes. The CSC Department may update this list at any time. The items listed in MyPack's Enrollment Wizard will be the planned final offerings by the department, and may differ from this list.
Fall 2025
CSC 591 – 001: Computer Architecture and Multiprocessors
Pre-requisites: CSC 236 and CSC 316
Description: This section is the graduate version of CSC 456 and is cross-listed with CSC 456 – 001.
Major components of digital computers and the organization of these components into systems. Begins with single processor systems and extends to parallel systems for multiprocessing. Topics include computer organization, instruction set design, cache memory, pipelined processors, and multiprocessors. Recent developments in PC and desktop architectures are also studied.
CSC 591/791 – 002: Programmer-Centered Design and Research
Pre-requisite: CSC 554
Description: This seminar course combines 2–3 lectures with in-depth discussions on recent research in Human-Computer Interaction (HCI) and Software Engineering (SE), focusing on programmers as users. Students read and analyze research papers to explore how programmers—across different levels of expertise, gender, race, physical abilities, and neurodiversity—interact with computing systems to complete tasks and engage with cutting-edge research in this domain.
CSC 591 – 003: Advanced Cryptographic Protocols
Pre-requisite: CSC 414/514
Description: This class focuses on a specific cryptographic task (decided at the beginning of the semester) and go deep into the formal definitions of the task, the formal protocols and proofs.
This is a seminar class. Students who join this class, are expected to read academic papers and present them to the class. Students are evaluated on the competence and clarity demonstrated in the presentation, as well as a final test.
Examples of potential topics are: threshold cryptography, secure two-party computation, zero-knowledge proofs.
CSC 591/791 – 004: Optimal Transport in Machine Learning
Pre-requisite: CSC 316
Description: This course will introduce the very important topic of optimal transport and the role it is playing in machine learning. In this course, we will learn the algorithmic tools and techniques related to optimal transport, and also study its applications within machine learning. For their projects, students will either have a choice of designing/implementing algorithms for Optimal Transport or applying optimal transport in some machine learning application.
CSC 591 – 005: Algorithms on Strings
Pre-requisite: CSC 505
Description: This course is a gentle introduction to string algorithms and related data structures from a theoretical point of view. The topics can be roughly categorized into four modules as follows. The first module consists of fundamental string-matching algorithms like the Karp-Rabin algorithm, the Knuth-Morris-Pratt algorithm, and the Aho-Corasick algorithm. We will also see more complex matching problems under hamming distance and their efficient solutions using the Fast Fourier Transform (FFT). The second module will be on basic data structures such as the suffix trees, suffix arrays, and longest common prefix (LCP) array. Their linear time construction algorithms and applications in solving problems such as the longest/average common substring, shortest unique substring, maximal exact/unique matches, suffix/prefix overlap, Lempel-Ziv parsing, etc., will also be covered. The third module will be on succinct data structures and their applications in compressed text indexing. Sub-topics are rank/select queries on bit vectors and sequences, Wavelet trees, range minimum queries, Compressed Suffix Arrays, Burrows-Wheeler Transform and FM-index, compressed LCP array, etc. In the fourth module, we will see some NP-hard problems, such as the median/center string problem, shortest superstring problem, etc., and efficient approximation algorithms for solving them.
CSC 491/591 – 006: Generative AI for Computer Systems
This class is being offered by the ECE department and is cross-listed with ECE 492-055/592-106.
Pre-requisites: C++, Python, CSC 316 (495/591) and Computer Architecture (591)
Description: See syllabus: https://my.ece.ncsu.edu/grad/wp-content/uploads/sites/6/2024/11/ECE592-106_Foundations-of-Generative-AI.pdf.
CSC 591/791 – 007: Deep Learning Beyond Accuracy
Pre-requisite: Prior deep neural network implementation experiences expected.
Description: In this course, students read and discuss research papers about deep neural networks with a focus on not just accuracy but also resource consideration e.g., FLOPs, parameter counts, time, memory, etc. With that interest, papers about techniques to design an efficient neural network architecture, such as structured/unstructured pruning, knowledge distillation, and quantization, will be read. On top of that, other dimensional metrics of machine learning, such as trustworthiness/robustness, fairness, or privacy, will also be explored. As a seminar course, this course is dedicated to paper reading, presentation, and discussion. Students will conduct one term project and take no exam. Students are expected to have implementation experiences on (deep) neural networks.
CSC 591 – 008: Extended Reality and 3D Interaction
Pre-requisites: CSC 230 and 316. Recommended: 454/584, prior experience with C#.
Instructor note: Students must be self-motivated, interested in thinking critically about 3D interaction, and willing to commit approximately 4-6 hours per week outside of class on assigned readings, virtual reality programming assignments, and project development. It is recommended that students also have a familiarity with basic concepts of computer graphics and/or human- computer interaction and/or prior experience with the Unity game engine (C#) is beneficial.
Description: This course introduces students to the designs, technologies, and evaluation of Extended Reality (XR), including Virtual Reality (VR), Augmented Reality (AR), and Mixed Reality (MR). Students will explore the fundamentals of 3D interaction, spatial user interfaces, and immersive experience design. Topics include tracking and sensing, display technologies, interaction techniques, user experience evaluation, and application development using XR platforms. Through hands-on group projects, students will gain practical skills in creating interactive XR applications.
CSC 491/591 – 011: Animal Centered Computing
Pre-requisite: CSC 316
Description: Decades of advances in human-computer interaction have produced well understood principles governing the processes, form, and function of computing systems that human users interact with on a daily basis. But what happens when users are nonhuman animals? How do we produce technology that enables nonhuman animals to interact with and through computers? How do we design these systems when users have drastically different physical and cognitive capabilities? The burgeoning field of Animal-Computer Interaction (ACI) is a highly multidisciplinary practice that seeks to answer exactly these types of questions. Advances in ACI draw upon ideas from ethics, interaction design, ergonomics, applied behavior analysis, Artificial Intelligence, analytics, electrical engineering and more. This special topics course will survey the history of technologies for nonhuman animals and the field of ACI. The course format will be seminar style with weekly readings of research papers and group discussions. Students will also conduct a semester-long project of their own design. There may be several field trips around the triangle area, so access to transportation is strongly encouraged.
CSC 491/591 – 013: Software Analysis and Design
Pre-requisite: CSC 326 or CSC 510
Description: An overview of concepts, methods, and tools for analysis and design of software systems, with emphasis on modern design principles and patterns that support the development of maintainable, reusable and extensible software. From the analysis of user/client needs for software systems with requirements engineering, to the design phases covering the definition of software architecture. This course has a primary focus on modeling and its central role in eliciting, understanding, analyzing and communicating software requirements, design, and architecture.
CSC 591 – 014: Microar Revrse Engr & Security
Pre-requisites: CSC 236 and CSC 316
Description: This section is cross-listed with CSC 491 and ECE.
Microarchitecture has a security crisis. Features that are essential for performance, such as speculative execution, have been shown to cause devastating vulnerabilities. The community has recognized the need for preemptive security analysis of new performance features. This course first examines the use and design of advanced/ML-assisted prediction in microprocessors and then explores the security implications of state-of-the-art techniques that improve performance. Processors use different kinds of predictors and resource sharing, providing improved performance and efficiency. Examples include multi-threading, conditional branch prediction, indirect branch prediction, predictive cache management policies (i.e., instruction or data replacement/prefetching), value prediction, speculative vectorization, MLP-aware fetch policy, storage-free memory dependency prediction, fat-loads, branch runahead, etc. We will learn about the development of such state-of-the-art microarchitecture designs as well as the use of machine learning for systems performance and security. We will also investigate the impact of recent side-channel exploits on several units of microarchitecture (BP, BTB, TLBs, i-cache, d-cache, data memory-dependent prefetcher, microarchitecture buffers, etc.) and the trade-off between security and performance, as well as adversarial machine learning attacks on ML-assisted microarchitecture and their defenses, including hardware design equipped with machine learning-based detection units for high performance and security. Through this course, students acquire hands-on knowledge about performance and security opportunities of applying advanced techniques and ML for systems and are expected to be able to reason about the security of as-of-yet unimplemented performance enhancing features of microarchitectural designs and their potential defenses
CSC 591/791 – 022: Advanced NextG Network Design
Pre-requisite: CSC 316
Description: This course focuses on advanced technology, modeling, simulation and analysis of networks. The course first presents the key aspects and concepts of the networks which are already consolidated. These technical aspects are the background and then used to motivated many mechanisms in the new generation network systems. The course will also be hands on with concepts demonstrated through use/modification of the simulation tools and ML models, e.g., to demonstrate and investigate network behavior of a number of different network topologies and under a variety of conditions.
CSC 591/714 – 023: Real Time Computer Systems
Pre-requisite: CSC 501
Description: 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-time benchmarks, case study of a real-time kernel. This course involves heavily state-of-the-art results in the domain of real-time and machine learning systems. There will be paper presentations, brainstorming, invited talks, and discussions. Students should have a good knowledge in machine learning and systems, and are actively conducting research.
CSC 591/791 – 024: Cognitive Systems
Pre-requisite: CSC 411 or 520
Description: This course covers the study of intelligent systems and their behavior both natural and artificial. Topics will include the study of influential and state of the art publications related to perception (e.g., visual stimuli, language models, and non-verbal communication), learning and action (e.g., machine intelligence; computational creativity; common-sense reasoning), and the communication interface between different groups of intelligent agents (e.g., human-human, human-AI interaction, AI-AI).
CSC 591/791 – 025: Internet of Things: Applications & Implementation
Pre-requisite: CSC 316
Description: This course focuses on advanced topics in Internet of Things (IoT). These topics will include (but are not limited to) challenges in the design of IoT infrastructure, limitations of existing protocols such as HTTP when used with IoT, security, applications of machine learning techniques, and leveraging cloud to achieve the full potential of IoT. The students will be encouraged to read research publications in this area. The course will also include multiple demos using real IoT hardware such as Raspberry Pi boards and/or other similar devices. The course will also cover one or more of Cloud IoT platform. To enable students to see IoT in action, they will be required to do assignments/projects using real IoT devices.
CSC 591/791- 027: CPS: Biometrics Sensing and Applications
Pre-requisites: Machine Learning, Python/Matlab experience, CSC 316
Description: Given the increasing advances of mobile and wearable technologies in people’s daily life, many biometrics and authentication techniques are being explored and developed (e.g., fingerprint lock on smartphones). This course introduces students to the theory and practice of biometric (e.g., face and voice) authentication systems. The course will cover the fundamental principles of biometrics, including physiological and behavioral characteristics (what & why), and the algorithms and system architecture used to extract, represent, and match these characteristics (how). Students will also learn about the newest approaches to biometrics and how they fit in its technological landscape, as well as the ethical and legal considerations surrounding the use of biometrics. The course will contain a project where students will group together to implement an authentication system prototype.
CSC 591/791- 028: Generative AI for Software Engineering
Pre-requisites: CSC 411/520 and CSC 326/510
Description: https://github.com/gai4se/GAI4SE-Course. The prerequisite for this class is basic programming knowledge in Python, an understanding of software engineering principles, and familiarity with machine learning concepts. Note that some of the classes may programming-intensive.
CSC 591/791 – 030: Advanced Robotics
Pre-requisite: CSC 316
Description: This advanced robotics course covers robotics through computer science and AI, focusing on the autonomy loop with topics like ROS, perception, decision-making, and reinforcement learning in single- and multi-robot systems. Students will gain a strong theoretical foundation and practical experience by implementing and extending algorithms in simulations and real robotic platforms.
CSC 591/791 – 038: Machine Learning with Graphs
Pre-requisites: MA 305/405, ST 370, and MA 242
Description: Graph is a fundamental tool for modeling the relationships between objects in numerous real-world applications. Machine learning with graphs enables the modeling of attribute and relation information in graph data, and it presents significant prediction power in various promising domains. The key topics included in this course: introduction to graph theory, introduction to machine learning, spectral graph theory, spectral embedding, network embedding, link analysis, label propagation, graph neural networks (GNNs), robustness and scalability of GNNs, applications of GNN’s in specific domains (e.g., recommendation system, computer vision, natural language processing, and social network analysis).
Students should also be familiar with Graph Theory, Introduction to Machine Learning, and Python Programming.
CSC 591/791- 039: Mobile Health Systems and Applications
Pre-requisite: CSC 316
Description: This course is a general introduction to computer networks. We will discuss 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 will also be involved. We will cover basic ideas of networking simulation, security, wireless and optical networking.
CSC 791- 040: Stochastic Simulation Optimization
Pre-requisite: Knowledge of stochastic simulations
Syllabus: https://drive.google.com/file/d/1mdmPfPnOTDqcqSc32sd0N6lABeH0n1E2/view?usp=sharing
CSC 591- 081: Advanced Topics in Deep Learning
Pre-requisite: tbd
Description: This section is being offered by the ECE department.
Deep learning has revolutionized numerous domains within computer science and beyond, establishing themselves as pivotal technologies over the past decade. Their unparalleled effectiveness in tackling complex tasks—ranging from natural language processing to graph data mining—has led to widespread adoption and rapid innovation. The field’s pace of advancement is staggering, with new breakthroughs emerging on a near- daily basis, making it challenging for researchers and practitioners to stay current. This course aims to bridge this gap by providing a comprehensive overview of the latest developments and cutting-edge research in the field. Specifically, this course will start from an introduction to the field of deep learning and include recent important advances, such as graph machine learning, foundation models, generative models, machine learning efficiency & interpretation, and innovative applications.
CSC 591- 082: Open RAN: Foundations & Applications
Pre-requisite: ECE 407 (or equivalent)
Description: This section is being offered by the ECE department.
This course provides a comprehensive introduction to Open Radio Access Networks (Open RAN or O-RAN), a transformative approach to wireless communication systems. Students will explore the principles of disaggregation, interoperability, and open interfaces that define the Open RAN architecture, with a focus on its role in modernizing and optimizing 5G networks and beyond. The course combines theoretical foundations with practical, hands-on experience, including the design, implementation, and testing of RAN Intelligent Controllers (RICs), xApps/rApps, and AI/ML-based network automation tools. Topics include Open RAN standards, integration of software and hardware, spectrum sharing, and emerging use cases in IoT and Industry 4.0. This course equips students with the knowledge and skills needed to lead innovation in the evolving telecom industry.
CSC 491/591- 126: Parallel Algorithms
Pre-requisite: CSC 505
Description: This course provides a mix of theory and practice in parallel algorithms. We will begin by discussing parallel models and then explore a variety of algorithms, including those for sorting, strings, graphs, (multi-)linear algebra, and geometry. The goal is to gain both a broad understanding of techniques used in designing parallel algorithms and a deeper insight into recent breakthroughs in the field. We will also cover practical implementations of most of the algorithms discussed. By the end of this course, you should ideally be able to design your own efficient parallel or concurrent algorithms for topics of interest.
CSC 554/791- 001 and 003: HCI
Pre-requisite: CSC 316
Description: 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.
CSC 491/791- 012: Natural Language Processing
Pre-requisite: CSC 316
This course is self-contained and provides the essential foundation in natural language processing. It identifies the key concepts underlying NLP applications as well as the main NLP paradigms and techniques. This course combines the core ideas developed in linguistics and artificial intelligence to show how to understand language. Key topics include vector representations, word embeddings, syntactic [phrase-structure] and dependency parsing, semantic role labeling, coreference resolution, information extraction, and selected advanced topics such as text-based dialogue and discourse understanding. The course provides the necessary background in linguistics and artificial intelligence, including the application of machine learning to language.
CSC 554/791- 023: Geospatial AI
Pre-requisite: tbd
Description: TBA.
Additional Sections
Additional sections that are visible in the enrollment wizard are likely cross-listed with the ECE department and are being offered by their faculty. A description can likely be viewed in the notes in MyPack.