Course Objectives
Here are the course objectives, session-by-session. By the end of each class, you should be able to do the listed items.
Class 1.1
-
find information about the course
- find information about DrScheme
- convert arithmetic expressions into Scheme expressions, and
- use DrScheme to evaluate them.
- use
define
to create Scheme functions
- use
define
to name constant data
- write a contract and a purpose statement for a function
- write a function that performs an arithmetic calculation
- use DrScheme's stepper to see how a program is evaluated.
Class 1.2
- write Scheme expressions that ask questions
- display the Boolean values of such expressions
- represent English words in a Scheme program as Strings and Symbols
- write a Scheme program that makes a decision using cond
- write a Scheme program that consumes and produces words
- use the Boolean operators
and
, or
and not
in Scheme functions.
- understand when to use helper functions and constants to improve your code.
Class 1.3
- decide when a problem needs "compound data"
- write a Scheme data definition using
define-struct
- create a compound data value using the constructor that DrScheme creates when you write a define-struct.
- extract the components of a compound data value using the selectors that DrScheme creates when you write a define-struct
- write a function over a compound data value
- decide when compound data has a nested structure
- write a Scheme data definition for a nested structure
- write a Scheme function that processes a nested compound data value
Class 1.4
- decide when a problem needs mixed data
- write a data definition for mixed data
- write a template for a function that processes mixed data
- use the template to complete the function
- choose good test cases for a function over mixed data
- write down the design recipe with all its steps.
Class 2.1
- understand how Scheme defines a list
- use
cons
to create a list, and first
and rest
to extract the pieces of a list
- write a template for a function that processes a list
- use the template to define a function that processes a list
Class 2.2
- go through each step in the design recipie to develp a function over lists
- use the list template to write functions that both consume and produce lists
- understand the need for helper functions when a computation walks along a list
- explain the action of the sort and insert functions that were presented as part of insertion-sort in class
Class 2.3
- see that the recursive functions over lists mimic the recursive nature of the data-definitions
- write functions that process lists of structs.
Class 2.4
- Write the data definition for an ancestor family tree.
- Generate the template for an ancestor family tree from the data definition.
- Write functions over ancestor family trees.
Class 3.1
- Know that two data definitions that refer to each other are called mutually-recursive data definitions.
- Write the mutually recursive data definitions for a descendant family tree.
- Generate the mutually-recursive function templates for the functions that process a descendant family tree.
- Write functions that process descendant family trees.
Class 3.2
- draw arrows on a Scheme program that show the defining occurence of any name used in the program.
- take a function that uses one or more helper fucntions and rewrite the function using one or more
local
definitions.
Class 3.4
- Recongnize common list-processing patterns
- Write list processing operations using
map
, ormap
, fold
and filter.