# CS3 Fall 2005 Lecture week 13: Introduction to the Big Project Slide 1

```CS3 Fall 2005
Lecture week 13:
Introduction to the Big Project
Slide 1
todo
• Fix dates in calendar here, and in project
description in ucwise.
• Fix printing and sequencing slide
Slide 2
Midterm #2
Any questions?
Slide 3
Midterm #2
20
• Average:
30.6
10
• Std. Dev.
11.5
Std. Dev = 11.46
Mean = 30.6
N = 148.00
0
5.0
10.0
7.5
15.0
12.5
20.0
17.5
25.0
22.5
30.0
27.5
35.0
32.5
40.0
37.5
45.0
42.5
50.0
47.5
MT2 raw scores
Slide 4
Midterm #2 – question 3
• (random) isn't something you have ever
seen before, because:
– This procedure creates a "side-effect"
– It does more than just calculate a returnvalue, it changes the state of Scheme so that
the next call is different.
Slide 5
;; check random runs (random val) n times, and returns the
;;
minimum and maximum values
(define (check-random val n)
(check-random-helper val n 0 0))
;; this version doesn't work!
(define (check-random-helper val n cur-min cur-max)
(if (<= n 0)
(se cur-min cur-max)
(check-random-helper
val
(- n 1)
(if (< (random val) cur-min)
(random val)
cur-min)
(if (> (random val) cur-max)
(random val)
cur-max)
)))
Slide 6
The Big Project
• Three possible projects:
– Database
– Blocks World
– Yukon
• You can work in partnerships
• You will have three weeks to work on this
(it is due on the last lab)
• Worth 15% of you final grade
Slide 7
Project Check-offs
• There are 3 checkoffs
You need to do them on time in order to get
credit for the project
1. Tell your TA which project you will do and
who you will do it with.
2. Show your TA that you have accomplished
something. S/he will comment.
3. Show that you have most of the work done:
Slide 8
Nov 14
Extending sentences, words to lists
Nov 21
Lab: Finish lists
Start on the big project
Thanksgiving Break – Thur/Fri
Nov 28
Lecture: What is CS at Berkeley? (guests)
Lab: Big Project
CHECKOFF #1 – Tue/Wed (beginning of
lab)
CHECKOFF #2 – Thur/Fri
Lecture: Summary, other languages
Lab: Finish up the Project
CHECKOFF #3 – Tue/Wed
Project Due on Thur/Fri
Slide 9
Dec 5
Only two more lectures
(after this one)…
What would you like to do?
– Hear about the CS major, and other
courses…
– Do exam-type problems…
– Review…
Slide 10
Lets see the projects in action
Slide 11
Programming Style
• Why does it matter
– Bad style gets worse in large programs
– Program maintenance: 6 months later, will
you know what your code does?
– Code “literacy”: sharing code
• Remember, programming style will be
Slide 12
What issues of style matter?
• Keep procedures small !
• Good names for procedures and parameters
– Above and within procedures
• Avoid nesting conditional statements
• Put tests cases in a comment block
• Indent to aid program comprehension
• Data abstraction
– E.g. Don't do (bf (car '((a b) (c d)))
Slide 13
Of course, other issues matter
•
•
•
•
Error checking inputs, where required
Code reuse (most useful with the
database project)
Slide 14
Working in partnerships
• Highly recommended!
– For those of you continuing with CS, you'll be
doing this for many future projects
• Won't be faster, necessarily
– While you are less likely to get stuck, there
will be a lot of communication necessary
• A big benefit will be with testing
• Remember, only one grade is given…
Slide 15
Functional Programming
• In CS3, we have focused on programming
without side-effects.
– All that can matter with a procedure is what it
returns
– In other languages, you typically:
• Perform several actions in a sequence
• Set the value of a variable – and it stays that way
– All of this is possible in Scheme.
Slide 16
Printing, and sequencing
• With Blocks World and Yukon you will
need to display information.
– Simply Scheme chapter 20 is nice summary.
– And, all the projects have file input /output
routines that you don't need to "understand",
as well as user input routines.
Slide 17
Data structures
• The format of data used in these projects
in a central feature
– A "data structure" (abstract data type) is a
specification of that format. Here, generally,
lists of lists (of lists).
– Accessors and constructor allow for
modularity: letting parts of a program work
independently from other parts.
Slide 18
Strings versus words
• One useful data structure is a string
– Strings are surrounded by double quotes
when printed.
– Strings are a native type in Scheme.
• In CS3, you used words (sometimes
sentences) to present names and other
output to the user.
– In the real world, strings are used.
Slide 19
Lists
• Lists are containers, like sentences where each
element can be anything
– Including, another list
((beatles 4) (beck 1) ((everly brothers) 2) … )
((california 55) (florida
(#f
#t
#t
#f
#f
23) ((new york) 45) )
…)
Slide 20
List constructors
• cons
– Takes an element and a list
– Returns a list with the element at the front, and the list
contents trailing
• append
– Takes two lists
– Returns a list with the element of each list put
together
• list
– Takes any number of elements
– Returns the list with those elements
Slide 21
List selectors
• car
– Like first
• cdr
– Like butfirst
Slide 22
Common list procedures
• Map = every
• Filter = keep
• Reduce = accumulate
• Null? = empty?
• Recursion is just the same!
Slide 23
```
Arab people

15 Cards