CSC Graduate Special Topic Courses - Fall 2018
CSC 591 - 002 Data Intensive Comp - Dr. Freeh
Description: This course will explore processing massive amounts of data. Students will study current software frameworks and tools. They will understand the design principles underlying large clusters that support data intensive computing. This project-oriented course will survey many distributed computing frameworks, such as Hadoop, BOINC, and HPCC. Each student will work in a medium-size group on a semester-long project using the above frameworks and supporting systems, such as HDFS, NoSQL (eg, MongoDB), and Hive.
Because the project is a significant portion of the grade students are expected to have a strong systems background, including completion of CSC 501.
CSC 591 - 003 Foundations of Data Science - Dr. Vatsavai
Description: Students will learn core statistical data analysis principles. This course introduces principle ideas in statistical learning and help students prepare for advanced courses in data mining and machine learning. Focus will also be given on applying these principles for variety of data analytical tasks using R.
Topics: Random variables and probability distributions, exploratory data analysis, variable selection, sampling methods, histograms and probability distributions, density estimation, missing data and imputation, mixture models, latent variables, and expectation maximization, regression analysis, discriminant analysis, bagging and boosting, principle component analysis, information theory -- entropy, mutual information, Bayesian information criteria, conditional independence, rescaling and low-dimensional summaries, factor analysis, graphical causal models and causal inference, and evaluating predictive models.
CSC 591 - 004 Internet of Things Analytics - Dr. Perros
Prerequisites: Basic knowledge of statistics and probability theory, programming skills. Graduate-level standing
Description: This class is cross listed with ECE 592 - 005.
The course covers the most popular modeling and machine-learning techniques that are used in relation to the Internet of Things (IoT), such as: simulation techniques, basic queueing theory concepts, multivariate regression, time-series forecasting, clustering, neural nets, support vector machines (SVC), and hidden Markov models (HMM).
Emphasis will be placed on hands-on projects.
Learning objectives: At the end of the course, students will be able to a) develop simulation models of IoT systems, b) apply statistical and machine-learning techniques to analyze data from IoT sensors, and c) gain experience with one more of the packages: MatLab, R, Scikit-learn (machine learning in Python), KNIME.
CSC 591 - 010 Data Driven Decision Making - Dr. Kowolenko
Description: This class is cross listed with CSC 495 - 010.
This course will provide the students with an understanding of the criteria required in decision-making including quantifying stakeholder value, dealing with uncertainty and risk, and critical problem-solving methodologies. Understanding and qualifying data sources, use of structured and unstructured data, unstructured text analytics, decision-making and machine learning algorithms will be used to design an application that can be used for business intelligence (BI) while participating in an action learning setting. Focuses on exploring the decisions processes based on the output of Data Sciences methodologies.
CSC 591 - 011 Cryptography - Dr. Scafuro
Description: This class is cross listed with CSC 495 - 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.
CSC 591 - 012 Educational Technology - Dr. Lynch
Description: This class is cross listed with CSC 495 - 012.
This course will be a seminar and project-based course that will provide an overview of educational technology.
Specifically: tutoring systems, educational data mining, and educational guidance.
Students in the course will be introduced to the relevant topics via regular readings with presentations. They will also be required to locate and present at least one research paper over the course of the semester, and they will be required to complete a team project.
Undergraduate students will be able to complete a smaller project and a shorter paper presentation.
CSC 591 - 013 Game Engine Foundations - Dr. Jhala
Description: This is the graduate version of CSC 481.
The purpose of this course is to familiarize students with issues and techniques of computer games design in general, and more specifically game engine design. With the proliferation of computer games, a number of distinct genres have emerged. Each genre of computer game provides a unique set of design challenges for designers. While there are no "one size fits all" solutions to game design problems, there are a number of techniques common to many different games. These commonalities have given rise to game engines which are software tools to aid designers. Behind almost all successful commercial games is a game engine.
In this course we will examine some of the components of a commercial-strength game engine. We will survey different genres of games, using some of the unique design challenges each genre provides as a motivation for an in-depth examination of the affordances games engines provide for designing games of that genre. We will cover topics ranging from data structures, resource management, game loops and logical timing systems, scripting, error logging, and networking.
CSC 591 - 059 Internet of Things: A primer - Dr. Viniotis
Description: This class is cross-listed with ECE 592 - 059.
In this course, we will introduce the students to the concepts, challenges, and recent developments around Internet of Things – IoT. We will focus on the fundamental issues that arise in the operation, design and management of IoT systems (not just networks). Such issues include, among others, business objectives and technical design requirements, IoT building blocks, architectures and reference models, enabling technologies, IoT protocol stacks (around verticals), IoT-specific analytics, and computing models.
Upon completing this course, the students will be able to:
- Communicate the impact of various business drivers for IoT
- Summarize technical design requirements
- Critique architectures and protocol stacks for a specific vertical industry in IoT
- Summarize, evaluate or implement specific protocols (RPL, 6LoWPAN, CoAP)
- Demonstrate how cloud and fog computing models apply in the IoT space
- Provide arguments about the pros and cons of using specific enabling technologies in IoT
- Synthesize analytics algorithms for a specific vertical industry in IoT (time permitting)
CSC 591 - 069 Network Science - Dr. Eun
Description: This class is cross-listed with ECE 592 - 069.
Many modern complex networks such as Internet of Things, Online Social Networks, large scale wireless ad-hoc networks, power-grid, biological networks, etc. can be represented as a (large) graph. This course will first provide an introduction to graph modeling, its characterization, metrics on graph, ranking, and how to describe popular dynamics on graphs including random walk and epidemics. It also covers basics of graph sampling, property estimation, and randomized algorithms for computationally prohibitive (NP-hard) tasks such as clustering/partitioning. Applications include Google Pagerank algorithm, graph sampling, property estimation, identifying/ranking nodes, security, with connections to various statistical methods in machine learning and big (graph) data.
- Graphs for complex networks
- modeling, representation, classification, adjacency matrix, graph Laplacian
- metrics on graph: degree, centrality, algebraic connectivity, etc.
- random graph model, small-world graph, power-law, preferential attachment models
- extension: multi-layer graphs, dynamic graphs
- Dynamics on graphs
- random walk, Google pagerank walk
- epidemics modeling (branching process, SIS, SIR, etc.)
- epidemics on general graph for information/malware spreading
- Algorithms on graphs
- randomized algorithms with brief intro to MCMC (Markov chain Monte Carlo)
- graph sampling, estimation
- MCMC approach to NP-hard optimization problem, Simulated Annealing
- Graph clustering/partitioning, community detection, node ranking, gossip algorithms, etc.
- Applications to various networks (e.g. WWW, online social networks, any other networked data structure)
CSC 591 - 078 LTE and 5G Communications - Dr. Guvenc
Description: This class is cross-listed with ECE 592 - 078.
The course provides an introduction to the theoretical fundamentals and practical/experimental aspects of Long Term Evolution (LTE) and 5G technologies. A basic understanding of digital communication systems and radio access networks are required. Six main areas will be studied: 1) User and control plane protocols, 2) physical layer for downlink, 3) physical layer for uplink, 4) practical deployment aspects, 5) LTE-Advanced, and 6) 5G communications. Fundamental concepts that will be covered in the context of LTE/5G systems include OFDMA/SC-FDMA, synchronization, channel estimation, link adaptation, MIMO, scheduling, and millimeter wave systems.
Although not required, the students are advised to have the prior knowledge gained from ECE 570 or ECE 582 before taking this course
CSC 591/791 - 001 Generative Methods for Game Design - Dr. Martens
Description: This course will introduce foundations and current research on generative methods, including algorithmic design, text and story generation, and procedural level generation, with applications to game design. The course will have both seminar and traditional assignment components; we will read papers and tinker with systems, culminating in a final project. Students will be expected to have some programming fluency; background in an artistic practice will be helpful but is not required.
CSC 591/791 - 022 Program Repair - Dr. Stolee
Prerequisites: CSC 510 (Software Engineering) preferred; graduate or senior standing with at least 3.0 GPA required, good knowledge of at least one high level programming language required.
Description: All software has bugs. In this special topics course, you will learn about modern techniques in automated fault repair, that is, techniques that locate and patch software faults. We will cover recent research that walks the algorithm of automated program repair: fault identification, fault localization, fix localization, and evaluating the fix. We will also explore topics that pertain to the softer side of repair, such as what is a bug, what makes a good patch, and how to evaluate patch quality. You will also have the opportunity to build and evaluate a simple automated program repair engine. This course is primarily a seminar-based course involving lots of discussion, lectures, small group activities, tool demonstrations, and final project presentations.
For more details, visit: http://go.ncsu.edu/programrepairfall2017
CSC 591/791 - 023 Foundation of Software Science - Dr. Menzies
Prerequisites: CSC 226 and CSC 316, or similar, graduate or senior standing with at least 3.0 GPA, good knowledge of at least one high level programming language.
Description: Most software companies now learn their policies via data-driven methods. Modern practitioners treat every planned feature as an experiment, of which only a few are expected to survive. Key performance metrics are carefully monitored and analyzed to judge the progress of a feature. Even simple design decisions such as the color of a link are chosen by the outcome of software experiments.
This subject will explore methods for designing data collection experiments; collecting that data; exploring that data; then presenting that data in such a way to support business-level decision making for software projects.
For more information, see http://fss16.unbox.org
CSC 801 - 001 CS Seminar - Dr. Mueller
Description: This seminar discusses systems research and is designed for PhDs advised by systems faculty in Computer Science.
CSC 801 - 002 CS Seminar - Dr. Dutta
Prerequisites: To register and get credits, first-year PhD standing in Computer Science. Other CSC PhD students may attend if there is room, but cannot receive credit.
Description: How do you start on the process of PhD research, if you have never done research before? What are the processes you will be expected to follow, and tasks you will be expected to perform, without necessarily being told how to? How do you know when you have become ready to "do research"?? Is P=NP?!
We can't tell you that last one, but we hope to help you with the others! We will go over the life cycle of research projects, the anatomy of research papers, how to read and write reviews, how to develop research ideas, and how to present and communicate research. Descriptive material will be presented by individual instructors and panels, and students will also undertake assignments in small-scale research projects that allow them to follow processes building up standard research skills.