Spring 2018 Special Topic Courses
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 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.
CSC 495 - 002 Programming Languages - Dr. Menzies
Prerequisites: CSC 316
Description: Given a commercial software problem, how can we best select a programming language for that problem? Further, given the ever-changing nature of computer programming languages, what can we learn now that will help us in the future to better understand future programming languages? To answer these questions, this subject takes a pragmatic and a theoretical approach, from a modeling perspective.
At a pragmatic language, students will implement the same program using four different programming language paradigms (object-oriented, functional, logic-based, data-driven). Extensive tutorial material will be offered to teach how to program in each of these paradigms. For 2017, the languages covered will be Closure (functional), Python (OO and procedural), Prolog (logical), Elixr (hybrid: supports pattern matching and many other language features). In subsequent years, this list will evolve as the landscape of languages evolves.
At a theoretical level, the class lectures will explore these paradigms to describe the underlying concepts that distinguish these approaches. These concepts include parsing technology such as tokenization, parse trees, syntactic analysis, semantic analysis, regular expressions; as well as higher-level concepts such as finite state machines, type theory, lambda calculus, functions, closures and objects, predicates, resolution theorem proving.
As to the modeling perspective, students will use these tools to build interpreters of domain-specific languages that are understandable and maintainable by non-programmers.
CSC 495 - 003 Software Testing - Dr. Stolee
Prerequisites: CSC 316
All software must be tested. Part of a well-rounded software engineering education involves understanding why we test, how to test, and the tools available to assist with testing. Course material is grounded in recent research and applied using modern software testing tools. Students will gain hands-on experience with advanced software testing concepts, including test case prioritization, automated test generation, mobile testing, mutation testing, and fairness testing.
CSC 495 - 004 Stochastic Optimization I: State of the Art and Beyond - Dr. Brglez
Prerequisites: CSC 226, CSC 316, [MA 305 or MA 405], and CSC 116
This is a research-oriented project-based course on stochastic optimization. The textbook provides a ready-to-start framework in R. The course will not only cover the relevant algorithms/solvers and optimization problems introduced in the textbook but also explore new solver prototypes in R that will challenge and potentially outperform algorithms published in the book and elsewhere. Ranked in terms of competitive advantage, stochastic optimization is the top layer of the 'Big data analytics' pyramid (Thomas H. Davenport and Jeanne G. Harris, Competing on Analytics: The New Science of Winning, Harvard Business School Press, 2007).
CSC 495 - 006 / 591 - 006 Data Driven Decision Making - Dr. Kowolenko
Prerequisites: CSC 316
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, 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 495 - 007 Visual Interfaces for Mobile Devices - Dr. Watson
Prerequisites: CSC 316
CSC 495-007 in Spring 2018 is a Games Restricted Elective approved by Dr. Jhala
Description: This course provides an introduction to mobile phone technology, and experience designing and implementing graphics and user interfaces in a limited display and input environment. My goals for you are to:
- gain an understanding of the basic hardware and software designs used in modern smartphones
- explore graphics and interface design decisions and tradeoffs on modern smartphones
- gain experience designing and implementing an application with significant graphics and/or UI requirements using Android OS.
The graded material of this course is a full semester project, completed by groups of 2-3 students, and a final exam. The course project will be designed and implemented for the Android OS, implemented to run on cell phones running Android. Each group will be responsible for choosing a topic for their course project. Because this course focuses on graphics and interface for limited-capability devices and environments, your project is required to have a significant graphics or UI component. So, it would not be appropriate, for example, to propose to re-implement a simplified version of Android's contact list as your course project. Possible topics could include (but are not limited to):
- improved input methods for common interactions or an existing application
- improved interface for an existing application
CSC 591 - 005 Computer Architecture - Dr. Tseng
Prerequisites: CSC 326
Description: Computer Architecture and Multiprocessors will cover major components of digital computers and the organization of these components into systems. Begins with single processor systems and extends to homogeneous and heterogeneous parallel systems for multiprocessing. Topics include computer system performance, instruction set design, cache memory, modern processor design, multiprocessors, GPUs and FPGA programming. Recent developments in PC and desktop architectures are also studied.
CSC 591 - 010 User Experience - Dr. Watson
Description: Please email Dr. Watson for more information about this course.
CSC 591 - 015 / 791 - 015 Spatial and Temporal Data Mining - Dr. Vatsavai
Description: Spatial (spatiotemporal) data mining is the process of discovering interesting and previously unknown, but potentially useful patterns from the spatial (spatiotemporal) data. However, explosive growth in the spatial and spatiotemporal data (~70% of all digital data), and the emergence of geosocial media and location sensing technologies has transformed the field in recent years. This course reviews the current state of the art in spatial, temporal, and spatiotemporal data mining and looks at real-world applications ranging from geosocial networks to climate change impacts.
CSC 591 - 016 / 791 - 016 Internet of Things: Application & Implementation - Dr. Shahzad
Prerequisites: Solid understanding of basic network design, architecture, and operations. Good programming skills.
Description: This course will focus on advanced topics in Internet of Things (IoT). These topics will include (but are not limited to) challenges in the design of IoT infrastructure, limitations of existing protocols such as HTTP when used with IoT, Security, low power design considerations, applications of machine learning techniques, and existing and emerging IoT standards. The students will be required to read research publications in this area. The course will also include multiple demos, such as for fog computing, using real IoT hardware such as Intel Edison boards and/or other similar devices. The course will also cover one or more of IoT platform such as IBM's Bluemix platform, Microsofts HomeOS and Lab of Things platforms, etc. To enable students to see IoT in action, they will be required to do projects using real IoT devices.
CSC 591 - 017 / 791 - 017 Software Defined Networking - Dr. Dutta
Prerequisites: CSC/ECE 573
Description: The newly emerged paradigm of Software Defined Networking brings together long-standing concepts with recent ones, and promises to change every aspect of the practice of networking in the decade to come. In this special topic, we will investigate the basic concepts, and discuss various architectural flavors, of SDN. We shall delve a little deeper into OpenFlow, a fairly popular open implementation of an SDN architecture. We will also study other models, and discuss the comparative role of various system components in such models. Beyond lecture material, students will be assigned reading from the research literature on the subject, and available open-source material. Students will be required to complete homework assignments based on their reading, which will include significant programming assignments, and may need to complete hands-on exercises, largely in virtual networking labs. Students will also need to undertake a half-semester long project in the latter part of the semester that requires them to build an SDN network targeted at specific functionality, as well as a solution to the same based on traditional TCP/IP mechanisms. For 700-level students, this project is required to be designed to investigate an open question in the study of SDNs, while for 500-level students, it is allowed to be a replication of a known system configuration in order to assess performance characteristics. After taking the course, students will be able to articulate the fundamental concepts behind an SDN architecture, compare and predict performance characteristics of SDN-based networks as opposed to traditional internetworks, realize an OpenFlow network to specifications. Students taking the 700-level version will in addition be able to design an SDN system experiment to investigate cutting-edge questions in SDN. Good knowledge of Internet architecture and protocols, practical Internet application programming experience, and familiarity with Linux networking, are very strongly desirable background for this course. In particular, having successfully taken CSC/ECE 573 (Internet Protocols) would be good preparation for this special topic.
CSC 591 - 018 / 791 - 018 Reliable Software Systems - Dr. Jin
Description: Modern society and economy heavily depend on software systems. Software errors have been reported to take lives and cause real-world disasters, and they cost billions of dollars annually. Meanwhile, software system is becoming more parallel/distributed to scale and more diverse to meet different needs. Therefore, making reliable software remains one of the most important problems in computer science. In this course, we will study a number of techniques that have been developed to improve system reliability, with a focus on concurrent and distributed systems.
CSC 791 - 020 / 791 - 020A Routed Network Design - Dr. Viniotis
Prerequisites: ECE/CSC 570 or ECE/CSC 573
Description: In this lab-based course, we explore the fundamental issues that arise in the design and management of routed computer networks (in particular, wide area networks and datacenter switch fabrics). We outline available methods and tools for operating and managing such networks. We provide the students with practical experience on available tools in the network design and management space. A series of six-hour lab demos and exercises are used for that purpose. The labs will use Cisco's VIRL simulation environment. Note that the field of network design and management is vast. In this course, we focus on: (a) topics covered by the CCNP ROUTE certification and (b) topics relevant to switch fabrics in data centers.
CSC 801 - 001 Seminar on Quantum Computing - Dr. Mueller
Description: This seminar aims to provide an introduction to quantum computing. It will feature the three pillars, architectures, programming, and algorithms/applications of computing computing. Its focus is on the latter two pillars to assess the applicability of problems to quantum computing from a practical point, with only the necessary foundational coverage of the physics and theoretical aspects to understand quantum computing. Simulations software will be utilized complemented by access to actual quantum computers to prototype problem solutions. This should develop a better understanding of how problems are transformed into quantum algorithms and what programming language support is best suited for a given application area. The seminar will require significant amounts of background reading plus multiple presentations per participant. Its success depends on the engagement of the participants.