CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created...

42
http://xkcd.com/224/

Transcript of CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created...

Page 1: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

http://xkcd.com/224/

Page 2: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

CS 152: Programming Language Paradigms

Prof. Tom Austin San José State University

Page 3: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

What are some programming languages?

Page 4: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Taken from http://pypl.github.io/PYPL.html January 2016

Page 5: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Why are there so many?

Page 6: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Different domains

Page 7: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Different design choices

• Flexibility • Type safety • Performance • Build time • Concurrency

Page 8: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Which language is better?

Page 9: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Good language features

•  Simplicity • Readability •  Learn-ability •  Safety • Machine independence •  Efficiency

Page 10: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

These goals almost always conflict

Page 11: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Conflict: Type Systems

Stop "bad" programs … but ... restrict the programmer

Page 12: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Why do we make you take a programming languages course?

•  You might use one of these languages. •  Perhaps one of these languages is the

language of the future (whatever that means). •  You might see similar languages in your job. •  Somebody made us take one, so now we want

to make you suffer too. •  But most of all…

Page 13: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

We want to warp your minds.

Page 14: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Course goal: change the way that you think about programming.

That will make you a better Java programmer.

Page 15: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

The "Blub" paradox

Why do I need higher order functions? My language doesn't have them, and it works just fine!!!

Page 16: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

"As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down… [Blub programmers are] satisfied with whatever language they happen to use, because it dictates the way they think about programs." --Paul Graham http://www.paulgraham.com/avg.html

Page 17: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

So what kind of abstractions do different languages give us?

Page 18: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Data Abstractions

•  Representation of common data values •  Variables to represent memory locations. •  Structures: arrays, text files, etc. •  Organizational units: – APIs – packages – classes

Page 19: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Control Abstractions

•  "Syntactic sugar" x+=10 => x=x+10

•  Branch instructions –  if statements – while loops

Page 20: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

A little history

WWII: programming meant plugboards

Page 21: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Von Neumann (late 1940s) created a permanently hardwired general purpose instruction set.

A small, machine language program

Page 22: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Assembly (1950s)

•  Translates mnemonic symbols to machine instructions.

•  Not a higher level – just easier for humans to read. mov ax, 1234h mov bx, ax

Page 23: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Higher-level languages

•  Fortran (1950s): – Algebraic notation, floating point math

•  Algol (1960): – Machine independence (via compiler) – Control structures: loops, procedures, if statements – Formal specification

Page 24: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Does a formal specification matter?

Page 25: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Languages we will cover (subject to change)

Page 26: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Administrative Details

•  Green sheet:http://www.cs.sjsu.edu/~austin/cs152-fall16/Greensheet.html.

•  Homework submitted through Canvas:https://sjsu.instructure.com/

•  Academic integrity policy: http://info.sjsu.edu/static/catalog/integrity.html

Page 27: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Schedule

•  The class schedule is available through Canvas •  Late homeworks will not be accepted •  Check the schedule before every class •  Check the schedule before every class •  And finally, CHECK THE SCHEDULE

BEFORE EVERY CLASS.

Page 28: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Prerequisites

• CS 151 or CMPE 135, grade C- or better • Show me proof – If you don't, I will drop you.

Page 29: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Resources

Dorai Sitaram "Teach Yourself Scheme in Fixnum Days". http://ds26gte.github.io/tyscheme/

Other references TBD.

Page 30: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Grading

•  30% -- Homework assignments (individual work) •  20% -- Class project (team work) •  20% -- Midterm •  20% -- Final •  10% -- Participation (labs and drills)

Page 31: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Participation: Labs & Drills

• Complete/incomplete • No feedback given (usually) •  I will look at them •  If you have questions, ask me

Page 32: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Homework

• Done individually. • You may discuss the assignment

with others. • Do your own work!

Page 33: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

How to fail yourself and your friend

If two of you turn in similar assignments:

you both get a 0

Page 34: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Project

• Work in groups of up to four people. • Goal: Build an interpreter. • Use Java and ANTLR

Page 35: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Office hours

• MacQuarrie Hall room 216 • Mondays, noon-1pm • Thursdays, 11am-noon

Page 36: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Racket/Scheme

Page 37: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

What is Scheme?

•  A functional language – Describe what things are, not how to do them. – More mathematical compared to imperative langs.

•  A dialect of Lisp (List Processing) •  (Famously) minimal language •  Racket is a dialect of Scheme

Page 38: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Symbolic Expressions (s-expressions)

The single datatype in Scheme. Includes: •  Primitive types: booleans, numbers,

characters, and symbols. •  Compound data types: strings, vectors, pairs,

and of course…

LISTS!!!

Page 39: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

A bit of scheming

•  Sample list: '(1 2 3 4) – The quote declares this list as data

•  First argument is assumed to be a function – Rest of the list are its arguments – (* 4 3 2 1)

•  car: gets the first element of the list •  cdr: gets the tail of the list.

Page 40: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

$ racket Welcome to Racket v6.0.1. > '(1 2 3 4) '(1 2 3 4) > (car '(1 2 3 4)) 1 > (cdr '(1 2 3 4)) '(2 3 4) > (+ 1 (* 2 4) (- 5 1)) 13 >

Quote indicates list is data

First element is assumed to be a

function

Page 41: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

Before next class

•  Install Racket from http://racket-lang.org/ •  Read chapters 1-2 of Teach Yourself

Scheme. •  Read Paul Graham's "Beating the

Averages" article. http://www.paulgraham.com/avg.html

Page 42: CS152-Day01-Introduction - SJSU · CS152-Day01-Introduction.pptx Author: Thomas H. Austin Created Date: 8/24/2016 4:59:09 AM ...

First homework due September 8th

•  This assignment is designed to get you up and running with Racket. • Available in Canvas. – If you don't have access to Canvas, see

http://www.cs.sjsu.edu/~austin/cs152-fall16/hw/hw1/ instead.

• Get started now!