Special Topics Classes, Fall 2006

Besides the standard courses listed in CMU's catalog, a variety of "special topics" courses are given every semester. Some of these course are taught by visiting faculty, others are on their way to becoming standard CMU courses (and are still "experimental"; maybe the instructor is writing a book for the course), sometimes just something opportunistic comes up an we go with it. Here is the most recently list of special topics courses (maybe you'll even want to take one in the fall).


Course: 15-221 - TECHNICAL COMMUNICATION FOR COMPUTER SCIENTISTS
(9 units)
Instructor: Tom Keating
PREREQUISITES: 76-101

The course is designed for sophomore computer science majors to improve their abilities in practical, professional communications (both written and oral). It aims to help students compose clear, concise technical writings and oral presentations for multi-level audiences. Assignments include technical definitions, descriptions, instructions, process explanations, abstracts, memos, and research reports. Assignments may incorporate recent computer science research at Carnegie Mellon, projects in related technical courses, and professional case studies.

Taking this course will be a requirement for graduation, starting for students admitted this fall (2006).


Course: 15-290 - COMPUTERS AND SOCIETY
(9 units)
Instructor: Jim Herbsleb
PREREQUISITES: NONE

In this course, students will discuss the social impacts of computing technology. The course will provide a brief introduction to ethics and to the history of computing and the Internet. It will focus on a number of areas in which computers and information technology are having an impact on society including privacy, freedom of speech, intellectual property, work, distribution of wealth, and the environment. Current issues that will be discussed include electronic voting, spyware, spam, and intellectual property issues associated with digital content distribution. This course is intended for freshmen and sophomore students from across the university.


Course: 15-295 - COMPETITION PROGRAMMING AND PROBLEM-SOLVING
(6, 9 units)
Instructor: Greg Kesden and Eugene Fink
PREREQUISITES: 15-211

The focus of the course is the development and implementation of advanced algorithms, as well as the skills required for programming competitions. The course will include a review of various algorithms and data structures, including indexing structures, trees, graphs, strings, numeric methods, computational geometry, and heuristic search. The students will learn to select appropriate algorithms for a given problem, integrate multiple algorithms for solving a complex problem, design new algorithms, and implement them in C++ or Java. They will also learn skills required for participation in programming contests, which include evaluation of problem difficulty, solving problems in teams, and work under time pressure. We expect that the best students from this course will represent Carnegie Mellon at the regional ACM Programming Competition, and possibly at the international ACM Competition. The course involves in-class programming practices, programming homeworks, and algorithm-theory readings. The evaluation is based on the class attendance and homework performance. Students may take this course for either 6 or 9 units. The 6-unit course runs thorugh early November, whereas the 9-unit version is the full-semester course.


Course: 15-382 - MACHINE LEARNING IN PRACTICE
(12 units)
Instructor: Carolyn Rose
PREREQUISITES: 15-111

Machine Learning is concerned with computer programs that enable the behavior of a computer to be learned from examples or experience rather than dictated through rules written by hand. It has practical value in many application areas of computer science such as on-line communities and digital libraries. This class is meant to teach the practical side of machine learning for applications, such as mining newsgroup data or building adaptive user interfaces. The emphasis will be on learning the process of applying machine learning effectively to a variety of problems rather than emphasizing an understanding of the theory behind what makes machine learning work. This course does not assume any prior exposure to machine learning theory or practice. In the first 2/3 of the course, we will cover a wide range of learning algorithms that can be applied to a variety of problems. In particular, we will cover topics such as decision trees, rule based classification, support vector machines, Bayesian networks, and clustering. In the final third of the class, we will go into more depth on one application area, namely the application of machine learning to problems involving text processing, such as information retrieval or text categorization. Grades will be based on weekly assignments, 2 midterms, a final exam, and a course project. Weekly assignments will include readings and experiments with minimal programming using the Weka toolkit. The term project will involve applying machine learning to a substantial problem of the student?s choice.


Course: 15-390 - ENTREPRENEURSHIP FOR COMPUTER SCIENCE
(9 units)
Instructor: Art Boni
PREREQUISITES: NONE

This course is an introduction to Entrepreneurship designed to develop skills related to entrepreneurship and innovation for non-business undergraduate and graduate students in the School of Computer Science. The course assumes no background courses in business and is appropriate for those who are interested in bringing innovations to market either through new companies or existing companies. The course provides an overview of entrepreneurship and innovation, develops an entrepreneurial frame of mind, and provides a framework for learning the rudiments of how to generate ideas. Students come up with or are presented with potential ideas and learn how to develop these ideas into opportunities, and to explore their potential for becoming viable businesses. They learn how to do market research, to develop go-to-market strategies, value propositions and to differentiate their products or services from potential competitors. The focus is on understanding and developing strategies for approaching the key elements of the entrepreneurial process ? opportunity, resources and team. The course consists of a balance of lectures, case studies and encounters with entrepreneurs, investors and business professionals. The students are exposed to financial and intellectual property issues, and encounter a real world perspective on entrepreneurship, innovation and leadership. The output of the course is a ?mini-business plan? or venture opportunity screening document that can be developed into a business plan in a subsequent course entitled New Venture Creation or through independent study.


Course: 15-393 - MUSIC SYSTEMS AND INFORMATION PROCESSING
(9 units)
Instructor: Roger Dannenberg
PREREQUISITES: 15-211

This course presents concepts and techniques for representing and manipulating discrete music information, both in real time and off line. Representations of music as explicitly timed event sequences will be introduced, and students will learn how to build efficient run-time systems for event scheduling, tempo control, and interactive processing. The MIDI protocol is used to capture real-time performance information and to generate sound. The course will also cover non-real-time processing of music data, including Markov models, style recognition, computer accompaniment, query-by-humming, and algorithmic composition. This course is independent of, and complementary to 15-392, Introduction to Computer Music, which focuses on sound synthesis and signal processing.


Course: 15-414 - BUG CATCHING: AUTOMATED PROGRAM VERIFICATION AND TESTING
(9 units)
Instructor: Ed Clarke
PREREQUISITES: 15-212 OR
15-213

Many CS and ECE students will be developing software and hardware that must be ultra reliable at some point in their careers. Logical errors in such designs can be costly, even life threatening. There have already been a number of well publicized errors like the Intel Pentium floating point error and the Arian 5 crash. In this course we will study tools for finding and preventing logical errors. Three types of tools will be studied: automated theorem proving, state exploration techniques like model checking and tools based on static program analysis. Although students will learn the theoretical basis for such tools, the emphasis will be on actually using them on real examples.


Course: 15-421 - WEB COMMERCE, SECURITY AND PRIVACY
(12 units)
Instructor: Norman Sadeh
PREREQUISITES: 15-212

Overview: Over the past ten years, the Web has become an integral part of our daily life, whether at home or at work. This course provides students with an overview of the technologies and practices associated with Internet Commerce, including issues of security and privacy. Part I - We will start by trying to understand what eCommerce is, looking at both business-to-consumer and business-to-business usage scenarios. We will examine the different stages of electronic commerce, from the identification of buyers and sellers, to the selection of goods, negotiation, sale, payment, delivery and post-sale activities and examine how new Internet technologies and practices can help add value at each step. In the process, we will look at a variety of technologies such as Web search technologies, personalization, collaborative filtering, data mining, auctions, P2P technologies, Web Services, agent technologies and the Semantic Web. Part II - This section of the course covers Web security issues, including overviews of symmetric and asymmetric key cryptography and PKI. This part of the course also includes an overview of electronic payment solutions and a discussion of Web privacy (e.g. P3P) Part III - This third part of the course is a series of 4 or 5 lectures that look at Mobile Commerce, revisiting many of the issues covered earlier in the course and looking at what happens when one tries to support Web Commerce on mobile devices such as cell phones or PDAs.


Course: 15-482 - HUMAN LANGUAGE TECHNOLOGIES
(12 units)
Instructor: Jamie Callan, Allan Black, Alon Lavie
PREREQUISITES: 15-212

During the last decade computers have begun to understand human languages. Web search engines, language analysis programs, machine translation systems, speech recognition, and speech synthesis are used every day by tens of millions of people in a wide range of situations and applications. This course covers the fundamental statistical and symbolic algorithms that enable computers to work with human language, from text processing to understanding speech and language. It provides detailed coverage of current techniques, their successes, their limitations, and current research directions. Homework assignments give hands-on experience with four different language technologies, using Internet Movie Database (IMDB) data. Students write programs that answer questions about movies using information obtained from a search engine or a structured database, automatically select good translations of French movie titles, and read movie information in computer-generated voices that sound as natural as possible.


Course: 15-486 - ARTIFICIAL NEURAL NETWORKS
(12 units)
Instructor: Dave Touretzky
PREREQUISITES: 15212 and (2124
1 or 18202)

Artificial neural networks combine ideas from machine learning, statistics, and pattern recognition. They draw inspiration from, and provide simplified formalizations of, theories about the workings of the brain. This course offers an introduction to neural networks for computer scientists and engineers. Prerequisites are undergraduate calculus and linear algebra, and solid programming skills. An undergraduate course in artificial intelligence or machine learning would provide helpful background but is not required. The course provides hands-on experience with a variety of neural network architectures implemented in MATLAB, and an in-depth look at problems in pattern recognition and knowledge representation. Topics covered include perceptrons, the LMS learning rule, fundamentals of pattern recognition, backpropagation learning, forward and inverse models in control theory, competitive learning, self-organizing feature maps, radial basis functions, the EM algorithm, Hopfield networks, Boltzmann machines, Helmholtz machines, and general recurrent networks.


Course: 15-491 - CREATING AN INTELLIGENT AIBO ROBOT
(9 units)
Instructor: Paul Rybski
PREREQUISITES: 15-211

This course will introduce students to all the bits of creating a complete intelligent robot. Robots need to be equipped with perception, cognition, and action capabilities. We will use the concrete Sony AIBO robots to understand in depth the issues involved in developing such capabilities in a robot. The course will have one 1.5h weekly lecture and a 1.5h weekly recitation/lab session, followed necessarily by hands-on work of the students. The course work will be intense and structured around tasks to be fully implemented in the AIBO robots. Evaluation will be based on the level of accomplishment of such tasks. We expect to be able to ask work on tasks that involve more than one robot, therefore studying issues underlying multirobot systems. All course materials, including student solutions to the tasks, will be made available on the Web. We will aim at having this course be exemplary for other universities that may use the AIBO robots.


Course: 15-495 - COMPUTATIONAL MOLECULAR BIOLOGY AND GENOMICS
(9 units)
Instructor: Danny Durrand
PREREQUISITES: (15-211 and 03
-510) OR 15-451 OR by permission of instructor

An advanced introduction to computational molecular biology, using an applied algorithms approach. The first part of the course will cover established algorithmic methods, including pairwise sequence alignment and dynamic programming, multiple sequence alignment, fast database search heuristics, hidden Markov models for molecular motifs and phylogeny reconstruction. The second part of the course will explore emerging computational problems driven by the newest genomic research. Course work includes four to six problem sets, one midterm and final exam. A project based on recent results from the genomics literature will be required of students taking 03-711/15-856. The primary text will be ?Biological Sequence Analysis; Probabilistic Models of Proteins and Nucleic Acids?, R. Durbin et al. This will be supplemented by class notes and articles from the primary literature.


Course: 15-501 - HOT COMPILATION
(PREREQUISITES: 15-312 OR 15-317)
Instructor: 9 units
Karl Crary

The course covers the implementation of compilers for higher-order, typed languages such as ML and Haskell, and gives an introduction to type-preserving compilation. Topics covered include type inference, elaboration, CPS conversion, closure conversion, garbage collection, phase splitting, and typed assembly language.


Course: 15-502 - TECHNOLOGY AND GLOBAL DEVELOPMENT
(12 units)
Instructor: Joe Mertz, Jay Aronson
PREREQUISITES: NONE

This course studies meaningful ways to use advanced technologies to support the development of communities where the world?s poorest people live. We will begin by reviewing the history and politics of development over the last century. During this phase, we will examine some of the assumptions inherent in the concept of development, and evaluate the extent to which development has been successful in achieving its mission up to the present day. We will then explore the economic and social contexts in which development work takes place and current applications of advanced technology for sustainable development. We will also explore a variety of advanced technologies and their potential for new applications in the context of global development. Throughout the semester, students are expected to: actively engage in debates and discussions based on assigned readings; evaluate existing development projects; participate in the decision-making process for a simulated field study; and complete a small-group project. While there will be no exams, there will be quizzes and short writing assignments. Because of the nature of the subject, this course will be broad and interdisciplinary; it will cover the basics of technology, economics, history, anthropology and policy. This course does not require programming, but does require an interest in understanding and evaluating information and communication technologies.