Presentation Slides: View Here

Office Hours:



CS115: Computing for Socio-Techno Web

This is a new course about Web Technologies and the Social Implications of the Web. CS115 is for students who want a broad exposure to the fundamental concepts of computer science, but also for those that may want to major in Media Arts and Sciences (cross-listed as MAS115). Students get hands-on programming experience building Web applications using HTML, CSS and JavaScript. Given that most people experience the Web today using computer technologies from online networks (Facebook, Twitter, Wikipedia, etc), the technical topics are explored along with the social aspects of computing. We study the structure of the Social Web, and focus on a variety of cyberspace issues such as information availability, personal and group privacy, online security, critical thinking, online propaganda and manipulation, restricted resources, self-perception, and decision-making. No prior knowledge of computing is assumed.

CS215: Multimedia Design and Programming

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.

CS230: Data Structures

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.

CS231: Fundamental Algorithms

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.

CS315: Web Search and Data Mining

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.

CS331: Parallel Machines and their Algorithms

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.