Navigation: CSC Department Menu

Spring 2012 Undergraduate & Graduate Special Topic Courses

CSC495-001 Enterprise Storage Architecture - Dr. Freeh
Prerequisites-495: CSC246 and CSC401 (or equivalent) and CSC 316
This course is a comprehensive introduction to data storage fundamentals. Students will gain knowledge of the components of modern storage system infrastructure.
By the end of this course students will be able to:

  • Identify and describe storage architecture components both physical (e.g., disks and networks) and abstract (e.g., RAID and protocols);
  • Discuss the major operations, techniques, and procedures in an enterprise storage system;
  • Evaluate storage architectures in terms of efficiency, cost, reliability, etc.;
  • Discuss the tradeoffs of various storage architectures;
  • Discuss and evaluate storage availability techniques and strategies;
  • Discuss and evaluate disaster recovery techniques and strategies; and
  • Design an enterprise storage architecture given a set of design constraints.

CSC495-002 Game AI - Dr. Roberts
Prerequisites-495: CSC316
The purpose of this course is to familiarize students with issues and techniques of Artificial Intelligence (AI) for computer games. For nearly 60 years, games have been a standard application area for artificial intelligence techniques. Indeed, some of the earliest AI techniques were designed to play games that humans excelled at: Checkers, Backgammon, Chess, and Go to name a few. While the more general AI goal of "human-level intelligence" has remained elusive, computer scientists have developed techniques that enable computers to play certain games at or beyond the level of the world's best human players. In fact, many game designers intentionally "dumb down" their AI opponents using techniques such as "artificial stupidity" or "intelligent mistakes" to create game experiences that human players find challenging, rather than impossible.

In this course we will examine both traditional and modern 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 AI in general, as well as common algorithms, data structures, and representations. From there, we will cover topics in character movement, pathfinding, decision making, strategy, tactics, and learning---all within the context of computer games.

Students will be given three or four multi-week homework assignments, or mini-projects, related to the lecture material. These assignments will require students to implement and/or evaluate some of the algorithms or techniques we are covering during course lectures. In addition, students enrolled in the graduate section of the course will conduct a semester-long project that will be reviewed by students in the undergraduate section of the course. All students will additionally be evaluated with a midterm and a final exam.

CSC495-003 Visual Interfaces for Mobile Devices - Dr. Watson
Prerequisites: CSC316
This course is an intensive introduction to the design and development of mobile interfaces and applications. By the course's end, student teams will design and build an interactive mobile app prototype for platforms such as iOS (iPhone, iPad) and Android (Nexus, Galaxy Tab). Along the way, students will learn mobile design technique, including ideation, rapid prototyping, and evaluation; and mobile technology, including hardware, usage environment, graphics, interfaces and programming. Guest experts from the RTP interaction design community, such as Allscripts, IBM and Epic Games will provide real world context. Mobiles are the future. Today's phones have as much processing power as the original Xbox.There are over 5 billion mobile subscribers worldwide, 3/4 of those are in developing nations. Nearly two billion phones were sold worldwide in 2010, vs. only 350 million PCs. Mobile sales are growing 10x faster than PC sales.
To succeed in that future, you need to know how to:

  • Build mobile apps
  • Create graphics for mobiles
  • Create effective mobile interfaces
  • Work in teams
Our course is designed to give you those skills

CSC495-004 Entrepreneurial Innovation - Marshal Brain
Prerequisites: CSC316
Where do innovative new product and service ideas come from? How are companies built to bring these ideas to market? What factors lead to success in the marketplace? Entrepreneurial Innovation starts by helping participants understand how to think in innovative and creative ways, allowing them to generate and evaluate ideas. The class will develop in participants an entrepreneurial mindset that allows ideas to move from the drawing board into the marketplace. Numerous case studies, examples and exercises will demonstrate the techniques that successful entrepreneurs use to bring a company to life.

CSC591-001 Enterprise Storage Architecture - Dr. Freeh
Prerequisites-591: Graduate standing in Computer Science, or undergraduate in ABM
This course is a comprehensive introduction to data storage fundamentals. Students will gain knowledge of the components of modern storage system infrastructure.
By the end of this course students will be able to:

  • Identify and describe storage architecture components both physical (e.g., disks and networks) and abstract (e.g., RAID and protocols);
  • Discuss the major operations, techniques, and procedures in an enterprise storage system;
  • Evaluate storage architectures in terms of efficiency, cost, reliability, etc.;
  • Discuss the tradeoffs of various storage architectures;
  • Discuss and evaluate storage availability techniques and strategies;
  • Discuss and evaluate disaster recovery techniques and strategies; and
  • Design an enterprise storage architecture given a set of design constraints.

CSC591-002 Game AI - Dr. Roberts
Prerequisites-591: Graduate standing in Computer Science, or undergraduate in ABM
The purpose of this course is to familiarize students with issues and techniques of Artificial Intelligence (AI) for computer games. For nearly 60 years, games have been a standard application area for artificial intelligence techniques. Indeed, some of the earliest AI techniques were designed to play games that humans excelled at: Checkers, Backgammon, Chess, and Go to name a few. While the more general AI goal of "human-level intelligence" has remained elusive, computer scientists have developed techniques that enable computers to play certain games at or beyond the level of the world's best human players. In fact, many game designers intentionally "dumb down" their AI opponents using techniques such as "artificial stupidity" or "intelligent mistakes" to create game experiences that human players find challenging, rather than impossible.

In this course we will examine both traditional and modern 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 AI in general, as well as common algorithms, data structures, and representations. From there, we will cover topics in character movement, pathfinding, decision making, strategy, tactics, and learning---all within the context of computer games.

Students will be given three or four multi-week homework assignments, or mini-projects, related to the lecture material. These assignments will require students to implement and/or evaluate some of the algorithms or techniques we are covering during course lectures. In addition, students enrolled in the graduate section of the course will conduct a semester-long project that will be reviewed by students in the undergraduate section of the course. All students will additionally be evaluated with a midterm and a final exam.

CSC591-004 Cloud Computing - Dr. Streck & Dr. Vouk
Under the supervision of faculty, students engage in study of cloud computing principles, architectures and actual implementations. Course spans a variety of information technologies such as networking, storage, computing applications, security, etc. Ability to communicate efficiently orally and in writing is expected.

Cloud computing paradigm is growing in popularity. The term covers a range of distributed computing, hosting and access solutions, including service-based computing. A 'good' cloud computing solutions provides hardware-as-a-service, infrastructure-as-a-service, platform-as-a-service, software and applications as-a-service, security-as-a-service, cloudlets and cluster computing as-a-service, high-performance computing as-a-service, and so on. In addition, a good solution allows service-based access and sharing/interchange of resources with other clouds. It also provisions (in self-service) both bare-machine computing 'images' and virtual machine based 'images'. Students will learn how to construct and secure a private cloud computing environment based on VCL solutions, and how to federate it with external clouds, such as public EC2 offering, and some other solutions. Performance, security, cost, usability and utility of cloud computing solutions will be studied both theoretically and in a hands-on lab. Students are expected to learn and demonstrate practical elements of:

  • Cloud Computing principles
  • Cloud Computing components
  • Cloud Computing architectures and implementations
  • Cloud Computing management and security

CSC591-005 Visual Interfaces for Mobile Devices - Dr. Healey
Prerequisite: Either CSC 562 (Graduate Graphics) or CSC 554 (Graduate HCI) or equivalent.
This course is an intensive introduction to the design and development of mobile interfaces and applications. By the course's end, student teams will design and build an interactive mobile app prototype for platforms such as iOS (iPhone, iPad) and Android (Nexus, Galaxy Tab). Along the way, students will learn mobile design technique, including ideation, rapid prototyping, and evaluation; and mobile technology, including hardware, usage environment, graphics, interfaces and programming. Guest experts from the RTP interaction design community, such as Allscripts, IBM and Epic Games will provide real world context. Mobiles are the future. Today's phones have as much processing power as the original Xbox.There are over 5 billion mobile subscribers worldwide, 3/4 of those are in developing nations. Nearly two billion phones were sold worldwide in 2010, vs. only 350 million PCs. Mobile sales are growing 10x faster than PC sales.
To succeed in that future, you need to know how to:

  • Build mobile apps
  • Create graphics for mobiles
  • Create effective mobile interfaces
  • Work in teams
Our course is designed to give you those skills

CSC591-006 Smartphone OS Security - Dr. Enck
Prerequisites: CSC574 (Computer and Network Security)
Contact the instructor if you have equivalent background from another university.

This paper-based seminar course considers the design of current smartphone operating systems and methods for securing them. Students will present and lead discussions on prominent research papers in the area. Students will also investigate the architecture and security models of Android, iOS, Windows Phone, and BlackBerry. A major project in the area aimed at publication will be conducted.

CSC591-007 Requirements Engineering - Dr. Anton
Many software development projects fail because the requirements are ambiguous or not understood. This course involves in-depth study of methods, tools, notations, and validation techniques for the elicitation, analysis, specification, prototyping, priorization, tracing and maintenance of software requirements. Special emphasis is on placed on security and privacy requirements as well as regulatory compliance.
There is a great need for qualified individuals to manage the requirements process for evolving systems. This course will guide students in acquiring the skills needed to effectively manage requirements in various contexts. There is a great need for students to have a course that enables them to acquire the practical hands-on skills needed to be a successful requirements engineers while also acquiring the basic grounding needed for more advanced research. This course is expected to increase the practical and research skills of students specializing in software engineering.

CSC591-008 Game Engine Design - Dr. Watson
Prerequisites: 562 (introductory graphics) or equivalent
The realism race in interactive graphics continues apace. How do the designers and engineers at gaming companies such as Epic and EA create such amazing visual simulations? Take this course to find out how, and to prepare yourself for working with and extending their technology, whether in the gaming industry itself, or in any of the many new fields in which it is being applied.

This course is an introduction to advanced graphics techniques used in computer game engines. Students will learn about game engines, spatial hierarchy, collision detection, physics, animation, lighting and shader programming. Guest experts from the RTP gaming community, including companies such as Epic Games and Sparkplug Games, will provide real world context.

This is a mixed format course that includes lectures, readings, student presentations, lab work and a significant programming project that occupies roughly half of the semester. The course will meet twice a week. The first day each week will be dedicated to lecture, while the second will be a reading, discussion and lab day: student presentation and discussion of readings, of current assignment or project state, and bootstrapping lab work.

CSC791-001 Reasoning under Uncertainty - Dr. Bahler
CSC 791 is an advanced course in approaches to handling uncertainty in intelligent reasoning and decision systems as well as mainstream computer science. Topics include the sources and types of uncertainty; historical approaches to uncertainty; fuzzy set theory and fuzzy logic; certainty factors; evidence combination; probabilistic graphical models; decision-making under uncertainty; and causality. Students will participate in collaborative class presentations and complete semester projects.

Most tasks require a person or an automated intelligent system to reason: that is to say, to take the available information and reach conclusions, both about what might be true and about how to act. At the same time, the world contains a considerable amount of inescapable uncertainty. Uncertainty can arise from several sources: our observations of the world are necessarily partial; observations may be subject to noise; most natural categories have no crisp boundaries; and most relationships in the world are indeterminate. In short, uncertainty arises because of limitations in our ability to observe the world, limitations in our ability to model the relationships in the world, inherent imprecision in most linguistic categories, and possibly even because of innate nondeterminism of the universe itself.