CSC Restricted Electives - Fall 2019

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 - Dr. Battestilli

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.

Class Time: MW 11:45 am - 1:00 pm

CSC 412 - 001   Compiler Construction - TBA

Prerequisites: CSC 316 and CSC 333


This is the undergraduate version of 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.

Class Time: TH 6:00 - 7:15 pm

CSC 415 - 001    Software Security - Dr. King

Prerequisites: CSC 316


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:

Class Time: TH 10:15 - 11:30 am

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

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

Description: This is the undergraduate version of 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: MW 1:30 - 2:45 pm

CSC 440 - 001   Database Management Systems - Dr. Chirkova

Prerequisites: CSC 316

Description: 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.

Class Time: MW 8:30 - 9:45 am

CSC 442 - 001   Introduction to Data Science - TBA

Prerequisites: [MA 305 or MA 405] and [ST 305 or ST 312 or ST 370 or ST 372] and [CSC 111 or CSC 112 or CSC 113 or CSC 116 or ST 114 or ST 445]

Description: Overview of data structures, data lifecycle, statistical inference. Data management, queries, data cleaning, data wrangling. Classification and prediction methods to include linear regression, logistic regression, k-nearest neighbors, classification and regression trees. Association analysis. Clustering methods. Emphasis on analyzing data, use and development of software tools, and comparing methods.

Class Time: MW 8:30 - 9:45 am

CSC 450 - 001   Web Services - Dr. Singh

Prerequisites: CSC 316

Description: 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.

Class Time: MW 1:30 - 2:45 pm

CSC 461 - 001   Computer Graphics - Dr. Watson

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

Description: 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++.

Class Time: TH 11:45 am - 1:00 pm

CSC 474 - 001   Network Security - Dr. Reaves

Prerequisites: CSC 230

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.

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

CSC 481 - 001   Game Engine Foundations - Dr. Roberts

Prerequisites: CSC 316

Description: This is the undergraduate version of 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.

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

CSC 495 - 001   Cloud Computing - Dr. Dreher

Prerequisites: CSC 246

Description: 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.

Class Time: T/H 3:00 - 4:15 pm

CSC 495 - 011   Cryptography - Dr. Scafuro

Prerequisites: CSC 226 and CSC 316

Description: This section is cross-listed with CSC 591 - 011.

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 495 - 012   Natural Language Processing - Dr. Singh

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

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.

Class Time: MW 3:00 - 4:15 pm