spring 10 course descriptions

Spring 2010

CMPSCI 105: Computer Literacy (R2)

Professor: Verts

Microcomputers are now used widely 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 problem-solving 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, software, and mathematical aspects of computers. Then four application areas are discussed: word processing, spreadsheets, databases and telecommunications (access to the Internet). Weekly lab assignments are an integral part of the course. There are optional lab times set up for students who do not have the proper equipment available to them. 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. Pre-registration is not available to majors and pre-majors. 3 credits.

CMPSCI 120: Introduction to Problem Solving with the Internet

Professor: Verts

The Internet is a goldmine of information and software resources for those who know how to plug in and navigate it. Originally designed by computer scientists for computer scientists, the net is now a driving force behind life in the information age and a new global economy. This course will provide non-CMPSCI majors with timely skills needed to tap the net. We will cover Web browser features, e-mail management, Web page design, software downloads, strategies for finding information and virtual communities, and public key cryptography. In addition, we will survey key social and political topics that are relevant to the Internet, such as copyright laws, First Amendment issues, privacy in a digital world, and the culture of the Internet. Prerequisites: some hands-on experience with PCs or MACs or UNIX (programming experience is NOT required). CMPSCI majors and pre-majors may not pre-register. 3 credits.

CMPSCI 121: Introduction to Problem Solving with Computers (R2)

Professor: Moll

CMPSCI 121 provides an introduction to problem solving and computer programming using the programming language Java; it also provides an integrated introduction to some of the wonderful innovations to modern science and indeed modern life that can be attributed to computer science. The course teaches how real-world problems can be solved computationally using the object-oriented metaphor that underlies Java. Concepts and techniques covered include data types, expressions, objects, methods, top-down program design, program testing and debugging, state representation, interactive programs, data abstraction, conditionals, iteration, interfaces, inheritance, arrays, graphics, and GUIs. No previous programming experience required. A companion introduction to programming class, CMPSCI 119(191P) is also offered. If you are fairly sure you only want to do just one programming class, take that course; if you think it likely that you will do more than one programming course, take 121. Use of computer is required. Prerequisite: R1. 4 credits.

CMPSCI 121(C.E.): Introduction to Problem Solving with Computers

Professor: Moll

CMPSCI 187: Programming with Data Structures (R2)

Professor: Wang

The course introduces and develops methods for designing and implementing abstract data types, using the Java programming language. The main focus is on how to build and encapsulate data objects and their associated operations. Specific topics include linked structures, recursive structures and algorithms, binary trees, balanced trees, and hash tables. There will be weekly assignments, consisting of programming and written exercises, a midterm, and a final exam. Prerequisites: CMPSCI 123(191B) (or equivalent-not necessarily in Java) or CMPSCI 121 and Basic Math Skills (R1). Basic Java language concepts are introduced quickly. Prior experience with an object-oriented language is very helpful; if unsure of background, contact instructor. 4 credits.

CMPSCI 191P: Introduction to Programming

Professor: Lehnert

The Internet has transformed computers from machines that calculate to machines that communicate. This introduction to computer programming with Python emphasizes multimedia (graphics and sound) applications that are relevant for Web designers, graphic artists, and anyone who just wants to have more fun with their computer. Students will explore basic concepts in computer science and computer programming by manipulating digital images and sound files. No prior programming experience is needed. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 197C: Special Topics - Programming in C++

Professor: Cartright

A brief introduction to the C++ programming language for students with a good working knowledge of Java. Students are expected to have Edlab accounts. Prerequisites: CMPSCI 121 and 187 or permission of instructor. Runs for 8 weeks. 1 credit.

CMPSCI 197U: Special Topics - A Hands-on Introduction to UNIX

Professor: Wood

This course offers a 4-week introduction to working with Unix, and it is intended to help students work with tools commonly used in CS courses. The class is comprised of both discussion and hands-on exercises in the EdLab. Topics covered include working with the command line, installing and maintaining the OS and software packages, version control systems, compiling programs, and more. No previous experience with Unix is required. This course is for majors only, but it does not count towards the BS-CMPSCI. 1 credit.

CMPSCI 201: Architecture and Assembly Language

Professor: Fu

Lecture, discussion, lab. The architecture and machine-level operations of modern computers at the logic, component, and system levels. Topics include integer, scaled, and floating point binary arithmetic; Boolean algebra and logic gates; control, arithmetic-logic, and pipeline units; addressing modes; cache, primary, and virtual memory; system buses; input-output and interrupts. Simple assembly language for a modern embedded processor is used to explore how common computational tasks are accomplished by a computer. Two lectures and one discussion per week. Laboratory exercises, homework exercises, in-class quizzes, two midterm exams, and a final exam. Prerequisite: CMPSCI 187 or ECE 242 or equivalent. 4 credits.

CMPSCI 220: Programming Methodology

Professor: Moss

Development of individual skills necessary for designing, implementing, testing and modifying larger programs, including: advanced uses of integrated design environments, design strategies and patterns, testing, working with large code bases and libraries, code refactoring, use of debuggers and tools for version control, and system build tools. There will be a significant programming project, done by pairs in phases, and a mid-term and final examination. Prerequisite: CMPSCI 187 or ECE 242. 4 credits.

CMPSCI 240: Reasoning About Uncertainty

Professor: McGregor

Development of mathematical reasoning skills for problems that involve uncertainty. Each concept will be illustrated by everyday, real-world examples and demonstrated through discussion and homework exercises, some of which will include programming. Graph definitions, counting, and basic probability (lottery games, poker hands). Mean, variance, normal and binomial distributions, statistical inference (analysis of baseball statistics). Brute-force exact calculation of probability, estimation of probability by Monte Carlo simulation (Texas Hold'em). Independence, conditional probability, Bayes' rule (medical and legal decision-making). Vectors and vector arithmetic, pattern classification (Spam filters). Matrices and matrix arithmetic, Path/Matrix Theorem, Markov processes, Markov decision processses (Backgammon and other games). CMPSCI 240 will become a required core course under the proposed new CMPSCI major requirements. Students following the existing requirements may use CMPSCI 240 to fill the "math elective" requirement. This may allow another math course to be used as a CMPSCI elective. Prerequisite: (CMPSCI 187 or ECE 242) and MATH 132. 4 credits.

CMPSCI 250: Introduction to Computation

Professor: Rissland

Lecture, discussion. Basic concepts of discrete mathematics useful to computer science: 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. Graphs, trees, and search. Finite-state machines, regular languages, nondeterministic finite automata, Kleene's Theorem. Problem sets, 2-3 midterm exams, timed final. Corequisite: MATH 132/136 or equivalent. Prerequisite: MATH 131 and (CMPSCI 187 or ECE 242). 4 credits.

CMPSCI 287: Programming Language Paradigms

Professor: Lehnert

Lecture, discussion, programming projects, lab. Programming language paradigms provide a basic philosophy to support the construction of reliable large-scale systems. This course discusses four such paradigms. In the functional paradigm, software is constructed in such a way as to minimize the use of side-effects, 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 (e.g. 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 state-dependent can be constructed. Finally, in the object-oriented paradigm we are concerned with combining data with code to create "objects" that exhibit behavior. Prerequisite: CMPSCI 187 or ECE 242. Corequisites: CMPSCI 250 and MATH 132. 4 credits.

CMPSCI 291SP: Seminar - Computer Systems Principles

Professor: Berger

Large-scale software systems like Google - deployed over a world-wide network of hundreds of thousands of computers - have become a part of our lives. These are systems success stories - they are reliable, available ("up" nearly all the time), handle an unbelievable amount of load from users around the world, yet provide virtually instantaneous results. On the other hand, many computer systems don't perform nearly as well as Google - hence the now-cliché "the system is down." In this class, we study the scientific principles behind the construction of high-performance, scalable systems. The course begins with a discussion of the relevant features of modern architectures, and moves up the stack from there to operating system services such as programming language runtime systems, concurrency and synchronization, with a focus on key operating system features, I/O and networking, and distributed services. This course can be used to fulfill the requirement of CMPSCI 201 for students in BS-CMPSCI. This course can be used as a "core" course for students in the CMPSCI minor. Prerequisites: CMPSCI 187 or ECE 242. 3 credits.

CMPSCI 305: Social Issues in Computing

Professor: Constantine

Designed to satisfy the Junior Year writing requirement, CMPSCI 305 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 business with explorative essays that focus attention upon the technological and humanistic concerns inherent in society. Ten written assignments-two longer papers, eight shorter ones and one oral presentation. Prerequisite: ENGLWP 112 or CW. 3 credits.

CMPSCI 311: Introduction to Algorithms

Professor: Sitaraman

This course will introduce you to algorithms in a variety of areas of interest, such as sorting, searching, string-processing, and graph algorithms. You will learn to study the performance of various algorithms within a formal, mathematical framework. You will also learn how to design very efficient algorithms for many kinds of problems. There will be one or more programming assignments as well to help you relate the empirical performance of an algorithm to theoretical predictions. Mathematical experience (as provided by CMPSCI 250) is required. You should also be able to program in Java, C, or some other closely related language. Prerequisite: CMPSCI 250 or MATH 455. 4 credits.

CMPSCI 320: Introduction to Software Engineering

Professor: Smaragdakis

In this course, students learn and gain practical experience with software engineering principles and techniques. The practical experience centers on a semester-long team project in which a software development project is carried through all the stages of the software life cycle. Topics in this course include requirements analysis, specification, design, abstraction, programming style, testing, maintenance, communication, teamwork, and software project management. Particular emphasis is placed on communication and negotiation skills and on designing and developing maintainable software. Use of computer required. Several written assignments, in-class presentations, major term project. Prerequisite: CMPSCI 287. 4 credits.

CMPSCI 365: Digital Forensics

Professor: Levine

The goal of forensics is to gather artifacts for refinement into evidence that supports or refutes a hypothesis about an alleged crime or policy violation. Done correctly, forensics represents the application of science to law. This course is a broad introduction to forensic investigation of digital information and devices. We will cover the acquisition, analysis, and courtroom presentation of information from file systems, operating systems, networks, database systems, common applications, media files, and cell phones. Students do not need experience with these systems; in fact, the course is designed to be an introduction to the systems before other electives explore them in more detail. We will review the use of some professional tools that automate data harvesting, however, the primary goal of the class is to understand why and from where evidence is recoverable in these systems. Several assignments involve coding forensic tools from scratch. A separate lab discussion ensures that students gain hands-on instruction and experience with these systems each week. For a portion of the class, we will cover some relevant issues from the law, privacy, and current events. Thus, the class serves the well-rounded student who is eager to participate in class discussion on a variety of technical and social issues. 4 credits.

CMPSCI 377: Operating Systems

Professor: Shenoy

In this course we examine the important problems in operating system design and implementation. The operating system provides a well-known, 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. Prerequisites: (CMPSCI 187 or ECE 242) and (CMPSCI 201 or ECE 232). 4 credits.

CMPSCI 383: Artificial Intelligence

Professor: Mahadevan

The Course explores key concepts of artificial intelligence, including problem solving, state-space representation, heuristic search techniques, game playing, knowledge representation, logical reasoning, automated planning, reasoning under uncertainty, decision theory and machine learning. We will examine how these concepts are applied in the context of several applications. Prerequisites: (CMPSCI 287 or CMPSCI 220) and (CMPSCI 240 or CMPSCI 311). 3 credits.

CMPSCI 391F: Seminar - Fundamentals of Graphic Communication

Professor: Woolf, Sindelar

The purpose of this course is to provide students with an understanding of computer-based design and multimedia production. The course will cover basic concepts in the areas of graphic design, animation, and designing for interactivity. These concepts will help prepare students for more advanced studies in 2D and 3D animation and in multimedia production and programming. Course work will be based around several large ongoing projects built incrementally as individual homework assignments. These projects will be presented via the World Wide Web and should demonstrate an understanding of techniques and principles learned in earlier projects. Student interaction and collaboration will be encouraged through in-class activities as well as online discussions through SPARK. This course does not count toward BS-CMPSCI. 3 credits.

CMPSCI 391IB: Seminar - Inside the Box: How Computers Really Work

Professor: Weems

How does the computer actually work? In this course we peel away the layers of abstraction and look at how switches become logic circuits, how logic circuits do math, and how programs really execute. We will wire up some simple examples of logic, move on to programming a minimalist simulation of a computer, and gradually build up to the point where we can appreciate how a C program is translated into machine code and what really happens when it executes. We will also see the impact of hidden acceleration mechanisms like caches, pipelines, and branch predictors. This course is equivalent to CmpSci 535 and is approved as an elective for BS-CMPSCI. Prerequisite: CmpSci 220 or equivalent. 3 credits.

CMPSCI 397D: Special Topics - Interactive Web Programming

Professor: Woolf

This course teaches basic animation for the Web, interactivity, color theory, design, action scripting, and transitions. Students maintain their own web sites and submit projects every 2 weeks in Flash. Individual as well as, a final project are required. Knowledge of basic Web development, e.g., HTML, Java Script. Prerequisite: CMPSCI 551 and CMPSCI 552 preferred. Permission of instructor is required. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 397E: Special Topics - Character Animation

Professor: Woolf

This class focuses exclusively on character animation techniques. Animation topics include action andpose, timing, overlap, pacing, and simulating and exaggerating physical laws. Constraints will be used to create animation and lipsync. Voice tracks will be used to simulate speech. Student will create their own final project or work in a small team. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 401: Formal Language Theory

Professor: Barrington

The course will introduce the abstract branch of Computer Science known as Computation Theory, via "big ideas" that underlie the field. The course will focus on: [1] The Theory of Finite Automata (What are the capabilities and limitations of finite-state transition systems?); [2] Computability Theory (What are the ultimate limitations of digital computing systems?); [3] Complexity Theory (Abstractly, this is Computability Theory with "within given resource bounds" [e.g., time, memory] replacing "ultimate.") The treatment of Finite Automata will culminate in the seminal Kleene-Myhill and Myhill-Nerode characterization theorems. The treatment of Computability Theory will lead through proofs of noncomputability to the sweeping Rice-Myhill-Shapiro Theorem. The treatment of Complexity Theory will develop the theory of problem reductions, leading to the Cook-Levin Theorem and NP-Completeness. PREREQUISITE: CMPSCI 250 and 311, or their equivalents. 3 credits.

CMPSCI 446: Search Engines

Professor: Croft

This course provides an overview of the important issues in information retrieval, and how those issues affect the design and implementation of search engines. The course emphasizes the technology used in Web search engines, and the information retrieval theories and concepts that underlie all search applications. Mathematical experience (as provided by CMPSCI 240/291B) is required. You should also be able to program in Java (or some other closely related language). Prerequisite: CMPSCI 240(291B) or equivalent. 3 credits.

CMPSCI 453: Computer Networks

Professor: Venkataramani

This 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 high-speed 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 written assignments, programming assignments (in C), one midterm, and a final exam. Prerequisites: CMPSCI 201, CMPSCI 311 and CMPSCI 377, all with a grade of C or better. 3 credits.

CMPSCI 466: Applied Cryptography

Professor: COURSE DELETED

Applied cryptography spans many disciplines including computer systems, computation, mathematics, and law. This experimental course aims to teach students both the theoretical foundations of cryptography and the humility of building practical cryptographic systems. Topics will include computational indistinguishability, cryptographic attacks, applications of cryptography, and advanced topics in block ciphers, hash functions, and public key cryptography. Students will be evaluated based on final group projects, class participation, problem sets with hands-on labs, and quizzes. Prerequisites: CMPSCI 311. Prior experience with number theory is recommended. 3 credits.

CMPSCI 491G: Seminar - Computer Networking Lab

Professor: Kermani

In this course, students will learn how to put "principles into practice," in a hands-on-networking lab course. The course will cover router, switches and end-system labs in the areas of Single Segment IP Networks, Multiple Segment IP Networks and Static Routing, Dynamic Routing Protocols (RIP, OSPF and BGP), LAN switching, Transport Layer Protocols: UDP and TCP, NAT, DHCP, DNS, and SNMP. Students will also get engaged in evaluating power consumption of network components as an aid in the design of energy efficient (green) networks. The labs are due at a rate of roughly one lab per week. A short pre-lab Q&A, as well as lab writeups, are required for each lab. These labs will be done in a networked lab setting consisting of 4 Cisco2600-family routers, 4 hubs, and 4 Linux hosts. The textbook is Mastering Networks: An Internet Lab Manual by Jorg Lieberherr, University of Virginia; Magda El Zarki, University of California, Irvine. ISBN: 0-201-78134-4. Publisher: Addison-Wesley. Under the old CS-BS rules, this course counts as a CmpSci Elective; under the new rules, it counts as a general elective, or as a required course in the networking track. 3 credits.

CMPSCI 520: Software Engineering: Synthesis and Development

Professor: Adrion

Introduces students to the principal activities involved in developing high-quality software systems in a variety of application domains. Topics include: requirements analysis, formal and informal specification methods, process definition, software design, testing, and risk management. The course will pay particular attention to development of web services and service-oriented applications through lectures and projects. Class assignments will be supplemented by 2-3 individual and/or team projects. Prerequisites: CMPSCI 320 with a grade of 'C' or better, or E&C-ENG 373 with a grade of 'C' or better. 3 credits.

CMPSCI 529: Software Engineering Project Management

Professor: Smaragdakis

The purpose of this course is to provide students with practical experience in the management of software development projects. Students in this course will gain this experience by serving as software development team technical managers for teams of software engineering students in CMPSCI 320. As software development team managers, the students in CMPSCI 529 will be responsible for: supervising and managing the work of teams of CMPSCI 320 students; interfacing with the other CMPSCI 529 students managing other teams in the course; interfacing with the course instructor, course TA, and course customer. CMPSCI 529 students will be assigned readings in software engineering project management to provide a theoretical basis for their work in this course. But the majority of work in the course will be related to the actual management of assigned development teams. As team managers, CMPSCI 529 students will set goals and schedules for their teams, track and report team progress, negotiate with leaders of other teams and the course customer, and evaluate the work of members of their teams. CMPSCI 529 course assignments may include: written team goals, plans and schedules; periodic reports on team progress; documentation of agreements reached with other team leaders and customers; evaluations of the applicability of theoretical papers to the work of this course. This course will meet at the same times and places as CMPSCI 320. Additional meetings with team members and other students in CMPSCI 529 are also expected to be arranged by mutual agreement. Enrollment in this course is only by permission of the instructor, and is restricted to students who have previously taken CMPSCI 320, and received a grade of A or AB. 3 credits.

CMPSCI 591O: Seminar - Character Animation

Professor: Woolf

This class focuses exclusively on character animation techniques. The goal is to attain proficiency in modeling, texturing and animation. Modeling topics include character modeling and bones, designing joints and creating chains with constraints for easy animation, facial modelling and lip sync, designing faces with economical splinage to simplify facial animation, breaking down voice tracks into phonemes and animating facial and body language to match the track. Animation topics include action and pose, timing, overlap, pacing, and simulating and exaggerating physical laws. Student will create their own final project or work in a small team. Prerequisites: CMPSCI 551--3D Animation and Digital Editing or equivalent experience and a personal computer. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 591U: Seminar - Interactive Web Programming

Professor: Woolf

This course teaches basic animation for the Web, interactivity, color theory, design, action scripting, and transitions. Students maintain their own web sites and submit projects every 2 weeks in Flash. Individual as well as a final project are required. Knowledge of basic Web development, e.g., HTML, Java Script. Prerequisite: CMPSCI 551 and CMPSCI 552 preferred. Permission of instructor is required. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 591V: Seminar - Multimedia Production Management

Professor: Woolf

This course involves developing a large group 3D animation, beginning with a storyboard, developing models, lighting, background, sound and music. It involves team management, group dynamics, and production techniques. The final project will be demonstrated on the last day of class, to over 100 people. Prerequisite: CMPSCI 551. Permission of instructor is required. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 596C: Independent Study - TA for CMPSCI 591O Seminar-Character Animation

Professor: Woolf

TAs are responsible for providing assistance to the instructor and students of CMPSCI 591O Seminar-Character Animation. Activities will include critiquing students work and providing useful feedback. Grading the class projects and homework assignments, and spending at least 6 hours each week in the laboratory to help the students with their daily work for the class. Evaluation will be done by the instructor based upon the quality of assistance to the students, attendance at the lectures and hours spent in the animation laboratory. Grading will also be based on advanced projects by the student and presented at the end of the semester. Prerequisite: CMPSCI 591O with grade of B or better. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 596D: Independent Study - Advanced Computer Modeling

Professor: Woolf

This course focuses on production of high quality models, beginning with simple vases, desks, lamps and moving to character and humanoids. Students will model organic shapes, such as fruit, using splines, lathes, and extrudes. Surfacing topics such as specularity, reflection, transparency, glow, decals and image maps will be discussed and modeled. Texture and advanced lighting techniques will be developed. Students will develop humanoid characters, modeling torso, shoulders, pelvis, arms, legs and hands feet and eyeballs. Geometry bones will be added to the final characters along with kinematic constraints and Euler Limits. The character's face will "lip sync" to speak or sing. Students will also create low patch proxy models of their characters to be used for blocking and simple motion within a final animation. These characters will be rigged for animation and the models given to students in the Animation Class for creation of the final project. Students will complete five independent modeling assignments and a final project in which their characters are animated by the Animation Class. This course does not count toward BS-CMPSCI without UPD Approval. 3 credits.

CMPSCI 601: Computation Theory

Professor: Barrington

An in-depth 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? Prerequisites: Undergraduate-level 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) is useful. Course requirements: about eight problem sets, timed midterm and final. Also open to qualified undergraduates. 3 credits.

CMPSCI 603: Robotics

Professor: Grupen

This course is designed to be a advanced course in robotics that covers mechanisms (kinematics and dynamics), actuators, sensors, signal processing, feedback control, and signal processing. The target is to provide an understanding of robot systems that interact with, interpret feedback from, and manipulate the world about them. We will relate the subject matter to biological systems whenever possible, including discussion about the relationships between learning and development in human beings and what it has to say about programming robots. Students will experiment with system identification and control, image processing, path planning, grasping, and machine learning to reinforce the material covered in class. 3 credits.

CMPSCI 635: Modern Computer Architecture

Professor: Weems

This course examines the structure of modern computer systems. We explore hardware and technology trends that have led to current machine organizations, then consider specific features and their impact on software and performance. These may include superscalar issue, caches, pipelines, branch prediction, and parallelism. Midterm and final exams, individual projects, homework, in-class exercises. Prerequisites: CMPSCI 535 or equivalent. 3 credits.

CMPSCI 645: Database Design and Implementation

Professor: Miklau

This course covers the design and implementation of traditional relational database systems and advanced data management systems. The course will treat fundamental principles of databases: the relational model, conceptual design, query languages, and selected theoretical topics. We also cover core database implementation issues including storage and indexing, query processing and optimization, as well as transaction management, concurrency, and recovery. Additional topics will address the challenges of modern Internet-based data management. These include XML data management, information integration, incomplete and probabilistic databases, and database security. 3 credits.

CMPSCI 691A: Computer Vision

Professor: Learned-Miller

People are able to infer the characteristics of a scene or object from an image of it. In this course, we will study what is involved in building artificial systems which try to infer such characteristics from an image. Topics include: Basics of image formation - the effect of geometry, viewpoint, lighting and albedo on image formation. Basic image operations such as filtering, convolution and correlation. Frequency representations of images. The importance of scale in images. Measurements of image properties such as color, texture, appearance and shape. Inference of motion and structure from moving objects and images. Detecting and recognizing objects in images. Statistical methods in computer vision. This course is the graduate version of CMPSCI 570(591A) and it requires more work compared to the undergraduate version CMPSCI 570(591A). Prerequisite: Linear algebra, calculus, basic knowledge of probability, and an ability to program. 3 credits.

CMPSCI 691CR: Seminar - Cognitive Radios and Wireless Networks

Professor: Goeckel, Towsley, Vasudevan, Venkataramani

This seminar will focus on cognitive radios and applications in wireless networks. Briefly, the universal goal is to have a radio that can find available bandwidth anywhere in the spectrum for the purpose of data transmission. Given the wide range of spectrum, the allocation of portions for different uses such as radio, TV, etc., this poses a tremendous challenge, which requires intelligence in the radios and the design of new algorithms for allocating and using available spectrum. This seminar will explore a variety of technical and policy issues in this arena. Technical issues include, how to sense for available spectrum, how to access available spectrum, and how to design software radios that can easily handle the above questions. In addition, much of the work that deals with the above issues focuses on wireless as the last hop, we will also look at work that focuses on cognitive radio networks. Last, we will look at policy and economic issues that arise in dealing with spectrum reuse. Lect A=3 credits; Lect B=1 credit.

CMPSCI 691TD: Seminar - Hot Topics in Databases

Professor: Diao

This graduate seminar covers a series of advanced topics pertaining to large-scale data analysis, which has recently gained tremendous interest in the database community and the information industry. The topics include the Map Reduce programming model, query processing using Map Reduce, approximate query processing, views in distributed systems, uncertain data management, streaming analytics, and data provenance. This is a graduate-level seminar course. It can be taken at a 1-credit level, for which students read one paper and write a review for each class, and lead the discussion of at least one paper during the semester. It can also be taken for 3 credits if the student opts to do a research project related to the course material. The prerequisite is an introductory course on database systems, an equivalent of CMPSCI 645. Students with other backgrounds should contact the instructor for approval for enrollment. Lect A=3 credits; Lect B=1 credit.

CMPSCI 691V: Multiagent Systems

Professor: Lesser

The next generation of complex computer systems will involve large collections of intelligent, heterogeneous agents (both human and machine) working cooperatively and competitively over wide-area distributed processing networks. These networks will be highly reliable in the face of incomplete and possibly inconsistent information and processor failure, will operate in a satisficing mode in which they do the best with available information, will negotiate among themselves to resolve differences, will exploit organizational structuring when there are large numbers of agents, and will reorganize themselves both over the shortterm and longterm, based on the capabilities of the evolving agent set and environment. This course will focus on the intellectual ideas and techniques, both heuristic and formal, involved in building such systems, and the agents that populate them. We will also discuss a number of specific application systems in the areas of distributed situation assessment, distributed planning and resource allocation, cooperative information gathering, concurrent design, electronic commerce, etc., that provide concrete examples. The underlying software architecture that supports the building of such systems will also be analyzed. 3 credits.

CMPSCI 691WR: Seminar - Writing for Research

Professor: Constantine

This writing course for computer science graduate students is intended as an introduction to technical writing in English, and will concentrate on the skills needed for writing effective computer science research papers and reports. Non-native speakers of English are especially invited to consider taking the class. To sign up for the course, first consult with your academic advisor, and then contact the instructor, Steve Constantine (sconstantine@english.umass.edu). Restricted to Computer Science Graduate Students. Not for credit toward a graduate degree. 3 credits.

CMPSCI 701: Advanced Computer Science Topics

Professor: Allan

This is a 6 credit reading course corresponding to the master s project. The official instructor is the GPD although the student does the work with and is evaluated by the readers of his or her master s project.

CMPSCI 791CD: Seminar - Causal Discovery

Professor: Jensen

This course will focus on fundamental principles and algorithms for discovering cause-and-effect knowledge from observational data. These methods contrast with many existing methods for machine learning and data mining, which learn statistical associations rather than causal dependencies. While knowledge of statistical associations allows limited forms of prediction, it fails to support general reasoning about the effects of actions. Accurate reasoning about the effects of actions is important for a growing set of applications within computer science that involve automated learning, planning, and reasoning. These include robotics, multiagent systems, computer security, tutoring systems, adaptive user interfaces, networking, and distributed systems. Methods for causal discovery form an important, but understudied, class of methods for machine learning and data mining. They are also a useful aid to scientific investigation of complex systems outside of computer science, including biology, social science, medicine, and many other fields. The seminar will primarily involve reading and discussion of papers from statistics, artificial intelligence, social science, and philosophy that present basic statistical and computational principles of causal discovery. Students will produce brief written reviews of papers before each class. Students will also produce a final paper that is either a review of all major work on a given subtopic within causal discovery, an implementation and evaluation of a novel algorithm, or a theoretical or empirical examination of an existing algorithm. 3 credits.

CMPSCI 891M: Theory of Computation

Professor: McGregor

The theory seminar is a weekly meeting in which topics of interest in the theory of computation - broadly construed - are presented. This is sometimes new research by visitors or local people. It is sometimes work in progress, and it is sometimes recent material of others that some of us present in order to learn and share. May be repeated for credit up to 6 times. 1 credit.

CMPSCI 899: PhD Dissertation

Professor: Staff

CMPSCI H391IB: Honors Colloquium for CMPSCI 391IB

Professor: Weems

CMPSCI H391IB provides an opportunity for University Honors students enrolled in CMPSCI 391IB to take a deeper look at some aspect of computer hardware technology and low-level programming. The specific choice of topics and activities is agreed upon by the instructor and student on an individual or team basis at the beginning of the semester. This may involve additional reading and discussion, a special programming project, conducting experiments, writing a research paper, additional lecture material or whatever mode of learning that we collaboratively agree will best meet the interests of each student. The colloquium students meet with the instructor one hour per week for discussion. Depending on how we decide to structure the class, this time may also be used for instructor presentations, review of project progress and help with problems, findings from experiments, preliminary reports on research, etc. Recommended for Sophomores, Juniors, Seniors; Majors. 1 credit.

CMPSCI H401: Honors Colloquium for CMPSCI 401

Professor: Barrington

Students 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 H453: Honors Colloquium for CMPSCI 453

Professor: Venkataramani

Students enrolled in the honors section of CMPSCI 453 will meet for an additional hour per week with the instructor to discuss a project in advanced topics in Computer Networks including wireless networks and sensor networks. The project will involve hands-on exposure in designing, deploying and measuring outdoor wireless sensor networks. 1 Credit.


Last automatic generation: 6/28/2010 at 12:47:21 PM