Computer Science Course Descriptions for Spring of 1997
CMPSCI 102: Computers and Society (R2)Professor: SpinelliThere are three principal components to this course: 1) what computers are, 2) how they are used in society, and 3) how their use affects society. In the first part we explore the origin of computers and the historical, economic, and scientific forces that brought them into existence. We also study the essential hardware components that make up a computer and we learn the basic software methods of programming using the BASIC language. In the second part, usage of computers by business in the office and in factory automation, by the professions such as medicine, and by artists and scientists is covered; special attention is given to the advent of the Information Super Highway, how to use it and how it can benefit individual users. Finally the economic and sociopolitical impact that computers are having on society and on the individual are discussed; these issues range from questions of privacy to the impact of robots in the factory, to the use of computers in political action. The primary aim of the course is to impart sufficient computer literacy to enable the student to 1) write simple, but nontrivial programs, 2) make use of and benefit from available computer facilities, and 3) understand why computers have become such a powerful force in the modern society. 3 credits. CMPSCI 105: Computer Literacy (R2)Professor: VertsMicrocomputers are now used widely not only in academia but in all areas of modern life. For this reason it's important that all students understand how computers work and how computers can be used as a problemsolving tool. The focus of this course is on computer applications. The course stresses the ways in which computers can help you solve problems efficiently and effectively. The course provides a broad introduction to hardware and software aspects of microcomputers. Then four application areas are discussed: word processing, spreadsheets, databases and telecommunications (access to the Internet). The course uses the university's microcomputer labs, and weekly 90 minute lab sessions are an integral part of the course. Students who are more interested in computer programming should take CMPSCI 121 or 187. Prerequisites: reasonable high school math skills. Typing ability is also an important asset for the course. Previous computer experience is not expected. 3 credits. CMPSCI 105C: Computer Literacy (R2)Professor: VertsCMPSCI 105W: Computer Literacy (R2)Professor: VertsCMPSCI 105X: Computer Literacy (R2)Professor: VertsCMPSCI 121: Introduction to Problem Solving with Computers (R2)Professor: Hanson, StempleAn introductory course in problem solving and computer programming using the programming language Pascal. The course focuses on the fundamental concepts of problem solving and the techniques associated with the development of algorithms and their implementation as computer programs. This course or its equivalent is required for all additional courses in CMPSCI. 3 hours of lecture/recitation per week. About 6 programming problems are assigned. In addition there are assigned homework problems, a midterm exam and a final. No computer science prerequisite, although high school algebra and basic math skills (e.g. R1) are assumed. Use of computer is required. 3 credits. CMPSCI 187: Programming with Data Structures (R2)Professor: Utgoff, ShirgurkarThe course introduces and develops methods for designing and implementing data structures. The main focus is on how to build and encapsulate data objects and their associated operations. Specific topics include pointer variables, linked structures, recursive structures and algorithms, binary trees, balanced trees, and hash tables. There will be weekly assignments, consisting of programming and written exercises. There will be quizzes, a midterm, and a final exam. Prerequisites: CMPSCI 121 (or equivalent) and Basic Math Skills (R1). 4 credits. CMPSCI 187D: Programming with Data StructuresProfessor: UtgoffCMPSCI 191G: Seminar  Practical Skills for the InternetProfessor: LernerThe Internet is a goldmine of information and software resources for those who know how to plug into it and navigate it. Originally designed for computer scientists, the net is now open to the general public through educational computing accounts and commercial services. Unfortunately, much of the enabling technology associated with net navigation is still aimed at computer specialists. This course will provide nonCS majors with the basic skills needed to tap the net. We will cover basic UNIX commands, email management, listserv software, gophers, Usenet newsgroups, ftp file transfers, telnet sessions, www browsers, basic web page design, and PGPbased cryptography. Students will also work with a number of search tools including veronica, archie, wais databases, and www search engines. In addition, we will survey key social and political topics that are relevant to the Internet, such as copyright law, First Amendment issues, computer security, personal privacy, electronic cash, commercialization, and bandwidth pricing strategies. Prerequisites: some handson experience with PCs or MACs or UNIX (programming experience is NOT required). 3 credits. CMPSCI 192D: Seminar  TAP ProgramProfessor: BarringtonConversations with members of the UMass CMPSCI community, to explore issues in and subareas of computer science. Open only to firstyear students in the CMPSCI TAP residential program. 1 credit. CMPSCI 197J: Programming in JavaProfessor:Note: Continuing Education Course. The purpose of this course is to guide students in learning how to use Java to write standalone application programs and applets to be run by a Web browser. Java is an objectoriented language which syntactically resembles C and C++. It was designed to be a machineindependent language that is both safe enough for running over the Internet and general enough to handle all of our application needs. It comes with a rich collection of packages with which to build GUI's, display images, and handle network protocols. The course will meet once a week, tentatively, Monday's from 68PM. This course does NOT fulfill a computer science elective requirement. Prerequisite: CMPSCI 187 or ECE 242 or equivalent. 2 credits. CMPSCI 201: Architecture and Assembly Language (E)Professor: GrahamLecture, lab. The architecture and machinelevel operations of modern computers at the logic, component, and system levels: topics include binary arithmetic, logic gates, Boolean algebra, arithmetic units, control unit, buses, memory, addressing modes, interrupts, inputoutput, floating point arithmetic, and virtual memory. Simple assembly language is used to explore how common computational tasks are accomplished by a computer. Three hours of lecture per week, laboratory exercises, homework exercises, two midterm exams, and a final exam are required. Prerequisite: CMPSCI 187 or equivalent. 4 credits. CMPSCI 250: Introduction to Computation (E)Professor: MollLecture, discussion. Basic concepts of discrete mathematics useful to computer science, with the theory of regular languages and finitestate machines as the prime motivating example. The language of mathematics: Set theory, strings and formal languages, propositional and predicate calculus, relations and functions, basic number theory. Induction and recursion: Interplay of inductive definition, inductive proof, and recursive algorithms. Elementary combinatorics. Basic graph theory. Finitestate machines and regular languages: MyhillNerode Theorem, nondeterministic finite automata, Kleene's Theorem. Problem sets, 23 midterm exams, timed final. Corequisite: MATH 132/136 or equivalent. Prerequisite: CMPSCI 187 or equivalent. 4 credits. CMPSCI 287: Programming Language ParadigmsProfessor: PopplestoneLecture, discussion, programming projects, lab. Programming Language Paradigms provide a basic philosophy to support the construction of reliable largescale systems. This course discusses four such paradigms. In the functional paradigm software is constructed in such a way as to minimize the use of sideeffects, thereby simplifying the conceptual structure of programs and making them easier to analyze and understand. The logic paradigm supports the development of software in which the concept of relation (for example a relation between people) is more important than the concept of function. In the imperative paradigm we are concerned with principled ways in which software that is statedependent can be constructed. Finally, in the objectoriented paradigm we are concerned with combining data with code to create "objects" which exhibit behavior. Corequisites: CMPSCI 250 and MATH 132. 4 credits. CMPSCI 311: Introduction to AlgorithmsProfessor: SitaramanThis course will introduce you to algorithms in a variety of areas of interest, such as sorting, searching, stringprocessing, and graph algorithms. You will learn to study the performance of various algorithms within a formal, mathematical framework. There will be a few programming assignments as well to help you relate the empirical performance of an algorthim to theoretical predictions. Mathematical experience (as provided by CMPSCI 250) is required. You should also be able to program in Pascalor C (or some other closely related language). 3 credits. CMPSCI 311: Supplement to 391SProfessor: Sitaraman1 credit. CMPSCI 320: Introduction to Software EngineeringProfessor: ClarkeIn this course, students learn and gain practical experience with software engineering principles and techniques. The practical experience centers on a semesterlong team project in which a software development project is carried through all the stagesof the software life cycle. Topics in this course include requirements analysis, specification, design, abstraction, programming style, testing, maintenance, and software project management. Particular emphasis is placed on designing and developing maintainable software and on the use of objectoriented techniques throughout the software lifecycle. Use of computer required. Two exams, several homeworks, major term project. Prerequisite: CMPSCI 287. 4 credits. CMPSCI 377: Operating SystemsProfessor: MckinleyIn this course we examine the important problems in operating system design and implementation. The operating system provides a wellknown, convenient, and efficient interface between user programs and the bare hardware of the computer on which they run. The operating system is responsible for allowing resources (e.g., disks, networks, and processors) to be shared, providing common services needed by many different programs (e.g., file service, the ability to start or stop processes, and access to the printer), and protecting individual programs from one another. The course will start with a brief historical perspective of the evolution of operating systems over the last fifty years, and then cover the major components of most operating systems. This discussion will cover the tradeoffs that can be made between performance and functionality during the design and implementation of an operating system. Particular emphasis will be given to three major OS subsystems: process management (processes, threads, CPU scheduling, synchronization, and deadlock), memory management (segmentation, paging, swapping), file systems, and operating system support for distributed systems. Assignments: 3 labs in C++, 3 exams, 6 or more written homeworks. Prerequisites: CMPSCI 187, CMPSCI 201. 3 credits. CMPSCI 377X: Operating SystemsProfessor:CMPSCI 383: Artificial IntelligenceProfessor: ZilbersteinIntroduction to techniques for building intelligent machines: problem solving, statespace representation, heuristic search techniques, game playing, knowledge representation, logical reasoning, planning, reasoning under uncertainty, learning, expert systems, natural language processing, image understanding. Prerequisites: CMPSCI 250 and CMPSCI 287. 3 credits. CMPSCI 391F: Seminar  HTML for PoetsProfessor: SpinelliAn exploration of the Hyper Text Markup Language and its philosophical implications for Society at the threshold of the year 2000. Java Script will also be discussed. Students cannot receive credit for both this course and CMPSCI 591_ SeminarHTML forPoets. 3 credits. CMPSCI 401: Formal Language TheoryProfessor: BarringtonThe mathematical classification of computational problems as solvable or unsolvable, and as easy or difficult. Review of finite state machines and regular languages. Introduction to contextfree languages and pushdown automata. General models of computation, provably unsolvable problems. Resourcebounded computation, the classes P and NP, further topics in complexity theory such as interactive proofs. Problem sets, midterm, final, some group activities. Prerequisites: CMPSCI 250 and 311 or permission of instructor. 3 credits. CMPSCI 405: Social Issues in ComputingProfessor: HarveyDesigned to satisfy the Junior Year writing requirement, CMPSCI 405 introduces the student to technical writing and editing, scientific journalism and the social essay. The course combines practical, scientific writing as found in industry and businesswith explorative essays that focus attention upon the technological and humanistic concerns inherent in society. Ten written assignmentstwo longer papers, eight shorter ones and one oral presentation. 3 credits. CMPSCI 445X: Information SystemsProfessor:CMPSCI 453: Computer NetworksProfessor: KuroseThis course provides an introduction to fundamental concepts in the design and implementation of computer communication networks, their protocols, and applications. Topics to be covered include: layered network architectures, applications, network programming interfaces (e.g., sockets), transport, congestion, routing, and data link protocols, local area networks, emerging highspeed networks, network management, and network security. Examples will be drawn primarily from the Internet (e.g., TCP, UDP, and IP) protocol suite. There will be five written assignments, three programming assignments (in C), one midterm and a final exam. This course will be lectured to both graduate and undergraduate students. Students enrolled for graduatelevel credit will be required to complete additional homework problems and additional readings from the literature. Prerequisites: A rudimentary understanding of computer architecture and operating systems, while not required, would be helpful. Text: Computer Networks, A. Tanenbaum, Prentice Hall, 3rd ed., 1996. Copies of the instructors class notes will be available at Collective Copies (downtown Amherst) and are highly recommended. 3 credits. CMPSCI 520X: Software EngineeringProfessor:CMPSCI 521: Advanced Software EngineeringProfessor: AdrionThis course introduces students to the principal approaches for testing and evaluating software systems, particularly large, complex systems used in lifecritical applications such as medical monitoring devices and air traffic control. Among the topicscovered are manual code inspection techniques, such as the cleanroom approach, formal specification and verification techniques, static and dynamic analysis approaches, and software safety issues. Students will be required to read selected articles from the literature and textbook, complete homework assignments, and do one indepth project. This course focuses on analysis activities and complements Software Engineering I, which focuses on software synthesis techniques. Students are encouraged to take both courses but may take either course independently. Students who signup for 691G will be expected to do a more comprehensive project and more challenging homework assignments than those who signup for 591G. 3 credits. CMPSCI 521X: Advanced Software EngineeringProfessor:CMPSCI 530: Programming LanguagesProfessor: WiledenThis course uses a detailed examination of the Java programming language as a basis for studying fundamental principles underlying the design and implementation of modern programming languages. We address a wide range of programming language concepts and issues from both a practical and a theoretical perspective. Some attention is given to such traditional topics as control constructs, type systems and type checking, since these are the foundations for all subsequent developments. The bulk of the course, however, is devoted to more contemporary language features such as object orientation, modularity, polymorphism and concurrency. Our study of both traditional topics and contemporary features is driven by first exploring their realization in Java,then comparing and contrasting with the realizations found in other modern languages such as C++, Ada 95, CLOS, ML and Modula3. In addition, we consider some emerging concepts and directions for programming languages such as orthogonal persistence, reflection, interoperability and open implementation. While the predominant paradigm for contemporary programming languages  the imperative, objectoriented paradigm  is our primary focus, other paradigms such as the functional and logic programming paradigms are also discussed. Homework problems, programming exercises and projects reinforce the material covered in lectures and readings. Prerequisites: CMPSCI 287, 320 and 377. Corequisite: CMPSCI 401. Honors module when requested. 3 credits. CMPSCI 530: Programming LanguagesProfessor:CMPSCI 591K: Seminar  ThreeDimensional Animation and Digital EditingProfessor: WoolfThis seminar is dedicated to the production of high quality computer animation using microcomputer based 3dimensional graphics technology. For example, color 3D objects are defined and manipulated, digitized images created and altered, and animated sequences produced directly on the computer. Special hardware allows conversion of computer signal to a standard video signal and, in the reverse process, direction translation of digitized video images into 256 colors on the computer. Techniques are used to bend and twist shapes around objects or lines and to trace over images including digitized pictures. The course is directed at production of an informative and approachable video of a ten minute 3dimensional animated piece. Using computergenerated graphical analogies as well as cartoon caricature, the video demonstrates both theoretical issues and current capabilities of computer graphics. 3 credits. CMPSCI 601: Computation TheoryProfessor: ImmermanAn indepth introduction to the main models and concepts of the mathematical theory of computation, including: Computability: What problems can be solved in principle? How might you prove that a problem can't be solved? Complexity: What problems can be solved within given resource constraints? How do constraints on different resources (e.g., time, space, or parallel time) relate? Logic: What are the best ways to formally specify a problem, and how do these specifications relate to the difficulty of the problem? Text: Papadimitriou, "Computational Complexity". Prerequisites: Undergraduatelevel courses in discrete mathematics (e.g., CMPSCI 250) and analysis of algorithms (e.g., CMPSCI 311 or better yet 611), plus additional mathematical maturity (e.g., CMPSCI 611, A's in 250 or 311, or other mathematical background). Previous background in formal languages (e.g., CMPSCI 401) useful but not required  students with none may wish to consult Lewis and Papadimitriou, "Elements of the Theory of Computation", or Hopcroft and Ullman, "Introduction to Automata Theory, Languages, and Computation". Course requirements: about six problem sets, timed midterm and final. Also open to qualified undergraduates. 3 credits. CMPSCI 603: Introduction to Vision, Brain and RoboticsProfessor: GrupenThis course is concerned with the design and analysis of adaptive, closedloop physical systems. The focus will be sensorimotor machines that interpret and manipulate their environments. Techniques for modifying the dynamics of the closedloop systemin response to cumulative information to achieve goal oriented behavior will be presented. Toward this end, we will study mechanisms (kinematics and dynamics), actuators, sensors, (with a focus on machine vision), optimal estimators, connectionist approaches to pattern recognition, feedback control theory, reinforcement learning, task level planning, and we will conclude with a discussion of system architectures for organizing behavior. Wherever possible, we will relate these techniques to biologicalsystems. 3 credits. CMPSCI 621: Advanced Software EngineeringProfessor: AdrionThis course introduces students to the principal approaches for testing and evaluating software systems, particularly large, complex systems used in lifecritical applications such as medical monitoring devices and air traffic control. Among the topicscovered are manual code inspection techniques, such as the cleanroom approach, formal specification and verification techniques, static and dynamic analysis approaches, and software safety issues. Students will be required to read selected articles from the literature and textbook, complete homework assignments, and do one indepth project. This course focuses on analysis activities and complements Software Engineering I, which focuses on software synthesis techniques. Students are encouraged to take both courses but may take either course independently. Students who signup for 691G will be expected to do a more comprehensive project and more challenging homework assignments than those who signup for 591G. 3 credits CMPSCI 630: Programming LanguagesProfessor: WiledenThis course uses a detailed examination of the Java programming language as a basis for studying fundamental principles underlying the design and implementation of modern programming languages. We address a wide range of programming language concepts and issues from both a practical and a theoretical perspective. Some attention is given to such traditional topics as control constructs, type systems and type checking, since these are the foundations for all subsequent developments. The bulk of the course, however, is devoted to more contemporary language features such as object orientation, modularity, polymorphism and concurrency. Our study of both traditional topics and contemporary features is driven by first exploring their realization in Java,then comparing and contrasting with the realizations found in other modern languages such as C++, Ada 95, CLOS, ML and Modula3. In addition, we consider some emerging concepts and directions for programming languages such as orthogonal persistence, reflection, interoperability and open implementation. While the predominant paradigm for contemporary programming languages  the imperative, objectoriented paradigm  is our primary focus, other paradigms such as the functional and logic programming paradigms are also discussed. Homework problems, programming exercises and projects reinforce the material covered in lectures and readings. Prerequisites: Graduate standing or permission of instructor. 3 credits. CMPSCI 635: Modern Computer ArchitectureProfessor: WeemsThis course will examine modern high performance computer architectures, including superscalar, superpipeline, vector, data parallel, control parallel, and heterogeneous systems. The design considerations leading to each of the architectural approaches will be examined together with the implications for software support of the architectures (both language and OS issues). Prerequisites: CMPSCI 402 and CMPSCI 535. [This course will be renumbered as CMPSCI 635 in the new curriculum.] 3 credits. CMPSCI 645: Database Design and ImplementationProfessor: MossWe will survey the construction and application of object oriented database systems. Topics covered will include: object models and query languages; concurrency control, recovery, buffering, and caching; query formulation, execution, and optimization;physical layout, access methods, and indexing techniques; application areas; and some specific systems. The format will be a combination of lectures by the instructor and student presentations. Requirements will consist of one or more presentations, a project, and a project report. Projects will be conducted in small groups, using or extending an object store prototype, and will be chosen by students from a list developed by the instructor. C/Unix programming required. Prerequisites: no specific course requirements; a previous course on databases or general familiarity with relational databases. 3 credits. CMPSCI 646: Information RetrievalProfessor: Allan, CallanThe course will cover basic and advanced techniques for textbased information systems. Topics covered include retrieval models, indexing and text representation, browsing and query formulation, routing, distributed information retrieval, and integration with database systems. The course will include implementation of major elements of an information retrieval system. Prerequisite: CMPSCI 545 or equivalent. 3 credits. CMPSCI 650X: Empirical Methods in Computer ScienceProfessor:CMPSCI 653: Computer Networks and Distributed ProcessingProfessor: KuroseThis course provides an introduction to fundamental concepts in the design and implementation of computer communication networks, their protocols, and applications. Topics to be covered include: layered network architectures, applications, network programming interfaces (e.g., sockets), transport, congestion, routing, and data link protocols, local area networks, emerging highspeed networks, network management, and network security. Examples will be drawn primarily from the Internet (e.g., TCP, UDP, and IP) protocol suite. There will be five written assignments, three programming assignments (in C), one midterm and a final exam. This course will be lectured to both graduate and undergraduate students. Students enrolled for graduatelevel credit will be required to complete additional homework problems and additional readings from the literature. Prerequisites: A rudimentary understanding of computer architecture and operating systems, while not required, would be helpful. Text: Computer Networks, A. Tanenbaum, Prentice Hall, 3rd ed., 1996. Copies of the instructors class notes will be available at Collective Copies (downtown Amherst) and are highly recommended. 3 credits. CMPSCI 653X: Computer Networks and Distributed ProcessingProfessor:CMPSCI 677: Operating SystemsProfessor: RamamrithamThis course provides an indepth examination of principles of distributed operating systems. Covered topics include processes and threads, concurrent programming, distributed interprocess communication, distributed process scheduling, shared virtual memory, distributed file systems. An introduction to performance evaluation and networking will also be included. Indepth examples will be taken from current operating systems such as UNIX and MACH. Some coverage of operating system principles for multiprocessors will also be covered. Prerequisites: The student should be able to easily program in a highlevel language such as C, have had a course on data structures, be familiar with linkers, loaders, and compilers, elements of computer architecture and have had previous exposure to the operating system concepts of processes, virtual memory, and scheduling. An understanding of elementary probability theory is also assumed. A previous course on uniprocessor operating systems (e.g., CMPSCI 377) willbe helpful but not required. 3 credits. CMPSCI 677X: Operating SystemsProfessor:CMPSCI 691K: Seminar  Interactive Multimedia ProductionProfessor: WoolfThis course explores the potential of high quality interactive authoring tools to develop presentation and training systems. Programming languages within professional presentation and editing packages will be used to create systems capable of presenting graphics, animation, text, sound and music, based on the users requests. Students will learn how to define and manipulate classical techniques such as storyboarding, staging, and interactivity. The laboratory has had a large collection of computer animation, graphic, and multimedia tools, and is developing new authoring tools. During the first month and a half, the course will concentrate on stateoftheart multimedia composition and presentation techniques and developing small individual projects. The second half of the semester will emphasize working as a group to create a single, high quality multimedia production. Prerequisite: CMPSCI 591_ Seminar  3D Computer Animation and Digital Editing. Permission of the instructor required; contact: Beverly Woolf 5454265. 3 credits. CMPSCI 691T: Seminar  Descriptive Complexity and Finite Model TheoryProfessor: Immerman, BarringtonDescriptive complexity is an approach, based on mathematical logic, to classifying the relative difficulty of computational problems (particularly queries to a database). While traditional complexity theory concentrates on the resources needed to COMPUTE the answer to a query, descriptive complexity focuses on the resources needed to DESCRIBE the query in some logical formalism  how many variables, how many quantifiers, which forms of induction, and so forth. Surprisingly, computational complexityclasses like P and NP have natural characterizations in descriptive complexity, as do all other wellstudied complexity classes. In this course we will: (1)Describe the logical formalism used for queries and its various resource measures; (2) Prove characterizations of several important computational complexity classes in terms of descriptive complexity; (3) Use pebble games to prove upper and lower bounds on the descriptive complexity of some important queries; and, (4) Examine extensions to the model, such as DYNAMIC COMPLEXITY, which measures the descriptive complexity of processing updates and queries to a database. We will use Neil Immerman's forthcoming book, DESCRIPTIVE COMPLEXITY, to appear in SpringerVerlag's series of graduate texts in computer science. Prerequisite: CMPSCI 601 or equivalent. 3 credits. CMPSCI 691W: Seminar  Developing Digital MultimediaProfessor: WoolfThis course is designed for advanced students who have already worked within teams to develop production level multimedia. Within this course we will focus on two primary activities: 1) Refinement and completion of the Water Resources product. During Fall 1996, we burned a CDRom containing multimedia, interactive text, 2and 3dimensional animation, audio and video prototype to inform the public about the problem of assuring an uncontaminated water supply in Massachusetts. During the Spring this material will be expanded and completed and the final product will be delivered both as a CDROM and on the Internet. 2) Design and development of new multimedia titles; possibly in the area of education, mathematical and logic activities. These titleswill be designed and developed during the semester. Prerequisites include classes or experience in 3D animation, or video, or interactive multimedia development. You need not preregister for the course; however, permission of the instructor required.If you are interested in joining this course, please inform Gwyn Mitchell (mitchell@cs.umass.edu). 3 credits. CMPSCI 691Z: Performance EvaluationProfessor:CMPSCI 711X: Parallel Algorithms and ArchitecturesProfessor:CMPSCI 791G: Seminar  Practicum in Design Method Comparison and EvaluationProfessor: OsterweilDesign seems to be perhaps the most critical activity in product development, covering the large middle ground between requirements specification and implementation. Accordingly it should come as no surprise that there has been intense interest in codifying and systematizing the process of designing. This has been particularly true in software development, where the process of designing software has been singled out for particularly intense interest and treatment. Over the decades a large number of approaches to software design have been advocated, with Object Oriented Design (OOD) being the current favorite approach. Currently there are dozens of software design methods (SDM'S), many of which are reasonably categorized as Object Oriented. Software designers must choose from among these methods in creating their designs, but making these choices has become quite difficult. It is clear that each SDM has some merit, but each has significant limitations, and the quality of the methods is clearly quite varied. Further, many SDM's are clearly quite similar, but some are quite different from the others. It is important to understand what the differences are, and to evaluate their significance. In this course the class will gain detailed understandings of a selected set of SDM's by studying them, and, where possible, using automated tools that support them. Each student will select an SDM to study, use, report on, and make accessible to the others in the course. A detailed evaluation of each SDM will be prepared by the student responsible for it. In addition, the class will collaborate in developing a classification and comparison of the SDM's studied. In the past there have been many attempts to classify and compare the spectrum of softwaredesign methods. These efforts have been almost universally informal and anecdotal. In this course the instructor will present an approach to rigorous, repeatable, systematic SDM comparison that has been developed over the past few years. The class will use that approach for its classification and comparison of SDM's. It is expected that this effort will yield a more complete, precise, and repeatable set of classifications and comparisons that will be a useful guide to practicing software designers. This effort should also lead to validation and improvement of the SDM comparison approach. While the focus of this course is Software design, it is hypothesized that the methods to be used are also quite applicable to the design of artifacts other than software. The instructor is particularly eager to have students interested in the design of nonsoftware products also take this course. COURSE WORK LOAD: Each student will be obliged to select one design method to study, use, report on, and make generally available. Part of the student's study of the design method will be to model the method using a rigorous process modeling formalism, and to compare the method to other design methods using the comparison process to be presented by the instructor. 3 credits. CMPSCI 791Q: Seminar  Topics in Information RetrievalProfessor: AllanThis seminar covers current and recent research in Information Retrieval as well as significant results from the past. We will discuss how this research relates (or does not relate) to the work done locally. Specific topics may include probabilistic IR, visualization, passage handling, routing (feedback), query expansion, summarization, integration with databases, natural language processing, and so forth. Participants will be expected to read 13 papers per week (rarely more than 2). A short (halfpage) synopsis of each paper will be due before the class in which a paper is discussed. One or more attendees will be responsible for presenting a 1015 minute summary of each paper. When possible, researchers will be asked to relate their work to the papers. Discussion of the papers will follow. A prerequisite for this seminar is CMPSCI 691I (646), the Information Retrieval course, or its equivalent. Contact James Allan (allan@cs.umass.edu) if you are uncertain whether you have the necessary background. 3 credits. CMPSCI 791T: Seminar  ResourceBounded Reasoning TechniquesProfessor: ZilbersteinIn many computer systems, it is not feasible (computationally) or desirable (economically) to compute the "optimal" answer. This seminar examines a variety of techniques that allow small quantities of computational commodities  such as time, memory, or information  to be traded for gains in the value of computed results. It covers both theory and applications in such areas as automated diagnosis and treatment, combinatorial optimization, probabilistic inference, and information gathering. Topics include: models of agent representation, decision theory and rational choice, the value of information, principles of metareasoning, memorybounded search, utilitydirected search, deliberation scheduling, dynamic planning and execution, and evaluation of resourcebounded reasoning techniques. Prerequisites: Introduction to AI and probability theory or permission of instructor. 3 credits. CMPSCI 791U: Seminar  Compiler Dependence and Pointer AnalysisProfessor: MckinleyThis first half of this seminar will focus on dependence analysis and program analysis, and the second half on transformations; all for use in compiler program parallelization. The course will be structured around presentations of 14 papers taken from recent, relevant literature. Each class member will present one or more papers during the course of the semester. Presentations will consist of 30 to 40 minutes of technical slide presentations, and 20 minutes of structured discussion. All participants will make written evaluations of each presentation. Grades will be based on the quality of presentations, and class participation. 1 credit. CMPSCI 891S: Theory of ComputationProfessor: RosenbergLectures on various topics in the theory of computation by CMPSCI theory faculty, possible guest speakers, and seminar students. May be repeated for credit. Prerequisite: Graduate standing in CMPSCI or permission of the instructor. 1 credit. CMPSCI H01: Honors Colloquium for CMPSCI 287Professor: PopplestoneWe will examine how the programming paradigms discussed in 287 are exhibited in more modern Functional Languages (SML, Haskell), Logic Languages (Prolog), Object Oriented Languages (C++ & the objectclass extension of Pop11). Recommended for Juniors, Seniors. 1 credit. CMPSCI H02: Honors Colloquium for CMPSCI 201Professor: GrahamWe select one or two of the course topics and explore them in much more depth than possible in the course. For example, in past semesters we have: explored the low level complexities of the keyboard to understand how TSR (terminateandstay resident) programs work; and explored the lowlevel complexities of the graphics card to understand how to display graphs of mathematical functions. Readings are assigned and discussed in onceaweek meetings. Students may elect to do a project that applies the principles studied in class. Grades are based on written reports, participation in discussions, and the application of principles in their project, if that option is elected. 1 credit. CMPSCI H03: Honors Colloquium for CMPSCI 391S/T (311)Professor: SitaramanWe will be going over more advanced material in the theory and implementation of algorithms. A sampler of possible topics is given below. This only gives a vague idea of what we might actually end up doing; since that will depend on the mutual interests of the students and myself. An incomplete list of possible topics is: *Advanced data structures, e.g., skip lists. *Implementation issues in data structures. *Use of randomness in algorithm design. *Research experience in some subarea. *Geometric Algorithms and applications (like imagerendering graphics). *Parallel algorithms and parallel programming. 1 credit. CMPSCI H04: Honors Colloquium for CMPSCI 591H (530)Professor: WiledenThe Honors section will meet with the instructor one hour per week to conduct additional readings in the area of programming languages. Programming projects are also possible if student interest allows. 1 credit. CMPSCI H05: Honors Colloquium for CMPSCI 591G (521)Professor: AdrionThis course explores testing and analysis techniques for software systems, particularly large, complex systems used in lifecritical applciations such as medical devices and air traffic control. Honors students will work with the instructor on special projects, depending on their individual interests and opportunities that arise. For example, students might help implement or enhance a specific technique, conduct an experimental study using a small number of techniques, or design a quality assurance plan for a company or project. Recommended for Juniors and Seniors; Majors. 1 credit. CMPSCI H06: Honors Colloquium for CMPSCI 383Professor: ZilbersteinThe Honors section will involve advanced study and implementation of one of the AI techniques covered in 383. The particular application will be determined based on student interest. Possible projects include game playing, automated information gathering over the internet, software agents, hierarchical planning systems, satisficing reasoning techniques. Recommended for Juniors and Seniors; Majors and Nonmajors. 1 credit. CMPSCI H07: Honors Colloquium for CMPSCI 401Professor: BarringtonStudents will study additional topics in computability and complexity, through discussions (1 hour/week with professor), readings, and exercises. Specific topics will depend on student interest but may include algebraic automata theory, alternate models of computability, and interactive proofs. 1 credit. CMPSCI H08: Honors Colloquium for CMPSCI 491G (453)Professor: KuroseStudents enrolled in the honors section of CMPSCI491G will meet for an additional hour per week with the instructor to discuss advanced topics in Computer Networks. Additional readings from the literature and a short paper will be required. 1 credit. CMPSCI H09: Honors Colloquium for CMPSCI 320Professor: ClarkeIn this course, students learn and gain practical experience with software engineering principles and techniques. The practical experience centers on a semesterlong team project in which a software development project is carried through all the stagesof the software life cycle. Honors students will be expected to assume responsibility for some of the more complex aspects of the project as well as to assume a leadership role for their team. 1 credit. 


official page University of Massachusetts Amherst.  