Languages and Compilers

Similar documents
COSE212: Programming Languages. Lecture 0 Course Overview

CS 6371: Advanced Programming Languages

INTRODUCTION PRINCIPLES OF PROGRAMMING LANGUAGES. Norbert Zeh Winter Dalhousie University 1/10

What Is Computer Science? The Scientific Study of Computation. Expressing or Describing

CS252 Advanced Programming Language Principles. Prof. Tom Austin San José State University Fall 2013

Operating Systems CMPSC 473. Introduction January 15, Lecture 1 Instructor: Trent Jaeger

About Me. Office Hours: Tu 4-5, W 1-2, or by appointment Office: 346A IST Bldg

CS457/557 Functional Languages

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1,2 and 3, Spring 2017

Introduction to Computer Systems

Programming Languages CSCE

Introduction to Data Structures

CS 200, Section 1, Programming I, Fall 2017 College of Arts & Sciences Syllabus

Lecture 1: Introduction. 23. August, 2010

San Jose State University - Department of Computer Science

Who are we? Andre Platzer Out of town the first week GHC TAs Alex Crichton, senior in CS and ECE Ian Gillis, senior in CS

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1, 2, and 3, Spring 2018

Compilers. Computer Science 431

CS 3110 Lecture 1 Course Overview

San José State University Department of Computer Science CS151, Object Oriented Design, Section 04, Fall, 2016 (42968)

Compiler Design Spring 2018

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

Distributed Systems. COS 418: Distributed Systems Lecture 1. Mike Freedman. Backrub (Google) Google The Cloud is not amorphous

Spring 2003 Instructor: Dr. Shahadat Hossain. Administrative Matters Course Information Introduction to Programming Techniques

Programming language design and analysis


COMP 117: Internet-scale Distributed Systems Lessons from the World Wide Web

CS/SE 153 Concepts of Compiler Design

CPS352 - DATABASE SYSTEMS. Professor: Russell C. Bjork Spring semester, Office: KOSC 242 x4377

CS/SE 153 Concepts of Compiler Design

CS 378 (Spring 2003) Linux Kernel Programming. Yongguang Zhang. Copyright 2003, Yongguang Zhang

San José State University Department of Computer Science CS-144, Advanced C++ Programming, Section 1, Spring 2018

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

Lecture Notes CPSC 321 (Fall 2018) Today... Survey. Course Overview. Homework. HW1 (out) S. Bowers 1 of 8

Programming Languages

CS 241 Data Organization. August 21, 2018

CSSE 304 Assignment #13 (interpreter milestone #1) Updated for Fall, 2018

Hi! My name is Sorin. Programming Languages. Why study PL? (discussion) Why study PL? Course Goals. CSE 130 : Fall 2013

CONCORDIA UNIVERSITY DEPARTMENT OF CHEMISTRY AND BIOCHEMISTRY CHEM 293 SPECTROSCOPY AND STRUCTURE OF ORGANIC COMPOUNDS. SYLLABUS Winter 2018

Announcements. 1. Forms to return today after class:

Introduction to Nate Foster Spring 2018

Programming Languages 2nd edition Tucker and Noonan"

Advanced Programming CMPS 109

COSC 115A: Introduction to Web Authoring Fall 2014

CPS352 - DATABASE SYSTEMS. Professor: Russell C. Bjork Spring semester, Office: KOSC 242 x4377

CS 241 Data Organization using C

CPS352 Database Systems Syllabus Fall 2012

KOMAR UNIVERSITY OF SCIENCE AND TECHNOLOGY (KUST)


Programming Languages and Techniques (CIS120)

Philadelphia University Faculty of Information Technology Department of Computer Science --- Semester, 2007/2008. Course Syllabus

CS 121 Intro to Programming:Java - Lecture 2. Professor Robert Moll (+ TAs) CS BLDG

San José State University Department of Computer Science CS151, Section 04 Object Oriented Design Spring 2018

CS 565: Programming Languages. Spring 2008 Tu, Th: 16:30-17:45 Room LWSN 1106

Lecture 13 Introduction to Software Architecture

CS 3304 Comparative Languages. Lecture 1: Introduction

CMPE 152 Compiler Design

Syllabus COSC-051-x - Computer Science I Fall Office Hours: Daily hours will be entered on Course calendar (or by appointment)

CS 415 Midterm Exam Spring 2002

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

Key components of a lang. Deconstructing OCaml. In OCaml. Units of computation. In Java/Python. In OCaml. Units of computation.

CSE 240 Introduction to Computer Architecture

CS6202: Advanced Topics in Programming Languages and Systems Lecture 0 : Overview

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1 and 2, Spring 2016

Programming 2. Outline (112) Lecture 0. Important Information. Lecture Protocol. Subject Overview. General Overview.

CS 121 Intro to Programming:Java - Lecture 2. Professor Robert Moll (+ TAs) CS BLDG

Course Requirements. Prerequisites Miscellaneous

Side Effects (3A) Young Won Lim 1/13/18

CSE 12 Abstract Syntax Trees

Menu. Class 1: Introduction. Staff. Course Structure and Expectations. Contacting Us. Contacting You

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

CS3: Introduction to Symbolic Programming. Lecture 5:

CSC Operating Systems Fall Lecture - I Introduction. Tevfik Ko!ar. Louisiana State University. August 25 th, Contact Information

CMSC 330: Organization of Programming Languages. Functional Programming with OCaml

Compilers Project Proposals

CS 536. Class Meets. Introduction to Programming Languages and Compilers. Instructor. Key Dates. Teaching Assistant. Charles N. Fischer.

8/27/17. CS-3304 Introduction. What will you learn? Semester Outline. Websites INTRODUCTION TO PROGRAMMING LANGUAGES

COMP 1130 Programming Fundamentals (Javascript Rocks)

n Closed book n You are allowed 5 cheat pages n Practice problems available in Course Materials n Check grades in Rainbow grades

System Analysis and Design. Introduction: Object Oriented Design

CSC 256/456: Operating Systems. Introduction. John Criswell! University of Rochester

CSE 504: Compiler Design

Hi! My name is Sorin. Programming Languages. Why study PL? (discussion) Why study PL? Course Goals. CSE : Fall 2017

Using Java for Scientific Computing. Mark Bul EPCC, University of Edinburgh

PLAGIARISM. Administrivia. Compilers. CS143 11:00-12:15TT B03 Gates. Text. Staff. Instructor. TAs. Office hours, contact info on 143 web site

Hi! My name is Sorin. Programming Languages. Why study PL? (discussion) Why study PL? Course Goals. CSE 130 : Fall 2014

15-411/ Compiler Design

CIS Operating Systems Introduction. Professor Qiang Zeng

SAMS Programming A/B. Lecture #1 Introductions July 3, Mark Stehlik

Programming (Econometrics)

CISC 124: Introduction To Computing Science II

Chapter 11-B Homework ScalaFX & Eclipse Individual Assignment 25 Points

ECE Object-Oriented Programming using C++ and Java

CS115 - Module 1. Cameron Morland. Fall Cameron Morland CS115 - Module 1

CSE 344 JANUARY 3 RD - INTRODUCTION

CMPE 152 Compiler Design

CS : Language-based Security

Survey of Programming Languages Dr. R. M. Siegfried 407 Science (516) (not for homework submission)

Wayne State University Department of Computer Science CSC 5991: Advanced Web Technologies. Functional (Scala) Programming for the Web.

Concepts of Programming Languages

Transcription:

Languages and Compilers Nate Nystrom Amanj Sherwany usi-compilers@googlegroups.com http://usi-pl.github.io/lc/sp2015 University of Lugano

About me 2009 2010 Assistant Professor 1998 1999 compiler engineer 1991 1995 BS CS, Math 1996 1998 MS CS 1999 2006 PhD CS 2006 2009 PL/SE group 2011 present Assistant Professor Purdue HP Cornell IBM TX Lugano 2

My research Using programming languages to solve systems problems Extensibility Polyglot, an extensible compiler framework http://www.cs.cornell.edu/projects/polyglot A framework for Scala compiler plugins Languages for safe kernel extensions Languages for systems programming on the JVM Concurrency and distribution and fault tolerance X10, a concurrent OO language for HPC http://www.x10-lang.org Firepile, a Scala library for GPU programming Languages for reasoning about relaxed consistency 3

Books We will have readings from Learn You a Haskell. It is available free online. We will not follow the other books, but they may be useful for reference 4

Grading Homework 20% Midterm exam 40% Final exam 40% 5

Late policy Time late Multiplier 5 minutes 100% 1 hour 90% 24 hours 50% > 24 hours 0% If you need more time, ask in advance 6

Academic Honesty You are free to discuss assignments and solutions. You must write your own assignments. Do not represent any portion of others' work as your own. Say with whom you worked. Cite any outside sources. Assignments found to have been plagiarized will be given a grade of 100%. 7

If you need help Get help early! Talk to each other: post on the forum Talk to Amanj: room 205. Talk to me: room 203. If it is a private matter, email us: usi-compilers@googlegroups.com 8

Assignments About one homework every week. More frequently in the beginning. Some writing. Some math. Some programming. 9

Website http://usi-pl.github.io/lc/sp-2015 Everything will be posted there. 10

Moodle Exists. 11

Community Forums: This is for course announcements and public questions. We need one. What do you guys want to use? Questions for the staff: usi-compilers@googlegroups.com 12

What do you want to get out of this course?

About you What is your name? Where are you from? What do you hope to get out of this class? 14

What do we want you to get out of this course?

Goals Become familiar with different programming paradigms Understand principles behind programming languages Understand how programming languages are implemented 16

Goals Become familiar with different programming paradigms Understand principles behind programming languages Understand how programming languages are implemented 17

Different paradigms We ll look at several different programming languages and try to distill them to their essential features We ll also look at how those features interact e.g., parametric polymorphism + subtyping = WTF!? But, we ll program primarily in Haskell 18

Why Haskell?

Get out of your comfort zone 20

Learning zone 21

Panic zone 22

Why Haskell? Haskell is a pure functional language No assignment, no loops You have to think differently about programs Haskell is lazy Think about computation as function composition, not as a sequence of instructions 23

Haskell crash course Wednesday Bring your computers 24

What do I want you to get out of this course? Become familiar with different programming paradigms Understand principles behind programming languages Understand how programming languages are implemented 25

PL principles We ll look at features common across multiple languages Focus is on semantics (what do programs mean?) (Mostly) ignore syntax (what do programs look like?) 26

Dynamic semantics How does a program behave? How is a program evaluated? We ll experiment with different semantics by implementing interpreters 27

What does this expression do? 1 + 2 28

Static semantics Restrictions on programs to provide (some) correctness guarantees e.g., if this program type checks, it won t crash Focus on type systems Some other formal methods (e.g., program verification) are covered in other classes 29

What do I want you to get out of this course? Become familiar with different programming paradigms Understand principles behind programming languages Understand how programming languages are implemented 30

Language implementation We ll implement interpreters We ll implement compilers We ll implement language runtime systems 31

Coming up Haskell and functional programming Parsing Interpreters and language semantics Compilers 32

Homework for Wednesday Do Assignment 0. It s posted on the course website. It s easy. Install ghc (the Glasgow Haskell Compiler) 7.8 or later http://haskell.org Mac users: brew install ghc haskell-platform port install ghc 33