370 likes | 632 Views
Why take CS1101S? (or why Scheme?). Ben Leong NUS School of Computing 24 July 2009. 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….
E N D
Why take CS1101S?(or why Scheme?) Ben Leong NUS School of Computing 24 July 2009
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 28 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 12 years ago • I took this class at MIT in 1994.
Objectives • Teach Scheme as a programming language • Teach programming concepts • Inspire CONFIDENCE in students that ANYTHING can be solved if they try hard enough • Teach students Computational Thinking NOT! TO THINK
What is 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
What is 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 • sqrtcomputes 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 to do! • Base 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))
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.sgOffice: S14 #06-14 Phone: 6516-4240 Hours: TBA, or by appointment • Teaching Assistant: Chu Duc Hiep • FIVE Undergraduate Discussion Group Leaders
Java CS1101S Road Map Memoization Streams ADVANCED Dynamic Programming Object-Oriented Programming INTERMEDIATE Symbolic Data Higher-Order Procedures Generic Operators List Processing BASIC Mutation & State Data Abstraction Procedural Abstraction Iteration Recursion Wishful Thinking Order of Growth Fundamental concepts of computer programming
Textbook : SICP • FREE!! • Available online at http://mitpress.mit.edu/sicp/full-text/book/book.html
Supplementary Text • ALSO FREE!! • Available online at http://gustavus.edu/+max/concrete-abstractions-pdfs/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: 10% • Problem sets: 30% • Midterm exam: 15% • Practical exam: 15% • Final exam: 30%
Cool Stuff • Learn to make Stereograms • Learn about RSA encryption • Build a Lego Robot • Write a text-based Adventure Game • Regular Programming Contests to keep students challenged
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. 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 doesn’t kill you makes you strong]
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 • http://www.comp.nus.edu.sg/~bleong/teaching/cs1101s08-midterm.htm • Just Google “cs1101s survey”!!!
10 Reasons NOTto take CS1101S • If you hate Math • If you don’t like challenges • If you cannot manage self-studying and need to be spoonfed • If you just want to get a free A • If you are not interested in learning more
10 Reasons NOTto take CS1101S • If you don’t like personalised attention • If you don’t wish to meet like-minded peers • If you don’t care about applying your knowledge • If you don’t take shocks well/if you fear evilness • If you don’t like shuai prof :P