Computing at Scale

Harvard CS 242

Fall 2023

Mondays and Wednesdays from 3:45-5:00 pm, SEC LL2.221 (Tentative Location)
Instructor: H.T. Kung

Specialized AI accelerators enable efficient AI computations for a variety of tasks at various scales using a wide range of parallel, distributed, and embedded computing platforms. For example, for large generative AI applications such as ChatGPT and Stable Diffusion, these accelerators allow (1) distributed model training and low-latency, high-throughput inference serving in the cloud, and (2) efficient private training and inference using local knowledge on resource-constrained edge devices.

In this course, students will learn systematic methods for mapping typical deep learning computations, such as convolutional neural networks and transformers, onto numerous computing cores or nodes. They will also learn techniques for co-designing machine learning models, computational algorithms, software, and hardware.

Upon successful completion of this course, students will be equipped to tackle the challenging tasks of designing and utilizing energy-efficient, high-performance AI accelerators.

Recommended prerequisites for this course include: (1) an introductory AI course, (2) programming experience (Python, MATLAB, or C/C++), (3) basic knowledge of computer architectures, (4) familiarity with data structures and algorithms, and (5) undergraduate-level linear algebra and statistics. In the case of students with a strong interest in the subject matter and relevant research experience, one of these five requirements may be waived. Labs and additional support will be provided in the initial weeks of the semester to help students quickly acquire the necessary background knowledge to excel in the course.


Past Courses

Computer Networks

Harvard CS 143

Spring 2023

Mondays and Wednesdays from 12:45-2:00 pm, SEC, Allston, MA (SEC LL2.221 Lecture Hall)
Instructor: H.T. Kung

Computer networking is a foundational technology that has enabled many breakthroughs in computing, including mobile and cloud computing. This course addresses (1) the basics of computer networks (30%), (2) advanced networking technologies, such as AI for networking (20%) and software-defined networking (SDN), and (3) emergent networking technologies (50%). Topics in (3) include Low Earth Orbit (LEO) satellite Networks, 5G non-terrestrial networks (NTN), decentralized networks (e.g., blockchains), and high-speed data center networks.

After successfully taking this course, students will have an integrated understanding of critical issues in computer networks. Students' work includes reading assignments, weekly quizzes, two midterms, and three programming assignments.

Recommended Prep: (1) programming experience (Python and C/C++ should be OK); (2) familiarity with data structures and computer algorithms; and (3) basic knowledge about machine learning. A strong interest in the subject matter is a must.

Computing at Scale

Harvard CS 242

Fall 2022

Mondays and Wednesdays from 3:45-5:00 pm, SEC building in Allston, MA (room SEC LL2.221 Lecture Hall)
Instructor: H.T. Kung

Machine learning accelerators have enabled a new era of using special-purpose hardware for general-purpose computing. This course addresses computation scaling techniques required in implementing these accelerators over parallel, distributed, and embedded computing platforms.

Students will learn principled methods for mapping prototypical deep learning computations onto compute nodes of various hardware capabilities and interconnect patterns, as well as the close interactions between computational algorithms, machine learning models, and computer organizations. After successfully taking this course, students will have an integrated understanding of these issues and can take on the challenging tasks of designing and using energy-efficient, high-performance accelerators.

The class has the following modules:

  1. Accelerating deep learning computations, acceleration strategies
  2. Parallelizing neural network computations, minimizing memory accesses and data transfers
  3. Compressing models with pruning and quantization, low-bitwidth arithmetic
  4. Speeding up model training, distributed learning and inference
  5. Approximating neural network functions, knowledge distillation, self-supervision embedding, physics-informed neural networks
  6. Security for models and training data, user privacy protection with accelerated fully homomorphic encryption
Students will learn the subject through reading assignments, lectures and quizzes, programming assignments, labs, research paper presentations, and a final project.

Student teams will have the latitude to choose a final project they are passionate about. They will formulate their projects early in the course, so there will be sufficient time for discussion and iterations with the teaching staff and system design and implementation.

The course will use server clusters at Harvard and external cloud resources. Students will use open-source tools and libraries. Industry partners will assist the course by providing guest lectures and additional resources. Students will have access to a database of 600+ annotated papers created by the instructor.

Recommended Prep: (1) programming experience (Python, MatLab, or C/C++ should be OK); (2) basic knowledge of systems and machine organization; (3) familiarity with data structures and computer algorithms; and (4) maturity in mathematics (e.g., ability to make use of undergraduate linear algebra and statistics). One of these four requirements may be waived for students with a strong interest in the subject matter and related research experience. Labs and extra support will provide preparation in the first weeks of the semester to help students quickly obtain parts of the background necessary to excel in the course.

Computing at Scale

Harvard CS 242

Fall 2021

Mondays and Wednesdays from 3:45-5:00 pm, SEC building in Allston, MA
Instructor: H.T. Kung

Scaling computation over parallel and distributed accelerators is a rapidly advancing area of research receiving high levels of interest from academia and industry. A recent focus is to increase speed and energy efficiency for deep learning computations in data center servers and small embedded devices. The industry is building a variety of innovative accelerators in this area.

In this course, students will learn principled methods of mapping computations used in machine learning and scientific computing onto parallel and distributed compute nodes implemented with CPU, GPU, FPGA, and ASIC. These mapping techniques lay the foundation for understanding and designing modern computing libraries and architectures for high-performance and energy‐efficient systems and devices. Students will implement these mapping techniques for fast and efficient machine learning computations. At the end of the course, students will know how to co-design machine learning models, computational algorithms, software abstractions, and underlying computing systems.

The class has the following modules:

  1. Parallelization. Map deep neural networks computation onto parallel and distributed computing units.
  2. Compression. Quantize and prune neural networks, leverage low-precision arithmetic operations and stochastic rounding, use low-rank filters for approximate pattern matching, and apply knowledge distillation to derive lightweight models.
  3. Data reuse. Reuse local data to lessen memory access and communication costs.
  4. Collaborative learning. Use federated learning and simulation for collaboration among distributed clients.
  5. Porting accelerators. Partition large-scale computation into small chunks and schedule them for execution on fixed-size accelerators.
  6. In-hardware acceleration. Explore new opportunities of using emerging memory and 3D packaging technologies for accelerators.
Students will learn the subject through a deep dive into recent research papers as well as lectures, quizzes, programming assignments, and a final project.

Students will have the freedom to choose a final project they are passionate about. They will formulate their projects early in the course, so there will be sufficient time for discussion and iterations with the teaching staff and system design and implementation.

The course will use server clusters at Harvard as well as external computing resources in the cloud.

Industry partners may support the teaching by giving guest lectures and advice to student projects.

The course provides a database for course materials. The database contains hundreds of articles that the course instructor has collected and tagged. Students with Harvard email addresses can access the database at https://htk.redsox.jetos.com/alpha/login.php

Recommended Prep/Requirements: (1) programming experience (Python, MatLab, or C/C++ should be OK); (2) basic knowledge in computing systems (e.g., CPU and GPU) and machine learning (e.g., convolutional neural networks); (3) familiarity in data structures; and (4) maturity in mathematics (e.g., undergraduate linear algebra and statistics).

The course instructor may waive some of these requirements for students with a strong interest in the subject matter and related work or research experiences. Labs in the first weeks of the semester will help students quickly obtain the background necessary to excel in the course.

Computing at Scale

Harvard CS 242

Spring 2021

Mondays and Wednesdays from 4:30-5:45 pm, hosted on Zoom
Instructor: H.T. Kung

Given the ubiquity of AI applications, a recent research focus is scaling AI-enabled systems up for large-scale parallel and distributed training and inference, and down for embedded, on-device, real-time operations. This course will study various acceleration and compression strategies for such scaling. Strategies include pruning, quantization, knowledge distillation, computation restructuring, tiling and scheduling, federated learning, and exploration of emerging technologies such as 3D packaging and high-capacity non-volatile memories. Students will implement these techniques by applying them to convolutional neural networks, multi-layer perceptrons, Transformers, or reinforcement learning. At the end of course, students will gain an understanding of the close interactions between AI models, computational algorithms, and underlying computing systems.

The course provides a comprehensive database which identifies papers related to lectures. Students with Harvard email addresses can access the database at https://htk.redsox.jetos.com/alpha/login.php.

Enrollment Limit: None

Instructor Consent: No Special Consent Required

Recommended Prep/Requirements: (1) Programming experience (Python or C/C++ should be fine); (2) basic knowledge in AI, systems, and machine organization; (3) familiarity in data structures and algorithms; and (4) maturity in mathematics (e.g., undergraduate linear algebra and statistics).  Students with a strong interest in the subject matter may waive one of these four requirements. Labs and extra support will provide preparation in the first weeks of the semester to help students quickly obtain the background necessary to excel in the course.



Computer Networks

Harvard CS 143

Fall 2020

Mondays and Wednesdays from 4:30-5:45 pm, hosted on Zoom
Instructor: H.T. Kung

Computer networking has enabled the emergence of mobile and cloud computing, creating two of the most significant technological breakthroughs in computing. Computer networks have become even more critical these days since remote activities have become a new norm.

We expect several focuses in the coming years. First, we will witness the emergence of 5G wireless mobile networks, which have already begun to replace the current 4G networks. Second, cybersecurity and privacy will receive unprecedented attention from the industry. Third, blockchain technology, which underlies Bitcoin, creates a new trusted network infrastructure for many new distributed applications. Fourth, distance learning and virtual meetings will push the limits of current multicast and network management technologies.

In this course, students will learn basic networking protocols as well as these timely topics.

This course will take place remotely and use synchronized remote lectures and Zoom breakout sessions along with Piazza, Slack, and other collaboration tools. The teaching staff will hold frequent office hours.

Here is the current plan for the class structure. Before each class, students will complete reading assignments posted on Canvas. Students will attend a 30-minute lecture and then a 25-minute breakout session to work on a couple of assigned problems related to the lecture. At the end of the breakout session, students will submit their short answers to the questions online and participate in a wrap-up discussion.

Students will be able to meet new classmates during breakout sessions. In the third or fourth week, students will form their study groups to work on network programming assignments, study for the midterm, and carry out final course projects.

Prerequisites: CS50 (or programming experience) and a keen interest in the subject matter. Lab sessions will be provided to give extra support.



Computing at Scale

Harvard CS 242

Spring 2020

Mondays and Wednesdays from 4:30-5:45 pm, Maxwell Dworkin G125
Instructor: H.T. Kung

The continued success of artificial intelligence will be tied to the development of AI-specific at-scale compute infrastructure and related methods. This active research area will be key to future developments in the field.

In CS 242, students will learn both the principles and state-of-the-art research in this rapidly advancing field. In order to become effective practitioners and researchers in this field, students must obtain a full-stack view of AI, understanding AI hardware, model-level optimizations, distributed training and deployment, security, and flexible architectures for future models. By studying these topics together, students will acquire an integrated understanding of these topics.

CS 242 will teach the latest developments in the field. AI hardware topics include TPUs and systolic arrays, industry AI chip architectures, memory-on-logic chip architectures, 3D-IC packing for CNNs, in-memory computing, and multi-chip-modules-based architectures. Model-level optimization topics include general matrix to matrix multiplication optimizations, separable kernels, pruning, quantization, term revealing, and NLP accelerators for state-of-the-art language models including transformers, RNNs, and LSTMS. Distributed training and deployment topics include distributed stochastic gradient descent, federated learning, and 5G mobile edge deployments. Security topics include secure distributed learning over the blockchain and secure AI execution methods. Flexible architecture topics include FPGAs and general purpose instructions.

Students will gain hands-on experience through programming assignments, presentations, reading quizzes, midterm, and a final project. Students will have latitude in choosing a final project they are passionate about. They will formulate their projects early in the course, so there will be sufficient time for discussion and iterations with the teaching staff, as well as for system design and implementation.

Recommended Prep: (1) programming experience (Python, MatLab or C/C++ should be fine); (2) basic knowledge in systems and machine organization; (3) familiarity in data structures and algorithms; and (4) maturity in mathematics (e.g., undergraduate linear algebra and statistics).



Computer Networks

Harvard CS 143

Fall 2019

Mondays and Wednesdays from 4:30-5:45 pm, Maxwell Dworkin G125
Instructor: H.T. Kung

Computer networking has enabled the emergence of mobile and cloud computing, creating two of the most important technological breakthroughs in computing of the past decade.

We expect three major focuses in the next ten years. First, we will witness the emergence of 5G wireless mobile networks, which will begin to replace the current 4G networks as early as 2020, enabling new applications and paradigm shifts in edge computing, such as uploading sensor data for AI applications everywhere. Second, cyber security, and in particular its relation to networking and supply chain security for 5G network infrastructure, will receive unprecedented attention from industry. Third, blockchain technology, which has powered Bitcoin, is creating a new trusted network infrastructure that will allow information to be distributed but not copied. While these areas are each rich in intellectual content on their own, they will also interplay with one other, creating interesting opportunities for those versed in all three.

In order to play a role in this era of network-based computing, students must have a thorough understanding of these networking technologies and applications. Beyond teaching the basic networking protocols, which have become very mature and can be treated as a black box, in CS 143, we will teach new networking issues and topics of significance. This focus on upcoming wireless, cyber security as it relates to networks, network infrastructure, and the broader supply chain, and blockchain advancements is the motivation for CS 143 this semester.

Students in the course will read and discuss basic material as well as the latest literature, work on homework assignments, gain hands-on experience through network programming, and have the opportunity to present the concepts and insights learned through a final project.

Prerequisites: CS50 (or programming experience) and a strong interest in the subject matter. Lab sessions will be provided to give extra support.

Network Design Projects: Parallel and Distributed Deep Learning

Harvard CS 144r/244r

Spring 2019

Mondays and Wednesdays from 3:00-4:15 pm, Maxwell Dworkin 119
Instructor: H.T. Kung

Deep neural networks (DNNs) are becoming a popular tool in data-driven applications. One of the next frontiers is distributed DNNs over computer networks for improved scaling (e.g., for scaling training as in federated learning) and parallel DNNs over processor arrays for low-latency inference in real-time applications. To this end, there is a need to understand issues such as communication, computation, and accuracy trade-offs.

This research-oriented course will address this relatively new, yet rapidly advancing, topic. We will survey the main approaches, with a unique focus on the interplay between deep learning models, parallel and distributed computing architectures, and the hardware structures of end devices.

The class will be organized into the following modules:

  1. Motivations for parallel and distributed deep learning
  2. Parallelism available in deep neural networks
  3. Review of background concepts in deep learning, computer networks, computer architectures, and FPGA/ASIC hardware accelerators
  4. Deep dive case studies in parallel and distributed training and inference (e.g., distributed federated learning and quantized low-latency and energy-efficient inference)
  5. Full-stack design optimization for inference in which deep learning models, computing architectures, and hardware circuits are simultaneously optimized
  6. Collaborative deep learning inference between the cloud, edge, and client machines; Privacy and security protocols, and the novel use of blockchains in support of parallel and distributed deep learning
  7. Emerging technologies in deep learning such as automated neural architecture search and neuromorphic computing.
Students working in 2- or 3-person teams will do a substantial project in these and other related areas.

Prerequisites: Basic courses in networking (e.g., CS 143) and AI (e.g., CS 181 or 182), programming experience (e.g., CS 51), some research experience, and a strong interest in the subject matter. Lab sessions will be provided to give extra support.



Computer Networks

Harvard CS 143

Fall 2018

Mondays and Wednesdays from 4:30-5:45 pm, Maxwell Dworkin G125
Instructor: H.T. Kung

Computer networking has enabled the emergence of mobile and cloud computing, creating two of the most important technological breakthroughs in computing of the past decade.

We expect three major focuses in the next ten years. First, we will witness the emergence of 5G wireless mobile networks, which will begin to replace the current 4G networks as early as 2020. Second, cyber security will receive unprecedented attention from industry. Third, blockchain technology, which has powered Bitcoin, is creating a new trusted network infrastructure that will allow information to be distributed but not copied. While these areas are each rich in intellectual content on their own, they will also interplay with one other, creating interesting opportunities for those versed in all three.

In order to play a role in this era of network-based computing, students must have a thorough understanding of these networking technologies and applications. Beyond teaching the basic networking protocols, which have become very mature and can be treated as a black box, in CS 143, we will teach new networking issues and topics of significance. This focus on upcoming wireless, network security, and blockchain advancements is the motivation for CS 143 this semester.

Students in the course will read and discuss basic material as well as the latest literature, work on homework assignments, gain hands-on experience through network programming, and have the opportunity to present the concepts and insights learned through a final project.

Prerequisites: CS50 (or programming experience) and a strong interest in the subject matter. Lab sessions will be provided to give extra support.



Autonomous Networking

Harvard CS 144r/244r

Spring 2018

Mondays and Wednesdays from 2:30-4 pm, Maxwell Dworkin 323
Instructor: H.T. Kung and Minlan Yu

As networking technologies advance, networks and their applications can operate more and more by themselves without help. For example, based on blockchains, we can develop autonomous systems that will provide forever-improving peer-to-peer services. More specifically, with proper incentives provided to participants to contribute, the network will continue to improve over time.

In this course, we will study core network-related technologies whose interplay will be responsible for these autonomous systems of the future, which range from the Internet of Things (IoT) to decentralized autonomous organizations. These technologies include blockchains, machine learning, IoT, datacenter networking, video-analytics over heterogeneous networks, mobile computing, and homomorphic encryption for cloud computing.

We will first review these core technologies. Following this, we will illustrate novel autonomous applications such as peer-to-peer business models for machine learning systems, including the models themselves and the data on which they operate. Another application example will be the distributed classification of security attacks, including designing incentives to encourage collaboration in mitigating attacks.

Students will work in pairs on projects related to autonomous technologies and business model experimentation.



Computer Networks

Harvard CS 143

Fall 2017

Mondays and Wednesdays from 2:30-4 pm, Maxwell Dworkin 119
Instructor: H.T. Kung

Computer networking has enabled the emergence of mobile and cloud computing, creating one of the most important technological breakthroughs in computing of the past decade. We expect two major paradigm shifts will take place in the next ten years. First, we will witness the emergence of 5G wireless mobile networks, which will begin to replace the current 4G networks as early as 2020. Second, blockchain technology, which has powered Bitcoin, is creating a new trusted network infrastructure that will allow information to be distributed but not copied.

In order to play a role in this era of network-based computing, students must have a thorough understanding of these emerging networking technologies and applications. Beyond teaching the basic networking protocols, which have become very mature and can be treated as a black box, in CS 143, we will teach new networking issues and topics of significance. This focus on upcoming wireless and blockchain advancements is the motivation for CS 143 this semester.

The class will be organized into the following modules:

  1. A view of the future: 5G and blockchain
  2. Basic networking concepts: network interoperability, decentralization, security, and robustness
  3. Radio basics: Wave propagation physics
  4. Wireless networking protocols: Wi-Fi, MAC protocols
  5. New 5G technologies: Millimeter wave, Ultra Dense Networks (UDNs), MIMO
  6. Fundamentals of blockchains: Peer-to-peer networking, distributed database, cryptography-driven consensus protocols
  7. Blockchain in mobile networks: trust economy, smart contract, blockchain-as-a-service
  8. Machine learning assisted networking: Data-driven network protocols
Students in the course will read and discuss basic material as well as the latest literature, gain hands-on experience through a programming assignment, and have the opportunity to present the concepts and insights learned through a final project.

Prerequisites: CS50 (or programming experience) and a strong interest in the subject matter. Lab sessions will be provided to give extra support.



Computer Networks

Harvard CS 143

Fall 2016

Mondays and Wednesdays from 2:30-4 pm, Maxwell Dworkin 119
Instructor: H.T. Kung

Networking has enabled the emergence of mobile and cloud computing, creating one of the most important technological paradigm shifts in computing of the past decade. The next major paradigm shift in computer networking will be the emergence of 5G wireless mobile networks, which will begin to replace the current 4G networks as early as 2019/2020. These further advancements in wireless networking are expected to transform the technological landscape over the next decade by enabling an endless possibility of new applications, including the Internet of Things and wireless virtual reality, through the emergence of wireless networks with gigabit speeds.

In order to play a role in this era of new network-powered advancements, students must have a thorough understanding of emerging networking topics, especially in the wireless domain. Rather than teaching the basic networking protocols, which have become very mature and can be treated as a black box, in CS 143, we will teach the new issues and topics of interest, which will power important emerging applications. This focus on upcoming wireless advancements and mobile applications is the motivation for CS 143 this semester.

The class will be organized into the following modules:

  1. A View of the Future: 5G—A World with Gigabit Wireless Networking
  2. Basic Networking Concepts
  3. Fundamental Radio Propagation Physics
  4. Basic Wireless Networking Concepts: Wi-Fi, MAC protocols
  5. New Fundamentals of Mobile Networking: 5G Millimeter Wave, Ultra Dense Networks (UDNs)
  6. Advanced Topics in 5G: Beam Forming, MIMO
  7. 5G System Infrastructure: Network Function Virtualization and Software Defined Networking
  8. 5G Applications: The Internet of Things and Massive Machine Type Communications
  9. Machine Learning Assisted Networking
Students in the course will read and discuss the latest wireless networking literature, gain hands-on experience through a programming assignment, and have the opportunity to present the concepts learned in the course through writing a final position paper on emerging wireless networking technologies.

Prerequisites: CS50 (or programming experience) and strong interest in the subject matter. Lab sessions will be provided to give extra support.



At-Scale Computing

Harvard CS 242

Spring 2016

Mondays and Wednesdays from 2:30-4 pm, Maxwell Dworkin 223
Instructor: H.T. Kung

Click Here for Lecture 1 Slides


Scaling computation over parallel and distributed computing systems is a rapidly advancing area of research receiving high levels of interest from both academia and industry. The objective can be scaling up computation size, e.g., for deep neural networks, with only modestly increased energy consumption. The objective can also be scaling down energy usage, e.g., for the Internet of Things (IoT) devices, with only modestly decreased outcome quality. To this end, in this course students will learn principled methods of mapping prototypical computations used in machine learning, IoT, and scientific computing onto parallel and distributed compute nodes of various forms. To master the subject, students will need to appreciate the close interactions between computational algorithms, computer organizations and software abstractions. After having successfully taken this course, students will acquire an integrated understanding of these issues.

The class will be organized into the following modules:

  1. Big picture: use of parallel and distributed computing to scale computation size and energy usage
  2. End-to-end example 1: mapping nearest neighbor computation onto parallel computing units in the forms of CPU, GPU, ASIC and FPGA
  3. Communication and I/O: latency hiding with prediction, computational intensity, lower bounds
  4. Computer architectures and implications to computing: multi-cores, CPU, GPU, clusters, accelerators, and virtualization
  5. End-to-end example 2: mapping convolutional neural networks onto parallel computing units in the forms of CPU, GPU, ASIC, FPGA and clusters
  6. Great inner loops and parallelization for feature extraction, data clustering and dimension reduction: PCA, random projection, clustering (K-means, GMM-EM), sparse coding (K-SVD), compressive sensing, FFT, etc.
  7. Software abstractions and programming models: MapReduce (PageRank, etc.), GraphX/Apache Spark, OpenCL and TensorFlow
  8. Advanced topics: autotuning and neuromorphic spike-based computing
Students will learn the subject through lectures/quizzes, programming assignments, research paper presentations, and a final project. Students will have latitude in choosing a final project they are passionate about. They will formulate their projects early in the course, so there will be sufficient time for discussion and iterations with the teaching staff, as well as for system design and implementation. Industry partners will support the course by giving guest lectures and providing resources.

The course will use server clusters at Harvard as well as external resources in the cloud. In addition, labs will have access to state-of-the-art IoT devices and 3D cameras for data acquisition. Students will use open source tools and libraries and apply them to data analysis, modeling, and visualization problems.

Prerequisites: (1) programming experience (Python, MatLab or C/C++ should be fine); (2) basic knowledge in systems and machine organization; (3) familiarity in data structures and algorithms; and (4) maturity in mathematics (e.g., undergraduate linear algebra and statistics). For students with strong interest in the subject matter and related research topics, one of these four requirements may be waived. Labs and extra support will provide preparation in the first weeks of the semester to help students quickly obtain the background necessary to excel in the course.

Software Defined Networking for Computing

Harvard CS 144r/244r

Fall 2015

Mondays and Wednesdays 2:30-4:00pm, Room MD 119
Instructor: H.T. Kung

Click Here for Course Schedule

Click Here for Lecture 1 Slides


Networking has evolved to a new era of supporting large-scale distributed computing for big data. These new networks are software defined in the sense that they can be dynamically programmed to meet various communications needs in computing.

In CS 144r/244r, students will obtain the knowledge and experience necessary not only to understand this momentous technological shift in networking, but also to be able to play a part themselves. To this end, the course will not only teach the fundamental concepts necessary to understand this emerging field of software-defined networking, but also real-world applications of the technologies such as next-generation ultra-dense 5G cellular networks, as well as their connection with complementary topics such as machine learning.

The class will be organized into the following eight modules:

  1. A View of the Future: The Promise of Next Generation Networking
  2. Basic Network Design and Protocols
  3. Datacenter Design and Networking
  4. Software Defined Networking
  5. Cross-Disciplinary Applications of Next Generation Networking: Machine Learning, Distributed Computing, and Consumer Applications
  6. Wireless Networking: 5G Networks and Millimeter Wave Communication
  7. Connecting the Internet of Things
  8. Next Generation Networking Enabled Infrastructure: Network Function Virtualization
Students will gain mastery of the subject through lectures, programming assignments, discussion of the latest networking literature, and a final project. Students will have wide latitude in designing and implementing a final project they are passionate about. Industry partners will support the course and provide resources for the final projects.

Prerequisites: Programming experience (CS 50 should be fine) and interest in the subject matter. Importantly, CS 143 is NOT a prerequisite. Labs and extra support will provide intensive preparation in the first weeks of the semester to help students quickly obtain the networking background necessary to excel in the course.

Computing Foundations for Computational Science

Harvard CS 205

Spring 2015

Mondays and Wednesdays 2:30-4:00pm, Pierce Hall 209
Instructor: Professor H.T. Kung

Click Here for Course Abstract


Computational science grows in popularity each day. Via parallel and distributed computing, advances in the area have enabled practitioners in diverse fields, including physical sciences, biotechnology, medicine, finance, and engineering, to discover and recognize principles and patterns in data. To understand, harness, and further these powerful capabilities, students must grasp both relevant computer science foundations and programming skills. To this end, this course consists of foundational modules and programming tasks essential to the theory and practice of data science:

Foundational Modules

  1. Data-driven model learning
  2. Parallel computing, GPU
  3. Distributed computing, MapReduce
  4. Graphlab
  5. Neuromorphic computing for asynchronous data flows
  6. IO complexity and management
  7. Compressive sensing and dimension reduction
  8. Optimistic concurrency control
  9. Consensus protocols
  10. Distributed machine learning

Programming Tasks

  1. MapReduce
  2. OpenCL
  3. MPI
  4. Graphlab
  5. Distributed learning
The course instruction has two components: lectures and labs. Lectures will focus on teaching the foundational modules based on research literature. The labs will provide assistance on the programming tasks, and will use server clusters at Harvard as well as remote resources in the cloud. In addition, labs will have access to state-of-the-art 3D cameras for data acquisition. Students will learn to use open source tools and libraries and apply them to data analysis, modeling, and the visualization of machine learning and scientific computing problems.

Students will complete weekly quizzes on assigned reading materials, practice skills through programming tasks, and implement a final project (in 3- or 4-person teams) using concepts and skills learned in the course.

Prerequisites: 1) programming experience (Python and CS50 should be fine); (2) basic knowledge in systems programming and machine organization (e.g., CS61); (3) familiarity in algorithms (e.g., CS124); and (4) maturity in mathematics (e.g., undergraduate linear algebra and statistics). For students with strong interest in the subject matter, one or two of these four requirements may be waived.

Harvard CS 143: Computer Networks

Fall 2014

Mondays and Wednesdays 1:00-2:30pm, Room Maxwell Dworkin 119
Instructor: Professor H.T. Kung

Click Here for Course Abstract

Click Here for Course Schedule


Networking has enabled the emergence of mobile and cloud computing, creating the most important technological paradigm shift in computing of the past decade. Further advancements in networking are expected to similarly transform the technological landscape over the next decade through the emergence of the Internet of Things and gigabit wireless networks.

In order to play a role in this era of new network-powered advancements, students must have a thorough understanding of emerging networking topics. Rather than teaching the basic networking protocols, which have become very mature and can be treated as a black box, in CS 143, we will teach the new issues and topics of interest which will power important emerging applications. This focus on upcoming applications is the motivation for CS 143 this semester.

The class will be organized into the following nine modules:

  1. Basic Networking Concepts: Protocol Layering
  2. Internet of Things: All-service Bluetooth Low Energy (BLE)
  3. Data Center Networking: Software Defined Networking
  4. Web-scale Networking: Distributed Cloud Computing and Virtual Machine Migration
  5. Content Networks: Video Streaming
  6. Network Security: Defense Against Protocol Exploitation
  7. Wireless Networking: Wireless Mesh, Geographic Routing
  8. Machine Learning Assisted Networking: End-to-end Application Adaptive Protocols
  9. Cyber-physical Networks: Vehicular Networking
Students will have the opportunity to implement the concepts learned in the course through programming assignments, read and discuss the latest networking literature, and design and implement a final project.

Prerequisites: Strong interest in the subject matter and programming experience (CS50 should be fine). Lab sessions will be provided to give extra support.




Secure and Intelligent Internet of Things

Harvard CS 144r/244r: Network Design Projects

Spring 2014

Mondays and Wednesdays 2:30-4:00pm, Room Maxwell Dworkin 119
Instructor: H.T. Kung

Click Here for Course Schedule


In recent years we have witnessed a wave of new Internet of Things (IoT) devices in consumer markets. These include wearables such as wrist watch computers and ear phones for personal entertainment, work assistance and bio-metric monitoring. Enabled with energy-efficient computing cores and sensors, these devices can be programmed to perform a variety of personalized or context-specific tasks at extremely low power consumption. Many believe that IoT will play a key role in the next frontier of computing.

In this course we will study IoT and related devices and services. We will focus on new opportunities and challenges, including security on tiny devices and use of machine learning technology to enhance their usage.

The course will consist of these five components:

  1. Overview of IoT technology and services
  2. Networking for IoT
  3. Security and Privacy for IoT
  4. Machine Learning in Small-Data for the local context and for Wearables in IoT
  5. Course projects formulation and execution
Industrial partners will help facilitate course projects.

Project devices could include:

  • Depth sensing (Kinect and depth cameras)
  • Samsung Galaxy and watch
  • Raspberry Pi
  • Pebble watches
  • Google glass
  • Biometric sensors (Fitbits, Nike Fuel)
  • Intel Galileo board
  • Open source smart thermostats