Spring 2014 Graduate Special Topics in Computer Science

NOTE: for descriptions of standard graduate computer science courses, see Graduate Course Descriptions.

CSCI-GA 3033-001 Financial Computing

This course introduces students to the basic concepts of computational finance and explores various relations between computer science and finance. In particular, the course will introduce both theoretical and practical aspects of finance with an emphasis on the relation between real-life applications and these concepts. The course will cover various issues such as high-frequency market simulators and frameworks for performing statistical simulations. Various financial instruments will also be discussed and modeled. Emphasis will be put on efficiency and proper design. Object-oriented concepts will be discussed and put to use in real life applications. Prerequisites: Fundamental Algorithms, Programming Languages, background in calculus and linear algebra.

CSCI-GA 3033-003 Algorithmic & Economic Aspects of the Internet

Description: In this course, we study algorithmic and economic problems related to the Internet search, online advertisement, social networks, and online markets. We discuss important economic aspects: the ideas behind Internet ad auctions, and the game theoretic analysis of self-interested agents interacting over the Internet. We also cover the central algorithmic ideas behind the large-scale analysis of the huge data sets supporting Internet search

Our goal is to obtain a rigorous understanding of the properties of such environments and explore these properties to solve data mining and optimization problems emerging in these environments. The main areas include computational economics, computational advertising, (social) network analysis, commerce applications, and large-scale distributed computation.

Prerequisites: Fundamental Algorithms, Mathematical Techniques for CS Applications or permission of the instructor. Also, some knowledge of basic linear algebra and probability will be assumed

CSCI-GA 3033-004 Social Networks

Social Networks is a specific example of many forms of networks that have become ubiquitous in our modern society. The World Wide Web enables information flows among vast number of humans; facebook, orkut, friendster, diaspora, etc. connect small groups of friends; amazon, ebay, etc. provide opportunities for trading, etc. These networks determine our information, influence our opinions, and shape our political attitudes. They also link us, often through important but weak ties, to other humans

Their origin is biological: going back to quorum-sensing, swarming, flocking, social grooming, gossip, etc. Yet, as we have connected our social networks to traditional human institutions (markets, justice systems, education, etc.) through new technologies, the underlying biology has become obscured, but not dormant. Economic markets also look much more like networks than anonymous marketplaces. Firms interact with the suppliers and customers in a Web-like supply chains. Systemic risk in financial markets often results from the counterparty risks created within this financial network.

This course will introduce the tools for the study of networks. It will show how certain common principles permeate the functioning of these diverse networks: e.g., issues related to robustness, fragility, and interlinkages etc.

CSCI-GA 3033-005 Production Quality Software

In this course, students learn to develop production quality software. Lectures present real-world development practices that maximize software correctness and minimize development time. A special emphasis is placed on increasing proficiency in a particular programming language by doing weekly development projects and participating in code reviews.

Assignments become more sophisticated as the semester progresses, eventually incorporating unit tests, build scripts, design patterns, and other techniques. The course culminates with an assignment that requires students to contribute to an open-source project of their choice.

CSCI-GA 3033-007 Social Multiplayer Games

The course will teach how to develop online casual multiplayer games using open technologies such as GWT, Closure, AppEngine, DHTML, JSON, AJAX, long-polling, HTML5, XMPP, OAuth2, PhoneGap, etc. The course has two big projects: An individual project where you develop a turn-based multiplayer game (with mobile and desktop graphics, artificial-intelligence, save and load, etc), and a small group project. The course will also teach about ranking systems, artificial intelligence for games, real-time and turn-based games. The course will not concern with 3D graphics.

Prerequisite: Java.

Course Site

CSCI-GA 3033-008 Special Topics: Realtime & Big Data Analytics

This course will introduce technologies at the foundation of the Big Data movement that have facilitated scalable management of vast quantities of data collected through realtime and near realtime sensing. We will also explore the tools enabling the acquisition of near realtime data in the social domain, the fusion of those data when in flight and at rest, and their meaningful representation in graphical visualizations. Students are required to complete weekly reading and/or programming assignments and demonstrate mastery of course topics by developing and demonstrating a software project of their choosing. Class time will be set aside for project proposal and final demo.

Prerequisites: CSCI-GA 2250 or equivalent Operating Systems course; programming experience in C/C++ or Java for assignments and final project; CSCI-GA 2262, CSCI-GA 2620, or undergraduate course in networks. A familiarity with databases will be useful.

CSCI-GA 3033-009 Cloud Computing

This course provides a hands-on comprehensive study of Cloud concepts and capabilities across the various Cloud service models including Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS), and Business Process as a Service (BPaaS). IaaS topics start with a detailed study the evolution of infrastructure migration approaches from VMWare/Xen/KVM virtualization, to adaptive virtualization, and Cloud Computing / on-demand resources provisioning.

Mainstream Cloud infrastructure services and related vendor solutions are also covered in detail. PaaS topics cover a broad range of Cloud vendor platforms including AWS, Google App Engine, Microsoft Azure, Eucalyptus, OpenStack and others as well as a detailed study of related platform services such as storage services that leverage Google Storage, Amazon S3, Amazon Dynamo, or other services meant to provide Cloud resources management and monitoring capabilities.

The SaaS and PaaS topics covered in the course will familiarize students with the use of vendor-maintained applications and processes available on the Cloud on a metered on-demand basis in multi-tenant environments. The course also covers the Cloud security model and associated challenges and delves into the implementation and support of High Performance Computing and Big Data support capabilities on the Cloud.

Through hands-on assignments and projects, students will learn how to configure and program IaaS services. They will also learn how to develop Cloud-based software applications on top of various Cloud platforms, how to integrate application-level services built on heterogeneous Cloud platforms, and how to leverage SaaS and BPaaS solutions to build comprehensive end-to-end business solutions on the Cloud.

CSCI-GA 3033-010 Experiments in Motion Capture

CSCI-GA 3033-014 Programming Paradigms for Concurrency

The spread of multicore architectures has a pervasive effect on how we develop software. In this course, we focus on programming techniques for modern multicore machines. We will explore how to write programs using major paradigms for managing concurrency and how to reason about the correctness and performance of such programs.

Topics include multiprocessor architecture, mutual exclusion, wait-free and lock-free synchronization, load balancing, concurrent data structures, transactional memories, and message passing. The course will involve extensive programming exercises in Java and related languages.

Prerequisites: CSCI-GA 2110 Programming Languages

CSCI-GA 3033-015 Virtual Machines: Concepts and Applications

Virtualization technology from VMware, IBM, Xen, Microsoft, and others is an indication of the importance of this technology, especially in this era where almost everything is in the cloud. Virtualization became the IT world's hottest trend in recent years. Have you ever wondered how you can run multiple operating systems on a single physical system and share the underlying hardware resources? How does your operating system see a hardware that differs from the actual hardware, and why we need to do so? What is a virtual server? Virtual machine is the answer to all that and much more.

In this course we will study the design and implementation of virtual machines, virtual machine monitors (aka hypervisors), as well other recent trends in virtualization. We will study virtual machines across the disciplines that use them: operating systems, programming languages, and computer architecture.

Prerequisites: CSCI-GA.2250 Operating Systems

top | contact webmaster@cs.nyu.edu