CS/ECE 374 A: Labs


Each student must register for one of ten biweekly lab sections (sometimes called "discussion" or "headbanging"), which meet every Wednesday and Friday. As with lectures, lab attendance is strongly encouraged, but not mandatory.

Please attend only the lab sections for which you are officially registered. Students who want to swap section should contact one of the TAs.

The labs are opportunities for you to develop your problem-solving and presentation skills. In each lab meeting, the course staff and the students will work on a small set of closely related problems, usually similar to problems in the current week's homework.

In a typical lab meeting, after giving the students a few minutes to read and understand the problems, the TA will walk through the process of solving the first problem on the lab handout. Then the students will break into groups of 3–5 to work on the remaining problems, with feedback and suggestions from the course staff and from each other. At the end of the meeting, the TA will quickly walk the solutions to the remaining problems, with help from the students. If necessary, we may also briefly review material from past lectures or prerequisite courses, but we will not present new course material.

We will post lab problems on the course calendar at the beginning of each week. We strongly encourage you to look at the problems beforehand and to continue working on them after your section ends. In particular, we strongly encourage discussion on Piazza after each section; students who post correct solutions or insightful hints for lab problems will get some extra credit. The course staff also will answer questions, provide hints, and give feedback on proposed solutions in office hours.

The point of the labs is to practice hunting (problem solving), not to acquire more meat (solutions). Our main job is to give you guidance in how to solve problems—how to track the wily inductive hypothesis, what bait best attracts fooling sets, how to sound the mating call of the dynamic programming recurrence, how to protect yourself from a swarm of angry vertices, how to safely build a trap for an undecidability proof—not just to show you answers.

That said, we will post solutions to each week's lab problems at the end of the week, so that you can evaluate the results of your hunt. But don't make the mistake of thinking that you can learn to solve problems by reading solutions. The only way to learn to solve problems is to practice solving problems.


The student asks, well, what are Feynman's methods? Gell-Mann leans coyly against the blackboard and says, Dick's method is this. You write own the problem. You think very hard. (He shuts his eyes and presses his knuckles parodically to his forehead.) Then you write down the answer.
— James Glieck, Genius: The Life and Science of Richard Feynman (1992)
When you are solving a problem, don't worry.
Now, after you have solved the problem, then that's the time to worry.
— Richard Feynman (reportedly written on his blackboard at the time of his death in 1988)
Student: Whenever there is any question, one's mind is confused. What is the matter?
Master: Kill, kill!
— 曹山本寂 / Ts‘ao-shan Pen-Chi / Sozan Honjaku (c. 900)