CSC Restricted Electives - Spring 2023

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.

CSC 401 - 001   Data and Computer Communications Networks - TBA

Prerequisites: ST 370 and CSC 246

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 405 - 001   Computer Security - Dr. Kapravelos

Prerequisites: CSC 246

Description: Basic concepts and techniques in information security and management such as risks and vulnerabilities, applied cryptography, program security, malicious software, authentication, access control, operating systems security, multilevel security, trusted operating systems, database security, inference control, physical security, and system assurance and evaluation. Coverage of high-level concepts such as confidentiality, integrity, and availability applied to hardware, software, and data.

Class Time: T 4:30 - 7:15 pm

CSC 414 - 001   Cryptography - Dr. Scafuro

Prerequisites: [CSC 226 and CSC 333] or MA 225

Description: This section is cross-listed with MA 414 - 001.

Cryptography is everywhere in our everyday life. Whenever we connect to Facebook, shop on Amazon, call Lyft, our device runs a sequence of cryptographic protocols that enable for secure communication over a public network such as the Internet. In this class you will learn the concepts and the algorithms behind such cryptographic protocols. You will learn how to formally define security properties such as confidentiality and integrity of data; you will be able to formally prove that a cryptographic protocol achieves a certain security property; and you will be able to identify the cryptographic tools needed in real world protocols [such as SSL, Bitcoin].

You will also discover that cryptography has a much broader range of applications. It solves absolutely paradoxical problems such as proving knowledge of a secret without ever revealing the secret [zero knowledge proofs], or computing the output of a function without ever knowing the input of the function [secure computation].

Note that in this course we do not focus on implementation, neither programming of cryptographic schemes.

Class Time: MW 4:30 - 5:45 pm

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

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

Description: This course is the undergraduate version of CSC 522. This section is cross-listed with 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.

Students cannot get credit for both CSC 422 and CSC 522.

Class Time: Spring 2021

CSC 433 - 001   Privacy - Dr. Das

Prerequisites: CSC 316 (required), ST 370 (recommended)

Description: Privacy is a growing concern in our modern society. We interact and share our personal information with a wide variety of organizations, including financial and healthcare institutions, web service providers and social networks. Many times such personal information is inappropriately collected, used or shared, often without our awareness. This course introduces privacy in a broad sense, with the aim of providing students an overview of the challenging and emerging research topics in privacy.

This course will expose students to many of the issues that privacy engineers, program managers, researchers and designers deal with in industry. By the end of the course, students will learn about the following areas in privacy:

CSC 453 - 001   Software for Wireless Sensor Systems - Dr. Shahzad

Prerequisites: [CSC 246 or ECE 306] and CSC 230 and CSC 316

Description: Development of software for wireless computer systems. Software designs for applications and networking in this environment, including algorithms for ad hoc discovery, routing, and secure data transfer. Software interface to related sensors and subsystems including global positioning system. Algorithms for power management. Programming required.

CSC 462 - 001   Advanced Comp Graphics Projects - Dr. Watson

Prerequisites: CSC 461

Description: This is the undergraduate version of CSC 562. This section is cross-listed with CSC 562 - 001. Students may not get credit for both.

Principles of computer graphics with emphasis on three-dimensional graphics. Topics include: 3-D projections and transformations, curves and surfaces, color and texture, animation, visualization, and global illumination techniques. Programming project required.

CSC 472 - 001   Cybersecurity Projects - Dr. Wandji

Prerequisites: CSC 471 and Senior Status

Description: Application of cybersecurity principles and basic computer science to solve a cybersecurity problem.

Project with comprehensive written and oral project report is required.

Enrollment is open to CSC majors only.

CSC 482 - 001   Advanced Computer Game Projects - Dr. Jhala

Prerequisites: CSC 481

Description: Principles of computer game development with emphasis on 3D first-person game engines. Topics include: advanced character behavior control, procedural content generation, large scale mulit-player game design and infrastructure, serious games for education, training and other applications, the game production pipeline and project built on top of a commercial game engine. Consideration of the game production pipeline, including project pitches, requirements and design detail. Programming project with written and oral reporting is required. Enrollment open to CSC majors only.

CSC 484 - 001   Building Game AI - Dr. Roberts

Prerequisites: CSC 316

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

In this course we will examine Artificial Intelligence [AI] techniques that are used in the design of computer games. We will look at techniques for game playing as well as the design of AI opponents tasked with creating "good experiences" for players. The course will begin with a discussion of general AI, common algorithms, data structures, and representations. From there, we will cover topics in character movement, pathfinding, decision making, strategy, tactics, and learning. In a sequence of programming assignments students will create increasingly sophisticated AI implementations. Students will also critically review the projects conducted by graduate students enrolled in CSC584. CSC majors only.

Students cannot get credit for both CSC 484 and CSC 584.

CSC 495 - 002   Software Engineering for Robotics - Dr Ore

Prerequisites: CSC 326

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 - 010    Development Operations (DevOps) - Dr. Parnin

Prerequisites: co-req: CSC 326

Description: This is the undergraduate version of CSC 519 and is cross-listed with CSC 519. This class might be listed as CSC 419.

Modern software development organizations require DevOps engineers to automate and maintain software engineering processes and production infrastructure. In this course, you will gain practical exposure to the skills, tools, and knowledge needed in automating software engineering processes and infrastructure necessary for continuous deployment of software. Students will have the chance to build new or extend existing software engineering tools and design an automated deployment pipeline.

Students may not recieve credit for CSC 495 (DevOps), CSC 419 (DevOps), and CSC 519 (DevOps).

CSC 498 - 001   Independent Study in Computer Science - TBA

Prerequisites: n/a

Description:

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: https://www.csc.ncsu.edu/academics/undergrad/research.php

CSC 499 - 001   Independent Research - TBA

Prerequisites: n/a

Description:

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: https://www.csc.ncsu.edu/academics/undergrad/research.php