Randy Katz
Electrical Engineering and Computer Science

Computer Science 150: Components and Design Techniques for Digital Systems. Lecture # 6 spring 2004: Basic Finite State Machines: Flip-Flops, Registers, Shifters, Counters.

This upper-division lecture is on Verilog, a hardware description language. The content therefore is perhaps difficult for those not familiar with computer programming, but the video provides some excellent examples of teaching techniques for difficult subjects. Katz begins by providing some historical context, with dates, of hardware description languages, and explaining the advantages and disadvantages of Verilog and VHDL—Verilog is more used in practical, industrial environments, but not as nicely and cleanly designed as VHDL, which is used in research and academia. This provides a good context for discussing the programming. Katz’ whole approach and tone is matter-of-fact, as if he is discussing this topic with the class, rather than lecturing. While he clearly assumes a substantial basic knowledge, he constantly reassures the students in a variety of ways, pointing out that the TAs will reiterate some of the ideas in section, and they will all do what they can to help students avoid pitfalls in the lab; he emphasizes that this is not an exhaustive introduction. He points out what things matter (“This is extremely important”) and which aren’t (“We won’t worry too much about that here”). The powerpoint slides are clear and direct, and Katz uses them well as the basics on which he expounds. He frequently uses rhetorical questions to move to a new step: “Is the thing working the way I want it to work?” Students feel free to ask questions, and Katz often calls on them by name. When answering, he repeats the questions that he suspects other students can’t hear, and often says, “That’s a good question.” He is also willing to say when he doesn’t know the answer.