Graduate Special Topics in Computer Science

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

G22.3033-001 Multimedia

Prerequisites: students need to be comfortable with programming. A graphics course is helpful, but not required.

In this course we will explore how to communicate with Multimedia, by combining your programming skills with the complementary skills of storytelling, design, and collaboration. The course will consist of a series of programming/design projects designed to get you thinking in new ways about user interface and narrative structure in the interactive presentation of information and ideas.

G22.3033-002 Computer Vision & Tracking

See the course homepage for more information.

G22.3033-003 Advanced Machine Learning

See the course homepage for more information.

G22.3033-004 Computational Biology/Bioinformatics

Prerequisites: none

1. Introduction to Algorithmic Biology

(a) History and Motivation
(b) Tasks and Problems of Algorithmic Biology
(b) State of the Art

2. Some Biology for Computer Scientists

(a) Information Processing in a Cell
i. Genome
ii. DNA's structure and Components
iii. The Cell
(b) Central Dogma
i. RNA and Transcription
ii. Proteins and Translation
(c) Molecular Basis of Mendelian Inheritance
(d) Recombinant DNA Techniques
(e) Structures in Biological Macromolecules
(f) Evolution

3. Computer Science Fundamentals

(a) Discrete Structures and Combinatorics
i. Sets, Relations
ii. Trees, Graphs
(b) Basic Probability and Inf
ormation Theory
i. Distributions: Discrete and Continuous
ii. Expectation, Moments, and Covariance
iii. Entropy, Mutual Information, K-L Divergence
(c) Combinatorics and Probability
i. Brun's Sieve
ii. Chernoff Bounds (inc. coupon collector problems)
iii. Random Walks and Random Graphs
iv. 0-1 Laws
(d) Algorithm Design
i. Dynamic Programming
ii. Complexity Classes
iii. Heuristic Design

4. Mapping and Sequence Assembly

(a) Basics of Sequencing
(b) Cloning, Clone Overlaps
(c) Interval Graphs
(d) Contig Algorithms
(e) Shotgun Sequencing
(f) Single Molecule Methods
(g) Case Study: Assembly of Plasmodium falcipuram Genome

5. Sequence Analysis

(a) Patterns/Motifs
i. Exact and Approximate Matches
ii. Pattern Discovery
(b) Sequence Alignments
i. Pairwise Alignment
ii. Multiple Sequence Alignment
iii. Whole Genome Alignment

(c) Case Study: Studying Syntenic Orthology (Human and Fugu)

6. Interlude: Inference, Estimation, and Probabilistic Analysis

(a) Statistical Inference
i. Frequentist and Bayesian Viewpoints
ii. Bayesian Inference
iii. Machine Learning Paradigms
iv. Estimation: MAP and ML Formulations
v. Shrinkage, Model Complexity Control
vi. Regularization
vii. AIC, BIC, and other Criteria
viii. Methodological Issues
(b) Graphical Models in Probablistic Reasoning
i. Graphs as Specifiers of Probability Distributions
ii. Bayesian Networks
iii. Markov Models: Explicit and Hidden
(c) Experiment Design
i. Sampling Strategies
ii. Decision Theory for Optimal Experiments
iii. Closing-the-Loop
(d) Case Study: Beadle-Tatum Experiments

7. Modeling Transcription and Genomic Regulation

(a) The Essentials of Gene Expression
(b) Transcriptomics
ii. Microarray Analysis: Oligos and cDNA
(c) Motif Detection in Promoter Sequences
(d) Unraveling Genomic Regulatory Systems
(e) Developmental Genetics
(f) Case Study: Caveats in Data Interpretation and Mining

8. Structural Bioinformatics

(a) Introduction/ Chemical Basis of Life
(b) Fundamentals of Protein Structure
(c) Methods for Elucidating Structures
i. Experimental Methods
A. Electron Microscopy/NMR Spectroscopy
ii. Simulation (Protein Folding)
iii. Computational Approaches
A. Lattice, Off-Lattice Models
B. Atomistic Models
iv. Informatics Approaches (Protein Structure Prediction)
A. Homology Modeling
B. Threading/Comparative Protein Structure Modeling
C. Conformation Evaluation
(d) Protein Structure Databases
(e) Designing Protein
i. Computer Aided Drug Design
(f) Case Study: Characterization of PDZ domains

9. Pathways: Metabolic, Signaling, and Others

(a) Networks in Biology
(b) Simple Biochemical Pathways
(c) Modeling and Simulation of Biochemical Networks
i. Numerical Methods for Simulation
ii. Phase Space Analysis
(d) Basics of Signal Transduction
(e) Modeling and Simulation of Signaling Pathways
i. Capturing the Flow of Information
ii. Abstraction and Organization of Large Scale Networks
(f) Graphs in Biology
i. Mining High-Throughput Data Sources
ii. Interaction Maps
iii. Multimodal Networks
(g) Case Study: Studying the yeast cell cycle

10. Evolution

(a) Models of Evolution
(b) Evolutionary Distances
(c) Phylogeny Reconstruction
(d) Population Genetics
(e) Case Study: A Random Walk down the Genomes/African Eve

11. From SNPs to Disease Genetics

(a) Allelic Variation
(b) Haplotypes and their Inference
(c) The Genetics of Cancer
(d) Personalized Medicine
(e) Case Study: Molecular Marker Discovery and Association

12. Biotechnology of the Future

(a) Whole Genome Sequencing
(b) Single Cell Monitoring
(c) Genetic Engineering
(d) Cancer and Ageing

G22.3033-005 Computational Topology & Geometry

Prerequisite: G22.1170 (Fundamental Algorithms) or equivalent. Speak to instructor if unsure of background.

Many applications require us to determine the topological type of a surface or object. The computational methods depends on the representation of the object, e.g., whether it is given implicitly or explicitly. We treat computational aspects of the geometry and topology of curves and surfaces. The necessary mathematical tools such as homology, Morse theory and subdivision schemes will be developed.

Text: Topology for Computing, A.Zomorodian. Cambridge University Press, 2005.
Reference: Subdivision Methods for Geometric Design, J.Warren and H.Weimer. Morgan Kaufmann Pub., 2002.

G22.3033-006 Machine Translation

Click here for more information.

G22.3033-007 Mobile Robots


G22.3033-009 Application Servers

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 WebSphere 5.0, BEA WebLogic 8.1, .Net, OpenCCM 0.2, 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), as well as reflective, multimedia and agent-enabled frameworks

G22.3033-010 Networks and Distributed Systems


Course in undergraduate networks and/or operating systems; programming experience in C/C++ or Java is helpful for the final project.


This is a graduate level course on computer networks and large-scale distributed systems. In this class, we will teach the design and implementation techniques essential for engineering both robust networks and Internet-scale distributed systems.

The goal of this class is to guide students so they can:

  • initiate and critique research ideas in networks and distributed systems
  • implement and evaluate a working system that can handle real world workload
  • This course will have three components:

  • reading/lecture/discussion of research papers (class discussion 20%)
  • one systems programming lab assignment (10%)
  • a final course project (70%)
  • We will read about 40-50 research papers on various aspects of networks and distributed systems. Topics include routing protocols, network congestion control, wireless networking, peer-to-peer systems, overlay networks and applications, distributed storage systems and network security. Students are expected to read papers before the class and participate in the discussion during the class. The lecture will be conducted in an interactive fashion. We will lead the discussion, but we expect everyone to participate. You will be graded for class discussion.

    The final course project (conducted in a group of 2-3 students) should be a research-oriented project which can be either: 1. design/implementation of a new concept in networking or distributed systems. 2. measurement analysis to understand the behavior of an existing network/system.

    G22.3033-011 Recapturing Life

    Click here for more information.

    top | contact