Teaching
|
CS 334: Principles and Techniques of Data Science (Fall 2019-21) 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. |
|
CS 202: Data Structures (Fall 2012-21) 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. |
|
CS 678: Topics in Internet Research (Fall 2012-21) 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 |
|
CS 6312
Privacy in the
Digital Age (Fall
2019) 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. |
|
CS 501 Applied
Probability (Fall 2012-2016) 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. |
|
CS 382: Network-Centric Computing (Spring 2016) 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. |