CS334: Principles and Techniques of Data Science (Fall 2019-23)

This course introduces the key principles and techniques of data science to prepare students for scientific work and advanced courses related to data analysis, machine learning and computational social science. It is Python-based hands-on course covering topics that span the entire data science life cycle including data collection, data exploration, visualization, statistical inference, causal inference, foundations of machine learning, and data ethics

CS202: Data Structures (Spring 2012-24)

Data structures are the key abstractions for organizing data in computer systems and thus form an essential building block for efficient algorithms. They are used in the design of a wide variety of applications today (e.g., cryptocurrencies, social networking, and big data processing frameworks). This course introduces the fundamentals of data structures and aims to provide a deep understanding of how different ways of structuring information in computer systems lead to different tradeoffs in terms of time and memory.

CS678: Topics in Internet Research (Fall 2012-24)

This is a graduate-level course on computer networking research. It involves lectures, paper readings, discussions, and a semester-long research project. Each year the course focuses on 4-5 hot topics in networking research. In the last edition, we covered the modules on (i) Edge Computing and Systems for Machine Learning, (ii) Cellular Networks, (iii) Web, Video Streaming, and ICT for Development, (iv) Internet Censorship & Privacy

CS6312: Privacy in the Digital Age (Fall '09)

A course that presents a critical view of the role of privacy in the modern age. It aims to provide a broad and varied understanding of economic (e.g., new business models), policy (e.g., balancing societal needs and individual rights), ethical, legal (e.g., data privacy regulations) and technical (e.g. privacy-enhancing technologies) perspectives about the role of privacy in the era of big data, cloud computing and AI.

CS501: Applied Probability (Fall 2012-16)

This course deals with the nature, formulation, and analysis of probabilistic situations and introduces the fundamentals of probability with special emphasis on applications. It provides a rigorous understanding of probability concepts including random variables, expectations, joint distributions, limit theorems, and stochastic processes (including Markov Chains). In addition, it covers two applications areas where probability is extensively used: (a) queuing theory and (b) machine learning.

CS382: Network-Centric Computing (Spring '16)

An introductory course on the foundations of large-scale networked systems. The first half of the course covers networking fundamentals, with the Internet as the case study. The second covers the fundamental concepts involved in designing scalable and fault tolerant distributed applications. It provides students with hands-on experience with applying the learnt concepts through multiple programming assignments.