The purpose of this course is to give students a broad foundation in issues related to creating multimedia and hypermedia applications. Topics to be covered include history and philosophy of hypermedia, principles of human-computer interaction, multimedia programming, optimizing for CD-ROMs and the WWW, digital representation and editing of media (audio, graphics, video), media compression and transmission, and delivery of multimedia applications. Special Emphasis: Computer Puzzles & Games.
Data Abstraction: In order to cope with the complexity of writing
large programs, it is desirable to express them as combinations
of components whose behavior can be understood independently from their
implementation. In CS111, you learned how methods provide an abstraction
barrier between the caller and implementer of a method. We will review
this notion and introduce abstract data types as a way to represent
computational values and the operators that manipulate them.
Modularity: The ability to create large and complex computer programs is enhanced if they can be composed out of reusable components with standard interfaces that can be combined in mix-and-match ways. We will study how to compose programs out of such components.
Performance Analysis: Programs are often judged by how effectively they make use of resources such as space and time. We will explore ways to describe the efficiency of algorithms and use these tools to evaluate various approaches to implementing data structures and algorithms.
Standard Abstract Data Types: We will learn about the implementation and use of classical data structures such as lists, stacks, queues, trees, tables and graphs, which should be in every programmer's bag of tools.
This course is an introduction to the design and analysis of fundamental algorithms in computer science. General techniques covered in the course include divide-and-conquer algorithms, dynamic programming, greediness, and probabilistic algorithms. Topics for the course include sorting, searching, graph algorithms, file compression, and NP-completeness. Prerequisite: CS 230 and either MATH225 or permission of the instructor.
This course is for students who want to know why search engines can answer your queries fast and (most of time) accurately, why other times seem to be missing the point or provide untrustworthy information, and how one can design a web site that acquires high visibility on the web. We cover traditional information retrieval methods and web search algorithms such as crawlers and spiders, with a focus on probabilistic and graph-theoretic methods that can detect web spam. We also cover some basic understanding of text mining and data clustering. Time permiting, we examine other relevant issues of the information explosion era, such as the shape and structure of the web, epistemology of information and properties of large networks. Prerequisite: CS 230.
This course is an introduction to parallel and distributed computing that studies problem solving using a large number of interconnected processors. It is divided into three parts. First, it discusses the need for parallel computation and describes some of the fundamental algorithmic techniques. The second part surveys some of the popular interconnection networks employed or simulated by parallel and distributed computers. In the third part, several parallel algorithms are being designed and implemented in MPI. Prerequisite: CS 231.