What we learned from the Lecture-1 exercise, where we implemented the number-guessing game as a console app and a forms app: -- The console app's code matched the use case: it was coded as a 1-2-3 straight-line sequence. People programmed like this in the "good old days." -- The forms app "split" the sequence into two pieces, 1 and 2-3; it enforced a *protocol* about the order in which the pieces execute, and it required additional variables/methods for the protocol and the graphics. The forms app really needs an *architecture* that separates the protocol, the GUI layout, and the computation into separate components. We will learn the architecture and techniques for doing this.