CSC Undergrad Restricted Electives - Spring 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 - Introduction to Numerical Methods - Dr. Heber

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

Semester/Year: Spring 2021

Description: This class is being co-taught by Dr. Stallmann.

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 401 - 001 - Data and Computer Communications Networks - Dr. Harfoush

Prerequisites: ST 370 and CSC 246

Semester/Year: Spring 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 405 - 001 - Computer Security - Dr. Kapravelos

Prerequisites: CSC 246

Semester/Year: Spring 2021

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.

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

Prerequisites: CSC 316

Semester/Year: Spring 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 414 - 001 - Cryptography - Dr. Scafuro

Prerequisites: CSC 226 and CSC 316

Semester/Year: Spring 2021

Description: This section is cross-listed with CSC 514 - 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.

CSC 417 - 001 - Theory of Programming Languages - Dr. Menzies

Prerequisites: CSC 316

Semester/Year: Spring 2021

Description: Theory of programming languages with emphasis on programming language semantics and implementation issues. Formal models of syntax and semantics. Static versus dynamic scoping. Parameter passing mechanisms. Garbage collection. Programming in alternate paradigms such as applicative, functional, logic, and object-oriented programming languages.

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

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

Semester/Year: Spring 2021

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.

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

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

Semester/Year: Spring 2021

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 Computer Graphics Projects - Dr. Watson

Prerequisites: CSC 461

Semester/Year: Spring 2021

Description: 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 482 - 001 - Advanced Computer Game Projects - Dr. Roberts

Prerequisites: CSC 481

Semester/Year: Spring 2021

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. Martens

Prerequisites: CSC 316

Semester/Year: Spring 2021

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 - 000 - Computational Geometry - Dr. Sheehy

Prerequisites: TBD

Semester/Year: Spring 2021

Description: TBD

CSC 495 - 002 - Privacy - Dr. Das

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

Semester/Year: Spring 2021

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 495 - 008 - Computational Visual Narrative - Dr. Jhala

Prerequisites: CSC 316 (required), CSC 461 (recommended)

Semester/Year: Spring 2021

Description:
This class is an approved CSC Games Restricted Elective.

An intensive study of advanced development processes, software, and various computer platforms used in the creation of computational media in an interdisciplinary setting in tandem with ADN 460 class in the Department of Art and Design.  Course principles will be applied in a number of individual assignments related to design and development of computational media and an interdisciplinary team-based semester-long project. Student activities in the course will include ideation, storyboarding, project pitches, development tools, prototyping, and final polish for projects. Classes will primarily be student working group meetings involving project
review with the instructor, but will also include a mix of lecture format, student
presentations and guest presentations from computational media designers. 

CSC 495 - 010 - Development Operations (DevOps) - Dr. Parnin

Prerequisites: CSC 326

Semester/Year: Spring 2021

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

Students must obtain permission from Dr. Parnin, via email, to be enrolled in CSC 495 - 010 for Spring 2020 .

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 499 - 001 - Independent Research - TBA

Prerequisites: n/a

Semester/Year: Spring 2021

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