Navigation: CSC Department Menu

Fall 2016 Undergraduate & Graduate Special Topic Courses

CSC 295 - 001: Competitive Problem Solving – Dr. Sturgill

Prerequisites: None

Description: This course is intended to help the student develop programming skill and knowledge of essential algorithms, data structure and programming techniques in the context of problem solving. At each class meeting, we will look at two or three new programming problems. We will review the tools we need in order to solve them. Then, students will get to apply these ideas immediately to implement their own working solutions.

During class, we will practice reading and understanding short problem description, including making sense of technical and mathematical language and anticipating special cases that may not be initially obvious. We will practice basic problem solving skills, like estimating problem difficulty, identifying standard solutions, time management, problem decomposition, implementation techniques, designing tests and debugging. We will practice adapting and applying standard algorithms to specific problems, especially when the right algorithm may not be obvious from the problem. We will get the chance to work individually and in small teams. This will help us develop skills in communication, cooperative implementation, resource allocation and negotiation.

The course is a good way to strengthen programming skills and speed, but it’s also a good way to prepare for the various programming competitions offered on campus and at other universities. Although it’s not required, students from this class often represent NC State University at the ACM ICPC Regional Programming contest in the fall.

CSC 295 - 002: Computer Science Education: Training for Teaching Assistants – Dr. Heckman

Prerequisites: None

Description: This class provides training for teaching assistants (TAs) of undergraduate computer science courses. Students who enroll in the course should be employed as a TA during the semester of instruction or seeking future employment as a TA.

Students will learn about logistical aspects of TAing (tools and evaluation of student work); student interactions and concerns (including office hours and diversity training); and educational theory (active learning; creation of assessments, evaluation of teaching; and effective education). Students will be expected to complete a project, teaching sample, and reflection.

CSC 495 - 001: Introduction to Data Sciences – Dr. Chirkova

Prerequisites: Knowledge of linear algebra at the undergraduate level (MA305 or MA405); knowledge of statistics at the undergraduate level (STAT 305, 312, 370, 372); programming in any language such as Python, C++, FORTRAN, or Java (CSC 112, 114, 116); or permission of instructor. Programming in R, SAS, or Matlab is desirable but not required.

Description: Data science has become increasingly important in nearly every industry sector and academic field. It has gained significant national attention and interest by combining techniques from several fields including computer science, statistics, and mathematics to extract knowledge from data. This course provides an overview of several foundational topics in data science. The goal is to help you gain skills in handling and analyzing data from “end to end.” To mirror data-science working environments, some of your assignments and in-class work will be done in multidisciplinary teams.

CSC 495 - 003: Social Computing – Dr. Singh

Prerequisites: CSC 316

Description: This course surveys the field of social computing. It provides an introduction to the key concepts, paradigms, and techniques of social computing and social analytics. Specific topics will be selected from the following list: social media, social network analysis, typology of social relationships, crowdsourcing, prediction markets, organizational modeling, contracts, norms, mobility and social context, sociotechnical systems, social interpretation of information, computational models, software engineering for social computing.

CSC 495 - 004: Cryptography – Dr. Alessandra Scafuro

Prerequisites: CSC 316

Description: Cryptography is everywhere in our everyday life. Whenever we connect to Facebook, shop on Amazon, call an Uber, 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 and how to formally prove that a cryptographic protocol achieves a certain security property. 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]. At the end of this course, you will be able to:

  • State and motivate the formal definition of the most common cryptographic goals [such as privacy and integrity].
  • Formally prove/disprove security of a cryptographic protocol.
  • Identify the cryptographic tools needed in real world protocols [such as SSL, Bitcoin].
  • State and motivate more advanced cryptographic goals [such as zero-knowledge].

CSC 495 - 005: Cloud Computing – Dr. Dreher

Prerequisites: CSC 316

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.

CSC 495 - 006: Software Security – Dr. King

Prerequisites: CSC 326

Description: 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, students should understand:

  • Security risk management. Students will be able to assess the security risk of a system under development. Risk management will include the development of formal and informal misuse case and threat models. Risk management will also involve the utilization of security metrics.
  • Security testing. Students will be able to perform all types of security testing, including fuzz testing at each of these levels: white box, grey box, and black box/penetration testing.
  • Secure coding techniques. Students will understand secure coding practices to prevent common vulnerabilities from being injected into software.

CSC 591 - 001: Data Intensive Computing – Dr. Freesh

Prerequisites: None

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.

Some of the topics covered during Spring 2015:

  • Big Data Problems
  • Overview of Distributed Computing
  • NoSQL DBs
  • AWS
  • ETL-extract transform load
  • Stream processing
  • HPCC
  • Hadoop
  • BOINC
  • Ceph
  • Kafka
  • Nebula
  • Druid
  • Mesos

CSC 591 - 002: Data-driven Privacy – Dr. Staddon

Prerequisites: None

Description: In 2006, AOL released user search logs stripped of email addresses, account holder names and other explicitly identifying information. The New York Times promptly examined the queries in the data and identified user 4417749 as a 62 year old resident of Lilburn, GA [1]. This is one of many ‘reidentification’ attacks. More recently, researchers have shown how pseudonymous eBay users can be identified [2] and how Netflix users can be identified from their movie ratings [3].

When hearing about privacy breaches like these, it’s natural to ask what technology is available to users to protect their privacy. It’s important to consider not only the technical functionality of privacy-enhancing technologies (PETs) but also usability and the user experience -- all impact adoption. Hillary Clinton’s use of a personal email account for government business [4] demonstrates the strong influence usability can have on privacy/security choices.

Muddying the waters somewhat is controversy around whether PETs meet a user need. Some argue that despite the frequency of outcries over breaches, users do not care much about privacy. The evidence presented includes studies in which users are willing to give up sensitive information (e.g. passwords, birthdates) for candy as well as examples of over-sharing online [5]. This is often referred to as the “privacy paradox” because user privacy behavior appears at odds with user attitudes.

In this course, we will study how to use data in a principled way to understand privacy risk, attitudes and concerns. We will focus on several of the attacks, PETs and privacy measurement techniques behind this research and press, in particular:

  • Reidentification and Data Aggregation: Inference risks, attacks and protection strategies
  • Privacy-Enhancing Technologies & the User Experience: Protocols for privacy-enhanced data storage and communication, and the user experience issues that can impede adoption
  • Privacy Measurement: Usage of self-reported and behavioral data to understand the user perspective on privacy

This course will provide students with an introduction to PETs and active areas of privacy research.

CSC 591 - 003: Foundations of Data Science – Dr. Vatsavai

Prerequisites: None. An undergraduate course in statistics is helpful but not required.

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. 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: Data Driven Decision Making – Dr. Streck

Prerequisites: None

Description: 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, and unstructured text analytics will be used to provide input into the decision making process. Students will learn how data can be transformed into business intelligence (BI) while participating in an action learning setting. Focus on exploring the decisions processes of Data Sciences field.

CSC 591/791 - 005 and ECE 592/792: Internet of Things Analytics – Dr. Perros

Prerequisites: Basic knowledge of statistics and probability theory, programming skills. Graduate-level standing.

Description: The course covers the most popular modeling and machine-learning techniques that are used in the Internet of Things, 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 and there will also be a term project. Students enrolled in the CSC791 or ECE 792 sections will be required to do a research paper on a related topic.

CSC 591/791 - 006: Foundations 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, click here.

CSC 591/791 - 007: Automated Software Engineering – Dr. Menzies

Prerequisites: None

Description: Note that this is a programming-intensive subject. A programming background is required in a contemporary language such as Java or C/C++ or Python. Hence, the prerequisite for this class is 510, Software Engineering. Significant software industry experience may be substituted, at the instructor’s discretion. Students in this class will work in Python, but no background knowledge of that language will be assumed.

What is the next "big thing" after "big data"?

Well, after "data collection" comes "model construction" so the next big thing after big data will be "big modeling". In this subject, students will learn how to represent, execute, and reason about models. Our case studies will come from software engineering but the principles of this subject could be applied to models in general.

For more information, click here.

CSC 591/791 - 008: DevOps – Dr. Parnin

Prerequisite: CSC 510

Description: Modern software development organizations require entire teams of DevOps to automate and maintain software engineering processes and infrastructure vital to the organization. In this course, you will gain practical exposure to the skills, tools, and knowledge needed in automating software engineering processes and infrastructure. Students will have the chance to build new or extend existing software engineering tools and design a DevOps pipeline.

CSC 591/791 - 009: Automated Program Repair – Dr. Stolee

Prerequisites: None

Description: All software has bugs. In this special topics course, you will learn about modern approaches to automated fault repair, that is, tools and techniques that locate and patch software faults. You will also have the opportunity to build and evaluate a simple automated program repair engine. For more details, visit: https://github.com/kstolee/AutomatedProgramRepair-Fall2016.

CSC 591 - 013: Computational Visual Narrative – Dr. Arnav Jhala

Prerequisites: None

Description: Focuses on discussion of recent advances in the area of visual storytelling in graphical environments. Major topics covered in this course are: intelligent camera control, shot-composition, lighting design, interactive storytelling, and computational techniques associated with these applications. Class will consist of in-class discussions, student presentations of research papers and a final student project.

CSC 791 - 010: Generative Methods for Game Design – Dr. Chris Martens

Prerequisite: None

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 791 - 017 and ECE 792 - 027: Topics in IoT - Internet of Things – Dr. Viniotis

Prerequisites: None

Description: 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), computing models and IoT-specific analytics.

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 791 - 025 and ECE 792 - 028: Applications of Graphs and Graphical Models – Dr. Lobaton

Prerequisites: Programming Experience (C++ or other object oriented language such as Python); Linear Algebra (MA 405 or Equivalent); Probability (ECE 514, Equivalent, or Instructor Permission)

Description: This course will discuss theoretical and practical aspects of graphs and graphical models, and their applications to a number of areas such as communication networks (e.g., path routing), machine learning (e.g., classification, clustering), computer vision (e.g., segmentation, object recognition) and robotics (e.g., motion planning). Topics from graph theory will include: Minimum spanning trees, max flows, min cuts, normalized cuts, and graph matching. Topics from probabilistic graphical models will include: Bayesian networks and Markov random fields.