Graduate Special Topics in Computer Science

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

G22.2945-001 Selected Topics in Numerical Analysis: Computational Physics, Many-Body Problems

Prerequisites: G22.2112 or G22.2420; undergraduate physics including quantum mechanics.

This course will cover computational methods for many-body problems in physics and chemistry. The focus will be on mathematical problem formulations as well as on numerical issues. Topics will include: (1) Statistical physics. Monte Carlo approach for finding the lowest energy state and for evaluating thermodynamic properties of liquids and solids. Metropolis algorithm. Importance Sampling. Critical slowing down and methods to overcome it. (2) Electronic Structure. Born-Oppenheimer approximation. Hartree-Fock method, configuration interaction, density functional approach, density matrices, variational methods. (3) Particle simulation and molecular dynamics. Fast Poisson methods. Methods for multiple timescales, especially Car-Parrinello.

Recommended texts: Monte Carlo Simulation in Statistical Physics, K. Binder and D. W. Heermann 3rd ed., Springer Verlag,1997; Modern Quantum Chemistry, Attila Szabo and Neil S. Ostlund, revised ed., Dover, 1996; Understanding Molecular Simulation, Daan Frenkel and Berend Smit, 2nd Ed., Academic Press, 2001; Computational Physics, J. M. Thijssen, Cambridge University Press, 1999

G22.3033-001 Topics in Combinatorics: The Art of Counting

Sums, recurrences, number theory, binomial coefficients, generating functions and the like with particular emphasis on asymptotics such as factorial and Fibonacci and CS applications such as analysis of quicksort

Required Text: Concrete Mathematics by Graham, Knuth and Patashnik

G22.3033-002 Internet & Intranet Protocols & Applications

Prerequisites: Knowledge of networking principles, ability to program in Java, ability to write large (10s of pages) programs

Internet and Intranet Protocols and Applications studies the world's most widely used application level network protocols and software systems. We study protocols, such as HTTP for the Web, and SMTP, POP3, and IMAP for email. We consider protocol design issues, especially as they influence functionality, reliability and performance. We carefully read protocol specifications, such as the HTTP specification, RFC 2616. We study the systems which use these protocols, clients and servers. We also study intermediate systems which enhance performance, such as caching proxies and content delivery services. We will examine complex functionality and performance issues, such as time-out management and high-performance concurrent servers. Programming assignments ask students to write clients and servers to the sockets interface. Students write several small programming assignments and one large project. Guest lecturers may present current research and practice on a subset of the following issues: reliable internet multicast, the design and implementation of the Apache Web server, performance issues in WWW servers, and Internet security. The last quarter of the course may examine research that enhances internet and Web performance.

G22.3033-003 Applied Cryptography and Computer Security

See the detailed description on the course homepage

G22.3033-004 Advanced Topics in Multimedia

See the detailed description on the course homepage

G22.3033-005 Visual Modeling

Prerequisites: G22.2270 and G22.2271 or permission of the instructor.

This course takes a unified approach to computer graphics and computer vision. Vision (image analysis) and graphics (image synthesis) are studied formally as mutually converse problems. The course explores physics-based models and associated computational methods for tackling these problems. The emphasis will be on modeling and estimating the shapes and motions of rigid and deformable objects using mathematical physics, variational methods, and numerical simulation with finite-difference, finite-element, and multiresolution algorithms. Graphics topics will include the modeling and animation of flexible objects in simulated physical worlds, force driven interaction, and constraint satisfaction methods. Vision topics will include regularization theory, visible-surface representations, active models, and multisensory fusion. Finally, the course will investigate advanced applications of graphics and vision in artificial life, including the biomimetic modeling of humans and other animals in realistic virtual worlds.

G22.3033-006 Extreme Java

Prerequisites: G22.2110, and G22.2250

This course is designed for programmers already familiar with the Java language and class libraries. Topics include a broad and in depth coverage of Java platforms, tools (e.g., Java Hotspot, JPDA, Javadoc, Java Help) and software engineering techniques (e.g., Project Lifecycle, Environment, Resources, Packaging), Java core technologies and extensions (e.g., JFC, Collections Framework, Drag and Drop, Swing, JavaBeans, JAF, threads, JNI, JMF), and the application of Java in distributed enterprise communications (e.g., Java IDL, CORBA, RMI/IIOP, JNDI, Jini, JMS, JTS), enterprise web and application enabling (e.g., Java Web Start, aglets, connected devices, Web servers, security via JAAS/JCE/JSSE, XML support, servlets, JSPs, EJBs, EAI/B2Bi), database technologies (e.g., JDBC, Java Data Objects), and operating systems (e.g., JavaOS, Sun ONE/Web Services, JXTA). Students will experiment with various Java-enabled toolkits to create Java programs using Java's core libraries, and more advanced packages. All instruction and development will be based on the J2SE 1.4.1, J2EE 1.4, and J2ME CLDC/CDC 1.0. Through a set of assignments and projects, students will implement the various components of a sample web-enabled and Java-based enterprise application.

G22.3033-007 Advanced Object-Oriented Techniques

Prerequisites: G22.2110 and basic familiarity with Java (or another object-oriented language).

The goal of this course is to familiarize students with several advanced object-oriented techniques that are currently widely used in industry. After a brief review of object-oriented terminology (subtyping, dynamic dispatch, inheritance, delegation, etc.), the following topics will be presented in detail:

  • UML diagrams, and how to use for designing object-oriented programs;
  • design patterns: an overview of design idioms are useful for creating flexible and extensible designs;
  • techniques for testing of object-oriented programs;
  • performance analysis of object-oriented programs;
  • refactoring: techniques for restructuring programs in order to accommodate changed requirements;

Course overview

The objective of the course is to make students sufficiently proficient with the use of these techniques so that they can apply them in practice. To achieve this goal, the course has a substantial practical component, in the form of a series of programming assignments that are performed in groups.

The following is a very preliminary outline of the course. Please be aware that the following may be subject to change.

Overview of course and project.

Review of object-oriented terminology, concepts, and of object-oriented language constructs in Java.

Introduction to UML. Overview of the 9 types of diagrams. Use cases, use case diagrams classes, attributes, operations class diagrams relationships: associations, generalization, aggregation, and composition.

Relationships (in detail), association, generalization, multiplicities, navigability, notes, stereotypes, constraints, interfaces, realization, roles, package diagrams, and object diagrams.

Interaction diagrams, sequence diagrams, collaboration diagrams, modeling events, signals, and exceptions, activity diagrams, statechart diagrams, component diagrams, and deployment diagrams.

Introduction to design patterns. Creational patterns.

Design patterns continued: Structural patterns.

Design patterns continued: Behavioral patterns.

Designing with patterns (guest lecture by John Vlissides).

Midterm (may be split up into 2 separate 1-hour tests).

Testing of object-oriented applications.

Advanced topics: multiple inheritance, mixins, reflection.

Advanced topics, to be determined.

Performance analysis of object-oriented applications (guest lecture by Gary Sevitsky).

Analysis of object-oriented programs. Application extraction techniques.

Required texts

The Unified Modeling Language User Guide by Grady Booch, James Rumbaugh, Ivar Jacobson. Hardcover - 482 pages (October 30, 1998). Addison-Wesley Pub Co; ISBN: 0201571684

Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Hardcover - 395 pages 1st edition (January 15, 1995). Addison-Wesley Pub Co; ISBN: 0201633612

Refactoring : Improving the Design of Existing Code by Martin Fowler et al. Hardcover - 431 pages 1st edition (August 1999) Addison-Wesley Pub Co; ISBN: 0201485672

Recommended texts

A good textbook on Java is recommended. Two examples of good textbooks are given below:

Java in a Nutshell : A Desktop Quick Reference (3rd Edition) by David Flanagan. Paperback - 648 pages 3rd edition (November 1999). O'Reilly Associates; ISBN: 1565924878

The Java Programming Language by Ken Arnold, James Gosling, David Holmes. Paperback - 704 pages 3rd edition (June 15, 2000) Addison-Wesley Pub Co; ISBN: 0201704331


The course will have a large practical component, in the form of a project in which a simulation of a web-based book-selling system (or something similar) is built. The project consists of several steps:

Creation of an initial design using UML. This initial design will require the use of several design patterns.

Implementation of the design in Java, and testing it (possibly using an automated testing framework such as jUnit).

Refactoring of the system after the requirements have changed (e.g., addition/deletion of features, and requirements make the design more flexible in several respects).

Students will work on projects in groups of 2 or 3 people.

G22.3033-008 Web Services & Applications

See the detailed description on the course homepage

G22.3033-009 Special Topics in Mathematical Physics: Quantum Computation

This course provides an introduction to quantum computation and some aspects of quantum information theory. Topics may include quantum algorithms (Shor's algorithm, Grover/s algorithm), quantum complexity theory, protocols of quantum cryptography, quantum error correcting and fault tolerant computation, quantum data compression, classical and quantum capacity of quantum channels.

Text: Quantum Computation and Quantum Information Theory, Nielsen & Chuang, Cambridge Univ. Press; Lecture notes

G22.3033-011 Logic and Verification

See the detailed description on the course homepage

Prerequisites: Ability to understand abstract mathematical concepts and proofs, ability to write reasonably sophisticated programs.

In this class, we look at a particularly intriguing example of how theory and practice can interact to create new knowledge and solve real-world problems.

The course begins with Boolean logic and functions. Boolean representations can be used to model a wide variety of interesting problems. We discuss methods such as binary decision diagrams (BDDs) and high-speed Boolean satisfiability (SAT) algorithms, and we will explore how these are used in practice.

We then move on to first-order logic. We discuss syntax and semantics of first-order logic and explore complexity and completeness results. We will then look at ways to use first-order logic in practical verification efforts and show how these techniques can be applied to hardware and software systems.

G22.3033-012 Experiments in Motion Capture

See the detailed description on the course homepage

G22.3033-013 Formal Analysis of Security Protocols

See the detailed description on the course homepage

G22.3033-014 Sequential Programs Verification & Analysis

See the detailed description on the course homepage

G22.3033-015 Data Warehousing & Mining

We live in the Age of Information. The importance of collecting data that reflects a business or scientific activity to achieve competitive advantage is widely recognized now. Advanced systems for collecting data and managing it in large databases are in place in most large and mid-range companies. However, the bottleneck of turning this data into your success is the difficulty of extracting knowledge about the system from the collected data.

What goods should be promoted to this customer? What is the probability that a certain customer will respond to a planned promotion? Can one predict the most profitable securities to buy/sell during the next trading session? Will this customer default on a loan or pay back on schedule? What medical diagnosis should be assigned to this patient? How large are the peak loads of a telephone or energy network going to be? Why does the manufacturing facility suddenly start to produce defective goods?

These are all the questions that can be answered if information hidden in a database can be found explicitly and utilized. Modeling the investigated system and discovering relations that connect variables are the subject of data mining.

The course will introduce concepts and techniques of data mining and data warehousing, including concept, principle, architecture, design, implementation, application of data warehousing and data mining.

Data warehousing and OLAP technology for data mining
Data preprocessing
Descriptive data mining: characterization and comparison
Association analysis
Classification and prediction
Cluster analysis
Mining complex types of data
Applications and trends in data mining

top | contact