Spring 2014 Graduate Special Topics in
NOTE: for descriptions of standard graduate computer science
courses, see Graduate Course
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.
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
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.
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.
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.
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.
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.
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
Prerequisites: CSCI-GA 2110 Programming Languages
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
| contact firstname.lastname@example.org