CSCI 2325 Principles of Programming Languages Introduction - - PDF document

csci 2325 principles of programming languages
SMART_READER_LITE
LIVE PREVIEW

CSCI 2325 Principles of Programming Languages Introduction - - PDF document

9/7/15 CSCI 2325 Principles of Programming Languages Introduction Mohammad T . Irfan mirfan@bowdoin.edu www.bowdoin.edu/~mirfan Office Hours: Mon 2:304:30 Tue 46 Course Information u Syllabus u Grading, etc. u


slide-1
SLIDE 1

9/7/15 ¡ 1 ¡

CSCI 2325 Principles of Programming Languages

Introduction

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

Course Information

u Syllabus u Grading, etc. u www.bowdoin.edu/~mirfan/CSCI-2325.html

slide-2
SLIDE 2

9/7/15 ¡ 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!

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

slide-3
SLIDE 3

9/7/15 ¡ 3 ¡

Why this course?

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

What will be covered?

u Two parts

u Principles u Paradigms

slide-4
SLIDE 4

9/7/15 ¡ 4 ¡

Principles (~8 weeks)

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

Paradigms (~5 weeks)

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

slide-5
SLIDE 5

9/7/15 ¡ 5 ¡

Art of language design

u Architecture u Technical setting u Standards u Legacy systems

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

slide-6
SLIDE 6

9/7/15 ¡ 6 ¡

Designed a language; what’s next?

Compilers vs. interpreters