Graduate Special Topics in Computer Science

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

G22.3033-002 Cryptographic Protocols

Pre-requisites: some exposure to cryptography (but no formal course requirement), or at the least, some familiarity with algebra, number theory, probability theory, and complexity theory.

In this course, students will read and present results from the recent literature on secure cryptographic protocols. Topics include: zero-knowledge, multi-party computation, universal composability.

G22.3033-003 Machine Translation

Click here 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
i. SAGE
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 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-006 Producing Production Quality Software

This course provides detailed, practical, training for producing high-quality code.


We cover the following topics:
  • Object Oriented Concepts
  • Evaluating requirements and specifications
  • A Pseudocode/PDL approach to design and implementation, using libraries, data structure selection
  • Practical code correctness: using invariants
  • Code reviews: how to detect software problems by reading code
  • Quality code guidelines: a short list of criteria for good code
  • System architecture: module decomposition and interfaces
  • Object-Oriented design: several approaches
  • Large system design in Java: file and class organization, OO hierarchy, deciding whether to use composition or inheritance, avoiding dependency cycles
  • Other design methodologies: data flow diagrams, structured design, top-down design, bottom-up design, processing semi-structured input with REs, FSMs, and CFGs, design patterns
  • Error handling: exceptions, error types, propagating and handling errors
  • Testing: unit testing, using assertions, coverage testing, independent testing, choosing good test cases, structured basis testing
  • Black box (functional) testing: available tools, its limitations
  • Group programming: group dynamics, team work
  • Concurrency: writing reliable programs with threads
  • Our pedagogy involves reading and writing a lot of code. Students see both good and bad code in class. The professor (or trained TA) reads and reviews all code written by students. Students write both small and large programs.

    G22.3033-007 Application Servers (this is from fall 2004; an update is expected)

    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-008 WWW Programming

    A programming course that focuses on covering many topics that relate to the WWW.

    Topics covered include:

    • Object Oriented Concepts
    • The structure and protocols of the WWW: IP, TCP, UDP, SMTP, DNS, PING, HTTP
    • Programming in Java using J2SE
    • XML, XSL, XSLT, and XPath
    • WebServices
    We will do five or more homework assignments in Java. These will include building applications that demonstrate:
    • A Swing UI
    • Sockets
    • Multithreading and RMI
    • Servlets
    • JSPs
    • WebServices
    The class does NOT require any previous Java programming expertise, but programming in some language is required. You will be writing code and expected to get up to speed quickly on Java and the IDE we will use. You should have a windows 2000/XP or Linux machine with at least 256 megs (512 meg better) and a 750 mHz processor or better.


    top | contact webmaster@cs.nyu.edu