EE 16A | Designing Information Devices and Systems I

Summer 2017


Email olivia-ee16a[at] if you do not have access to the course Piazza
Wk Date Lecture Topic ( Video playlist ) Section Lab Homework
1 06/19 Mo Welcome and overview (Slides) Section 1A (dis) (ans) Anaconda Setup Homework 1 (PDF) (iPython) (Solutions) (Self-grade)
06/20 Tu Gaussian Elimination (Note 1) Section 1B (dis) (iPython) (ans)
06/21 We System of Equations (Note 2) (Note 3) Section 1C (dis) (ans) (iPython Bootcamp) (Solutions)
06/22 Th Transformations (Note 4) (Note 5) Section 1D (dis) (ans)
2 06/26 Mo Inverses (Note 6) (Note 7) Section 2A (dis) (ans) Imaging Lab 1 Homework 2 (PDF) (iPython) (Solutions) (Self-grade)
06/27 Tu Fundamental Matrix Subspaces 1 (Note 8) Section 2BC (dis) (ans)
06/28 We Fundamental Matrix Subspaces 2 Imaging Lab 2
06/29 Th pageRank, Eigenvectors/Eigenvalues 1 (Note 10) Section 2D (dis) (ans)
3 07/03 Mo pageRank, Eigenvectors/Eigenvalues 2 Section 3A (dis) (ans) No Lab Homework 3 (PDF) (iPython) (Solutions) (Self-grade)
07/04 Tu No Lecture – 4th of July! No Section
07/05 We Change of Basis and Diagonalization Section 3C (dis) (ans) Imaging Lab 3
07/06 Th Network Flow, Circuits Section 3D (dis) (ans)
4 07/10 Mo Circuits Intro – KVL/KCL (Note 11) Section 4A (dis) (ans) Buffer Section Homework 4 (PDF) (Solutions) (Self-grade)
07/11 Tu Midterm 1 (PDF) (Solutions) Series and Parallel Equivalence (Note 12) Section 4B (dis) (ans)
07/12 We Thevenin and Norton Equivalents Section 4C (dis) (ans) Touch Screen Lab 1
07/13 Th Superposition Section 4D (dis) (ans)
5 07/17 Mo Capacitive touch screen 1 (Note 13) Section 5A (dis) (ans) Touch Screen Lab 2 Homework 5 (PDF) (Solutions) (Self-grade)
07/18 Tu Capacitive touch screen 2 (Note 14) Section 5B (dis) (ans)
07/19 We Comparators (Note 15) Section 5C (dis) (ans) Touch Screen Lab 3
07/20 Th Feedback and Amplifiers Section 5D (dis) (ans)
6 07/24 Mo More op amps Section 6A (dis) (ans) Touch Screen Lab 4 Homework 6 (PDF) (Solutions) (Self-grade)
07/25 Tu Timer Design Section 6B (dis) (ans)
07/26 We Locationing (Note 9) (Note 16) Section 6C (dis) (ans) Buffer Section
07/27 Th Trilateration Section 6D (dis) (ans)
07/28 Fr Midterm 2 (PDF) (Solutions) No Lecture No Section No Lab
7 07/31 Mo Least Squares 1 (Note 17) Section 7A (dis) (ans) APS Lab 1 Homework 7 (PDF) (iPython) (Solutions PDF zip) (Self-grade)
08/01 Tu Least Squares 2 Section 7B (dis) (ans) (iPython 1) (iPython 2)
08/02 We Orthogonal Matching Pursuit 1 (Note 18) Section 7C (dis) (ans) APS Lab 2
08/03 Th Orthogonal Matching Pursuit 2 Section 7D (dis) (ans)
8 08/07 Mo Gram Schmidt 1 (Note 19) Section 8A (dis) (ans) APS Lab 3 Homework 8 (PDF) (iPython) (Solutions) (Self-grade)
08/08 Tu Gram Schmidt 2 + QR Decomposition Section 8B (dis) (ans)
08/09 We Review Session No Section Buffer Section
08/10 Th Review Session No Section
08/11 Fr Final Examination No Lecture No Section No Lab

Weekly Schedule


Piazza (Ask Questions Here)

Recommended Text

Additional Reader Text


Extra Resources

Setting up How-To's

Course Staff


Daniel Aranki

Filip Maksimovic


Olivia Hsu
Head TA
Alan Dong
Content TA
Mudit Gupta
Discussion/Software TA
Kimmy Ko
Discussion TA
Dominic Labanowski
Lab TA
Seiya Ono
Head Lab TA
Thomas Rembert
Lab TA
William Scheideler
Discussion TA
Nikhil Shinde
Lab TA
Matt Yeh
Discussion/Homework TA
Titan Yuan
Content TA
Grace Zhang
Lab TA
Janny Zhang
Discussion TA

Please add to the end of all emails


Course Info

The EECS 16 series (Designing Information Devices and Systems) is a pair of freshman-level courses introducing students to EECS, with a particular emphasis on how we deal with systems interacting with the world from an information point of view. Mathematical modeling is an important theme throughout these courses, and students will learn many conceptual tools along the way. Throughout this series, generally applicable concepts and techniques are motivated by, and rooted in, specific exemplary application domains. Students should understand why they are learning something.

EECS 16A focuses on modeling as abstraction -- a way to see the important underlying structure in a problem -- and introduces the basics of linear modeling, largely from a "static" and deterministic point of view. EECS 16B deepens the understanding of linear modeling and introduces dynamics and control, along with additional applications. Finally, EECS 70 (which can be thought of as the third course in this sequence --- except without any labs), introduces additional discrete structures for modeling problems, and brings in probability.

In EECS 16A in particular, we will use the application domains of imaging and tomography, touchscreens, and GPS and localization to motivate and inspire. Along the way, we will learn the basics of linear algebra and, more importantly, the linear-algebraic way of looking at the world. We will emphasize modeling and using linear structures to solve problems---not on how to do computations per se. We will learn about linear circuits, not merely as a powerful and creative way to help connect the physical world to what we can process computationally, but also as an exemplar of linearity and as a vehicle for learning how to do design. Circuits also provide a concrete setting in which to learn the key concept of "equivalence" --- an important aspect of abstraction. Our hope is that the concepts you learn in EECS 16A will help you as you tackle more advanced courses and will help form a solid conceptual framework that will help you learn throughout your career.

Grade Breakdown

  • Homework: 15%
  • Labs: 15%
  • Midterm 1: 17%
  • Midterm 2: 17%
  • Final: 33%
  • APE Points: 3%

Homework Party

Most Fridays there will be a "homework party" in 521 Cory from 2pm-5pm. Homework party during week 6 will be on Wednesday from 2-5pm in 140 Cory. This is optional.

GSIs will be present in shifts as will some Academic Student Employees (ASEs). Students are expected to help each other out, and if desired, form ad-hoc "pickup" homework groups in the style of a pickup basketball game. We highly encourage students to attend homework party.

Homework Grading

The primary way that the homework will be graded is by yourselves. Homeworks for weeks 1 through 7 are due Sunday at 23:59:00, HW8 is due on Wednesday at 23:59:00. You need to turn in both your code and written solutions in the form of a .ipynb file and a .pdf file consisting of your written-up solutions that also includes an attached pdf "printout" of your code. Any homework submissions that are turned in without both .ipynb file and .pdf of the solutions along with the code “printout” (or screenshot) attached will receive a zero on the coded ipython notebook portions of the homework. Submissions after 23:59:00 will not be accepted. If you have any questions about the format of a homework submission, please go to office hours or homework party.

After the HW deadline, official solutions will be posted online. You will then be expected to read them and enter your own scores and comments for every part of every problem in the homework on a simple coarse scale:

0 = didn't attempt or very very wrong,
2 = got started and made some progress, but went off in the wrong direction or with no clear direction,
5 = right direction and got half-way there,
8 = mostly right but a minor thing missing or wrong,
10 = 100% correct.

Note: You must justify every self-grade score with a comment. If you are really confused about how to grade a particular problem, you should post on Piazza. This is not supposed to be a stressful process.

Your self-grades will be due on the Monday following the homework deadline at 23:59:00. Late submissions will not be accepted. If you don't enter a proper grade by the self-grading deadline, you are giving yourself a zero on that assignment. Merely doing the homework is not enough, you must do the homework; turn it in on time; read the solutions; do the self-grade; and turn it in on time. Unless all of these steps are done, you will get a zero for that assignment.

We will drop the lowest homework score from your final grade calculation. This drop is meant for emergencies. If you use this drop half-way into the semester, and request another, we cannot help you.

Just like we encourage you to use a study group for doing your homework, we strongly encourage you to have others help you in grading your assignments while you help grade theirs. This will also help you avoid self-favoritism.

ASEs are going to be grading and sending you occasional comments. Because we have ASE grades, we will catch any attempts at trying to inflate your own scores. This will be considered cheating and is definitely not worth the risk. Your own scores will be used in computing your final grade for the course, adjusted by taking into account ASE scores so that everyone is fairly graded effectively on the same scale. For example, if we notice that you tend to give yourself 5s on questions where ASEs looking at your homeworks tend to give you 8s, we will apply an upward correction to adjust.

ASE grades will be released on Gradescope about one week after the homework deadline. ASEs grade questions either on a “coarse” or “fine” scale for each homework part. Coarsely graded question parts are worth a single point and are based on effort. Finely graded question parts are worth a total of 10 points and are graded using the same self-grading rubric above. Homework regrade requests are typically due on Gradescope within 72 hours of ASE grades being released. If a regrade request is submitted for a part of a question on the homework, the grader reserves the right to regrade the entire homework and could potentially take points off.

Your final homework score will be kept internal to the staff.

If you have any questions, please ask on Piazza.

Lab and Discussion Section Policies

Labs for this class are not open section, you must go to your assigned lab section. If you finish the lab early, we encourage you to help other groups debug their lab. This will help you learn the material better and contribute towards APE credit (see below).

You should aim to get checked-off by the end of the lab. If you don’t make it, you have until the next lab to get checked-off. If you still need to do some work on your lab, you can come to the buffer lab sections. While labs are not meant to be burdensome, they are an essential part of the course. We have the following strict grading policy for labs: If you complete all the labs, you will receive full lab credit. If you fail to complete one lab, you will receive full lab credit. If you miss two or three labs, without excuse, you will receive half credit. If you miss four or more labs, without excuse, you will get an F in the class.

Number of missed labs What happens?
0 or 1 You get full lab credit - 15/15
2 or 3 You get half lab credit - 7.5/15
4 or more You fail the class - F

Please note that the first two labs (Anaconda Setup and iPython Setup) are optional and won't count towards losing lab credit.

Some lab sections are “buffer labs”. “Buffer labs” are a 2 day period in which no new labs begin. During buffer lab sections, you may get checked off for only one lab that occurred between the previous buffer lab section (or start of school) and the current buffer lab section. No other labs may be checked off.

Wires on lab breadboards must be planar. Lab staff will ask students to redo their circuits before debugging them if the wires are non-planar. The definition of planar wires on a breadboard is shown below:

Planar Non-planar

You may go to any discussion section, however, seating priority for any discussion section goes to those officially enrolled. All other students are allowed to remain in the section at the discretion of the discussion TA in charge of that section. We encourage you to go to the same discussion section every week so that the TAs can get to know you personally.

Exam Policies

The 16A Summer 2017 semester will have two midterms and one final. The midterm times will be July 11th, 2017 from 7pm to 9pm and July 28th, 2017 from 6pm to 8pm. The final will be held August 11th, 2017, tentatively between 2pm and 5pm. Makeup exams will not be scheduled.

Please plan for exams at these times and let the Head TA know about any exam conflicts during the first two weeks of the semester per university policy. If an emergency arises that conflicts with the exam times, email the Head TA as soon as possible. Emergency exam conflicts will be handled on a case-by-case basis. Exam conflicts originating from a lecture conflict will not be accommodated.

On exam day, you must bring your Cal student ID to your exam location. Locations and logistics will be posted on Piazza closer to the exam dates. If you do not take your exam in the correct location, a large penalty will be applied to your exam score. Additionally, regrade requests on Gradescope are typically due within a week of exams being released on Gradescope. Late regrade requests will not be considered. If a regrade request is submitted for a part of a question on the exam, the grader reserves the right to regrade the entire exam and could potentially take points off.

If you do substantially better on the final exam compared to one of the midterms, a clobber may be applied.


Any excuse should be emailed to the Head TA. Email the excuse request out as soon as possible. Excuses will be handled on a case-by-case basis. Since there is one homework drop, missing homework is rarely excused. Lab and exam excuses are given more consideration. Examples of situations that merit an exam or lab excuse are medical emergencies and family emergencies.

Altruism, Effort, and Participation (APE)

This part of the class credit covers the effort, participation, and altruism as outlined below. Altruism includes helping others in homework parties and guerilla sessions, debugging in labs, and answering other students’ questions on Piazza. Participation includes an engaged and active attitude in discussion sessions and labs, and asking substantive, insightful questions on Piazza. The effort includes attending instructor and TA office hours, homework parties, and guerilla sessions. Your final APE score will also be kept internal to the course.

Course Communication

The instructors and TAs will post announcements, clarifications, hints, etc. on Piazza.

Hence you must check the EE16A Piazza page frequently throughout the term. (You should already have access to the EE16A Summer 2017 forum. If you do not, please let us know.)

If you have a question, your best option is to post a message on Piazza. The staff (instructors and TAs) will check the forum regularly, and if you use the forum, other students will be able to help you too. When using the forum, please avoid off-topic discussions, and please do not post answers to homework questions before the homework is due. Also, always look for a convenient category to post the question to (for example, each homework will have its own category, so please post there). That will ensure you get the answer faster.

If your question is personal or not of interest to other students, you may mark your question as private on Piazza, so only the instructors will see it. If you wish to talk with one of us individually, you are welcome to come to our office hours. Please reserve email for the questions you can't get answered in office hours, in discussion sections, or through the forum.

It can be challenging for the instructors to gauge how smoothly the class is going. We always welcome any feedback on what we could be doing better. If you would like to send anonymous comments or criticisms, please feel free to use an anonymous remailer like this one to avoid revealing your identity.


We encourage you to work on homework problems in study groups of two to four people; however, you must always write up the solutions on your own. Similarly, you may use books or online resources to help solve homework problems, but you must always credit all such sources in your writeup and you must never copy material verbatim.

We expect that most students can distinguish between helping other students and cheating. Explaining the meaning of a question, discussing a way of approaching a solution, or collaboratively exploring how to solve a problem within your group is an interaction that we encourage strongly. But you should write your homework solution strictly by yourself so that your hands and eyes can help you internalize the subject matter.You should acknowledge everyone whom you have worked with, or who has given you any significant ideas about the homework. This is good scholarly conduct.

Don't Be Afraid to Ask for Help

Are you struggling? Please come talk with us! The earlier we learn about your struggles, the likelier it is that we can help you. Waiting until the last few weeks of the semester to let us know about your problems is not an effective strategy, as the later we are in the semester, the more limited the options are that we can offer you.

Even if you are convinced that you are the only person in the class who doesn't understand the material, and that it is entirely your fault for having fallen behind, please overcome any feelings of guilt, and come forth to ask for help as soon as you need it -- we can almost guarantee you're not the only person who feels this way. Don't hesitate to ask us for help -- we really do care that you thrive!


The following tips are offered based on our experience.

Do the homeworks! The homeworks are explicitly designed to help you to learn the material as you go along. There is usually a strong correlation between homework scores and final grades in the class.

Keep up with lectures! Discussion sections, labs and homeworks all touch on portions of what we discuss in lecture. We have noticed that students do much better in the course if they stay on track with lectures. That will also help you keep the pace with your homework and study group.

Take part in discussion sections! Discussion sections are not auxiliary lectures. They are an opportunity for interactive learning. The success of a discussion section depends largely on the willingness of students to participate actively in it. As with office hours, the better prepared you are for the discussion, the more you are likely to benefit from it.

Form study groups! As stated above, you are encouraged to form small groups (two to four people) to work together on homeworks and on understanding the class material on a regular basis. In addition to being fun, this can save you a lot of time by generating ideas quickly and preventing you from getting hung up on some point or other. Of course, it is your responsibility to ensure that you contribute actively to the group; passive listening will likely not help you much. And recall the caveat above that you must write up your solutions on your own. We advise you strongly to spend some time on your own thinking about each problem before you meet with your study partners; this way, you will be in a position to compare ideas with your partners, and it will get you in practice for the exams. Make sure you work through all problems yourself, and that your final write-up is your own. Some groups try to split up the problems ("you do Problem 1, I'll do Problem 2, then we'll swap notes"); not only is this a punishable violation of our collaboration policies, it also ensures you will learn a lot less from this course.