Spring 09 Course Descriptions

Spring 2009

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: Adrion

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: Learned-Miller

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 145: Representing, Storing, and Retrieving Information

Professor: Verts

An introductory course in the use of data in computer systems, a core course for the Information Technology certificate. Formats for representing text, numbers, sound, images, etc., as strings of bits. Equations of lines and courves, modeling of synthetic scenes (i.e., ray tracing), exploring the frequency domain and holography. Basic information theory, use and limitations of file compression and encryption. Structured databases and how to use them. Information retrieval in heterogenous environments such as the Web. XML as a language for defining new formats for representing data. Review of historical, pre-computer methods of information representation. Prerequisites: "Basic computer literacy", i.e., user-level familiarity with a modern operating system and some experience with application programs. Tier I math skills. Recommended for First Year and Sophomore Non-Majors. Prerequisite: R1. 3 credits.

CMPSCI 187: Programming with Data Structures (R2)

Professor: Brock

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 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 7 weeks. 1 credit.

CMPSCI 201: Architecture and Assembly Language (E)

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, Wileden

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. 4 credits.

CMPSCI 240: Reasoning About Uncertainty

Professor: Barrington

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 and MATH 132. 4 credits.

CMPSCI 250: Introduction to Computation (E)

Professor: Weis

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 291W: Seminar - Introduction to Web Programming

Professor: Ridgway

The World-Wide-Web was originally envisioned for static content -- every time you visited a website you got exactly the same page -- and was stateless -- no information was kept between one request and the next. Since then many sites have appeared that are neither static nor stateless. This course covers the creation of stateful websites with dynamic content, especially content drawn from databases, which are the basis for most interesting websites. The course will be project-based; throughout the semester students will be building a significant dynamic site, such as a distributed project-management system. This project will be a significant part of the student's grade. Topics will include: serving static content (basic HTML) from our own web servers (running Apache); producing dynamic content with a server-based language such as PHP or Ruby; techniques for maintaining session state in a stateless environment; serving dynamic content from a back-end database; and multi-tier systems using JavaScript in the client browser. Prerequisite: CMPSCI 121, or permission of instructor. 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 377: Operating Systems

Professor: Corner

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-cliche "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 programming language runtime systems, concurrency and synchronization, a focus on key operating system features, I/O and networking, and distributed services. 4 credits.

CMPSCI 383: Artificial Intelligence

Professor: Zilberstein

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 250, CMPSCI 287, and CMPSCI 311. 3 credits.

CMPSCI 391F: Seminar - Fundamentals of Graphic Communication

Professor: Woolf, Sindelar

This course provides an understanding of computer-based design and multimedia production. Basic concepts in the areas of graphic design, animation, video editing and object-oriented programming will be covered preparing students for more advanced studies in 2D and 3D animation and in multimedia programming. Course work consists mainly of several student projects, built incrementally as several smaller sub-projects. Each student s project will be presented via the World Wide Web and discussed in class. Students interaction is encouraged through peer reviews and in-class exercises. Topics include HTML, Cascading Style Sheets (CSS), file transfer, designing and drawing characters, image formats/image compression for the web, modeling and animation. 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. 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. 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 403: Introduction to Robotics: Mechanics, Dynamics, and Control

Professor: Brock

This class covers theoretical and practical methods in the context of mobile robotics. These methods and concepts will tell you how robotic hardware works, how to make a robot move, how to localize in an unknown environment, how to build maps during exploration, and much more. The class focuses on lab exercises on real mobile robots but at the same time will cover in an applied fashion concepts from kinematics, dynamics, control, probability, motion planning, computer vision, and AI. Prerequisites: calculus, linear algebra, and programming skills. 3 credits.

CMPSCI 445: Information Systems

Professor: Miklau

Database systems are at the core of large-scale information management, providing the most efficient mechanism for storing, updating, and retrieving structured data. This course will provide an introduction to the design and use of database systems, as well as the key issues in building such systems. The World Wide Web is the largest distributed information management system. In addition to database topics, this course will also provide an introduction to key technologies for managing and exchanging data on the World Wide Web. Prerequisite: CMPSCI 287. 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). 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: A rudimentary understanding of computer architecture and operating systems, while not required, would be helpful. 3 credits.

CMPSCI 496P: Independent Study - Systems and Application Programming Using the iPhone

Professor: Shenoy

This group independent study involves embedded systems and application programming using the iPhone / iPod Touch platform. The independent study involves completing a series of programming assignments and a project using iPhone programming environment. 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 575: Combinatorics and Graph Theory

Professor: Moll

This course is a basic introduction to combinatorics and graph theory for advanced undergraduates in computer science, mathematics, engineering and science. Topics covered include: elements of graph theory; Euler and Hamiltonian circuits; graph coloring; matching; basic counting methods; generating functions; recurrences; inclusion-exclusion; and Polya's theory of counting. Prerequisites: mathematical maturity; calculus; linear algebra; strong performance in some discrete mathematics class, such as CMPSCI 250 or MATH 455. Modern Algebra - MATH 411 - is helpful but not required. 3 credits.

CMPSCI 591G(454): Seminar - Computer Networking Lab

Professor: Venkataramani

In this course, students will learn how to put "principles into practice," in a hands-on-networking lab course. The course will cover router 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. 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. 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(591_)--3D Animation and Digital Editing or equivalent experience and a personal computer. 3 credits.

CMPSCI 591OO: Seminar - Object Oriented Languages

Professor: Smaragdakis

The goal of the course is to give students an advanced background for both technical work and research involving object-oriented languages and systems. The course covers topics such as advanced Java/C++ language mechanisms, design patterns critique, aspect-oriented programming, OO frameworks, mixins, OO language implementation (compiler optimizations, virtual machine principles), type systems and genericity. 3 credits.

CMPSCI 591U(553): 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. 3 credits.

CMPSCI 591V(554): 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. 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. 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. 3 credits.

CMPSCI 601: Computation Theory

Professor: Immerman

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 quite desirable. 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 620: Advanced Software Engineering: Synthesis and Development

Professor: Osterweil

This course examines the varied approaches to the development of computer software. The course focuses on using software processes to produce software products. We examine various ideas about how software products should be structured and function. We then examine how software processes serve as vehicles for manufacturing such products. But we also view the processes as manufactured artifacts as well. A key perspective of the course is to apply technologies for manufacturing software products to the manufacture of the processes that make these products. This approach facilitates the direct study of different software development approaches, and a more direct study of their effects on the products they produce. This approach will be used by students, who will examine a representative range of current software development processes by creating and analyzing these software processes as part of their coursework. 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, team project, homework, in-class exercises. Prerequisites: CMPSCI 535 or equivalent. 3 credits.

CMPSCI 645: Database Design and Implementation

Professor: Diao

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 691AD: Seminar - General Purpose Computation on the GPU

Professor: Wang

Graphics processors (GPUs) on today's commodity video cards have evolved into powerful engines capable of a variety of computations beyond computer graphics. This course takes a detailed look at both basic and advanced issues related to general-purpose computation on graphics hardware (GPGPU). The aim of the course is to provide students with knowledge and hand-on experience in developing applications on modern GPUs, with an emphasis on core computational building blocks. This course will involve lectures as well as discussions about recent research work. A final project is required. 3 credits.

CMPSCI 691DD: Seminar - Research Methods

Professor: Jensen

This course introduces graduate students to basic ideas about conducting a personal research program. Students will learn basic methods for activities such as reading technical papers, selecting research topics, devising research questions, planning research, analyzing experimental results, modeling and simulating computational phenomena, and synthesizing broader theories. The course will be structured around three activities: lectures on basic concepts of research strategy and techniques, discussions of technical papers, and preparation and review of written assignments. Significant reading, reviewing, and writing will be required, and students will be expected to participate actively in class discussions. 3 credits.

CMPSCI 691F: Programming Languages

Professor: Wileden

This course undertakes a detailed examination of the 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. Special attention is given to type systems and typechecking, since these are central to all subsequent developments. The predominant paradigm for contemporary programming languages -- the imperative, object-oriented paradigm -- is our primary focus, and the functional paradigm is our secondary focus. We also examine other important contemporary language features such as object orientation, modularity, polymorphism and concurrency. Homework problems, programming exercises and projects reinforce the material covered in lectures and readings. Prerequisites: Graduate standing or permission of instructor. 3 credits.

CMPSCI 691PA: Seminar - Energy and Power-aware Computing

Professor: Ganesan

In this research seminar, we will read and discuss very recent literature in energy/power management across different classes of computing systems ranging from the tiny (sensors and RFIDs) to the large (data centers). Our goal will be to try to understand the energy/power management problems at different computing scales, state-of-art solutions to these problems, and to identify the common principles across them. We will also discuss developments in renewable energy (e.g.: solar, thermal, vibration), and how microgenerators may enable computing devices to be self-powered. 1-3 credits.

CMPSCI 691TD: Seminar - Hot Topics in Databases

Professor: Miklau, Diao

This graduate seminar covers advanced topics in databases, including probabilistic databases, temporal databases, Graph databases, data provenance, and new database architectures. This is a graduate-level seminar course. It can be taken at a 1-credit level, for which students read one paper for each class, submit paper reviews, and lead the discussion of one paper during the semester. It can also be taken for 2 credits if the student opts to do a research project or lead the discussion of additional papers. 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. 1-2 credits.

CMPSCI 696P: Independent Study - Systems and Application Programming Using the iPhone

Professor: Shenoy

This group independent study involves embedded systems and application programming using the iPhone / iPod Touch platform. The independent study involves completing a series of programming assignments and a project using iPhone programming environment. 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 711: Parallel Algorithms and Architectures

Professor: McGregor

An introduction to some more advanced algorithmic topics with a focus on randomization and probabilistic techniques. Topics will include the probabilistic method; tail inequalities; entropy and information; random walks; derandomization and limited independence. Applications to approximation and combinatorial optimization; online and stream computation; communication theory; and other areas will be discussed as time permits. Prerequisite is CMPSCI 611 or equivalent. 3 credits.

CMPSCI 791BB: Seminar - Advanced Machine Learning

Professor: Mahadevan

As work in statistical machine learning and probabilistic AI matures, it has become increasingly clear that future progress depends critically on "thinking outside the box". In this seminar, we will explore "transform methods", which work by mapping a ML or AI problem in one "box" into another. Classically, much work in science has been dominated by such transform methods (e.g. spectral solutions of differential equations map space or time into frequency). Many hard problems in AI or ML are unlikely to be solved by purely probabilistic or statistical reasoning, and are going to require similar non-trivial transform methods. Prerequisites: AI (CMPSCI 683), ML (CMPSCI 689). 3 credits.

CMPSCI 791LL: Seminar - The Grant Process: From Solicitation to Award

Professor: ** Section Deleted

In this seminar, participants will get in-depth experience with the process of scoping out, writing, and reviewing grant proposals for award-granting agencies like NSF. We will examine the process from beginning to end: developing ideas for a project, finding and reading appropriate solicitations, framing a proposed project, writing project summaries and narratives, fulfilling particular solicitation and general requirements, reviewing projects, interpreting reviews and panel summaries, etc. Each seminar participant will write a scaled down version of a grant proposal, and participate in a moot review panel, in which all participants possibly plus some faculty, will form a review panel to review and discuss the proposals in a manner similar to NSF panels. Prerequisite: Successfully completed defense of dissertation proposal. 3 credits.

CMPSCI 791MM: Seminar - Conceptual Change & Representation

Professor: Rissland

In this seminar we will explore concept change particularly, those that ensue from unexpected negative or exceptional cases or instances from a variety of perspectives. Our goals will be two-fold: (1) to develop in-depth case studies of interesting episodes of concept change, and (2) to develop new computational approaches to dealing with them. In pursuit of these two goals, participants will be encouraged to seek out examples on their own and to apply their expertise from AI, including machine learning, and other relevant disciplines. Our readings will include selections from The Big Book of Concepts by Murphy, Proofs and Refutations by Lakatos, An Introduction to Legal Reasoning by Levi, The Structure of Scientific Revolutions by Kuhn, Women, Fire and Dangerous Things by Lakoff, The Black Swan by Taleb, and Is Pluto a Planet by Weinreb, as well as current and classic papers drawn from disciplines like psychology, history of science, etc. as well as AI. 3 credits.

CMPSCI 791MT: Seminar - Mining Text and Images in Digital Libraries Using Grid Computing

Professor: Allan, Manmatha, Smith

Many people need to explore large document collections to find patterns or trends or to discover insights about our past. Intelligence and financial analysts, and legal and historical researchers, all need to reach conclusions about corpora too large for anyone to read. This seminar explores grid computing techniques for efficient analysis of these digital libraries, with the Internet Archive's one million scanned books as a testbed. Analysis technologies include: optical character recognition, word error detection and correction, document structure detection, language modeling, information extraction, quotation detection, and relevance modeling. After an overview of software architecture and data, students will read and present papers on text and image mining and complete a substantial project using grid computing for experiments on the book collection. 1-3 credits.

CMPSCI 891M: Theory of Computation

Professor: Barrington

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 H07: 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 H08: Honors Colloquium for CMPSCI 383

Professor: Zilberstein

Students will study in greater depth one of the AI problem solving techniques covered in class. Activities include discussions with the professor and TA, readings, and a project. Specific topics depend on student interest but may include game playing, heuristic search, and automated planning. 1 credit.


Last automatic generation: 1/5/2010 at 10:24:14 AM