CSC Restricted Electives - Spring 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. Rouskas

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: T/H 3:00 - 4:15 pm

CSC 402 - 001   Networking Projects - Dr. Ioannis Viniotis

Prerequisites: CSC 401

Description: Through a series of hands-on networking labs, students will gain experience in practical topics such as network configuration, troubleshooting, and static and dynamic routing. The course prepares students sufficiently for an industry certification.

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

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 411 - 001    Introduction to Artificial Intelligence - Mr. Adam Gaweda

Prerequisites: CSC 316

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

Class Time: T/H 10:15 - 11:30 am

CSC 416 - 001   Introduction to Combinatorics - Dr. N. Reading

Prerequisites: MA 225 or CSC 226

Description: Crosslisted as MA 416.

Basic principles of counting: addition and multiplication principles, generating functions, recursive methods, inclusion-exclusion, pigeonhole principle; basic concepts of graph theory: graphs, digraphs, connectedness, trees; additional topics from:Polya theory of counting, Ramsey theory; combinatorial optimization - matching and covering, minimum spanning trees, minimum distance, maximum flow; sieves; mobius inversion; partitions; Gaussian numbers and q-analogues; bijections and involutions; partially ordered sets.

Class Time: M/W/F 10:40 - 11:30 am

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

Prerequisites: CSC 316

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.

Class Time: T/H 4:30 - 5:45 pm

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

Prerequisites: ST 370 and MA 305, and a grade of C- or better in either CSC 226 or LOG 201

Description: 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: T/H 11:45 am - 1:00 pm

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.

Class Time: M/W 11:45 am - 1:00 pm

CSC 456 - 010   Computer Architecture and Multiprocessors - Dr. Tseng

Prerequisites: CSC 236 and CSC 316

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

Major components of digital computers and the organization of these components into systems. Begins with single processor systems and extends to parallel systems for multiprocessing. Topics include computer organization, instruction set design, cache memory, pipelined processors, and multiprocessors. Recent developments in PC and desktop architectures are also studied.

Class Time: M/W 3:00 - 4:15 pm

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

Prerequisites: CSC 461

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.

Class Time: M/W 1:30 - 2:45 pm

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

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.

Class Time: M/W 3:00 - 4:15 pm

CSC 484 - 001   Building Game AI - Dr. Roberts

Prerequisites: CSC 316

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

Class Time: T/H 4:30 - 5:45 pm

CSC 495 - 003   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 1:30 - 2:45 pm

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

Prerequisites: CSC 326

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

Class Time: M/W 10:15 - 11:30 am

CSC 495 - 012   Privacy - Dr. Anupam Das

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

Description: This Section is cross-listed with CSC 591 - 012.

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:
•      Privacy fundamentals: an overview of privacy definitions and history.
•      Data privacy: the motivations for data privacy and common implementations (e.g., k-anonymity, differential privacy, information flow).
•      Web/online privacy: online tracking, usable privacy, anonymous communication and privacy policies.
•      Emerging topics: privacy in IoT, AI for privacy, privacy enhancing technologies.

For more information, see (still under construction)

Class Time: T/H 8:30 - 9:45 am