Skip to main content

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 2024

CSC 591/791 – 002: Programmer Centered Design and Research

Recommended pre-requisite: CSC 554/CSC 791 Human-Computer Interactions

Description: Programmer Centered Design and Research. Software engineering and development is an intensive human task. These humans, often called programmers, differ based on their gender (e.g., men, women, others), expertise (novice, experts, end-users), culture, physical ability/needs, or race. To complete their programming tasks, they highly depend on interaction with computers/software/systems, and usually, these software/IDE are not developed to support their behavior. This seminar-based course will focus on programmer aspects of software development and will bring knowledge from domains of Human-Computer Interaction (HCI), Software Engineering (SE), and Artificial Intelligence (AI).

CSC 591 – 003: Geometric Optimization

Recommended pre-requisite: an undergraduate algorithms course

Description: Combinatorial optimization typically deals with problems of optimizing an objective function subject to a number of constraints. In many applications arising in logistics and machine learning, the constraints are induced by a family of geometric objects (for instance, points). These problems are referred to as geometric-optimization problems. In such cases one expects that the underlying geometry can be exploited to obtain faster and simpler algorithms. In this course, we will learn simple geometric techniques that assist in the design of scalable algorithms.

CSC 591 – 005: Algorithms on Strings

Recommended pre-requisite: CSC 505

Description: This is a course on the theoretical aspects of algorithms and data structures for processing string or text data.

CSC 591/791 – 007: Deep Learning Beyond Accuracy

Recommended pre-requisite: Thorough implementation experiences in deep neural networks are 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 fairness, privacy, or sustainability, will also be explored. As a seminar course, this course is dedicated to paper reading, presentation, and discussion. Students will conduct a term project and take no exam. Students are expected to have implementation experiences on deep neural networks.

CSC 495/591 – 011: Animal-Centered Computing

Required pre-requisite: CSC 316 or equivalent

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-Centered Computing (ACC) is a highly multidisciplinary practice that seeks to answer exactly these types of questions. Advances in ACC 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 Animal-Computer Interaction (ACI). The course format will be seminar style with regular readings of research papers and group discussions. Graduate 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 495/591 – 013: Human Centered Security

Recommended pre-requisite: Knowledge from a foundational computer security class will be helpful (e.g, CSC474 at NC State) but is not required. Students might need to write (short) Python scripts.

Description: Computer security course covering concepts, methods, and advances of the usable security & privacy field. Topics include the design, planning, and execution of research studies, as well as foundations and important concepts of the research field.

CSC 591/712 – 023: Testing

Recommended pre-requisite: CSC 510

Description: 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.

CSC 591/791 – 024: Automated Software Engineering

Recommended pre-requisite: CSC 316 and CSC 226 (or equivalent)

Description: AI for SE is different to standard AI. The data sets are different (far more repetitive structures, far more unlabelled data, far more variance in the labels). The problems explored are different (e.g. software configuration, software project estimation). The goals are different (more managerial level, more uncertainty management, more emphasis on explainability and repeatability). The methods are different (more emphasis on the scripting and continuous development and operations). The results are different (many domains are controllable via surprisingly small theories). Hence the experimental and statistical methods are different. To address these differences, this subject will explore (1) Management of AI software projects; (2) AI,SE and ethics; (3) AI methods as they relate to SE including (3a)explainable AI; (3b)classification, (3c) clustering, (3d) multi-objective optimization (for non-continuous models); (3e) semi-supervised learning, (3f) theorem proving, (3g)generative methods; (4)experimental methods for SE and AI (statistics, experimental rigs, visualizations); (5) AI application areas in SE: current methods, statistical methods, latest results in areas such as software configuration, defect prediction, effort estimation, project planning, Github issue close time prediction, bad smell prediction, cloud compute management, bad smell detection, static code warning detection, etc.

CSC 591/791 – 025: Real-time AI and Machine Learning Systems

Recommended pre-requisite: Introduction-level knowledge of ML, data structures (CSC316 or equivalent), Python. Helpful: C/C++, CUDA, GPU.

Description: As machine learning (ML) and Artificial Intelligence (AI) gets rapidly adopted everywhere, the speed in learning and inference has become one of the most frequently encountered roadblocks for practical adoptions. This course focuses on the challenges and solutions for achieving high performance and real-time response of Deep Learning-based ML and AI while keeping the accuracy satisfactory. The course will cover the common platforms and toolkits for modern Machine Learning and AI, the factors and tradeoffs affecting the performance, various optimization techniques for ML and AI, and the trends and research directions being actively investigated in this field.

CSC 591/791 – 027: CPS – Biometric Sensing and Application

Recommended pre-requisite: general knowledge of machine learning and signal processing

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., FaceID and TouchID). This course introduces how people use their biological features, such as fingerprints, irises, retina, face or voice for personal identification or verification. The course will cover both the theory and practice of biometric authentication systems, including human physiological and behavioral characteristics (what & why), and the hardware, algorithm, and system architecture used to extract, represent, and match these characteristics (how). Students will also learn about the ethical and legal considerations surrounding the use of biometrics in security systems.

CSC 591/791 – 028: Generative AI for Software Engineering

Recommended pre-requisite: The prerequisite for this class is basic programming knowledge in Python, an understanding of software engineering principles, and familiarity with machine learning concepts. CSC 510 and CSC 411/520 are highly recommended but not required. Note that some of the classes may programming-intensive.

Description: This postgraduate course introduces students to the rapidly evolving field of generative AI techniques, with a specific focus on Generative Pre-trained Transformer (GPT) models in software engineering (SE). Unlike many other domains, SE tasks—such as the generation of code, code reviews, test cases, and defect/vulnerability patches—present unique challenges due to the diverse structures, storage locations, and modalities of software data, as well as the data are generated during various development stages. The cutting-edge GPT models developed by OpenAI, hold significant potential to revolutionize modern software development. However, there are still many uncertainties surrounding its impact.

CSC 591/791 – 030: Software-Hardware Co-Design for Intelligent Systems

Recommended pre-requisite: Python programming, C/C++, knowledge on computer hardware is a plus.

Description: Fueled by the proliferation of sensing data and the advancement of machine learning (ML), intelligence is becoming a household brand in many cyber-physical systems and Internet-of-Things applications. This course will offer in-depth coverage of state-of-the-art software-hardware co-design methodologies for developing energy-efficient, low-latency, reliable and trustworthy intelligent systems. Topics include but are not limited to: ML basics and performance evaluation metrics, hardware platforms and software frameworks, modern neural networks, training and testing, design paradigms of algorithm-hardware co-design for ML acceleration like hardware-oriented model compression, pruning and quantization, sparsity, modern ML hardware architectures, near memory and in memory computing, trustworthy and private computing by design, machine vision guided image compression etc. Hands-on projects will be utilized with real-world applications and datasets. Classes will be running by combining lecture sessions, presentation sessions, and projects.

CSC 591 – 038: Machine Learning with Graphs

Required pre-requisite: MA 305/405 and ST 370 or equivalent

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.

CSC 591/791 – 126: Parallel Algorithms

Required pre-requisite: n/a

Description: This is a mixed course on theory and practice of parallel algorithms. We will start by discussing parallel models and then go through a variety of algorithms including sorting, strings, graphs, and geometry. The goal is both to get a broad view of the techniques used to design such algorithms, as well as going into some depth on a handful of recent breakthroughs in the design of parallel algorithms. We will discuss practical implementations of most of the algorithms we cover. By taking this course, ideally, you will have the ability to design your own efficient parallel or concurrent algorithms for topics you are interested in. In this course, we will explore the breakthrough and state-of-the-art innovations to parallel algorithms. A mixed pattern of lectures and student presentations will be used. Paper reading, presentation, and an embryonic project are expected.

Course website: https://longing-duckling-38b.notion.site/NCSU-CSC-791-126-Parallel-Algorithms-Fall-2024-74668f0fdbcb499f941af25a16370051?pvs=4 

CSC 554/791 – 001: Human Computer Interaction

Required pre-requisite: CSC 316 or equivalent

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 495/791 – 012: Natural Language Processing

Required pre-requisite: CSC 316 or equivalent

Description: 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 in artificial intelligence to show how to understand language. Key topics include regular expressions, unigrams, and n-grams; word embeddings; syntactic [phrase-structure] and dependency parsing; semantic role labeling; language modeling; sentiment and affect analysis; question answering; text-based dialogue; discourse processing; and applications of machine learning to language processing. The course provides the necessary background in linguistics and artificial intelligence. This course is suitable for high-performing undergraduates who are willing and able to learn abstract concepts, complete programming assignments, and develop a student-selected project.

CSC 791 – 023: Geospatial AI

Required pre-requisite: TBD

Description: This course delves into recent breakthroughs in AI and deep learning, specifically their application to analyzing large-scale geospatial and spatiotemporal data. We will emphasize both the theoretical foundations and practical applications. Students will gain a comprehensive understanding of the conceptual underpinnings and principles behind AI techniques. In particular, this course covers the following topics: Basic characteristics of big spatial and spatiotemporal data, spatial relationships and dependencies, types of learning (statistical, semi-supervised, transfer, active, federated), semantic segmentation, change detection, geospatial object-based image analysis, geospatial knowledge-guided ML, geospatial representation learning, geospatial foundation models (fine-tuning, prompting, and Retrieval-augmented generation), visual question answering, geo-simulations and digital twins, location-based services and recommender systems, Geographic bias and fairness, and privacy and explainability. They will also learn how to leverage these techniques by modeling the unique characteristics, relationships, and dependencies inherent in spatial and spatiotemporal data. The course will equip students to not only apply these techniques but also evaluate and compare various models using benchmark datasets.

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.