CSC Undergraduate Restricted Electives
These are the planned classes for each semester. 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.
There is no limit to the number of CSC 495 sections students may use to satisfy degree requirements, as long as each section covers a different topic.
Click on the semester below to see the planned classes for that semester. Course descriptions and up-to-date requisite information are available on https://webappprd.acs.ncsu.edu/php/coursecat/directory.php and also linked below.
A note about reserved seats: Some courses have seats that are reserved for Concentration students. This means that X number of seats are reserved for students currently enrolled in a concentration and Y number are available for CSC majors without a concentration.
Once the number of unreserved seats is full, students may add themselves to the waitlist. If the waitlist is full, please keep checking back for an open seat on the waitlist. The number of reserved seats will be lowered throughout the enrollment period and students on the waitlist will be enrolled first. There are no set dates for when seats will be lowered, so the best chance of becoming enrolled is to join the waitlist.
A note about waitlists: All courses on the lists below have a waitlist. Students who are on the waitlist will be enrolled in an available, unreserved seat automatically if they meet the requisites. Students may not be enrolled in a time conflict or over 18 hours, so use the “swap to waitlist” feature in the enrollment wizard so your enrollment may be processed without delay.
Summer 2025 (Click Here)
CSC 299 Mentored Research in Computer Science: This is the RESEARCH section for first and second year students who are not yet prepared for CSC 498/499. Please review the instructions on: https://www.csc.ncsu.edu/academics/undergrad/research.php for information on how to enroll in this class. This can only be used in the “Other Restricted Electives Group A” or “Free Electives” categories for CSC majors.
CSC 401 Data and Computer Communications Networks: Offered in-person during Summer I (first 5 weeks) only.
CSC 495-051: Computational Applied Logic. Offered in the 10-week summer (in person).
- Pre-requisites: CSC 316 and CSC 333
- Description: 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.
CSC 498 Independent Study in Computer Science: Offered as Summer I (5-week), Summer I (10-week), and Summer II (5-week) for 3 hours only. Please review the instructions on: https://www.csc.ncsu.edu/academics/undergrad/research.php for information on how to enroll in this class.
CSC 499 Independent Research in Computer Science: Offered as Summer I (5-week), Summer I (10-week), and Summer II (5-week) for 3 hours only. Please review the instructions on: https://www.csc.ncsu.edu/academics/undergrad/research.php for information on how to enroll in this class.
Summer 2025 list last updated on 2/14/2025.
Fall 2025 (Click Here)
Other Restricted Electives (ORE)
The table below includes classes that are only Other Restricted Electives. Below the table you will find the CSC Restricted Electives.
Course | Topic | Notes |
---|---|---|
CSC 281 – 001 | Interactive Game Design | Can alternatively be used as an IDP GEP (but not both) |
CSC 293 – 001 | TA Training | 1 credit hour |
CSC 291 – 001 | Competitive Problem Solving | 1 credit hour |
CSC 251 – 002 | Python Applications | 3 credit hours, pre-requisite of CSC 216, for CSC majors only. |
CSC 297 | 001: Security Operations and Phishing Defense Strategies 002: Trustworthy AI 003: Secure Thinking 1 | 1 credit hour, each topic can be taken only once. |
CSC 298 – 001 | Intro to CS Research Methods | 3 credit hours (letter grade) |
CSC 299 – 001 | Mentored Research in CSC | 3 credit hours (credit-only) |
CSC 427* | Intr Numer Anly I | Offered by the MA dept. |
*Course can be used in Group A or B.
CSC Restricted Electives (CSC RE)
- CSC 236, Computer Organization and Assembly Language for Computer Scientists: Some seats will be reserved for Cybersecurity concentration students.
- CSC 342, Applied Web-based Client-Server Computing
- CSC 401, Data and Computer Communications Networks
- CSC 411, Introduction to Artificial Intelligence: Some seats will be reserved for the following groups of students: AI concentration, Game Development concentration, and CSC majors with a declared Cognitive Science minor.
- CSC 412, Compiler Construction
- CSC 414 Foundations of Cryptography: Some seats will be reserved for AI concentration students.
- CSC 417, Theory of Programming Languages
- CSC 422, Automated Learning and Data Analysis: Some seats will be reserved for AI concentration students.
- CSC 440, Database Management Systems: Some seats will be reserved for AI concentration students.
- CSC 442, Introduction to Data Science: Some seats will be reserved for AI concentration students.
- CSC 454, Human-Computer Interaction: Some seats will be reserved for Game Development concentration students.
- CSC 455, Social Computing and Decentralized Artificial Intelligence: Some seats will be reserved for AI concentration students.
- CSC 456, Computer Architecture and Multiprocessors
- CSC 461, Computer Graphics: Some seats will be reserved for Game Development concentration students.
- CSC 471, Modern Topics in Cybersecurity: Beginning Fall 2025, the new pre-requisites for this class will be CSC 236 and CSC 316. Some seats will be reserved for Cybersecurity concentration students.
- CSC 474, Network Security: Some seats will be reserved for Cybersecurity concentration students.
- CSC 481, Game Engine Foundations: Some seats will be reserved for Game Development concentration students.
- CSC 484, Building Game AI: Some seats will be reserved for AI and Game Development concentration students.
- CSC 490, Independent Study in Computer Science: Please review the instructions on: https://www.csc.ncsu.edu/academics/undergrad/research.php for information on how to enroll in this class. Offered as a full semester class or a second eight-week class for 3 hours only.
- CSC 491 (as listed below)
- CSC 499, Independent Research in Computer Science: Please review the instructions on: https://www.csc.ncsu.edu/academics/undergrad/research.php for information on how to enroll in this class. Offered as a full semester class for 3 hours only.
Fall Special Topics
All special topics are offered for 3 credit-hours and must be taken for a letter grade if being used for any category except “free elective”.
CSC 491 – 001, Advanced Algorithms
- Pre-requisite: CSC 316
- Description: This is a course on the design and analysis of computer algorithms. We will examine several interesting problems, devise algorithms for solving them, prove their correctness, and characterize their performances. This course focuses primarily on developing thinking abilities on both formal thinking [proof techniques and algorithm analysis] and problem solving skills [algorithm design and selection] instead of programming.
CSC 491 – 003, Introduction to Robot Motion Planning
- Pre-requisite: [MA 305/405] and [ECE 309 or CSC 316]
- Description: This course will introduce fundamental concepts in robot motion planning with a focus on spatial manipulators utilizing simulation and, if available, real robots. The course’s topics will include rigid-body spatial transformations, forward and inverse kinematics, trajectory generation, configuration space, and sampling-based path planning. Projects and exercises will utilize the Python programming language, a Linux operating environment, and the Robot Operating System (ROS) middleware framework.
CSC 491 – 004, Control Systems for Robotics
- Pre-requisites: PY 208, MA 242, and MA 305/405
- Description: Introduction to dynamics and control for robotic systems tailored for computer scientists. Concepts including ordinary differential equations, kinematics, and dynamics for common air and ground robotic systems will be introduced. Feedback control via classical methods (e.g., Nyquist, Bode), PID, and state-space and observer-based design will be explored. Emphasis on implementation, and simulation on an aerial multicopter robot will help students visualize and evaluate learning and control design performance.
CSC 491 – 005, Parallel Algorithms
- Pre-requisite: CSC 316
- 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 491 – 006, Generative AI for Computer Systems
- Pre-requisite: CSC 316
- Description: https://my.ece.ncsu.edu/grad/wp-content/uploads/sites/6/2024/11/ECE592-106_Foundations-of-Generative-AI.pdf
CSC 491 – 007, Quantum System Engineering
- Pre-requisite: CSC 316 and MA 305 or MA 405
- Description: This serves as an introductory undergrad course for any engineering students that are interested in quantum information science and engineering.
CSC 491 – 010, Dev Ops
- Pre-requisite: CSC 326
- Description: 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.
CSC 491 – 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-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 491 – 012, Natural Language Processing
- Pre-requisite: CSC 316
- 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.
- Some seats will be reserved for Game Development and AI concentration students.
CSC 491 – 013, Software Analysis & Design
- Pre-requisite: CSC 326
- 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 491 – 014, Microar Revrse Engr & Security
Pre-requisites: CSC 236 and CSC 316
Description: This section is cross-listed with CSC 591 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
Fall 2025 list last updated on 4/7/2025.
Spring 2026 (Click Here)
The table below includes classes that are only Other Restricted Electives. Below the table you will find the CSC Restricted Electives.
Course | Topic | Notes |
---|---|---|
CSC 281 – 001 | Interactive Game Design | Can alternatively be used as an IDP GEP (but not both) |
CSC 293 – 001 | TA Training | 1 credit hour. |
CSC 295 – 001 | Competitive Problem Solving | 1 credit hour. Email Dr. Sturgill & Ms. Marini for permission to enroll. |
CSC 295 – 002* | Python Applications* | 3 credit hours. Pre-requisite of CSC 216. For CSC majors only. |
CSC 297 | 001: tbd 002: tbd 003: tbd | 1 credit hour. Each topic can be taken only once. |
CSC 298 – 001 | Intro to CS Research Methods | 3 credit hours (letter grade) |
CSC 299 – 001 | Mentored Research in CSC | 3 credit hours (credit-only) |
CSC 428** | Intr Numer Anly II** | Offered by the MA dept. |
*CSC 295 – 002, Python Applications: An introductory course in Python for experienced programmers exploring both structured and object-oriented programming approaches. Python fundamentals such as lists, tuples, strings, dictionaries, functions, and file I/O will be covered. Packages such as Matplotlib, NumPy, pandas, and pytest will be utilized with an emphasis on data science applications such as modeling, data manipulation, visualization and machine learning.
CSC Restricted Electives:
CSC 236 Computer Organization and Assembly Language for Computer Scientists: Some seats will be reserved for Cybersecurity concentration students.
CSC 342 Applied Web-based Client-Server Computing
CSC 401 Data and Computer Communications Networks
CSC 405 Computer Security: Some seats will be reserved for CySec concentration students.
CSC 408 Software Product Management
CSC 411 Introduction to Artificial Intelligence: Some seats will be reserved for the following groups of students: AI concentration, Game Development concentration, and CSC majors with a declared Cognitive Science minor.
CSC 415 Software Security: Some seats will be reserved for Cybersecurity concentration students.
CSC 422 Automated Learning and Data Analysis: Some seats will be reserved for AI concentration students.
CSC 433 Privacy in the Digital Age: Some seats will be reserved for Cybersecurity concentration students.
CSC 472: Cybersecurity Projects – Some seats will be reserved for Cybersecurity concentration students.
CSC 474 Network Security: Some seats will be reserved for Cybersecurity concentration students.
CSC 482
CSC 484: Building Game AI – Some seats will be reserved for both AI and Game Development concentration students.
CSC 486: Computational Visual Narrative – Some seats will be reserved for Game Development concentration students.
CSC 498 Independent Study in Computer Science: Please review the instructions on: https://www.csc.ncsu.edu/academics/undergrad/research.php for information on how to enroll in this class. Offered as a full semester class or a second eight-week class for 3 hours only.
CSC 499 Independent Research in Computer Science: Please review the instructions on: https://www.csc.ncsu.edu/academics/undergrad/research.php for information on how to enroll in this class. Offered as a full semester class for 3 hours only.
Spring Special Topics
All special topics are offered for 3 credit-hours and must be taken for a letter grade if being used for any category except “free elective”.
CSC 491 – 001, Self-Driving Cars:
- Pre-requisite: CSC 316. MA 305 and ST 370 are recommended.
- Recommended: programming competence in Python in Linux environment
- Description: This course explores the theory and practice of building self-driving cars using advanced computing technologies. It aims to provide students with opportunities to i) understand the introductory theory that enables autonomous driving and ii) gain extensive hands-on experience with various software and hardware tools. Topics include robotics software programming, sensor fusion, control theory, and introductory perception, planning, and navigation techniques using machine learning and computer vision. Over the course of the semester, students work in small groups to design and build software systems for miniaturized self-driving cars that autonomously navigate an indoor track resembling real road environments. Students demonstrate their learned skills through the final driving showcase.
CSC 491 – 002, Software System Anatomy:
- Pre-requisite: CSC 326. Co-requisite: CSC 246.
- Description: Modern software systems exhibit complex dynamic behavior resulting from the interactions between concurrently executing components. Some systems are designed primarily for one of resilience, or performance, or scalability. Application components have non-trivial interactions with operating systems, hardware, and networks — each of which is a complex dynamic system on its own. To understand modern systems, we will approach them much as one would analyze complex organisms. That is, we will examine their components and interactions, beginning with relatively simple systems built in the 1960’s for the Apollo moon landing. We will progress through the invention of Unix in the 1970’s; the proliferation of client/server systems in the 1980’s; the Web in the 1990’s; canonical “three tier” applications of the 2000’s; and finally the globe-spanning architectures run by large tech companies today. Over time, computer hardware, operating systems, and networks grew more sophisticated alongside the applications that were built on top of them. We will speculate about where ever-increasing system complexity may lead.
CSC 491 – 00x, Fundamentals of User Experience in Video Games:
- Pre-requisite: CSC 326
- Description: In this course, we will explore fundamental topics around User Experience in video games, including player psychology, player motivation frameworks, the role of user interfaces, and business implications within video game UX. Students will apply their learnings to gain an understanding of how to communicate and work with a UX lab, game designers, and other stakeholders through weekly discussions. Throughout the semester, students will use an existing commercially available video game as a case study to analyze its UX, design and run a UX Lab test, generate a report based on observational findings, and design improvements to address those findings.
CSC 491 – 00x, How to be a Software Engineering Guru:
- Pre-requisite: tbd.
- Description: TBA.
CSC 491 – 00x, Ubiquitous Computing & Mobile Health:
- Pre-requisite: tbd.
- Description: TBA.
Spring 2026 list last updated on 2/14/2025.
Concentration Approved Special Topics (Click Here)
The below lists include topics approved as concentration restricted electives. Students who take these sections must fill out the Degree Audit Shift Request form in order to have it count correctly in the degree audit.
If the course is offered as CSC 491, that is appropriate for undergraduate students.
If it is listed as CSC 591, it may only be taken by ABM or CSC Honors students.
CSC AI Restricted Electives
- Accelerating Deep Learning
- Advanced Robotics
- Animal-Centered Computing
- AI for Software Security
- Control Systems for Robotics
- Cognitive Systems
- Deep Learning Beyond Accuracy
- Generative AI for Computer Systems
- Generative AI for Software Engineering
- Introduction to Responsible Machine Learning
- Introduction to Robot Motion Planning
- Introduction to Trustworthy and Responsible Machine Learning
- Machine Learning for User-Adaptive Systems
- Machine Learning with Graphs
- Neural Networks
- Natural Language Processing
- Real-time AI and Machine Learning Systems
- Self-Driving Cars
- Trustworthy and Efficient Deep Learning
CSC Cybersecurity Restricted Electives
- Cellular and Telephone Network Security
- Cryptographic Engineering and Hardware Security
- Human Centered Security
- LLMs for Security
CSC Games Restricted Electives
- Cognitive Systems
- Computational Applied Logic
- Extended Reality and 3D Interaction
- Fundamentals of User Experience in Video Games
- Natural Language Processing
Special Topics list last updated on 4/25/2025.