Graduate Special Topics in Computer Science
NOTE: for descriptions
of standard graduate computer science courses, see Graduate Course Descriptions.
SCI-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.
Robotics has been expanding at a very fast pace in recent years. Several
companies now sell mobile robots to consumers for entertainment, surveillance,
maintenance, and other applications. Concurrently, robotic-like capabilities
are being integrated into traditional products such as cars,
vacuum cleaners, lawnmowers, etc. Over the next decades, intelligent domestic,
industrial, and military robots will become ubiquitous.
The course will consist mostly of hands-on sessions in which students will
write perception, reasoning, and control software for a variety of robot
platforms including wheeled autonomous mobile robots, robot manipulators, and
flying robots (helicopters). all with a variety of sensors such as cameras,
depth image sensors (e.g. Microsoft Kinect), and range finders. Some robots
will have on-board computers, while others will be controlled by a remote
computer. Student in small groups will implement high-level sensor processing,
learning, planning, and control software for various tasks, such as obstacle
avoidance, mapping, rescue operations, grasping, etc.Basic techniques reviewed
in the class will include sensor processing, vision, object detection,
recognition and tracking, motion estimation, obstacle detection, simultaneous
localization and mapping (SLAM), planning, and low-level control.
Students are expected to bring a laptop computer with Ubuntu Linux to class.
The course is open to graduate students in CS, Math, and Neursocience, and to a
small number of advanced undergraduates with the relevant background.
Prerequisite: either computer vision, machine learning, or AI, and a good math
background: at least calculus 3, plus linear algebra or scientific
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 or permission of the instructor. Also,
some knowledge of basic linear algebra and probability will be assumed.
CSCI-GA.3033-004 Bioinformatics CANCELLED
This course introduces students to bioinformatics, which uses information
technology to store, annotate, retrieve and analyze biological information.
Genome‐scale sequencing projects have led to an explosion of genetic sequences
available for automated analysis. These gene sequences are the codes that
direct the production of proteins that in turn regulate all life processes.
Students will be shown how these sequences can lead to a much fuller
understanding of many biological processes important to pharmaceutical and
biotechnology industries: e.g., to determine new drug targets or to predict if
particular drugs are applicable to all patients. Basic concepts behind
bioinformatics and computational biology tools, algorithms and data structures
will be discussed. Hands‐on sessions will familiarize students with the details
and use of the most commonly used online tools and resources.
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
A graphical model is a probabilistic model, where the conditional dependencies
between the random variables is specified via a graph. Graphical models provide
a flexible framework for modeling large collections of variables with complex
interactions, as evidenced by their wide domain of application, including for
example machine learning, computer vision, speech and computational biology.
This course will provide a comprehensive survey of learning and inference
methods in graphical models.
Prerequisites: This is a graduate-level course. Students should previously have
taken one of the following classes:
- Statistical Natural Language Processing (CSCI-GA 3033)
- Introduction to Machine Learning (CSCI-UA 0480)
- Machine Learning (CSCI-GA 2565)
- Foundations of Machine Learning (CSCI-GA 2566)
CSCI-GA.3033-007 MATH-GA 2932-002 Random Graphs
This course covers numerous topics related to random graphs, including
generalized randomized structures, random processes, probabilistic methods and
Erdös Magic. Also covered are branching processes, phase transitions for large
random evolutions, derandomization via conditional expectations and
semidefinite programming derandomization techniques. Algorithms, probability
and discrete mathematics all appear, but concepts will be defined from scratch.
Emphasis will be on methods of asymptotic calculation.
CSCI-GA.3033-008 Social Multiplayer Games
The course will teach how to develop online casual multiplayer games using
technologies such as DHTML, JSON, AJAX, long-polling, HTML5, GWT, AppEngine,
etc. The students will collaboratively build a social and mobile applications
serving these games. The games will be social, viral and integrate with
facebook/google+/mobile feeds, notifications, invites, credits, user info, etc.
The course will also teach about ranking systems, leaderboards, tournaments,
building artificial-intelligence for games, realtime and turn-based games,
location awareness, and advanced user-interface such as touch screen. (The
course will not concern with 3D graphics, animations, or sounds.)
Pre-requisite: Java (knowing Internet or databases is an advantage, but not required)
CSCI-GA.3033-009 Special Topics in Computer Animation
Overview of computer animation techniques. Topics: traditional principles of
animation, physical simulation, procedural methods, and motion capture based
animation. Focus is on computer science aspects of animation. The basics
including kinematic and dynamic modeling techniques; exploration of current
research topics such as motion re-targeting, learning movements and behaviors,
and video based modeling and animation). Hands-on animation experience through
CSCI-GA.3033-010 Computer Games
The study of computer games offers a unique opportunity to bring together many
complementary computer science sub-fields and techniques and to observe how
these work together. This course will cover computer science topics involved in
the creation of computer games, including accelerated graphical rendering of
simulated natural phenomena, concurrent programming, digital audio synthesis,
forward and inverse dynamics, multi-level object representations, real time
animation and modeling, scientific visualization and scripting interfaces.
Students will also be exposed to elements essential to the experience of
designing and implementing games, such as the visual, storytelling, and sound
design elements of games.
CSCI-GA.3033-011 Rigorous Software Development
Software continues to pervade our lives and is now routinely deployed in safety
and security critical systems. While this technological advancement greatly
benefits society it also
creates a new threat: software failures with severe consequences, such as
health hazards and financial repercussions. 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
CSCI-GA.3033-012 Graphics Processing Units (GPUs): Architecture and
This course will examine the architecture and capabilities of modern GPUs
unit). Many computations can be performed faster on the GPU than on a
traditional CPU. This is
why GPUs are present now in almost all computers; and the majority of Top 500
in the world are built around GPUs. GPUs are now used for a diverse set of
applications not only
traditional graphics applications; which introduces the concept of
general-purpose GPUs or
GPGPUs. In this course, we will cover architectural aspects of modern GPUs. We
will also learn how to program GPUs to solve different type of problems.
Prerequisites: CSCI-GA 1170 Fundamental Algorithms, CSCI-GA 2110 Programming
CSCI-GA.3033-013 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.
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-014 Object Oriented Programming
This course takes an in-depth look into the the design, implementation, theory,
and use of object oriented programming languages. Possible topics include:
inheritance, polymorphism, generics, and modules; implementation techniques for
object oriented languages in unmanaged and managed code platforms (e.g. C++ and
Java, respectively); object oriented functional languages (e.g. Ocaml and
Scala) and their use in industry; object oriented design and modeling;
concurrent object oriented languages; and formal type systems for object
oriented languages. Substantial programming projects in a number of different
languages, as well as occasional homework, will be assigned.
Prerequisite: Programming Languages (CSCI-GA.2110)
| contact firstname.lastname@example.org