EE290S – FALL 2016

Codes for the modern age: distributed storage, inference, computation, and learning

This course covers codes for the “modern age,” going well beyond their highly successful use in communication systems over the past few decades. Topic areas covered centers around the use of codes for (i) large-scale distributed storage systems that form the core of today‚Äôs massive data centers; (ii) learning and computing for settings like graph sketching, decision trees, and reducing the latency of parallel machine learning; and (iii) fast computation and inference that are designed to exploit sparsity in a variety of settings including for compressed sensing, massive sparse FFT computation, compressive phase-retrieval, quantum state tomography, and group-testing for a wide variety of applications such as imaging (MRI and optical), astronomy, wide-band spectrum sensing, scientific computing, and fast neighbor discovery for large-scale Internet-of-Things applications.

The prerequisites for the course are basic undergraduate linear algebra, basic probability (EE 126 or equivalent) and basic familiarity with signals and systems (though this is less important). The class will emphasize breadth and should be accessible to motivated undergraduates who are interested in research, as well as incoming graduate students. There will be no exams, but students are expected to read papers and give presentations of selected literature. There will be a final project that can feature either existing literature or new research, and can be theoretical, algorithmic, and/or experimental in focus.

Course information

Time and place: Tuesdays & Thursdays: 11-12:30, 293 Cory Hall

Instructor: Kannan Ramchandran (kannanr at eecs dot berkeley dot edu)

Point of contact: Orhan Ocal (ocal at eecs dot berkeley dot edu)

Office Hours: Tuesdays from 1:00 pm to 2:00 pm at 258 Cory Hall

Important communication will be made through bCourses. There is also a Piazza for the course that you can enroll.


Grading breakdown

Project (60%):

Each student needs to complete a course project, and give an oral and written presentation.

Scribing (15%):

You need to sign up to scribe a lecture using the google doc sent to your email. You can download the scribe template here.

Presentations (15%):

Students have to present selected reading material at the end of each module.

Class participation (10%):

Attendance and contribution to the lecture.

Assignments (bonus):

We will have a few assignments. These are for your benefit only, and they will not be graded. To incentivize you to provide solutions, we will give bonus points for those providing elegant solutions.

Important deadlines

Course content

Course overview and preliminaries on coding theory

Module 1: Coding for distributed storage and computation

Module 1A: Coding for distributed storage

Module 1B: Coding for parallel computing and machine learning

Module 2: Sparsity, inference and learning


Background on information theory and coding

Module 1 resources

Module 1A

More resources will be added as needed.