Spring 2013 Special Topics Course Descriptions
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
CSCI-GA 3033-002 Big Data: Large Scale Machine Learning
This course is about industrial scale machine learning, covering tricks to
make intractable problems tractable, algorithmic design, data processing
infrastructures, parallel learning, and dealing with weak labels, sparse data,
and streaming data. We plan to cover everything from practical tools to the
theory necessary to frame and think about solving large-scale prediction
CSCI-GA 3033-003 Algorithmic & Economic Aspects of the Internet
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-006 Special Topics in Machine Learning: Probabilistic Graphical Models
This course introduces students to probabilistic models and inference, two fundamental concepts in machine learning and artificial intelligence. We focus on a class of statistical models called graphical models that describe multivariate probability distributions. Two well-known examples are Bayesian networks and Markov random fields. The first half of the course will cover exact and approximate
probabilistic inference, including advanced topics such as variational methods and linear programming relaxations. The second half of the course will be on learning graphical models from data and on the task
of structured prediction. Prerequisites: Statistical Natural Language Processing, Introduction to Machine Learning, Machine Learning and Pattern Recognition , Foundations of Machine Learning. In addition, students should have a solid understanding of basic concepts from probability (e.g., Bayes' rule, multivariate distributions, conditional independence) and algorithms (e.g., dynamic programming, graphs, shortest paths, complexity)
CSCI-GA 3033-007 Social Multiplayer Games
The course will teach how to develop online casual multiplayer games using open technologies such as GWT, AppEngine, DHTML, JSON, AJAX, long-polling, HTML5, XMPP, etc. The course has two big projects: A game: A multiplayer game (realtime/turn-based, 2-8 players) with graphics for the web and mobile, practice mode with artificial-intelligence, and other features (instructions&tutorial, resize, save&load, viewers, etc) A platform feature: the gaming platform will integrate with facebook & google+ & android (& maybe iphone), and will have features like feeds, notifications, invites, credits, user info, messages, matching players, game API documentation and tutorial, server-side features (game history, saved games, ranking system, leaderboards, tournaments, abuse-report system). The course will also teach about ranking systems, artificial intelligence for games, leaderboards, tournaments, realtime and turn-based games, location awareness, and advanced UI such as touch screen and tilt. The course will not concern with 3D graphics, animations, or sounds. Pre-requisite: Java.
CSCI-GA.3033-008 Realtime and 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 Rigorous Software Development
Software is increasingly pervading our lives and is now routinely deployed in safety and security critical systems. While this technological progress benefits society greatly, it also creates a new threat: software errors with severe consequences including health hazards, financial repercussions, and security vulnerabilities. How can one ensure that software works reliably? Program Verification is the area of computer science that studies mathematical methods to answer this question. In the last decade, Program Verification has brought forth sophisticated tools that assist software engineers in building reliable software. In this course, we will explore these tools. We will learn how they are used to enable rigorous software development, and we will study the algorithms that work under their hoods. The course will be accompanied by programming projects making use of these tools.
CSCI-GA 3033-010 Graphics Processing Units (GPUs): Architecture and Programming
In this course, we will cover architectural aspects and capabilities of modern GPUs (graphics processing unit) and will learn how to program GPUs to solve different type of problems. Many computations can be performed much faster on the GPU than on a traditional processors. This is why GPUs are present now in almost all computers; and the majority of Top 500 supercomputers
in the world are built around GPUs. GPUs are now used for a diverse set of applications not only traditional graphics applications; this introduces the concept of general-purpose GPUs or GPGPUs, which is then main subject of this course.
CSCI-GA 3033-011 Building Responsive Websites
CSCI-GA 3033-012 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-013 Advanced Topics: Lattices
This course is intended as a graduate level introduction to the study of euclidean lattices. We will cover both the mathematical foundations, such as the Minkowksi and transference theorems, as well the algorithmic study of lattice problems, such as the shortest and closest vector problems. The course will emphasize the connections with convex geometry, such as Kinchine's flatness theorem, and the connections with the lattice based cryptography, such as Ajtai's seminal work on worst case to average case reductions.
| contact firstname.lastname@example.org