Graduate Special Topic in Computer Science

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

G22.2945 Topics in Numerical Analysis: Parallel Computing (G63.2012 in Mathematics)

This course is offered by the Mathematics Department and cross-listed in the Computer Science Department. Please register for it under its CS course number (G22.2945.01) if you are a CS student. For a description, see the Mathematics Department course descriptions homepage, where this course is listed as G63.2012.01

G22.3033.01 Introduction to Multimedia

Prerequisites: G22.2110 (Programming Languages)

This course surveys the new technology of multimedia computing.

Topics to be covered include authoring and automation systems, graphics facilities, use of video and audio, hypertext systems, techniques for automatic processing of text, issues in system design.

G22.3033.02 Geometric Modelling

see the course homepage

G22.3033.03 Internet & Intranet Protocols & Applications

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, SMTP and POP3 for email, FTP for file transfer, and SSL for security. We consider protocol design issues, especially as they influence functionality, reliability and performance. We carefully read protocol specifications, such as the HTTP specification, RFC 2068. 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 are expected to have taken Data Communications and Networks or equivalent. Students will write several small programming assignments and one large project. The large programming project will ask students to design and implement a load balancing manager as used by content serving companies such as Akamai and Sandpiper.

Guest lecturers will present current research and practice on some of the following issues: the design and operation of an Internet EDI Service, the design and operation of a high volume Web-based branding system, performance issues in WWW servers, and Internet security.

The last quarter of the course examines research that enhances internet and Web performance.

G22.3033.05 (Special Topics in Programming Languages) Compilation for Advanced Computer Architectures

Prerequisites: G22.1170, G22.2110, G22.2130 (or their honors equivalents)

This course covers compiler optimization techniques for advanced computer architectures, including EPIC/VLIW, Vector, Superscalar, and SMP machines. In addition to introducing students to these architectures, the topics to be covered include parallelization and vectorization, optimizations for improved cache performance, instruction scheduling, and register allocation. Programming methodologies for exploiting the features of these architectures will also be discussed.

G22.3033.06 Sp Tps in Info Theory

see the course homepage

G22.3033.07 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 tools and software engineering techniques (e.g., Project Lifecycle, Environment, Resources, Packaging), Java core technologies (e.g., Collections Framework, Drag and Drop, Swing, JavaBeans, threads, JNI), 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., applets, aglets, connected devices, Web servers, security, XML, servlets, JSPs, EJBs, EAI), database technologies (e.g., JDBC), and operating systems (e.g., JavaOS). 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.3, J2EE 1.2.1, and J2ME CLDC 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.08 Computer Security

Prerequisites: Fundamental Algorithms (preferably with an A- or better), Distributed Computing coursework or practical experience.

The class will be run as a combination of lectures and research seminar. It will focus on two areas:

1.Cryptographic foundations of various security protocols. This will include explaining the mathematical results that are used, with proofs kept to the barest minimum. The cryptographic algorithms and protocols covered will mostly be selected from the list: key exchange, authentication, secret sharing, digital signatures, timestamping services, subliminal channels, undeniable signatures, bit commitment, coin flipping on the telephone, all or nothing disclosure of secrets, zero knowledge proofs, digital certified mail, elections, digital cash, DES, RSA, key management, compromised key handling

2.Selected papers/research directions of current interest, some covered by outside security experts and researchers.

As there will be no textbook, students really should plan to attend every class.

Course work will entail reading papers. There will be exams and/or reports on the papers you read. There will be no programming projects.

G22.3033.10 Advanced Topics in Operating Systems

Prerequisites: G22.2250, Strong C/C++ background, and permission of the instructor. Controlled enrolment (send email to

This class presents abstractions and implementation techniques for distributed systems supporting real-world workloads. Lectures will focus on recent research in the areas of operating systems and distributed computing. Assignments will involve building practical network applications, including a caching web proxy. In a final project, students will build a real, functioning Unix file system. Topics: kernel design, storage systems, networking protocols, client/server architectures, and scalability in distributed systems. Students will have access to dedicated equipment for the assignments and project.

G22.3033.11 Topics in Computational Biology: Comparative and Functional Genomics

The genes of all cells are composed of DNA. Proteins serve as structural components as well as enzymes within cells but the genes contain the blueprints for each protein and the program for controlling the production of proteins. Genes are transcribed to produce complementary molecules of mRNA (messenger RNA) and the mRNA is translated to proteins. There is a one to one correspondence (almost) between genes and proteins. Proteins perform the work of cells such as energy production, reaction catalysis, inter-cellular signaling, transcription and translation, cell reproduction, etc. All cells of an organism contain the same DNA. The level of production of the each of the types of proteins specifies the state of a cell. This state is determined by spatial and temporal variables such as tissue location and extra-cellular stimuli. Level of production of a protein is determined primarily by level of transcription of the corresponding gene into mRNA. This picture seems to be at the core of a universal story of life!

With the recent availability of DNA sequence data, proteomics data and development of tools for whole-genome assays (e.g., gene expression arrays), it has become possible to understand the basic biology of the cells, identification and function of the genes and how a common/universal theme varies over all life.

The greatest hurdles to the effective development and use of new tools for the "post-genomic informatics" are problems of mathematics and statistics. There are difficult problems of combinatorial mathematics, statistics, modeling and algorithm design.

There are challenging problems of how to elucidate genetic networks based on time-sequenced gene expression data. There are important problems of how to classify cells based on expression pattern and how to develop diagnostic disease classifications systems. Because of the high dimensionality of the data, there are many challenging problems of multiplicity and multivariate analysis that must be addressed.

G22.3033.12 Systems Related Algorithms and their mathematical foundations

Modern algorithmic developments and a variety of mathematical tools have a wide range of applications in new and emerging systems. In this seminar, we will study algorithmic methods and analyses for a variety of applications. In particular, we will include an introduction to: probability estimates; stochastic modeling for performance estimation; on-line algorithms; routing problems and congestion in networks; coding theory and its applications for high performance; data compression.

We will also include some material on simulation and probabilistic sampling methods.

While the course is intended to provide the background that is necessary for research in these areas, a few research problems will also be explored. Students will be invited--but not required--to work on a variety of open questions over the course of the semester.

top | contact