Fall 2011 Graduate Special Topics in Computer Science

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

CSCI-GA 3033-001 Statistical Natural Language Processing Petrov

In this course we will explore statistical, model based approaches to natural language processing. There will be a focus on corpus-driven methods that make use of supervised and unsupervised machine learning methods and algorithms. We will examine some of the core tasks in natural language processing, starting with simple word-based models for text classification and building up to rich, structured models for syntactic parsing and machine translation. In each case we will discuss recent research progress in the area and how to design efficient systems for practical user applications. In the course assignments you will construct basic systems and then improve them through a cycle of error analysis and model redesign. This course assumes a good background in basic probability and a strong ability and interest to program in Java. The class is open to graduate as well as undergraduate students.

CSCI-GA 3033-002 Computational Photography

Computational photography is an exciting new area at the intersection of computer graphics and computer vision. Through the use of computation, its goal is to move beyond the limitations of conventional photography to produce enhanced and novel imagery of the world around us. The main focus of the course will be on software-based methods for producing visually compelling pictures. However, it will also cover novel camera designs, for which computation is integral to their operation. The course will explain the principles behind many of the advanced tools that can be found in Adobe Photoshop, although the use of this package itself is outside the scope of the course. The course will be suitable for advanced undergraduates, masters and PhD students. A reasonable knowledge of linear algebra is required and familiarity with Matlab is desirable.

CSCI-GA 3033-003 Financial Software Projects

The theme of this course is an "applied case study" and focuses on fixed income markets. Topics covered include an overview of the markets, the inner workings of an investment bank, the market players, and where software engineers fit in. Students will be grouped into small teams to build a financial application using practical software engineering principles. Each team will build a risk management framework, starting with basic components. Prerequisites: It is assumed that the students can code in C++. No prior experience in the financial sector domain is required.

CSCI-GA 3033-004 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-005 Open Source Tools

This course covers a brief history and philosophy of open source software, followed by an in-depth look at open course tools intended for developers. In particular, we will present an overview of the Linux operating system, command line tools (find, grep, sed), programming tools (GIT, trace), web and database tools (Apache, MySQL, App Engine), and system administration tools. We will also cover scripting languages such as shell and Python, and use them to write web applications.

CSCI-GA 3033-006 Application Servers

This course concentrates on designing and developing persistent software applications using application server technology. Students will learn how to configure and operate application servers in production environments, taking advantage of features available in mainstream commercial frameworks such as scalability, concurrency, security and fault tolerance. Commercial and open source application server technologies (e.g., Spring Framework, IBM WAS, Oracle WebLogic Suite, .Net, OpenCCM) will be covered as well as related standards governing application server-driven frameworks (e.g., OMG's OMA/CORBA, JEE, .Net, WS-I).

CSCI-GA 3033-007 Distributed Systems

Distributed systems help programmers aggregate the resource of many networked computers to construct highly available and scalable services. This class teaches the abstraction, design and implementation techniques that allow one to build fast, scalable, fault-tolerant distributed systems. Topics include multithreading, network programming, consistency, naming, fault tolerance, security and several case studies of distributed systems.

CSCI-GA 3033-008 Social Multiplayer Games *CANCELLED*

CSCI-GA 3033-009 Motion Capture for Gaming & Urban Sensing

This class is a research oriented project & seminar class. We cover new motion capture and vision techniques and new applications to gaming and urban sensing domains. We have a newly installed state-of-the-art motion capture system that the class can use, as well as several research prototypes that use Kinect, web-cam, iPhone, web-based, and other alternative vision and motion capture based sensing, analysis, and visualization techniques. Please check http://movement.nyu.edu/mocap11f for the latest agenda for this class.

CSCI-GA 3033-011 Computing Systems Projects

This is a graduate level course where students will be working on challenging systems projects throughout the semester. In this class, the students will be exposed early to a set of challenging project ideas and students have to pick an idea and push it towards completion. Students will learn the design and implementation techniques essential for engineering both robust networks and large-scale systems.

One specific theme for this semester will be projects with a focus on computing for development (not all projects may exactly fit this mould, but this will be one important focus area). Over the past several decades, computer science research and development has largely centered around issues in the developed world while very little focus has been given to problems in the developing world. A majority of people in the developing parts of the world do not have access to basic communications without which the "digital divide" in the world is bound to significantly grow over the years. We will be providing several interesting project ideas within this space which relate to real-world societal problems.

Students have to pick a project idea in the first 2 weeks and are expected to present a fully functional system by the end of the semester. This will be a programming intensive course with no exams. There will also be weekly discussions where students will be presenting their project ideas to other students and we may read some relevant papers for each project area. This class aims to promote a culture where students are willing to take up challenging real-world problems and propose cool ideas to solve them.

top | contact webmaster@cs.nyu.edu