cse 130 [winter 2014] programming languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf ·...
TRANSCRIPT
![Page 1: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/1.jpg)
CSE 130 [Winter 2014] Programming Languages
Ravi Chugh!
Course Introduction!
Jan 07
![Page 2: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/2.jpg)
• Two variables – x, y
• Three operations – x++ – x-- – (x=0)? L1:L2;!
L1: x++; y--;
(y=0)?L2:L1 L2: … !
Fact: This is “equivalent to” to every PL!!
Good luck writing quicksort … or Windows, Google, Spotify!!
A Programming Language
![Page 3: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/3.jpg)
“A different language is “a different vision of life”
- Federico Fellini!
So Why Study PL?
![Page 4: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/4.jpg)
So Why Study PL?
Programming Language Shapes
Programming Thought!
![Page 5: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/5.jpg)
So Why Study PL?
Programming Language Shapes
Programming Thought!
Affects How: • Ideas are expressed • Computation is expressed!
![Page 6: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/6.jpg)
Course Goals
“Free your mind” - Morpheus!
![Page 7: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/7.jpg)
New ways to: - describe - organize - think about computation!
Learn New Languages / Constructs
![Page 8: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/8.jpg)
• Readable • Correct • Extendable • Modifiable • Reusable!
Write Programs That Are:
![Page 9: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/9.jpg)
To Learn …!
![Page 10: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/10.jpg)
Learn How to Learn New PLs
No Java, C# 20 years ago AJAX? Python? Ruby? Erlang? F#? ...
Learn the anatomy of a PL • Fundamental building blocks • Different guises in different PLs
Re-learn the PLs you already know!
![Page 11: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/11.jpg)
To Design New Languages!
![Page 12: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/12.jpg)
… “Who, me ?”
Buried in every extensible system is a PL • Emacs : Lisp • Word, Powerpoint : Macros, VBScript • Unreal : UnrealScript (Game Scripting) • Facebook : FBML, FBJS • SQL, Renderman, LaTeX, XML …!
Learn How to Design New PLs
![Page 13: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/13.jpg)
Choose Right Language!
![Page 14: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/14.jpg)
Learn How to Choose Right PL
“… But isn’t that decided by
• libraries, • standards, • and my boss ?”
Yes!
My goal: educate tomorrow’s tech leaders & bosses, so you’ll make informed choices !
![Page 15: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/15.jpg)
Speaking of Right and Wrong...!
![Page 16: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/16.jpg)
Imperative Programming!
![Page 17: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/17.jpg)
x = x+1
![Page 18: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/18.jpg)
x = x+1
![Page 19: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/19.jpg)
Imperative = Mutation!
![Page 20: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/20.jpg)
Imperative = Mutation!
![Page 21: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/21.jpg)
Don’t Take My Word For It
John Carmack Creator of FPS: Doom, Quake,... !
![Page 22: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/22.jpg)
Don’t Take My Word For It
Tim Sweeney (Epic, Creator of UNREAL)!
“In a concurrent world, imperative is the wrong default”!
![Page 23: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/23.jpg)
Functional Programming!
![Page 24: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/24.jpg)
Func%onal Programming ?
No Assignment.
No Muta0on.
No Loops.!
Functional Programming
![Page 25: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/25.jpg)
OMG! Who uses FP?!?!
Functional Programming
![Page 26: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/26.jpg)
So, Who Uses FP ?
MapReduce!
So, Who Uses FP?
![Page 27: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/27.jpg)
So, Who Uses FP ?
Linq, F#!
So, Who Uses FP?
![Page 28: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/28.jpg)
So, Who Uses FP ?
Erlang!
So, Who Uses FP?
![Page 29: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/29.jpg)
So, Who Uses FP ?
Scala!
So, Who Uses FP?
![Page 30: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/30.jpg)
So, Who Uses FP ? So, Who Uses FP?
OCaml!
![Page 31: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/31.jpg)
So, Who Uses FP ?
CSE 130 !!
So, Who Uses FP?
![Page 32: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/32.jpg)
Course Staff
Instructor!
Ravi Chugh!
TAs!
Valentin Robert!
Alexander Bakst!
Office Hours TBD, Check Website …!
Tutor!
Patrick Torbett!
![Page 33: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/33.jpg)
Course Website
cseweb.ucsd.edu/classes/wi14/cse130-a/!
Temporary link: goto.ucsd.edu/~ravi/wi14/cse130-a/!
• Nothing printed, everything on the web
• Feel free to bring a laptop to class!
![Page 34: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/34.jpg)
Discussion Sections
Wednesdays + Fridays 9:00am to 9:50 am
CSB 001!
Quick Poll: o Both “Review” o One “Review”, One “Extra” o Both “Extra”
![Page 35: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/35.jpg)
Clickers + Peer Instruction (ish)
Quick Poll:
How many people do not already have an i>clicker?
![Page 36: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/36.jpg)
Clickers + Peer Instruction (ish)
• Make class interactive • Help YOU and ME understand what’s tricky
• Everyone must bring an i>clicker to class • by Thurs 1/16 (we’ll “practice” until then) • available at bookstore
• Seating in assigned groups • Will be posted to Piazza before next class!
![Page 37: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/37.jpg)
In-Class Clicker Exercises
1. Solo Vote : Think for yourself, then vote
2. Group Discussion : Groups of ~3 students • Practice analyzing, talking about tricky notions • (Try to) reach consensus • If you have questions, raise your hand!
3. Group Vote : Everyone in group votes
4. Class Discussion : • What did you find easy/hard? • Questions from here show up in exams
![Page 38: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/38.jpg)
In-Class Clicker Exercises
• Participation counts for 5% of your grade
• Respond to 75% of the questions throughout the quarter
• So, don’t fret if you miss a class or two
• Register your clicker! (check webpage)
![Page 39: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/39.jpg)
• No Official “Before-Class” Homework
• In-Class Exercises: 5% • Programming Assignments (6-8): 30% 30% • Midterm: 30% • Final: 35%
Grading and Exams
![Page 40: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/40.jpg)
Schedule up on webpage
Due on Fridays at 5:00 PM
You may use up to four late days total • Each late day is a “single” or “whole unit” • 5 mins late = 1 late day • Plan ahead, no other extensions
PA #0 is online, not graded!
Programming Assignments
![Page 41: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/41.jpg)
No Textbook
• Online lecture notes
• Resources posted on webpage
• Pay attention to lecture and section!
• Do assignments yourself!!
![Page 42: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/42.jpg)
Plan for Next 10 Weeks
1. FP, OCaml, ~6 weeks
2. OO, Scala, ~4 weeks
![Page 43: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/43.jpg)
+ Unfamiliar languages + Unfamiliar environments !
Start Early!!
Programming Assignments
![Page 44: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/44.jpg)
No Compile, No Score!
Programming Assignments
![Page 45: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/45.jpg)
Forget Java, C, C++, … … other 20th century PLs!
Don’t complain … that OCaml is hard … that OCaml is @!%@#!
Programming Assignments
Immerse yourself in new languages!
![Page 46: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/46.jpg)
Free! your! mind.!
![Page 47: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/47.jpg)
• Programming Assignments done ALONE
• We use plagiarism detection software • Have code from all previous classes • MOSS is fantastic, plagiarize at your own risk
Word From Our Sponsors
![Page 48: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/48.jpg)
![Page 49: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/49.jpg)
• Programming Assignments done ALONE
• We use plagiarism detection software • Have code from all previous classes • MOSS is fantastic, plagiarize at your own risk
• Zero Tolerance • offenders punished ruthlessly
• Please see academic integrity statement
• Click Fraud is also not allowed!!
Word From Our Sponsors
![Page 50: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/50.jpg)
To Ask Me Questions!!
![Page 51: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/51.jpg)
void sort(int arr[], int beg, int end){ if (end > beg + 1){ int piv = arr[beg]; int l = beg + 1; int r = end; while (l != r-1){ if(arr[l] <= piv) l++; else swap(&arr[l], &arr[r--]); } if(arr[l]<=piv && arr[r]<=piv) l=r+1; else if(arr[l]<=piv && arr[r]>piv) {l++; r--;} else if (arr[l]>piv && arr[r]<=piv) swap(&arr[l++], &arr[r--]); else r=l-1; swap(&arr[r--], &arr[beg]); sort(arr, beg, r); sort(arr, l, end); }} Quicksort in C!
Quicksort in OCaml!
let rec sort xs = match xs with [] -> [] | h::t -> let (l,r) = List.partition ((<=) h) t in (sort l) @ h::(sort r)
Say Hello to OCaml
![Page 52: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/52.jpg)
Quicksort in J!
sort=:(($:@(<#[),(=#[),$:@(>#[))({~ ?@#))^: (1:<#)
Say Hello to OCaml
Readability matters…!
![Page 53: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/53.jpg)
Say Hello to OCaml
Quicksort in OCaml!
let rec sort xs = match xs with [] -> [] | h::t -> let (l,r) = List.partition ((<=) h) t in (sort l) @ h::(sort r)
![Page 54: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/54.jpg)
Plan for Next ~5 Weeks
1) Fast Forward • Rapid introduction to what’s in OCaml
2) Rewind
3) Slow Motion • Go over the pieces individually!
![Page 55: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/55.jpg)
CSE 130 [Winter 2014] Programming Languages
Ravi Chugh!
Introduction to OCaml!
![Page 56: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/56.jpg)
“Meta Language” Designed by Robin Milner To manipulate theorems & proofs
Several dialects: • Standard ML (SML) • Original syntax
• Objective Caml: (OCaml) • “The PL for the discerning hacker” • State-of-the-art, extensive library, tool, user support
• F# (ML + .NET) released in Visual Studio!
ML: History and Dialects
![Page 57: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/57.jpg)
• Everything is an expression • Everything evaluates to a value • Everything has a type!
Expression! Value!
Type!
ML’s Holy Trinity
![Page 58: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/58.jpg)
“Read-Eval-Print” Loop (REPL)
Repeat: 1. System reads expression e 2. System evaluates e to get value v 3. System prints value v and type t
What are these expressions, values and types ?!
Interacting with ML
![Page 59: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/59.jpg)
Complex expressions using “operators”: (why the quotes ?)
• +, -, * • div, mod!
2! 2!
int!
2+2! 4!
2 * (9+10) ! 38!
2 * (9+10) -12 ! 26!
Base Type: Integers
![Page 60: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/60.jpg)
Complex expressions using “operators”: (why the quotes ?)
• Concatenation ^ !
“ab”! “ab”!
string!
“ab” ^ “xy”! “abxy”!
Base Type: Strings
![Page 61: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/61.jpg)
Complex expressions using “operators”: • “Relations”: = , <, <=, >= • &&, ||, not!
true ! true!
bool!
false ! false!
1 < 2 ! true!
“aa” = “pq” ! false!
(“aa” = “pq”) && (1<2) ! false!
(“aa” = “aa”) && (1<2) ! true!
Base Type: Booleans
![Page 62: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/62.jpg)
Untypable expression is rejected • No casting, No coercing • Fancy algorithm to catch errors • ML’s single most powerful feature (why ?)!
(2+3) || (“a” = “b”)!
(2 + “a”)!
“pq” ^ 9!
Type Errors
![Page 63: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/63.jpg)
1. Enter an expression e 2. ML infers a type t or emits an error 3. ML evaluates expression e down to a value v 4. Value v is guaranteed to have type t!
Expressions (Syntax) Values (Semantics)
Types Compile-time
(“Static”)
Run-time (“Dynamic”)
ML’s Holy Trinity
![Page 64: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/64.jpg)
… What do we need next ? !
So Far, A Fancy Calculator…
![Page 65: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/65.jpg)
(2+2 , 7>8);! (4,false)!
int * bool!
Complex Type: Tuples (Products)
![Page 66: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/66.jpg)
(9-3,“ab”^“cd”,(2+2 ,7>8))! (6, “abcd”,(4,false))!
(int * string * (int * bool))!
• Pairs, Triples, Quadruples, … • Nesting:
– Everything is an expression – Nest tuples in tuples!
Complex Type: Tuples (Products)
![Page 67: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/67.jpg)
[];! []! ’a list
• Unbounded size • Can have lists of anything (e.g. lists of lists) • But …!
[1;2;3];! [1;2;3]! int list
[1+1;2+2;3+3;4+4];! [2;4;6;8]! int list
[“a”;“b”; “c”^“d”];! [“a”;“b”; “cd”]! string list
[(1,“a”^“b”);(3+4,“c”)];! [(1,“ab”);(7,“c”)]! (int*string) list
[[1];[2;3];[4;5;6]];! (int list) list [[1];[2;3];[4;5;6]];!
Complex Type: Lists
![Page 68: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/68.jpg)
All elements must have same type!
[1; “pq”];!
Complex Type: Lists
![Page 69: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/69.jpg)
List operator “Cons”!
“a”::[“b”;“c”];! [“a”;“b”;“c”]! string list!
1::[2;3];! [1;2;3]! int list!
[1]! int list!1::[];!
::
1::[“b”; “cd”];!
Can only “cons” element to a list of same type
Complex Type: Lists
![Page 70: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/70.jpg)
Lists: “Cons”truct
1::[2;3]! [1;2;3]
int list
Cons operator
e1=>v1 e2=> v2 !e1::e2 => v1::v2!
e1:T e2: T list !e1::e2 : T list
[]:’a list
[]=>[]![]!Nil operator
![Page 71: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/71.jpg)
List operator “Append”!
1 @ [2;3];!
[]@[1];! [1]! int list
[“a”]@[“b”];! [“a”;“b”]! string list
@
int list [1;2]@[3;4;5];! [1;2;3;4;5]!
[1] @ [“a”;“b”];!
Can only append two lists…
… of the same type
Complex Type: Lists
![Page 72: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/72.jpg)
List operator “Head”!
Exception: Failure “hd”.!
hd ([“a”]@[“b”]);! “a”! string
List.hd
ML types can’t catch some errors though…
int hd [1;2];! 1!
Complex Type: Lists
hd []!
(ML does infer a type…)
![Page 73: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/73.jpg)
List operator “Tail”!
tl ([“a”]@[“b”]);! [“b”]! string list
List.tl
The tail of empty list is a run-time error…
int list tl [1;2;3];! [2;3]!
Complex Type: Lists
Expressiveness of type systems is an active area of research!
tl []! Exception: Failure “hd”.!
![Page 74: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/74.jpg)
Lists: Deconstruct (or Destruct)
Head e => v1::v2 !hd e => v1!
e :T list hd e : T !
Tail e => v1::v2 !tl e => v2!
e :T list tl e : T list !
(hd [[];[1;2;3]]) = (hd [[];[“a”]])!
int list string list e1:T e2:T!
e1 = e2 : bool
![Page 75: CSE 130 [Winter 2014] Programming Languagescseweb.ucsd.edu/.../cse130-2014-01-07.pptx.pdf · 1/7/2014 · Clickers + Peer Instruction (ish) • Make class interactive • Help YOU](https://reader035.vdocuments.us/reader035/viewer/2022063006/5fb80f7acb3860366a3f9612/html5/thumbnails/75.jpg)
What’s the difference ? • Tuples:
– Different types, but fixed number:
• pair = 2 elts
• triple = 3 elts
• Lists: – Same type, unbounded number:
• Syntax: – Tuples = comma Lists = semicolon !
(3, “abcd”) (int * string)
(3, “abcd”,(3.5,4.2)) (int * string * (float * float))
[3;4;5;6;7] int list
Recap: Tuples vs. Lists