#nJava and J2EE Programming 
#dThis course provides an intensiveexplorationof computer programming in the Java Language for Masters students who have had some prior, but perhaps limited, programming experience in Java or in some other programming language. The course starts with a review of the fundamental topics of programming in Java (data types, operators, control structures) along with discussions of object oriented programming (classes, instances, and class hierarchies). After covering the basics we move on using Java to cover simple graphical user interfaces (using Swing), file I/O, concurrency (i.e., threads), network I/O (HTTP), simple data structures (lists and maps), JavaBeans, the factory pattern, database access (via JDBC), building websites in Java using Servlets, Java Server Pages, and the Model-View-Controller design pattern. The course meets three times per week: two lectures and one recitation. Students must provide their own computer hardware for this course. 
#iEppinger J 
#t2009,fall

#nWeb Application Development 
#dThis course will introduce concepts in programming web application servers. We will study the fundamental architectural elements of programming web sites that produce content dynamically. The primary technology introduced will be Java Servlets and Java Server Pages (JSPs), but we will cover related topics as necessary so that students can build significant applications. Such topics include: HTTP, HTML and XML, JavaBeans, Design Patterns, Tag Libraries, Relational Databases, Object-Relation Mapping tools, Security, Web Services, Frameworks, Internationalization, and Scalability and Performance Issues. This course is recommended for students contemplating enrollment in 15-413 (the Software Engineering Project), since many of the projects in 15-413 are expected to be web-based. Students must be comfortable programming in Java to register for this course. Students must provide their own computer hardware for this course. Please see the Related URL above for more information.
#iGarrod C
#t2009,fall

#nComputer Architecture  
#dClasses will not begin until after the CSD Immigration Course
#iMowry T 
#t2009,fall

#nComputer Networks 
#dThis is a graduate level course on computer networking. The course involves both a reading/lecture/discussion component and a project component. We will read about 30 research papers on various aspects of computer networking: LAN/WAN technologies, congestion/flow control, traffic analysis, routing, internetworking, multicast, security, quality of service, access technologies, Internet measurement and peer-to-peer computing. 
#iSeshan S  
#t2009,fall

#nOptimizing Compilers for Modern Architectures 
#dThe compiler is the programmer's most important tool. It gives the programmer the freedom to write practical programs in a high-level programming language while still achieving good execution times and efficient use of space. In fact, compilers are so important that new computer architectures are developed in tandem with new compiler technology. It is only slightly overstating the case to say that much of today's advances in computer architecture are driven by compilers. Furthermore, new architectures are never sold without a companion compiler. This means that for just about every computer architecture company, one of the most effective ways to increase sales is to produce a better optimizing compiler, thereby increasing the claimed performance of the new processor architecture. 
#iGoldstein S
#t2009,fall

#nMachine Learning
#dMachine learning studies the question "How can we build computer programs that automatically improve their performance through experience?" This includes learning to perform many types of tasks based on many types of experience. For example, it includes robots learning to better navigate based on experience gained by roaming their environments, medical decision aids that learn to predict which therapies work best for which diseases based on data mining of historical health records, and speech recognition systems that lean to better understand your speech based on experience listening to you. This course is designed to give PhD students a thorough grounding in the methods, theory, mathematics and algorithms needed to do research and applications in machine learning. The topics of the course draw from from machine learning, from classical statistics, from data mining, from Bayesian statistics and from information theory. 
#iGuestrin C
#t2009,fall

#nType Systems for Programming Languages 
#dThe course studies the theory of type systems, with a focus on applications of type systems to practical programming languages. The emphasis is on the mathematical foundations underlying type systems and operational semantics. The course includes a broad survey of the components that make up existing type systems, and also teaches the methodology behind the design of new type systems. 
#iHarper R 
#t2009,fall

#nIntroduction to Model Checking 
#dClasses will not begin until after the CSD Immigration Course
#iClarke E 
#t2009,fall

#nSpecial Topics in Software Systems: Research Methods Expermental Computer Science 
#dSeparation logic is an extension of Hoare logic for reasoning about programs that use shared mutable data structures. We will survey the current development of this logic, including extensions that permit unrestricted address arithmetic, dynamically allocated arrays, recursive procedures, shared-variable concurrency, and read-only sharing. We will also discuss promising future directions.
#iMaxion R
#t2009,fall

#nAdvanced Topics in Programming Languages
#dThis course provides an overview of the state of the art in program analysis research. Topics include including program representations, abstract interpretation, type-based and constraint-based analysis, approaches to interprocedural analysis, counterexample-guided abstraction refinement, extended static checking, and combinations of testing and static analysis. The course will mix of theory and practice; students will formalize analyses and prove them correct, but also implement simple analyses and complete a capstone course research project. 
#iCrary K,Platzer A 
#t2009,fall

#nMobile and Pervasive Computing
#dSiewiorek D,Satyanarayanan M
#iThis is a course exploring research issues in the emerging fields of mobile computing and its close relative, pervasive computing. Many traditional areas of computer science and computer engineering are impacted by the constraints and demands of mobile and pervasive computing. Examples include network protocols, power management, user interfaces, file access, usability and security. This will be an "advanced" course in the truest sense --- most, if not all, the topics discussed will be ones where there is little consensus in the research community on the best approaches. The course will also offer significant "hand-on" experience in this area. 
#t2009,fall

#nSpecial Topics in Software Systems 
#dThe success or failure of an experiment can turn on the details of how the experiment was performed -- the experimental method. It is critical that the methodology be consistent with whatever research hypothesis is being pursued. The goal of this project-based course is to give students familiarity with and appreciation for the subtleties of a range of experimental techniques essential to high-quality empirical research. The course is based on a project that will illustrate important concepts of research methods. Example topics include user-study design and operation, data gathering, data diagnosis, experiment design and execution, signal detection, performance evaluation, error analysis, reporting results, etc.
#iBrumley D,Maxion R  
#t2009,fall

#nCurrent Research Issues in Computer Systems
#dThe seminar on "Current Research Topics in Computer Systems" is a weekly seminar in which PhD students present their research results. Each students typically makes two presentations each semester. The purpose of the seminar is to give students a forum in which they can improve their speaking skills in front of a friendly audience and in which they can get feedback on both preliminary research ideas and more mature research results. The seminar covers a wide range of topics in computer systems. In recent years, the focus has been on networking, mobile computing, network-awareness, and compilers.
#iSteenkiste P 
#t2009,fall

#nComputational Molecular Biology and Genomics 
#dAn advanced introduction to computational molecular biology, using an applied algorithms approach. The course will survey established algorithmic methods, including pairwise sequence alignment and dynamic programming, multiple sequence alignment, fast database search heuristics, hidden Markov models for molecular motifs, phylogeny reconstruction and gene finding. We will explore emerging computational problems in genomics through special topics lectures and course projects.
#iDurand M 
#t2009,fall

#nPerformance Modeling 
#dIn designing computer systems one is usually constrained by certain performance requirements. For example, certain response times or throughput might be required of the system. On the other hand, one often has many choices: One fast disk, or two slow ones? What speed CPU will suffice? Should we invest our money in more buffer space, or a faster processor? Which migration policy will work best? Which task assignment policy will work best? How can we redesign the scheduling policy to improve the system performance? 
#iHarchol-Balter M
#t2009,fall

#nComputational Methods for Biological Modeling and Simulation 
#dThis course is designed to teach computational aspects of using modeling and simulation methods to understand biological systems, with an emphasis on practical application. The course will be divided into three general topics: models for optimization problems, simulation and sampling, and model parameter tuning. Specific model types to be covered will include graph models in evolution, string models for biological sequence data, Markov chain Monte Carlo models, hidden Markov models, and discrete-event models, as well as examples of special-purpose models important to specific sub-disciplines of biology. Algorithmic techniques to be studied will include common algorithms for graph optimization problems, mathematical programming methods, event queue data structures, key machine learning methods, commonly used heuristic methods, and methods for generating random numbers and accurately sampling from probability distributions required by or implicit in mathematical models. 
#iSchwartz R 
#t2009,fall

#nComputational Models of Neural Systems
#dThis course is an in-depth study of information processing in real neural systems from a computer science perspective. We will examine several brain areas, such as the hippocampus and cerebellum, where processing is sufficiently well understood that it can be discussed in terms of specific representations and algorithms. We will focus primarily on computer models of these systems, after establishing the necessary anatomical, physiological, and psychophysical context. There will be some neuroscience tutorial lectures for those with no prior background in this area. 
#iTouretzky D 
#t2009,fall

#nIntroduction to Computer Science Education 
#dIntroduction to Computer Science Education is a combination of current readings in CS Education research as well as a seminar in general education practices. Topics covered will include designing a course structure, lectures and assessments, engagement and motivation, program level assessment (how to research if your teaching is effective), teaching tools appropriate for various domains, teaching methodologies, and current CS Education research (both at the introductory CS1 level as well as the more advanced undergraduate level (300-400 level coursework).
#iSudol L 
#t2009,fall

#nEngineering Complex, Large-Scale Computer Systems
#dThis is a master's level course for students with strong design and implementation skills who are likely to pursue careers as software architects and lead engineers. It may be taken by well-prepared undergraduates with excellent design and implementation skills in low-level systems programing. The course assumes a high level of proficiency in all aspects of operating system design and implementation. This course will help students prepare for leadership roles in creating and evolving the complex, large-scale computer systems that society will increasingly depend on in the future. The course will teach the organizing principles of such systems, identifying a core set of versatile techniques that are applicable across many system layers. Students will acquire the knowledge base, intellectual tools, hands-on skills and modes of thought needed to build well-engineered computer systems that withstand the test of time, growth in scale, and stresses of live use.  
#iSatyanarayanan M
#t2010,spring

#nWeb Application Development 
#dThis course will introduce concepts in programming web application servers. We will study the fundamental architectural elements of programming web sites that produce content dynamically. The primary technology introduced will be Java Servlets and Java Server Pages (JSPs), but we will cover related topics as necessary so that students can build significant applications. Such topics include: HTTP, HTML and XML, JavaBeans, Design Patterns, Tag Libraries, Relational Databases, Object-Relation Mapping tools, Security, Web Services, Frameworks, Internationalization, and Scalability and Performance Issues.
#iEppinger J,Tomasic A 
#t2010,spring

#nSpecial Topic: New Robotics Ventures
#dThe principal objective of this course is to enable robotic scientists and technologists to view the business from the point of view of the financial markets so that they can determine, prior to founding a company, whether that new venture is likely to provide sufficient return on investment (both to the founders and to the investors) to warrant the effort. 
#iCoulter R
#t2010,spring

#nComputer Vision
#dis course deals with the science and engineering of computer vision, that is, the analysis of patterns in visual images of the world with the goal of reconstructing and understanding the objects and processes in the world that are producing them. The emphasis is on physical, mathematical, and information processing aspects of vision, but biological and psychological perspectives will also be considered. Topics covered include image formation and representation, multi-scale analysis, segmentation, contour and region analysis, reconstruction of depth based on stereo, texture shading and motion, and analysis and recognition of objects and scenes using statistical and model-based techniques. 
#iNarasimhan , S
#t2010,spring

#nNeural Computation 
#dComputational neuroscience is an interdisciplinary science that seeks to understand how the brain computes to achieve natural intelligence. It seeks to understand the computational principles and mechanisms of intelligent behaviors and mental abilities -- such as perception, language, motor control, and learning -- by building artificial systems and computational models with the same capabilities. 
#iLee T 
#t2010,spring

#nAdvanced Operating Systems and Distributed Systems  
#dThis course examines the design and analysis of selected aspects of operating systems and distributed systems. It covers topics such as concurrency and distributed communication; fault-tolerance, availability, and persistence; and operating system structure. Lecture focus on the principles used in the design of operating systems and distributed systems, and algorithms and data structures used in their implementation. Readings include case studies, seminal papers, and recent conference and journal articles. 
#iAndersen D
#t2010,spring

#nAdvanced Storage Systems 
#dStorage systems are among the most fascinating and the most important parts of computer systems. They often dominate the performance of a system, and their components' inner workings require amazing feats of engineering. At the same time, storage systems hold the crown jewels of most organizations: their information (from source code to Microsoft's software to the sales databases of every e-commerce site). Within the field of computer systems and computer engineering, there is no area whose demand for bright people and better solutions is more robust. 
#iGanger G,Gibson G 
#t2010,spring

#nMachine Learning 
#dMachine learning studies the question "How can we build computer programs that automatically improve their performance through experience?" This includes learning to perform many types of tasks based on many types of experience. For example, it includes robots learning to better navigate based on experience gained by roaming their environments, medical decision aids that learn to predict which therapies work best for which diseases based on data mining of historical health records, and speech recognition systems that lean to better understand your speech based on experience listening to you. This course is designed to give PhD students a thorough grounding in the methods, theory, mathematics and algorithms needed to do research and applications in machine learning. 
#iMitchell T,Xing P
#t2010,spring

#nProgramming Language Semantics
#dWe survey the theory behind the design, description, and implementation of programming languages, and of methods for specifying and verifying program behavior. Both imperative and functional programming languages are covered, as well as ways of integrating these paradigms into more general languages.
#iReynolds J 
#t2010,spring

#nAdvanced Topics in Programming Languages 
#dThis course provides an overview of the state of the art in program analysis research. Topics include including program representations, abstract interpretation, type-based and constraint-based analysis, approaches to interprocedural analysis, counterexample-guided abstraction refinement, extended static checking, and combinations of testing and static analysis. The course will mix of theory and practice; students will formalize analyses and prove them correct, but also implement simple analyses and complete a capstone course research project. 
#iBrookes S,Crary K,Aldrich J 
#t2010,spring

#nMultimedia Databases and Datamining 
#dThe course covers advanced algorithms for learning, analysis, data management and visualization of large datasets. Topics include indexing for text and DNA databases, searching medical and multimedia databases by content, fundamental signal processing methods, compression, fractals in databases, data mining, privacy and security issues, rule discovery, data visualization, graph mining, stream mining. 
#iFaloutsos C 
#t2010,spring

#nMultimedia Databases and Datamining 
#dThe course covers advanced algorithms for learning, analysis, data management and visualization of large datasets. Topics include indexing for text and DNA databases, searching medical and multimedia databases by content, fundamental signal processing methods, compression, fractals in databases, data mining, privacy and security issues, rule discovery, data visualization, graph mining, stream mining. 
#iFaloutsos C 
#t2009,spring

#nCurrent Research Issues in Computer Systems 
#dThe seminar on "Current Research Topics in Computer Systems" is a weekly seminar in which PhD students present their research results. Each students typically makes two presentations each semester. The purpose of the seminar is to give students a forum in which they can improve their speaking skills in front of a friendly audience and in which they can get feedback on both preliminary research ideas and more mature research results. The seminar covers a wide range of topics in computer systems. In recent years, the focus has been on networking, mobile computing, network-awareness, and compilers. 
#iSteenkiste P
#t2010,spring

#nComputational Photography 
#dComputational Photography is an emerging new field created by the convergence of computer graphics, computer vision and photography. Its role is to overcome the limitations of the traditional camera by using computational techniques to produce a richer, more vivid, perhaps more perceptually meaningful representation of our visual world. 
#iEfros A
#t2010,spring

#nAlgorithms for Computational Structural Biology
#dSome of the most interesting and difficult challenges in computational biology and bioinformatics arise from the determination, manipulation, or exploitation of protein structures. This course will survey these challenges and present a variety of computational methods for addressing them. The course is appropriate for both students with backgrounds in computer science and those in the life sciences. 
#iLangmead C 
#t2010,spring

#nIntroduction to Computer Science Education 
#dntroduction to Computer Science Education is a combination of current readings in CS Education research as well as a seminar in general education practices. Topics covered will include designing a course structure, lectures and assessments, engagement and motivation, program level assessment (how to research if your teaching is effective), teaching tools appropriate for various domains, teaching methodologies, and current CS Education research (both at the introductory CS1 level as well as the more advanced undergraduate level (300-400 level coursework).
#iSudol L 
#t2010,spring

