1.
Introduction to Computer Science
Instructor: Gerard de Melo
Designed to appeal to a diverse audience, this course examines some of the fundamental ideas of the science of computing. Lectures and hands-on assignments cover a wide variety of topics such as hardware organization, the Internet, computer programming, limits of computing, and graphics. No prerequisite. |

2.
Mathematics for Computer Science
Instructor: John Steinberger
This course aims to introduce the fundamental mathematical techniques useful for computer science undergraduate majors, illustrated with a rich spectrum of applications. Modern computer science education requires the students to be equipped with broad knowledge in mathematics, so that they could cope with current and future technological challenges handily and innovatively. In this course, mathematical techniques from algebra, geometry, probability theory, stochastic modeling, and information theory will be covered. These techniques will be applied to algorithmic and design problems in various topics, including internet, cryptography, distributed systems, wireless sensor network, optimization, etc. Finally, this course introduces the students to deep scientific issues in the foundation of computing such as undecidability, complexity, and quantum computers. |

3.
Algorithm Design
Instructor: Jian Li
This course gives an introduction to the basics of algorithm, common algorithm design techniques, and the analysis of running time (complexity). The main contents include: tools of algorithm analysis, divide and conquer algorithms, dynamic programming, greedy algorithms etc. algorithm design techniques, and NP complete, randomized algorithms, approximation algorithms and other advanced topics. |

4.
Theory of Computation
Instructor: Ran Duan
This course gives an introduction to the basics of computation theory, including: Finite Automata, Regular language, Pushdown Automata, Context-Free Grammars, Turing machine, undecidablity, and computational intractable topics (NP complete, PSPACE, BPP etc). |

5.
Network Science
Instructor: Thomas Moscibroda
Network science is a new and emerging scientific discipline that examines the interconnections among diverse physical or engineered networks, information networks, biological networks, cognitive and semantic networks, and social networks.In this course, we examine the many facets of internet from the algorithmic perspective, including for instance the mathematical modeling of large-scale networks, information retrieval algorithms for massive data sets, algorithmic game theory and electronic commerce. Specific topics include small world phenomena, power law distributions, rank aggregation, web crawling, hubs and authorities, clustering large data sets, streaming algorithms, network routing, Nash equilibrium, market clearing, mechanism design, auction theory, social networks, etc. |

6.
Fundamentals of Cryptography
Instructor: Periklis Papakonstantinou
The purpose of this unit is to introduce the basic concepts of modern cryptography. Two main issues related to the distribution of digital content are privacy of information and origin of data. After a short introduction about Algebra, privacy issues and solutions are discussed in the context of modern private-key and public-key cryptography. Next, we will review tools allowing authentication of digital content using hash function and digital signatures. The presented constructions are building blocks for designing secure systems and protocols for real-world applications. Attacks and security analysis of the cryptographic schemes and protocols will also be discussed. |

7.
Game Theory
Instructor: Pingzhong Tang
It is preferable that students have studied basic linear algebra, and have basic calculus skills. Although this is not required because we will develop the mathematical skills as we introduce the material. This course will serve as an introduction to game theory. We will begin from the very basics of game theory. We will work on important concepts like Nash equilibria, and end with a taste of more advanced subjects like evolutionary game theory and games on graphs. |

8.
Computer Security: Theory and Practice
Instructor: Yu Yu
In this course, we will introduce the notion of information security, namely confidentiality, integrity, availability, and other attributes of information that people care about, and cryptographic primitives for preserving information security. We will look into the design of modern ciphers and their real-life implementations in embedded systems, in particular, DES (Data Encryption Standard), AES (Advanced Encryption Standard). Finally, we survey mathematical and physical attacks against embedded systems, and the corresponding countermeasures. |

9.
Quantum Information
Instructor: Giulio Chiribella
Quantum Information is a course offered to upper level undergraduate students (junior or senior students in the Yao Class, physics, EE, and computer science departments) and graduate students. The course will cover many topics at the forefront of the new field of quantum information science, including, for instance, quantum entanglement theory, quantum cryptography, quantum communication theory, quantum computing models, quantum algorithms and complexity theory, quantum error correction and fault-tolerant computation, physical implementation of quantum computation, communication and networks. |

10.
Machine learning
Instructor: Liwei Wang
Machine learning studies how computers can learn from experiences. Combining ideas from theoretical computer science and statistics, researchers have developed many learning methods and their applications to computer vision, bioinformatics, natural language processing etc. are highly successful. Machine learning theory addresses the fundamental problems in learning. It studies the power and theoretical limits of learning. The aim is to provide deep understand of learning and the guidance for the development of practical algorithms. |

11.
Advanced Computer Graphics
Instructor: Shimin Hu
This course introduces basic concepts, elements, algorithms and systems of computer graphics. The main contents include color model, illumination model (Phong model, Cook-Torrance model), phong shading and Gouraud shading, texture mapping, ray tracing, curve and surface modeling, solid modeling, geometry processing, etc. |

12.
Operating System
Instructor: Wei Xu
This course teaches the basic principles of operating systems: computer and operating system structures, mechanisms and policies, resource management, implementation of multitask systems, memory management, file systems, I/O subsystem and device management, communication and networking, protection and security. Students are expected to spend additional time to gain hands-on experience. |

13.
Distributed Computing(Fundamentals and Systems)
Instructor: Wei Chen
Through this course, students will learn fundamental algorithms and principles in distributed computing systems, such as logical clocks, consensus problem, failure detection, Byzantine agreement, distributed locking, and gossip protocols. They will also learn how to design and analyze distributed systems using these fundamental algorithms and principles through the study of a number of advance distributed systems. |

14.
Computational Biology
Instructor: Jianyang Zeng
To introduce various computational problems for analyzing biological data (e.g. DNA, RNA, protein sequences, and biological networks) and the algorithms for solving these problems. Topics covered include: biological sequence analysis, gene identification, regulatory motif discovery, genome assembly, genome duplication and rearrangements, evolutionary theory, clustering algorithms, and scale-free networks. |

15.
Research Immersion Training
Instructor: Jianyang Zeng
This course is designed for the undergraduates (juniors) and serves as the foundation for Research Practice and Diploma Project (Thesis). The topics include algorithm theory, quantum network, complexity, cryptography, security, game theory and so on. In order to enhance their ability in practice, innovation and team work, the students will be arranged to join different groups for discussion and practice based on their interest. |

16.
Research Practice
Instructor: Professors from top universities in the USA and IIIS, Tsinghua University and Research Directors of Renowned Institutes
Research Practice is a practical course in which students conduct research practices for one semester in renowned institutes both at home and abroad. Each student will be assigned a supervisor and participate in cutting-edge projects on theoretical computer science to carry out research-based activities. The course aims to get students involved in the latest development of theoretical computer science. It will cultivate a better understanding of the theory and applications among students and give them the opportunity to publish papers on their respective research practices. In this course, students are required to take part in formal presentations on research practices, including thesis proposal, mid-term and final defenses. |

17.
Speech Science, Technology and Innovative Applications
Instructor: P.C. Ching, Tan Lee, Helen Meng, William S.-Y. Wang, Gerard de Melo
Speech communication refers to the process of transferring information from one person to another by speaking in a specific language. It is a highly inter-disciplinary subject, which is related to physiology, linguistics, phonetics, signal processing, and computer science. Many interesting and impactful computer applications have been developed to enable and improve human-computer and human-human speech communications. In this course, students will learn the scientific fundamentals underlying human speech communication, the basic techniques of computer speech and language processing, state-of-the-art spoken language technologies and their applications. Advanced research topics and future directions will also be discussed. |

18.
General Physics(1)
Instructor: Alioscia Hamma
Calculus-based first physics course for physics majors and students with a serious interest in physics. Students are required to actively participate during the lectures, asking questions, and having questions asked. This class will provide you with an enhanced opportunity to acquire a good understanding of fundamental mechanics and thermodynamics and to learn how to apply this understanding to physics and beyond. |

19.
The Physics of Information
Instructor: Mile Gu
The 21st Century has seen a string of profound discoveries that interface physics, information theory and computer science. This course will introduce undergraduate students this exciting frontier by connecting the various physics and computational ideas they learn in first year. After completion of the course, students will appreciate how information theoretical principles led to new understanding in physics, and how new physics facilitated new models of computation. Topics include physical consequences of the Church Turing thesis, unravelling Maxwell's Demon through information thermodynamics, and the information theoretic consequences of quantum mechanics. |

20.
General Physics(2)
Instructor: Luyan Sun, Mile Gu
This course is a follow-up course of General Physics I and for undergraduate students with serious interests in physics and interdisciplinary sciences. The main focus of this course is to cover the most important topics in classical electrodynamics including electrostatics, magnetostatics, Maxwell’s equations for electromagnetic fields, and special relativity. This course will emphasize both basic concepts and solving practical problems. After completing this course, students are expected to gain a good understanding of basic classical electrodynamics. |

21.
Modern Physics (1)
Instructor: Kim Kihwan
This course will cover the basic formalism and modern applications of optics and atomic physics. In the optics part, we will introduce geometric optics, wave optics, and their applications in the current research frontier such as quantum information science. For the atomic physics part, we will present many interesting experiments performed in early 20th century and explain how these results lead to the modern understanding of atomic structure. Modern applications of optics and atomic physics, such as laser and laser cooling of atoms, will also be discussed. |

22.
Modern Physics (2)
Instructor: Man Hong Yung
This course provides undergraduate students with background in science and engineering the foundation to understand many key aspects of quantum and statistical physics, which are essential for learning advanced topics such as condensed-matter physics, quantum field theory, and quantum information science. Conceptual understanding of the physical ideas and detailed mathematical derivations will be equally emphasized. Active class participation of students is expected. |

23.
Algorithms and Models for Big Data
Instructor: Periklis Papakonstantinou
Analysis, computation, and privacy issues over environments involving a huge amount of data. Formal approaches: (i) datastream computation, (ii) property testing of large objects, (iii) big data statistics and machine learning techniques (Bootstrapping, Bagging and their variants), and if time permits (iv) introduction to differential privacy (anonymizing databases). For these settings we study models and algorithms. |

24.
Introduction to Computer Networks
Instructor: Longbo Huang
This course aims at giving a comprehensive introduction to the fundamentals of computer networks and network performance analysis. The course contains two parts. The first part covers various networking topics including network principles, Ethernet, WiFi, routing, inter-networking, transport, WiMax and LTE, QoS, and physical layer knowledge. The second part presents mathematical techniques for modeling, analyzing and designing computer systems, including convex optimization, queueing theory, game theory and stochastic analysis. This course is intended for junior or senior undergraduate students in computer science or electrical engineering. |

25.
Java Programming I
Instructor: Yongcai Wang
Introduce basic grammar of Java programming design, object-oriented programming approach, Java collections, generics, exception handling, multithreading, IO interface, graphical user interface, data storage and access, Severlet, etc. |