CSC Undergrad Restricted Electives - Fall 2021

These are the planned classes for the semester indicated above. 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.

CSC 302 - 001 - Introduction to Numerical Methods - Dr. Stallmann

Prerequisites: CSC 116 with a grade of C or higher and [MA 305 or MA 405]

Semester/Year: Fall 2021

Description: Numerical computations with digital computers; floating point arithmetic and implications of round-off error. Algorithms and computer techniques for the numerical solution of problems in: function evaluation; zeros of functions; interpolation; numerical differentiation and integration; linear systems of equations; curve fitting; solutions of non-linear equations; numerical solutions of ordinary differential equations.

CSC 342 - 001 - Applied Web-based Client-Server Computing - Dr. Parnin

Prerequisites: Grade of C or better in CSC 216

Semester/Year: Fall 2021

Description: This course explores client-server computing on the World Wide Web. The course focuses on the architecture of web-based client-server applications and accepted industry practices. Students work in teams to develop web applications with dynamic content delivery.

CSC 401 - 001 - Data and Computer Communications Networks - Dr. Battestilli

Prerequisites: ST 370 and CSC 246

Semester/Year: Fall 2021

Description: Basic concepts of data communication networking and computer communications architectures, including packet/circuit/virtual-circuit switching, layered communication architecture and OSI layers, general description of DLC, network and transport layers, some detailed protocol study of Ethernet, ATM and TCP/IP. Credit is not allowed for both CSC 401 and ECE 407.

CSC 411 - 001 - Introduction to Artificial Intelligence - Dr. Akram

Prerequisites: CSC 316

Semester/Year: Fall 2021

Description: This is the undergraduate version of CSC 520.

Overview and definitions of Artificial Intelligence [AI]. Search, including depth-first and breadth-first techniques with backtracking. Knowledge representation with emphasis on logical methods, Horn databases, resolution, quantification, unification, skolemization and control issues; non-monotonic reasoning; frames; semantic nets. AI systems, including planning, learning, natural language and expert systems. An AI programming language may be taught at the instructor's discretion.

This class counts as a CSC Games Restricted Elective for students in the Game Development Concentration.

Students may not receive credit for both CSC 411 and CSC 520.

CSC 412 - 001 - Compiler Construction - Dr. Liu

Prerequisites: CSC 316 and CSC 333

Semester/Year: Fall 2021


This is the undergraduate version of CSC 512 and is cross-listed with CSC 512.

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.

Students may not recieve credit for both CSC 412 and CSC 512.

CSC 415 - 001 - Software Security - Dr. King

Prerequisites: CSC 316

Semester/Year: Fall 2021


This course has an additional co-requisite of CSC 326. Students may have taken it before, for a passing grade, or be co-enrolled.

This class is the undergraduate version of CSC 515.

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.

By the end of the course, you should be able to do the following:

Students may not receive credit for both CSC 415 and CSC 515.

CSC 422 - 001 - Automated Learning and Data Analysis - Dr. Chi

Prerequisites: ST 370 and MA 305, and [CSC 226 or LOG 201]

Semester/Year: Fall 2021

Description: This course is the undergraduate version of CSC 522. Students cannot get credit for both CSC 422 and CSC 522.

Introduction to the problems and techniques for automated discovery of knowledge in databases. Topics include representation, evaluation, and formalization of knowledge for discovery; classification, prediction, clustering, and association methods.Selected applications in commerce, security, and bioinformatics.

CSC 440 - 001 - Database Management Systems - Dr. Chirkova

Prerequisites: CSC 316

Semester/Year: Fall 2021

Description: This course is the undergraduate version of CSC 540.

Introduction to database concepts. This course examines the 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, concurrency control, transaction processing, and distributed database systems.

Students cannot get credit for both CSC 440 and CSC 540.

CSC 447 - 001 - Introduction to Cloud Computing - Dr. Freeh

Prerequisites: CSC 246

Semester/Year: Fall 2021

Description: This class was previously listed as CSC 495 - 001 in past semesters. Credit cannot be given for both.

This class will be co-taught by Dr. Freeh and Dr. Dreher.

The course will cover basic cloud computing principles and architectures. Topics will include types of cloud services, public, private and hybrid cloud computing. The course will analyze cloud computing performance, and cover topics of cloud security, cost, usability, and utility of cloud computing solutions for various cloud implementations "as a service." Students will learn how to critically evaluate cloud solutions, including the economic and legal aspects of deploying cloud computing solutions. The course will also include hands-on work with building a cloud computing system using the NC State VCL software.

CSC 450 - 001 - Web Services - Dr. Singh

Prerequisites: CSC 316

Semester/Year: Fall 2021

Description: This is the undergraduate version of CSC 750 and this section is cross-listed with CSC 750 - 001.

Concepts, theories, and techniques for Web services. This course examines architectures for Web applications based on the classical publish, find, and bind triangle. It considers the description, discovery, and engagement of Web services. It emphasizes Web service composition. Key topics include semantics, transactions, processes, agents, quality of service, and compliance.

CSC 461 - 001 - Computer Graphics - Dr. Watson

Prerequisites: Prerequisite: MA 305, CSC 230, and CSC 316

Semester/Year: Fall 2021

Description: This course is the undergraduate version of CSC 561.

Principles of computer graphics with emphasis on two-dimensional and aspects of three-dimensional raster graphics. Topics include: graphics hardware devices, lines and polygons, clipping lines and polygons to windows, graphical user interface, vectors, projections, transformations, polygon fill. Programming projects in C or C++.

Students cannot receive credit for both CSC 461 and CSC 561.

CSC 471 - 001 - Modern Topics in Cybersecurity - TBA

Prerequisites: CSC 405; Corequisite: CSC 474

Semester/Year: Fall 2021

Description: Exploration of three modern or emerging topics in Cybersecurity beyond the core cybersecurity curriculum.
These topics may vary by semester.
Enrollment is open to CSC majors only.

CSC 474 - 001 - Network Security - Dr. Enck

Prerequisites: CSC 230

Semester/Year: Fall 2021

Description: This is the undergraduate version of CSC 574.

Basic concepts and techniques in information security and management such as risks and vulnerabilities, applied cryptography, authentication, access control, multilevel security, multilateral security, network attacks and defense, intrusion detection, physical security, copyright protection, privacy mechanisms, security management, system assurance and evaluation, and information warfare. Coverage of high-level concepts such as confidentiality, integrity, and availability applied to hardware, software, and data.

Credit is not allowed for both CSC 474 and CSC 574.

CSC 481 - 001 - Game Engine Foundations - Dr. Roberts

Prerequisites: CSC 316

Semester/Year: Fall 2021

Description: This is the undergraduate version of CSC 591 - 013 and is cross-listed with CSC 591 - 013.

An introduction to game engines, the technologies underlying computer and console game development. This course will cover engine components, architectures, and designs. Topics include asset management, resource management, event management, memory management, timelines, multithreading, network architectures, and game object models. 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.

Students cannot receive credit for both the undergraduate and graduate version of the same class.

CSC 495 - 002 - Software Engineering for Robotics - Dr Ore

Prerequisites: CSC 326

Semester/Year: Fall 2021

Description: Autonomous mobile robotic systems rely on software for everything from low-level motor control to interconnected components to high-level planning and autonomy. We focus on the software engineering of robotic systems, including architectures, testing, development, and simulation. Students will learn practical robotic coding skills in Python, C++, and Matlab Simulink in workshops using the Robot Operating System (ROS).

This is the undergraduate version of the same graduate special topic of the same name. Students may not receive credit for both.

CSC 495 - 003 - Emerging Trends in Game Technology - TBA

Prerequisites: CSC 481

Semester/Year: Fall 2021

Description: This class may count as a CSC Games Restricted Elective.

This course will survey modern technology trends in the commercial games industry. Topics will include: the rise of VR in media, entertainment, and enterprise; the diversification of game engines beyond games, targeting enterprise verticals; the use of game engines as a prototyping tool; platform optimization techniques and considerations, learning to work in a constraint-based platform and then using those tools in general development; the business of games from a small (indie), medium (local) and large (publisher) perspective; and the evolving from software developers into solutions architects. The course will feature lectures and reading assignments, and a combination of project-based work both as individual assignments and on group project using Unity3D. Students will be expected to give one or more presentations in class about their work.

CSC 495 - 011 - Computer Models of Interactive Narrative - Dr. Martens

Prerequisites: CSC 316

Semester/Year: Fall 2021

Description: This is the undergraduate version of CSC 582 and is cross-listed with CSC 582 - 001.
Students cannot get credit for both classes.

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.

CSC 495 - 012 - Natural Language Processing - Dr. Singh

Prerequisites: CSC 316 and [MA 305 or MA 405]

Semester/Year: Fall 2021

Description: This is the undergraduate version of 791 - 012, NLP. This section is cross-listed with CSC 791 - 012, NLP.

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.

Students may not receive credit for the undergraduate version and graduate version of the same course topic.

CSC 498 - 001 - Independent Study in Computer Science - TBA

Prerequisites: n/a

Semester/Year: Fall 2021


Detailed investigation of computing topics of particular interest to advanced undergraduate computer science majors under faculty direction. Appropriate topics may include software development projects, tutorial work on new or emerging technologies, or exploration of an emerging computing topic. The experience must be arranged in advance by the student and approved by the Department of Computer Science prior to enrollment. A minimum of 45 hours must be completed for each credit hour earned. An independent study proposal and final report approved by the faculty mentor and the department are required. Individualized/Independent Study courses require a "Course Agreement for Students Enrolled in Non-Standard Courses" be completed by the student and faculty member prior to registration by the department. At most 6 credit hours of CSC 498 and/or CSC 499 may be applied to degree.

For more information:

CSC 499 - 001 - Independent Research - TBA

Prerequisites: n/a

Semester/Year: Fall 2021


Undergraduate students who are engaged in research projects supervised by faculty may wish to substitute hours of CSC 499 (Independent Research in Computer Science) for a Computer Science Restricted Elective or Other Restricted Elective.

These substitutions must be approved by the Director of Undergraduate Programs on a case-by-case basis. Substitutions will be evaluated based on a written proposal. Students are expected to provide a mentor-approved written summary of their research experience to the Office of Undergraduate Advising before credit will be recorded for CSC 499. Students may substitute a maximum of six hours of CSC 499 for CSC Restricted Elective and/or Other Restricted Elective. CSC 499 is only offered on a credit-only ("S/U") grading basis and only for 3 credit hours.

For more information: