Graduate Special Topics in Computer Science

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

G22.3033-001 Speech Recognition

Prerequisites: Familiarity with basics in linear algebra, probability, and analysis of algorithms. Interest in theoretical and applied machine learning. Prior acquaintance with machine learning concepts as presented or discussed in "Foundations of Machine Learning" or the Ph.D. seminar in machine learning, or with natural language processing will be helpful. No specific knowledge about the speech signal or other engineering material is required.

This course gives a computer science presentation of automatic speech recognition, the problem of transcribing accurately spoken utterances. The description includes the essential algorithms for creating large-scale speech recognition systems. The algorithms and techniques presented are now used in most research and industrial systems. Many of the learning and search algorithms and techniques currently used in natural language processing, computational biology, and other areas of application of machine learning were originally designed for tackling speech recognition problems. Speech recognition continues to feed computer science with challenging problems, in particular because of the size of the learning and search problems it generates. The objective of the course is thus not just to familiarize students with particular algorithms used in speech recognition, but rather use that as a basis to explore general text and speech and machine learning algorithms relevant to a variety of other areas in computer science. The course will make use of several software libraries and will study recent research and publications in this area.

See the course homepage for more information.

G22.3033-002 Deductive Verification of Reactive Systems

Reactive systems are systems whose role is to maintain an ongoing interaction with their environment rather than produce some final value upon termination. Typical examples of reactive systems are Air traffic control system, Programs controlling mechanical devices such as a train, a plane, or ongoing processes such as a nuclear reactor. The Formal Methods approach to software construction is based on viewing a program and its execution as mathematical objects and applying mathematical and logical techniques to specify and analyze the properties and behavior of these objects. The main advantages of the formal approach to software construction is that, whenever applicable, it can lead to an increase of the reliability and correctness of the resulting programs by several orders of magnitude. Several approaches to the verification of reactive systems are available, the most prominent of which are Algorithmic (model checking) and Deductive verification. This semester we concentrate on deductive verification, where we use theorem-proving techniques to establish the correctness of reactive programs relative to their temporal specifications. We will be using computer-aided theorem provers such as PVS and STeP for verifying the properties of programs.

See the course homepage for more information.

G22.3033-003 Mobile Robots

See the course homepage for more information.

G22.3033-004 Info & Comm Tech for Dev Countries

See the course homepage for more information.

G22.3033-005 Application Servers

Prerequisite: Students enrolling in this class are expected to have taken G22.2110 (i.e., Programming Languages) and G22.2250 (i.e., Operating Systems) and their prerequisites or to have equivalent knowledge. Students are also expected to have taken a Java and/or C# intermediate course, and to have basic knowledge of the Core JFC classes, and the ability to program in Java and/or C#. Some exposure to the topics and techniques covered in G22.3033-02 (i.e., Programming for the World Wide Web) is a plus.

An application server is a rich, highly portable software program that runs on a middle tier server and handles all application operations between client applications running on pervasive devices and back-end databases and business applications. Application servers provide a platform independent programming interface for developing portable applications in a variety of programming languages. Application servers also facilitate the integration of legacy applications via on-the-fly transformation of XML messages, and support a wide variety of XML-enabled client channels that include traditional web clients and a growing set of smart devices. Application servers enable programmers to implement distributed applications using a variety of architectural patterns including traditional Model-View-Controller (MVC) architectures, Service Oriented Architectures (SOAs), Point-to-Point (P2P) Architectures, Grid-Computing Architectures, etc. Using an SOA architectural pattern, and emerging standards such as SOAP, application servers enable a new generation of "web services" that allow systems to make remote procedure calls to other systems over the Internet. Today, J2EE, .Net, and CORBA 3 application servers set the stage as enabling platforms for Web Services initiatives, Web appliances, and wireless applications.

This course concentrates on architecting, designing, and developing persistent software applications using application server technology. Throughout the course, students are exposed to the evolution of application server architectures that started in the mid 1990s, and experiment with corresponding approaches based on traditional client-server technology, CGI frameworks, page-based extended HTML environments, distributed object computing platforms, object management architectures, component-based computing environments, and frameworks based on MVC, SOA, P2P, etc. The course conveys the necessary skills to select the proper application server architecture based on projects' business and technical requirements. The course also explains how to integrate an application server into an existing Web site, as well as how to implement an application server-based Web application from the ground up. 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, fault tolerance, auto-deployment, communications support, development environment, and monitoring tools.

As they design and implement applications using commercial and open source application server technologies (e.g., IBM WAS, BEA WebLogic, .Net, OpenCCM, etc.), students will learn how to identify application patterns that lead to the most effective use of the various services provided within application server frameworks. The design and implementation of the persistence and legacy application integration layers, using related application server technology, will be particularly emphasized. Case studies, provided as part of the course, will demonstrate how medium- to large-size sites manage the complexities inherent in these endeavors. These case studies will help students get a firm understanding of how application servers work and how to best deploy complex applications in a real-world situation. Although, the course will strive to provide a comprehensive coverage and classification of application server technologies, attempts will be made whenever possible to select open source technologies for experimentation purpose. As part of the course, students will be exposed to next generation application server technologies including Model Driven Architectures (MDAs), Pattern Driven Architectures (PDAs), as well as reflective, multimedia and agent-enabled frameworks.

See the course homepage for more information.

G22.3033-006 Advanced Computer Vision

See the course homepage for more information.

G22.3033-007 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.

See the course homepage for more information.

G22.3033-008 Computer Games

You will learn about computer game genres, from casual games to first person 3D games to asynchronous multiplayer games and beyond, and you will learn principles of game design hands-on, by building rapid prototypes of 2D games, followed by larger team projects to design, implement and evaluate 3D You will take turns assuming different roles within these teams: level design, A.I. programming, character design, animation, There will be an end-of-semester group show, to which the public will be invited, in which you will have an opportunity to demonstrate your best

See the course homepage for more information.

G22.3033-009 Values Embodied in Information and Communication Technologies

Virtually all parts of our lives are touched by computing and information technology. It mediates much private and public communication, interaction, and transaction, and forms the infrastructure for critical social and institutional functions such as commerce, banking and finance, utilities, national defense, education, entertainment, and more. Given the ubiquity of these systems and the confidence we have invested in them, it is important to step back and consider what the wholesale commitment to this technology means for moral, social, and political values. Our course undertakes this mission by investigating how computers and information systems promote and obscure the values to which we, individually and as societies are committed, values such as freedom, privacy, justice and autonomy. We call this investigation the study of values "embodied in" computer and information systems.

The course follows two paths. The first takes us through social commentary and key works in the philosophy and social study of technology that seek to understand the rich and sometimes troubling relationship between development and deployment of technology, on the one hand, and social and political factors, on the other. We address questions such as: Does technology make the world better, or worse? Is technology neutral? Who should be in charge of directing technological development ? What is the role of scientists and engineers? The second path directs us through the arena or information and communication technologies as we consider how the general questions and theories of the first path apply to ICT and new media.

The course welcomes students with a variety of backgrounds, including technical computer science and engineering students interested in learning about social, political, and ethical implications of their field, as well as students with humanistic, social science, and communications backgrounds interested in learning about the technology behind digitally mediated communication and experience.

See the course homepage for more information.

G22.3033-010 Geometric Modeling

See the course homepage for more information.

G22.3033-011 Applied Cryptography and Network Security

When you give a web site that claims to be your credit card number, how do you know that

1. You are indeed talking to and not some other web site that told your browser that it is, and

2. That nobody else between you and can "overhear" your credit card number?

There is probably a small padlock on the web page, which you have to trust, or else you cannot buy books from Amazon. But what is actually happening "under the hood"?

At the end of this course you will know this and will also have complete understanding of most fundamental cryptographically-based mechanisms used in currently deployed systems, with focus on those used on the Web. You will also understand, and know how to use, some of the freely available, open-source packages for securing information on your personal computer and email exchanges with others. You may find this very useful for your own future use.

See the course homepage for more information.

top | contact