CSCI 2320 Principles of Programming Languages Introduction - - PDF document

csci 2320 principles of programming languages
SMART_READER_LITE
LIVE PREVIEW

CSCI 2320 Principles of Programming Languages Introduction - - PDF document

8/30/17 CSCI 2320 Principles of Programming Languages Introduction Mohammad T . Irfan mirfan@bowdoin.edu www.bowdoin.edu/~mirfan Office Hours: Tue 2:304:30 Wed 46 Course Information u Syllabus u Grading, etc. u


slide-1
SLIDE 1

8/30/17 1

CSCI 2320 Principles of Programming Languages

Introduction

Mohammad T . Irfan mirfan@bowdoin.edu www.bowdoin.edu/~mirfan Office Hours: Tue 2:30—4:30 Wed 4—6

Course Information

u Syllabus u Grading, etc.

u http://www.bowdoin.edu/~mirfan/CSCI-2320.html

slide-2
SLIDE 2

8/30/17 2

How to ace this course?

u Stay organized u Conceptualize theory with examples u Start early with the assignments

u Set aside a lot of time for debugging

u Ask lots of questions!

Difficulty level

u Understanding theoretical concepts u Mastering recursion u Debugging codes efficiently u Adapting fast to code in new languages

slide-3
SLIDE 3

8/30/17 3

What is a programming language?

u Beginning of computer programs https://www.youtube.com/watch? v=uBbVbqRvqTM u Natural language vs. programming language

u 2 key differences

Why this course?

u Deeply understand how prog. languages work u Express ideas better u Learn new language fast

u Tiobe index

http://bit.ly/19fhRoL u Better use of known languages u Choose an “appropriate” language

u Emergence of data science

http://bit.ly/1wb97wH u Better understanding of implementation

slide-4
SLIDE 4

8/30/17 4

What will be covered?

u Two parts

u Principles u Paradigms

Principles (~8 weeks)

u Syntax u Semantics u Names and types u Functions u Memory management

slide-5
SLIDE 5

8/30/17 5

Paradigms (~6 weeks)

u Imperative u Object-oriented programming (OOP) u Web u Logic

Art of language design

u Architecture u Technical setting u Standards u Legacy systems

slide-6
SLIDE 6

8/30/17 6

Goals of language design

u Simplicity and readability u Clarity about binding u Reliability u Good support u Good library base u Orthogonality u Efficient implementation

Designed a language; what’s next?

Compilers vs. interpreters