ENGR 76: Information Science and Engineering

Stanford University, Ayfer Özgür, Spring Quarter 2023–24

Please check out Canvas, which will serve as the primary mode of communication for the class.

Logistics Updates (March 29, 2024): Important information for the Spring 2023-2024 offering. Please review the following information before you enroll in the course.

Grading: 65% Projects, 35% Quizzes.

Participation: Students who are at the boundary of A and A+ will get bumped up to A+ if they have participated substantially in class. To show substantial participation, students need to attend at least 75% of classes and participate actively in classes.

Quizzes: We will have weekly quizzes on Gradescope. These will cover concepts taught in that week's class and will be released on Thursday. They will be due at 1pm before the next lecture on Tuesday. The quizzes will be untimed and will allow multiple submissions.

Attendance: We have removed the 50% attendance policy.

Projects: The course consists of two projects - Project 1 will focus on compression of images and Project 2 will focus on communication through a noisy physical medium (more information about these in the Projects section). These will comprise of weekly assignments which build on work done in prior assignments. There will be a total of 9 weekly project assignments - Project 0, Project 1a to 1d and Project 2a to 2d. Project 0 will just be a basic Python setup and tutorial. Each weekly project assignment will be released on Thursday and will be due the next Friday. The solutions will be uploaded on Monday, so that they can be used for the next weekly project assignment.

Sound Sensitivity: The second project involves experimenting with digital transmission over an audio-based channel. This can be disturbing for people with sensitivity to sound. Please take this into consideration before you register for the course. Please contact one of the head TAs for more information if you are concerned about this point.

Late/Exception Policy: The following policy will be strictly enforced and no exceptions will be made:

  • There will be a quiz after every lecture due before the following lecture. The answers of the quiz will be automatically published after the deadline. We will drop your lowest quiz score to accommodate missed quizzes due to sickness or emergency. No other extensions and exceptions will be provided.

  • As stated before, weekly project assignments will be released each Thursday, and they will be due the next Friday. The solutions will be uploaded on Monday. Each student will have a total of 5 late days per project (i.e., total 5 late days for Project 0 to 1d and 5 for Project 2a to 2d). Once these late days are exhausted, any assignments turned in late will be penalized 20% per late day. However, no assignment will be accepted more than 3 days after its due date, at which point the solutions will be released automatically. Any fraction of a late day counts as one late day. These free late days are to be used only in cases of emergency and sickness. As assignments are released and due weekly, we strongly recommend using late days sparingly to avoid falling behind on subsequent deadlines. No exceptions to this policy will be granted to maintain structure and fairness in the class.

Academic Accommodations: If you need an academic accommodation, you should initiate a request with the OAE. We request you to share your accommodation letters with the instructor and the head CAs as soon as possible. Due to the weekly structure of the projects, we cannot provide an extension of more than 3 days to any student under any circumstances. Similarly, only an extension of 1 day will be provided for the quizzes. We will grant an extension only if we receive your request before the deadline. Please send an email to Siddharth and the instructor for any communication regarding extensions.

Enrollment Update (March 29, 2024):

  • We request all interested students to enroll before the quarter begins as the first quiz and assignment are released in the first week of the quarter. We would not be able to provide accommodations for students who enroll late.

Image of people on their phones 

Images saved using the JPEG format take as little as 10% of the memory needed to store the raw image. The wireless environment that your cellphone uses — 4G, 5G, Wi-Fi and Bluetooth — is noisy and error-prone, and yet we still manage to use wireless transmission to communicate reliably. Our ability to compress video to as little as 0.1% of its raw size, with little perceptible difference, allows us to stream high-quality video over the internet. Your computer's hard drive or solid state drive often suffers errors in storage and has to correct itself. How is this possible? What allows us to compress information and cut through errors in communication and storage? What is information?

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 Staff

Instructor

Ayfer Özgür
aozgur@stanford.edu
Office Hours: Mon 3:00-4:00 PM, in Packard 214; or by appointment on Zoom.

Course Assistants

Times and Places

  • Lectures: Tue, Thu 1:30 PM–2:50 PM. STLC 111. Participation highly encouraged. Live-streamed on Zoom and recorded; recordings will be available on Canvas after the lecture.

  • Project Discussion Sessions: Thu 3:00 PM–3:30 PM. STLC 111 (after the class). Recordings available on Canvas after the session.

  • Office Hours: See Canvas.

Prerequisites

The course does not require any specific preparation in terms of mathematical background. We will develop the mathematical language and tools we need from probability theory and Fourier analysis from scratch. The projects will involve coding and CS 106A or equivalent is required. CS106B is not required but it will make it easier for you to deal with the coding aspects of the projects.

Projects

The 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 will 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.

Logistics: Each project will comprise of weekly assignments which build on work done in prior assignments. There will be a total of 9 weekly project assignments - Project 0, Project 1a to 1d and Project 2a to 2d. Project 0 will just be a basic Python setup and tutorial. Each weekly project assignment will be released on Thursday (after the project session) and will be due the next Friday. The solutions will be uploaded on Monday, so that they can be used for the next weekly project assignment.

Project Sessions: There will be a weekly project session, where Wei-Ning (our lead TA for projects) will overview the project assignment for the next week and provide initial guidance on how to approach it. This session will be held in-person after the class on Thursday and will be recorded and posted on Canvas. Participation is not required but you are strongly encouraged to watch the recording before you get started on the assignment.

Quizzes

We will have weekly quizzes on Gradescope. These will cover concepts taught in that week's class and will be released on Thursday. They will be due at 1pm before the next lecture on Tuesday. The quizzes will be untimed and will allow multiple submissions.

Grading

65% Projects, 35% Quizzes

Participation: Students who are at the boundary of A and A+ will get bumped up to A+ if they have participated substantially in class. To show substantial participation, students need to attend at least 75% of classes and participate actively in classes.

Academic Accommodations

If you need an academic accommodation, you should initiate a request with the OAE. We request you to share your accommodation letters with the instructor and the head CAs as soon as possible. Due to the weekly structure of the projects, we cannot provide an extension of more than 3 days to any student under any circumstances. Similarly, only an extension of 1 day will be provided for the quizzes. We will grant an extension only if we receive your request before the deadline. Please send an email to Siddharth and the instructor for any communication regarding extensions.