COMPUTER SCIENCE Ph.D. COURSES - SPRING 1999


CORE COURSES:

15-712(A) Software Systems
15-750(A) Algorithms Core
15-780(A) Advanced AI Concepts

ELECTIVE COURSES - CSD:

15-810(A)Verification of Concurrent, Reactive and Real-Time Programs
15-812(A) Semantics of Programming Languages
15-819(A) Higher-Order Typed Low-level Languages
15-822(A) System Design & Implementation Practicum
15-824(A) Mobile and Wireless Networking
15-828(A) Reconfigurable Computing
15-839(A) Special Topics in Architectures of Software Systems
15-840(A) Curent Research Issues in Computer Systems
15-849(A) Rapid Prototyping of Computer Systems
15-849(B) Special Topics in Computer Systems: Computer Systems Performance Analysis
15-850(A) Algorithms for Indexing and Searching (Seminar)
15-883(A) Computational Models of Neural Systems
15-889(A) Continuous Planning, Execution & Learning
15-889(B)/36-385 Statistical Approaches to Learning

OTHER COURSES OF INTEREST - OUTSIDE CSD:

18-847(A) Reconfigurable Computing

11-751(A) Speech Recognition and Understanding
11-XXX(A) Language and Information Technologies

15-712 Software Systems
Garth Gibson
TR 10:00-11:50, WeH 5409
Units: 12

Following is the syllabus for Fall 97. This will change some for the Spring 99 version (less networking, different papers), but otherwise the format and topics are broadly the same.

DESCRIPTION: This course studies the design and analysis of operating systems and distributed systems. It covers topics such as concurrency and distributed communication; fault-tolerance, availability, and persistence; security; and operating system structure. Lectures focus on the principles used in the design of operating systems and distributed systems, algorithms and data structures used in their implementation, and techniques used for evaluating them. Readings include case studies, seminal papers, and recent conference and journal articles. Prerequisites for the course are familiarity as a user with an interactive operating system, e.g. Unix, and an understanding of basis concepts in the design and implementation of operating systems, e.g., concurrent processes, semaphores.

Grading:
40% final exam (140 min)
40% project report (groups of two; four written handins)
20% subjective evaluation

Lecture format: The lecture time is long (140 min Monday and Wednesday) so we will insert a mid lecture break. This break and a couple of schedule conflicts encourage us to meet on a few Fridays (1:00 pm in 5409). See the schedule below. Most topics are covered in three parts over the period of about a week: a background lecture, a discussion of about three seminal or comprehensive papers, and a topical research presentation, typically by a guest speaker.

Text: There is no assigned textbook. There is, however, a number of books on reserve in the library for deeper study:

  • Lynch, Nancy. Distributed Algorithms. 004.36 L98d
  • Lynch, et al. Atomic Transactions. 005.74 A88i
  • Bernstein et al. Cincurrency Control and Recovery in Database Systems. 004.35 B53c
  • Korth & Silberschatz. Database Systems Concepts. 005.74 K85d2
  • Coulouris et al. Distributed Systems: Concepts and Design. 004.36 C85d2
  • Casevant & Singhal. Readings in Distributed Computing Systems. 004.36 C33r
  • Ananda & Srinivasan. Distributed Computing Systems: Concepts and Structures. 005.36 D614
  • Mullender, Sape. Distributed Systems. 004.36 D6142a2
  • Filman & Friedman. Coordinated Computing: Tools and Techniques for Distributed Software. 004.36 F48c
  • Ceri & Pelagatti. Distributed Databases: Principles and Systems. 510.7848 C41d
  • Andrews, G. Concurrent Programming: Principles and Practice. 004.65 P48c
  • Jain, Raj. The Art of Computer Systems Performance Analysis. 004.24 J25a
  • Schedule:


    15-750(A) Algorithms Core
    Instructor TBA
    MW 1:00-2:20, WeH 5409
    Units: 12

    DESCRIPTION: TBA


    15-780(A)/16-731 Advanced AI Concepts
    Andrew Moore
    MW 10:00-11:20, WeH 5409
    Units: 12

    COURSE DESCRIPTION


    15-810(A) Verification of Concurrent, Reactive, and Real-Time Programs
    Ed Clarke
    Tuesdays, 3:30-5:00, WeH 4615A
    Units: 06

    This course is a graduate level research seminar on automatic verification techniques for concurrent, reactive, and real-time programs. It was last taught in the spring of 1997, but different topics will be covered this semester

    The prerequisites for the course are minimal--basic knowledge of elementary logic and automata theory. Students taking the class for graduate credit will be asked to prepare a short project and give one or two lectures. Auditors are also welcomed.

    DETAILED COURSE DESCRIPTION: Logical errors in hardware controllers, communication protocols, and real-time programs are becoming an increasingly important problem. They can delay getting a new product on the market or cause the failure of some critical device that is already in use. The most widely used method for verifying such systems is based on extensive simulation and can easily miss significant errors when the program is very complicated.

    Many of these programs can be viewed as having only a finite number of states. When this is the case, an alternative verification technique called "model checking" may be used. In this approach specifications are expressed by automata or temporal logic formulas, and programs are modeled as state transition systems. An efficient search procedure is used to determine automatically if the specifications are satisfied by the transition system. The technique has been used in the past to find subtle errors in a number of non-trivial designs. Recently, the size of the state transition systems that can be verified by model checking methods has increased dramatically. By representing transition relations implicitly using Binary Decision Diagrams (BDDs), it has become possible to check some examples with more than 10^100 states!

    POSSIBLE TOPICS TO BE COVERED:

    1. Modeling concurrent programs with state transition systems
    2. Temporal logics
    3. The mu-calculus and fixpoint theory
    4. The basic model checking algorithm
    5. Binary decision graphs and symbolic model checking
    6. Using Omega-automata to specify properties of concurrent systems
    7. Notions of equivalence for concurrent systems (observational equivalence, etc)
    8. Compositional reasoning techniques (e.g. the "assume--guarantee" paradigm)
    9. Exploiting abstraction and symmetry
    10. Using induction to reason about systems with many similar processes
    11. True concurrency and models based on partial orders
    12. Extending model checking techniques to handle real-time programs
    13. Model checking techniques for the mu-calculus
    14. Model checking for security and electronic commerce protocols.

    15-812(A) Semantics of Programming Languages
    Stephen Brookes
    MW 11:30-12:50, WeH 5409
    Units: 12

    OVERVIEW: This course introduces foundational concepts and techniques of programming language semantics. The main focus is on the {\it principles} of programming languages, their application in program analysis and synthesis, and their relevance in the design and implementation of programming languages. We bring out the key concepts and techniques, building in a modest amount of necessary mathematics and logic as we go. At the same time we illustrate these concepts in settings that involve real programming languages. We aim to demonstrate that there is a scientific approach to programming language theory, and that such an approach is vital in attempting to answer questions about the pro's and con's of various languages, about compiler correctness, and for many other practical purposes.

    BACKGROUND: There is a wide variety of programming languages, ranging from low-level machine code and assembler to high-level languages such as C, Java, and Standard ML. A few major {\it paradigms} have been identified (e.g. ``functional'', ``imperative'', ``object-oriented'') and a particular language may belong to one or more of these. Although this type of classification can be useful to a limited extent, it is much more important to understand the relationship between program syntax (what we write) and algorithms (what happens, in abstract terms, when a program runs). This is one of the purposes of programming language semantics.

    A semantics for a programming language is a mathematical model that reflects the intended computational behavior of programs. To be useful, a semantics needs to be:

    To support syntax-directed, or modular, program development and analysis a semantics needs to be compositional.

    In addition to its role in validating program correctness, semantics can provide a firm foundation for many activities related to programming and programming languages.

    We will focus on two of the most successful styles of semantic description: denotational and operational semantics. Each style has its advantages and disadvantages, so it is important to be able to discern the pro's and con's of a particular semantics, and it is worth understanding the ideas behind each style. For example, a denotational semantics is automatically compositional, while typically this is not the case for an operational semantics; nevertheless one can usually still justify modular program analysis in the operational style, although the style of semantic presentation tends to make it harder. It is often stated that operational semantics is ``easier to understand'', but this is not a universal truth. Despite these claims, neither style is clearly ``better'' than the other. It is best to regard the two styles as complementary approaches to understanding languages and programs.

    As is traditional in semantics texts and research, we do not work with entire ``real'' programming languages like C and Java. Instead we focus on small ``core'' languages with an idealized (and simplified) syntax. Each core language is chosen to exhibit the features common to languages in a specific paradigm, with a minimum of syntactic distraction. In each case, we will show how a semantics can be used to analyze individual programs, to design correct programs, and to prove general laws of program equivalence that can be used to simplify programs while preserving correctness.

    We will begin with a simple sequential imperative programming language, since it requires little semantic sophistication and allows us to introduce the major concepts, notation, and techniques painlessly. We then apply and generalize these ideas and techniques to a series of more complex languages. The approach is incremental, studying each feature (e.g. parallelism) in as simple a setting as possible to minimize the potential for confusion and bring out the key issues caused by the feature itself, rather than having to deal with a grab-bag language containing many logically disparate features (like parallelism and modules) and trying to disentangle.

    The course will have a strong mathematical flavor, but also a strong emphasis on writing programs. Students will be expected to write programs in Standard ML. Despite its primarily functional nature, ML can be used to illustrate imperative, object-oriented, and concurrent programming issues as well as issues related to functional programming. By limiting to a single language we avoid the need to learn a new language every week. We also use ML to implement semantic definitions for other languages, thus providing a testbed facility for debugging semantic descriptions and for trying out various combinations of language features.

    EVALUATION: Grading will be based on homeworks, a midterm examination, a final examination, and (to a lesser, more informal sense) on class participation. Homework will include both written assignments and programming problems. The midterm and final will be open-book, in class.

    The course will be graded (for CS graduate students) on a pass/fail basis. Students are encouraged to form study groups to discuss homework problems and course material, but any work turned in for a grade must be solely the work of the individual. It is not acceptable to solve a problem collectively in a group and then write the answers up for individual submission. Copying or adaptation from a published book or article, or from previous core course documentation, is also unacceptable.

    SYLLABUS

    Here is a tentative outline for the course, subject to change.

    1. Introduction.
      • Practical uses of semantics: examples
      • Static semantics (abstract syntax, typing rules, binding and scope)
      • Dynamic semantics: (denotational and operational)
      • Notions of semantic equivalence
    2. Sequential imperative programming
      • Using domains and fixed point theory to model recursion
      • Handling local variables
      • Hoare's Logic and programming methodology
      • Jumps and continuations
      • Correctness of code optimizations
    3. Functional programming
      • ML programming: introduction
      • Types and polymorphism in ML
      • Call-by-name, call-by-value, and lazy evaluation
      • Static scope and dynamic scope
      • Inductive and co-inductive reasoning
      • Notions of program equivalence
      • Continuations and CPS-transformations
    4. Parallel imperative programming
      • Shared-variable programs
      • Communicating processes
      • Dataflow networks
      • Safety and liveness properties, fairness
      • Techniques for reasoning about parallel programs
      • Programming in Concurrent ML (CML)
    5. Combining functional and imperative programming
      • Sequential and parallel Algol-like languages
      • References in ML
    6. Data abstraction and modularity
      • ML signatures, structures, and functors
      • Opaque vs. transparent implementations
      • Signature matching and sharing constraints
      • Abstract data types as modules
    7. Object-oriented programming
      • Classes and objects in Java
      • Sub-classes and inheritance
      • Interfaces and packages
      • Subtyping
      • Objects in Algol-like languages
    8. Logic programming (to be included if time permits)
      • Programs as predicates, execution as proof search
      • Unification and resolution
      • Prolog programming
      • Backtracking and cut
      • Implementing logic programming in Standard ML
    REFERENCES: The following texts are suggested for background reading:

    Lecture notes will also be handed out on a regular basis, and we will assemble a collection of papers from the literature on relevant topics.


    15-819(A) Special Topics in Programming Languages: Higher-Order Typed Low-level Languages
    John Reynolds
    TR 1:30-2:50, WeH 4615A
    Units: 12

    DESCRIPTION: A major goal of programming-language research is to extend the benefits of higher-order typed programming languages, especially type safety and rigorous program verification, to lower-level languages that give the programmer more control over efficiency. In this course we will explore two approaches to this goal: (1) to start with a higher-order typed language (such as a purely functional, ML-like, or Algol-like language) and introduce features, such as linear types or explicit closures, that give the programmer more control, or (2) to start with a very low-level language (such as a machine language) and introduce a type system or verification methodology.

    PREREQUISITES: CS15-711 or equivalent

    TEXT: There is no published text. The course will be based upon published papers, preprints, and occasional class notes. See the tentative bibliography given below.

    Method of Evaluation: Grading will be based upon either a class presentation or a term paper.

    TOPICS TO BE COVERED:

    REFERENCES:

    1. Benton, P. N. A Mixed Linear and Non-Linear Logic: Proofs, Terms and Models (Extended Abstract). In: Computer Science Logic, 8th Workshop, CSL '94, Selected Papers, Kazimierz, Poland, September 25-30, 1994, edited by L. Pacholski and J. Tiuryn. Lecture Notes in Computer Science, vol. 933, Springer-Verlag, Berlin, 1995, pp. 121- 135.
    2. Levy, P. B. Call-by-Observable: A Subsuming Paradigm. 1998.
    3. Morrisett, C., Walker, D., Crary, K., and Clew, N. From System F to Typed Assembly Language. In: Conference Record of POPL '98: The 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Diego, January 19-21. ACM Press, New York, 1998, pp. 85-97.
    4. Necula, C. C. Proof-Carrying Code. In: Conference Record of POPL '97: The 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programn-iing Languages, Paris, France, January 15-17. ACM Press, New York, 1997, pp. 106-119.
    5. Pitts, A. M. and Stark, I. D. B. Observable Properties of Higher Order Functions that Dynamically Create Local Names, or: What's new? In: Mathematical Foundations of Computer Science 1993, 18th International Symposium, Gdaiisk, Poland, August 30-September 3, edited by A. M. Borzyszkowski and S. Sokolowski. Lecture Notes in Computer Science, vol. 711, Springer-Verlag, Berlin, 1993, pp. 122-141.
    6. Reddy, U. S. Objects and Classes in Algol-like Languages. June 14, 1998.
    7. Reynolds, J. C. Idealized Algol and its Specification Logic. In: Tools and Notions for Program Construction, An advanced course, Nice, France, December 7-18, 1981, edited by D. Neel. Cambridge University Press, Cambridge, England, 1982, pp. 121-161.

    COMMENTS:


    15-822(A) SDI Practicum
    Satya
    Tuesday 3-6PM, WeH 8220
    Units: 12

    COURSE DESCRIPTION

    COMMENTS:

    NO ON-LINE REGISTRATION;
    Enrollment by Permission of Instructor Only. Interested parties should send e-mail to satya@cs indicating name, year of studies, home department, and giving a short summary (1-2 paragraphs) of his/her background in the systems area and why you would like to take this course. Once e-mail approval is received from the professor, forward that to Sharon Burks (burks+@cs.cmu.edu, WeH 4216) to enroll.


    15-824A Mobile and Wireless Networking
    David Johnson
    TR 10:30-11:50, WeH 4615A
    Units: 12

    DESCRIPTION: Mobile computing devices such as laptop and palmtop computers are becoming widely available at very affordable prices, and many new wireless networking products and services are becoming available based on technologies such as spread-spectrum radio, infrared, cellular, and satellite. Mobile computers today often are as capable as many home or office desktop computers and workstations, featuring powerful CPUs, large main memories, hundreds of megabytes of disk space, multimedia sound capabilities, and color displays. Reasonably high-speed local area wireless networks are commonly available with speeds up to 2 megabits per second, and wide-area wireless networks are available that provide metropolitan or even nationwide service.

    However, wireless networks have fundamentally different properties than typical wired networks, including higher error rates, lower bandwidths, nonuniform transmission characteristics, increased usage costs, increased susceptibility to interference and eavesdropping, and higher variability of performance. Similarly, mobile nodes behave differently and have fundamentally different limitations than stationary nodes. For example, mobile nodes generally operate on limited battery power and may move and change their point of connection to the network.

    This course will examine the emerging area of mobile and wireless communications, through readings, lectures, class discussions, and a course project. We will address the topic more from the point of view of a computer scientist than a radio or cellular systems engineer, but will also cover the relevant aspects of the physical media. We will concentrate on the network protocols and other systems aspects of mobile and wireless communications.

    PREREQUISITES: You should have had at least an undergraduate operating systems course and should have some familiarity with computer networking and networking protocols. Having taken an undergraduate or graduate networking class is preferred.


    15-828A Reconfigurable Computing
    Seth Copen Goldstein
    TR 1:30-2:50, WeH 5409
    Units: 12

    DESCRIPTION: This course will quickly cover the fundamentals of reconfigurable computing, e.g., current FPGA architectures, reconfigurable fabrics, applications, and CAD tools. We will then focus on the architecture and compilation for processors which integrate reconfigurable function units. During the first third of the semester we will mainly read and discuss three to five papers a week. During the rest of the semester the students will divide into groups, each group working on a project in either compilation or processor architecture. Each week we will discuss project progress as well as continue our readings of the literature. Each group will produce a conference ready paper.

    SOME TOPICS TO BE COVERED:

    PREREQUISITES: Instructor Permission. Some experience on either computer architecture or compilers.

    TEXT: Course notes and papers. There is no assigned textbook.

    METHOD OF EVALUATION: Grading will be based on class presentations, class projects, and a final paper.

    UNITS: 12


    15-839A/15-675A Special Topics in Architectures of Software Systems
    David Garlan
    Units: 12
    MW 10:30-11:50, SEI A103

    DESCRIPTION: TBA

    COMMENTS:


    15-839B Special Topics in Software Engineering: Engineering Software for Critical System Properties
    Mary Shaw
    MW 3:00 - 4:20, WeH 3420
    Units: 12

    DESCRIPTION: Complex software systems must satisfy not only requirements about functionality but also requirements about other critical properties such as reliability, security, safety, and survivability. Achieving these properties draws on the limited resources available for system development, and designers must often trade off one property against another.

    The degree to which each property matters can vary from one project to another. Indeed, the overall level of confidence you need in a system may vary from one project to another. Engineering design consists of making tasteful and appropriate choices.

    This courses addresses the related questions of what constitutes "good enough" with respect to critical properties, how we design software systems that satisfy these criteria, and how we gather evidence to decide whether a given software system is good enough to use in a particular setting. We will examine properties of systems such as reliability, security, safety, and survivability and design/analysis techniques such as risk analysis, hazard analysis, error recovery, and associated design processes.


    15-940A Current Research Issues in Computer Systems
    Peter Steenkiste
    M 12:00 - 1:20, WeH 7220
    2 units

    DESCRIPTION: TBA

    NOTE: May be used for SCS elective credit only one time.


    15-849A/15-540 Special Topics in Computer Systems: Rapid Prototyping of Computer Systems
    Dan Siewiorek
    MW 2:30 - 3:50, HBH 2224
    12 units

    DESCRIPTION: TBA


    15-849B Special Topics in Computer Systems: Computer Systems Performance Analysis
    Hui Zhang
    MW 1:30 - 2:50, WeH 4615A
    12 units

    DESCRIPTION: In this course, we will discuss basic techniques of computer systems performance analysis: experiment design, measurement, simulation, and modeling. The following topics will be covered: performance indices, evaluation techniques, workload design and characterization, instrumentation, experiment design, simulation design, model calibration, statistical analysis and interpretation of results, and analytical modeling. Examples will be drawn for case study from operating system, computer architecture, networks, and I/O systems. We will read a list of research papers and some chapters of Raj Jain's book. Students are expected to do a substantial course project by applying techniques learned from the class to a real world research problem.

    PREREQUISITES: Two senior level system courses such as OS, Architecture, or Networking, or special authorization from the instructors.

    TOPICS TO BE COVERED:

    EVALUATION:

    15-850A Algorithms for Indexing and Searching (Seminar)
    Blelloch / Lafferty / Miller
    W 3:00 - 5:20, WeH 4601
    6 units

    DESCRIPTION: With the growth of the Web and other online resources in recent years, the problems associated with managing massive amounts of data have become increasingly interesting and important. A variety of algorithms and techniques have emerged for indexing, filtering, searching, and transmitting these online resources. This course will present a selection of these techniques, with an emphasis on the underlying algorithms and the need to scale up to handle very large data collections. A particular focus of the seminar will be on spectral methods (eigenvalues, singular value decompositions, and graph partitioning) and randomized algorithms (sampling and dimension reduction) for clustering.

    The course will be organized as a research seminar, meeting once a week. For each topic, the relevant background material will be followed by a presentation of recent research papers on the topic, together with a discussion of promising areas for future research. Students will be encouraged to participate in the presentation of research papers.

    PREREQUISITES: The Computer Science Department's graduate algorithms core course, or equivalent.

    TEXT: The seminar will be primarily based on recent research papers, and some course notes will be distributed. A reading list of relevant papers will be provided, as well as references to background material.

    METHOD OF EVALUATION: Grading will be based on participation, including giving presentations, and a class project.

    TOPICS TO BE COVERED:


    15-883(A) Computational Models of Neural Systems
    David Touretzky
    MW 3:00 - 4:20, WeH 4615A
    Units: 12

    DESCRIPTION: An in-depth study of information processing in real neural systems from a computer science perspective. We will examine a variety of biological structures where processing is now 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.

    COMMENTS:


    15-889(A) Continuous Planning, Execution, and Learning
    Manuela Veloso
    MW, 10:30-11:50, WeH 4615A
    Units: 12

    CONTENT: In this course we will teach the challenges of building autonomous agents that need to continuously plan, execute their actions, and learn from their interactions with the environment. In its essence, the autonomous agents need to "select actions" to achieve its objectives (and act, and monitor their execution, etc).

    The course will be divided into the following main parts:

    I. Deliberative Planning

    II. Planning under Uncertainty

    III. Plan Execution

    IV. Planning and Execution under Uncertainty

    EVALUATION: This will be a lecture course. There is no textbook, but students will study research papers. There will be homeworks, a research project, and a final exam.

    Grading option - pass/fail or letter grade.


    15-889(A)/36-385 Statistical Approaches to Learning
    Stephen Fienberg and Tom Mitchell
    M, 1:30-3:30, Statistics Conference Room
    Units: 12

    Description: This course is a graduate seminar course. We plan to cover a number of topics, with a special focus on statistical principles and algorithmic implementation in practical settings. We will consider applications such as language modeling, fMRI analysis, and analysis of data extracted from the WWW.

    Topics that may be covered at some level include:

    Prerequisite: Students should either have taken a CS course in machine learning and one course in statistics, or the statistics MS courses in intermediate statistics and regression analysis. Students should also have a knowledge of basic programming.

    Enrollment will be limited to 25 students.