ENGR 76: Information Science and EngineeringStanford University,
Ayfer Özgür,
Spring Quarter 2022–23
Please check out Canvas, which will serve as the primary mode of communication for the class. Please see our information sheet, which has general information about the course (including FAQs). UPDATE (March 15, 2023): We have removed the enrollment cap, so any interested students can now enroll freely. Previous announcement: Due to high demand, we have slightly increased the enrollment cap for the course. There may still be a few open slots. If you cannot enroll, please add yourself to the waitlist and we will try to accommodate as many students as we can. Thank you!
In this course, we will learn about the principles and techniques underlying the design of modern information, communication, and decision-making systems. How do we measure how much information we have? How can we represent the same information with less memory? How can we encode information to reliably communicate it over error-prone media? We will introduce the basic notions required to address these questions, and consider applications from those mentioned above, to machine learning, and COVID testing. Students will get a hands-on appreciation of these concepts by undertaking two main projects. In the first, students will develop a system for compressing images, and explore the issues and trade-offs involved. In the second, students will communicate data over a speaker-to-microphone audio medium, and explore encoding strategies for making this system reliable. Course StaffInstructorAyfer Özgür Course Assistants
Times and Places
PrerequisitesThe course does not require any specific preparation. We will develop the mathematical language and tools we need from probability theory and Fourier analysis from scratch. The project will involve some coding and CS 106A or equivalent is recommended. ProjectsThe course will consist of two projects, which will be divided into weekly subprojects. The projects will explore how concepts taught in class can be used to build real systems for storing and communicating information efficiently. The projects will involve coding and experimentation, with appropriate guidance. The projects will have both structured and open-ended components, allowing you to internalize the concepts and play with new ideas. The first project will focus on compression of images and audio, which we encounter every day when we use JPEG or MP3 files. You'll learn about compression techniques like Huffman coding, frequency domain transforms, as well as ideas behind lossy compression which allow substantial space savings without perceptible loss in quality. The second project will focus on communication through a noisy physical medium. We'll work with an audio-based channel, transmitting data from the speaker for your laptop and receiving (distorted) audio through the microphone. We'll then make this system robust to various noise sources in the environment with the use of error correction codes, frequency-domain filtering and machine learning techniques. The project will also introduce basic concepts of data transmission through physical channels, including (de)modulation and synchronization. QuizzesWe will release a small quiz on Gradescope after each lecture. The quizzes will be untimed and allow multiple submissions. Grading70% Projects, 30% Quizzes |