Before class, please do the following:
① Create an account on Piazza.
② Watch this video providing an overview of DrScheme. This video was made for version 4.0, and we're now using version 5+. That said, the video looks nearly 100% applicable (still).
➙ [UPDATE 2011 09 02] This is approaching information overload, but I've added a pencast regarding the Beginning Scheme Language and grammars. You may find it useful, or perhaps confusing. Leave your feedback on the pencast in the comments on the page, please.
③ Read Sections 1, 2 of HtDP. (Prologue, Fixed-Size Data)
④ Explore exercises in section 2.1 before class (recommended). There are 11 exercises in section 2.1. In this context, "explore" might mean "do them" and "ask questions in Piazza when you get stuck."
Begin (10m)
We will begin with a quiz through section 2.1. Do not be late. The quiz will evaluate your (nascent) understanding of Scheme.
Evaluate (10m)
We will trade quizzes, grade them, and discuss points where you did not understand or successfully answer the question.
Discuss (30m)
Questions you may want to consider:
① What does it mean for a language to have an order of evaluation? What is the order we evaluate Racket expressions in?
② What is the syntax, or language pattern, for a function definition. What are the parts of that definition called?
③ Compare and contrast Racket (in your experience so far) with what you know about other languages. How is it similar (or different) in terms of its structure and execution?
Lab Book (10m)
Take time to write in your lab notebook those topics and/or questions that challenged you particularly. Make notes that you feel will help you better understand the material later, or, for that matter, follow up on it later for further study.
Exercises (30–45m)
Do exercises 13 through 22. Switch drivers with each problem.
Check in before proceeding on to the next step.
If you proceeded rapidly through these problems, save your work, start a new file, and do all of the exercises a second time. Change your alternation pattern so that each of you has the opportunity to do every problem as both driver and copilot.
(When learning to work in a new language, you're learning a new syntax as well as how to "think" in that language. Repetition is a useful tool in this context, and you would be well served to either repeat your work now, or repeat all of these exercises a second time, perhaps individually, after the lab period.)
Testing (20m–30m)
At the top of your program, paste in the following:
(require test-engine/racket-tests)
This loads a library called racket-tests from the test-engine suite. You can read more about it online. We will only be using one function from this library: check-expect.
With your partner, write tests that you and your partner feel adequately cover your code. By cover, I mean "you're sure all conditions that should be tested are tested." For example, if your code is only supposed to work with strings, it is inappropriate to have a test that passes a number as an actual parameter.
Discuss (15m)
① What, so far, has been a point of confusion in your learning of Racket? How did you overcome that confusion?
② Should we test before or after we write code to solve a problem? Why?
Lab Book (10m)
Take time to write in your lab notebook those topics and/or questions that challenged you particularly. Make notes that you feel will help you better understand the material later, or, for that matter, follow up on it later for further study.
