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.

CSCI-GA.3033-002 Robotics

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 computing.

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 Models

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 class projects.

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 these tools.

CSCI-GA.3033-012 Graphics Processing Units (GPUs): Architecture and Programming

This course will examine the architecture and capabilities of modern GPUs (graphics processing 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 supercomputers 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 Languages

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)

top | contact