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 2024 (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 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 Summer I (5-week), Summer I (10-week), and Summer II (5-week) 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 Summer I (5-week), Summer I (10-week), and Summer II (5-week) for 3 hours only.
Summer 2024 list last updated on 3/11/2024.
Fall 2024 (Click Here)
CSC 236 Computer Organization and Assembly Language for Computer Scientists: Some seats will be reserved for Cybersecurity concentration students.
CSC 295 – 001, Programming Competition: Contact Dr. Sturgill (and copy Ms. Marini) for more information about how to become enrolled. This course can only be used in the “Other Restricted Electives Group A” or “Free Electives” categories for CSC majors and it is only offered as 1 credit hour.
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. This course is for CSC majors only and requires a grade of C or higher in CSC 216. This course can only be used in the “Other Restricted Electives Group A” or “Free Electives” categories for CSC majors and it is only offered as 3 credit hours.
CSC 297, Cybersecurity Topics: 2 – 3 sections of different topics will be offered each semester. These courses can only be used in the “Other Restricted Electives Group A” or “Free Electives” categories for CSC majors and they are only offered as 1 credit hour each. Students in the Cybersecurity concentration must take three different topics for graduation requirements.
Section 004, Trustworthy AI: The “Trustworthy AI” course provides an in-depth exploration of artificial intelligence (AI), focusing on its core components, data management, machine learning, and application development, all framed within the context of ethical standards and cybersecurity. Students will engage with the curriculum through interactive lectures, real-world examples, and hands-on projects to understand AI’s profound effects on society, employment, and technology, with a particular emphasis on cultivating trust, creativity, and responsible use. The course is designed to promote innovative thinking by incorporating GenAI tools aiming to create a synergistic relationship between human emotional intelligence and AI’s analytical prowess, ensuring the development of trustworthy AI systems (Textbook: Think Artificial Intelligence, Lecturer: Jerry Cuomo).
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 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 427 Introduction to Numerical Analysis I: This course is offered by the MA department. This course can only be used in the “Other Restricted Electives Group A or B” or “Free Electives” categories for CSC majors.
CSC 440 Database Management Systems: Some seats will be reserved for AI concentration students.
CSC 455 Social Computing and Decentralized Artificial Intelligence: Some seats will be reserved for AI concentration students.
CSC 461 Computer Graphics: Some seats will be reserved for Game Development concentration students.
CSC 471 Modern Topics in Cybersecurity: 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 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.
Fall Special Topics
CSC 495 – 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 495 – 002, Software Project Management:
- Pre-requisite: CSC 326
- Description: This course focuses on software product management from the software engineering perspective, as well as how those principles apply to management at the individual, team, and organizational levels. Topics include challenges in product management, roadmapping, understanding and asserting business value, Objectives and Key Results (OKRs), risk management,and task prioritization. This course includes substantial reading expectations and in-class exercises. Active and consistent participation throughout the semester is required.
CSC 495 – 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 495 – 004, Software Architectures for the Cloud:
- Pre-requisite: CSC 326
- Description: This course will focus on the design of applications addressing challenges of modern cloud systems. The students will be exposed to trade-offs during the design decision by considering strengths and limitations associated to different architectural styles. The content of the course will also cover the best practices and guidelines for designing clean, maintainable, and scalable architectures with focus on both functional and non-functional requirements.
CSC 495 – 005, AI-powered Robotics:
- Pre-requisite: [MA 305 or 405] and [ECE 309 or CSC 316] and [ST 370 or 371]
- Description: This advanced robotics course provides a comprehensive exploration of robotics from the perspective of computer science and artificial intelligence. It will introduce the full autonomy loop, including robot operating system (ROS), sensing and perception, cognition, decision-making and action. The curriculum includes systems, theories, algorithms, and computational implementations relevant to these areas. Students will gain hands-on experience in implementing and extending such algorithms using simulations and real robots (depends on the resource availability).
CSC 495 – 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 495 – 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 495 – 013, Human Centered Security:
- Required Pre-requisite: CSC 316.
- Recommended: Knowledge from CSC 474. 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.
- Some seats will be reserved for Cybersecurity concentration students.
Fall 2024 list last updated on 3/11/2024.
Spring 2025 (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 295 – 004 | Introduction to Functional Programming | 1 credit hour. Pre-requisites of CSC 216 and [CSC 226/MA 225]. For CSC majors only. |
CSC 297 | 001: Introduction to Cybersecurity 002: Secure Thinking 2 003: Distributed Algorithms | 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 440 Database Management Systems: Some seats will be reserved for AI concentration students.
CSC 442 Intro Data Science: Some seats will be reserved for AI concentration students.
CSC 453: Introduction to Internet of Things (IoT) Systems
CSC 454: Human-Computer Interaction – Some seats will be reserved for Game Development concentration students.
CSC 456: Computer Architecture and Multiprocessors
CSC 462: Advanced Computer Graphics Projects – Some seats will be reserved for Game Development concentration students.
CSC 469: Quantum Programming – This is being offered by the ECE department.
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 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
CSC 495 – 001, Self-Driving Cars:
- Required Pre-requisite: MA 305 and ST 370.
- 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 495 – 002, Software System Anatomy:
- Required Pre-requisites: CSC 333, CSC 246, and CSC 326.
- 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 495 – 003, Intro Robot Motion Planning:
- Required Pre-requisite: MA 305 and 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 495 – 004, Introduction to Trustworthy and Responsible Machine Learning:
- Required Pre-requisite: CSC 216.
- Description: This course explores the growing concerns regarding responsibility, accountability, trustworthiness, and fairness in machine learning (ML). Students will learn about interpretable machine learning (IML), explainable artificial intelligence (XAI), the complexity of fairness, and the importance of contextualizing ML models. The course emphasizes the socio-technical understanding and ethical impacts of automated discrimination, especially in high-risk domains such as judicial, criminal, financial, welfare, and healthcare systems. This course requires CSC 216 as a prerequisite and is a combination of small projects with lecture and discussion strongly centered on critical AI ethics theory.
CSC 495 – 005, Dynamics and Control of Robotic Systems for Computer Scientists:
- Required Pre-requisites: MA 242, MA 305, and PY 205.
- 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 495 – 006, Advanced Software Testing and Debugging:
- Required Pre-requisite: CSC 326.
- Description: This course will cover some topics in software testing and debugging research. Students will re-implement some well know algorithms proposed in the literature and will try to find and report bugs in the wild.
CSC 495 – 007, Trustworthy & Efficient Deep Learning:
- Required Pre-requisite: CSC 316 and CSC 422.
- Description: In this course, students will learn about deep neural architectures with an emphasis on convolutional neural networks. The course will also cover techniques enabling obtaining efficient and lighter-weight neural network architectures. On top of them, it will cover potential bias issues that make deep learning untrustworthy. Students will also read some relevant research papers for the architectures/methodologies, etc, throughout the course.
CSC 495 – 010, Software for Robotics:
- Required Pre-requisite: CSC 316
- Recommended: Senior standing with at least 3.0 GPA required.
- Description: https://github.ncsu.edu/software-engineering-for-robotics/course/
CSC 495 – 021, Theoretical CS Toolkit:
- Required Pre-requisite: CSC 226, ST 370, and MA 305
- Description: In this course you will learn about various areas of mathematics such as probability, linear algebra, combinatorics, and see how they are used to develop some of the greatest algorithms and ideas in computer science and technology. This section is cross-listed with CSC 591 – 021.
Spring 2025 list last updated on 10/29/2024.
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 495, 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
- Animal-Centered Computing
- AI for Software Security
- Deep Learning Beyond Accuracy
- Generative AI for Software Engineering
- 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
- Natural Language Processing
Special Topics list last updated on 3/18/2024.