A Scheme Workshop Ben Leong NUS School of Computing 28 July 2008

advertisement
A Scheme Workshop
Ben Leong
NUS School of Computing
28 July 2008
Welcome to SoC
 Help
you make an informed
decision on whether to choose
between CS1101 and CS1101S
NOT to teach you Scheme 
 About which class is more
suitable for YOU
NOT about which is better….
Overview




What’s Scheme?
Why Scheme?
Module Synopsis
(i.e. what to expect)
What your seniors say
Brief History of CS1101S
The language Scheme was designed 27
years ago at MIT to teach programming
methodology
 The success of the MIT programming
methodology module led to its adoption
in many universities worldwide
 Scheme was first introduced at NUS 11
years ago
 I took this class at MIT in 1994. 

Objectives

Teach Scheme as a programming language NOT!

Teach programming concepts

Inspire CONFIDENCE in students that
ANYTHING can be solved if they try hard
enough
 Teach
students TO THINK 
Computational Thinking
Introduction to Scheme

Scheme is expression oriented. Type an
expression and its result will be printed
out.

Works with a variety of types of numbers:
integers (both positive and negative),
fractions (rational numbers), and real
numbers
Introduction to Scheme

Expressions use prefix notation.
Use (+ 2 3) instead of (2 + 3)
 Use (* (+ 2 3) (- 3 1)) instead of
(2+3)*(3-1)


There is a wealth of predefined
functions
sqrt computes the square root of its
argument.
 + is also a predefined function

Why Scheme?
 Teaching
a language is futile
(Here today, gone tomorrow)
 Scheme is simple as a language
 So we can focus on the
CONCEPTS instead of clunky
language rules
 Let’s see for ourselves…..
Key Concept: Recursion
 Express
(divide) a problem into
smaller similar problems
 Solve the problem for a simple
(base) case
We are done (!)
 Similar to
Mathematical Induction
The Towers of Hanoi
We have 3 pegs and a set of discs, all of different
diameters.
Objective: move the pile of discs to last peg, by:


moving 1 disc at a time from 1 peg to another;
never placing a disk on top of another disc with
smaller diameter.
Suppose you have not 3, but n discs …
The Towers of Hanoi
 We
must start somewhere….
 Suppose we have one disc ….
 What if there are no discs?
Nothing
 Base
to do!
case
The Towers of Hanoi
We notice the following pattern: if we want to
move n disks from peg a to peg c using
peg b as intermediary storage, then we:
assume we know how to move n−1 disks to
peg b, using peg c as intermediary storage;
 we move disk n from a to c ;
 we move n−1 disks from b to c, using a as
intermediary storage.

RECURSION
The Towers of Hanoi
(define (move-tower size from to extra)
(cond ((= size 0) #t)
(else
(move-tower (- size 1) from extra to)
(print-move from to)
(move-tower (- size 1) extra to from))))
(define (print-move from to)
(newline)
(display "move top disk from ")
(display from)
(display " to ")
(display to))
DEMO
CS1101S: Programming
Methodology (Scheme)

Lectures:
Wed 10am-12pm, Fri 11am-12pm, LT15
 Recorded for webcast


Recitations: 1 hr/wk


Two or three groups: Prob Thurs, Venue
TBA
Discussion Groups: 2 hr/wk
Three or four groups: TBA
 Bid for group in CORS

Teaching Staff



Lecturer: Dr. Ben Leong,
benleong@comp.nus.edu.sg
Office: S14 #06-14
Phone: 6516-4240
Hours: TBA, or by appointment
Teaching Assistant: Chu Duc Hiep
EIGHT Undergraduate Discussion
Group Leaders
Syllabus (in Brief)








Numeric computations in Scheme
Building recipes with functions
Recursion
Data structures: lists, trees
Memoization & Dynamic Programming
Generic operations
Object oriented abstractions
Java
Covers core concepts of computer
programming
Textbook :
SICP


FREE!!
Available online at
http://mitpress.mit.edu/sicp/fulltext/book/book.html
Supplementary
Text


ALSO FREE!!
Available online at
http://gustavus.edu/+max/conc
rete-abstractionspdfs/index.html
Supplementary
Reference 2


ALSO FREE!!
Available online at
http://www.htdp.org/
Scheme Interpreter
We will be using DrScheme
 It’s FREE!!!
 Download from:
http://www.drscheme.org/

Assessment Overview
Tutorial participation:
 Problem sets:
 Midterm exam:

10%
30%
15%
1 Oct 2008 (Wed) 10am-12 pm

Practical exam:
15%
5 Nov 2008 (Wed) 10am-12 pm

Final exam:
1 Dec 2008 (Mon) 9 am
30%
Tutorial Participation (10%)
Questions will usually be given out prior
to the recitations/discussion groups,
sometimes not
 Assessed mainly by tutors, with some
inputs from lecturer from interactions
during recitations & lectures
 You need to be active, participate by
offering solutions, making comments
and asking questions.

Midterm and Final Exams
(15% + 30%)
Standard fare – 2 hours each
 Will test concepts, NOT memory
 Open-sheet

1 x A4 sheet of notes allowed for midterm
 2 x A4 sheet of notes allowed for finals


Sample midterms and finals available in
IVLE
Problem Sets (30%)
Seven problem sets
 Due approximately once every two
weeks
 Graded by the Undergraduate Tutors
 Crucial for learning the material in this
class
 This is effectively the lab component of
the class

Practical Exam (15%)
“Test of the Pudding”
 At
the completion of Scheme
syllabus
 2 hours to solve three programming
problems of increasing difficulty
 Sample exams available on IVLE
Other Highlights
Will build a Lego Mindstorm robot in the
middle of the Semester
 Regular Programming Contests to keep
students challenged

CS1101S Robot Contest
CS1101S Robot Contest

See more at CS1101S Facebook Group
CS1101S vs. CS1101
Progression: CS1101S  CS1102S
CS1101  CS1102
 Two-semester sequence

Discouraged from crossing over
 CS1101S  CS1102, CS1101  CS1102S


Similarities

S and non-S versions both teach basic
programming principles
CS1101S/02S vs. CS1101/02
 Differences
 CS1101S/02S
cover more advanced
topics
 More challenging
 CS1102S covers Java + more
 Good introduction to many computer
science topics
Which to take?
Take CS1101S/02S if you want to be
challenged.
 If you have programmed before

No real advantage
 In fact, can be a disadvantage!


If you have never programmed before
Great! You are not at a disadvantage.
 Keep an open mind.


If CS is not your first choice course,
CS1101S is probably NOT a good choice.
Java vs Scheme:
What’s the Tradeoff?

Java:




sophisticated, mature
can be used for commercial applications
but has many underlying concepts that a beginner
may find hard to understand
Scheme:




simple, elegant
easy to learn (hard to master)
designed to illustrate the concepts
BUT you will eventually learn Java anyway….
Mainly a question of personal choice (taste?)
What your seniors say….
I think Scheme really does bring about concepts easily.
Java's messy, so messy for an amateur programmer.
(on Problem Sets) They are all very difficult, but some are
killers. [What doesn’t kill you makes you strong]
I learnt a tiny bit of java before I attended this class and I
was totally lost. Teaching introduction to programming in
Scheme is a quite smart idea. I feel much better when I
came back to Java at the end of this class.
What your seniors say….
I was warned by my seniors not to take scheme
because they said it was very tough .... now when
I’ve done this module , I agree that it is tough.. but
it is worth the effort ..scheme makes u smarter !!!
:)
Do you agree that Scheme is easier than Java?
32% NO; 68% YES!
The pace might be fast but if a person is able to
handle it I think they would definitely benefit from
it and enjoy it more than CS1101XYZ
More comments here ….
http://www.comp.nus.edu.sg/~bleong/
teaching/cs1101s06-midterm.htm
 http://www.comp.nus.edu.sg/~bleong/
teaching/cs1101s06-final.htm
 http://www.comp.nus.edu.sg/~bleong/
teaching/cs1101s07-midterm.htm


Just Google “cs1101s survey”!!!
Words of Advice
 Don’t
worry about the curve
 Scheme is easier (than Java or so I
would claim), but doesn’t mean that
CS1101S is an easier class
 Take CS1101S still have to learn
Java…. so it is definitely more work
 Have to be prepared to work very hard
in CS1101S
QUESTIONS
THANK
YOU
Download