Foundations of Programming Languages – Course Overview

Slides:



Advertisements
Similar presentations
F28PL1 Programming Languages Greg Michaelson/Jamie Gabbay Lecture 0: Overview.
Advertisements

1 Undergraduate Curriculum Revision Department of Computer Science February 10, 2010.
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 1 Overview A good programming language is.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. slide 1 CS 125 Introduction to Computers and Object- Oriented Programming.
Programming Language Semantics Mooly SagivEran Yahav Schrirber 317Open space html://
Programming Languages Structure
CSC 171 – FALL 2004 COMPUTER PROGRAMMING LECTURE 0 ADMINISTRATION.
Summer 02-03Programming Language Concepts1 Programming Language Concepts (CS 360) Lecture 1: Overview, Grammars, and Little Languages Jeremy R. Johnson.
New experiences with teaching Java as a second programming language Ioan Jurca “Politehnica” University of Timisoara/Romania
COMP 321: Introduction to Computer Systems Scott Rixner Alan L. Cox
Foundations of Programming Languages – Course Overview Xinyu Feng Acknowledgments: some slides taken or adapted from lecture notes of Stanford CS242
EECE 310 Software Engineering Lecture 0: Course Orientation.
CSCA48 Course Summary.
CSCI-383 Object-Oriented Programming & Design Lecture 1.
CS 430/530 Formal Semantics Paul Hudak Yale University Department of Computer Science Lecture 1 Course Overview September 6, 2007.
Programming Languages Summer
Motions for Permanent Undergraduate Course Numbers Brian L. Evans On Behalf of the ECE Curriculum Committee September 21, 2015.
CS112: Structure of Programming Languages A smorgasbord of topics in programming languages including programming paradigms and syntax, semantics, implementation.
CS5205Introduction1 CS5205: Foundation in Programming Languages Lecture 0 : Overview Lecturer : Chin Wei Ngan Office : COM2.
CS533 Concepts of Operating Systems Jonathan Walpole.
Some Computer Science Conceptual Background Material Doug Hogan This version for UIC Spring 2016 CS 107.
COP4020 INTRODUCTION FALL COURSE DESCRIPTION Programming Languages introduces the fundamentals of the design and implementation of programming languages.
서울대한양대 ( 안 산 ) 충남대 1년1년 컴퓨터기초 (C) 컴퓨터프로그래밍 (C, Java) 컴퓨터프로그래밍 (C) 2. 봄 프로그래밍 원리 (Scheme, ML) Structure & Interpretation of Computer Programs 프로그래밍 방법론.
Language Paradigms CS655.
Scott C. Johnson Lecturer Rochester Institute of Technology Spring 2016.
Sub-fields of computer science. Sub-fields of computer science.
Programming Languages
The language focusses on ease of use
CSC 222: Computer Programming II
Concepts of Programming Languages
INTERMEDIATE PROGRAMMING WITH JAVA
Basic 1960s It was designed to emphasize ease of use. Became widespread on microcomputers It is relatively simple. Will make it easier for people with.
Why study programming languages?
Syllabus Introduction to Computer Science
INF 212 Analysis of Prog. Langs Final Lecture
Types for Programs and Proofs
Undergraduate PL Class
Programming Language Design Concepts
Computer Science Courses
CMSC 611 Advanced Computer Arch.
CMPUT Compiler Design and Optimization
ECE 671 – Lecture 1 Introduction.
Chapter 1 Reasons to study concepts of PLs Programming Domains
课程名 编译原理 Compiling Techniques
1.1 Reasons to study concepts of PLs
Chapter 1 Preliminaries.
Introduction and Overview
CMPE419 Mobile Application Development
Autonomous Cyber-Physical Systems: Course Introduction
Introduction to programming languages, Algorithms & flowcharts
CS 3304 Comparative Languages Fall 2011
ECE 671 – Lecture 1 Introduction.
EECE 310 Software Engineering
Programming Languages
Foundations of Programming Languages – Course Overview
Chapter 1 Preliminary. Chapter 1 Preliminary 1.1 Reasons for Studying Concepts of Programming Languages Increased capacity to express ideas Improved.
CMSC 611 Advanced Computer Arch.
Organization of Programming Languages
CS 3304 Comparative Languages Fall 2011
Programming Languages 2nd edition Tucker and Noonan
강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
Programming Languages
CMPE419 Mobile Application Development
Optimizing Compilers CISC 673 Spring 2009 Course Overview
Lecture 1: Overview of CSCI 485 Notes: I presented parts of this lecture as a keynote at Educator’s Symposium of OOPSLA Shahram Ghandeharizadeh Director.
CS533 Concepts of Operating Systems Class 1
Lecture 1: Overview of CSCI 485 Notes: I presented parts of this lecture as a keynote at Educator’s Symposium of OOPSLA Shahram Ghandeharizadeh Associate.
Lecture 1 Class Overview
Computer Science Courses in the Major
Presentation transcript:

Foundations of Programming Languages – Course Overview Acknowledgments: some slides taken or adapted from lecture notes of Stanford CS242 https://courseware.stanford.edu/pg/courses/317431/

What are programming languages for Communication between programmers and HW Model the real world Model computation & communication One of the most fundamental area of computer science Examples assembly, imperative (e.g., C), functional, OO, logical, web (e.g., JavaScript), domain-specific languages Still a very active field, both in academia and industry New languages: F#, Go, Scala, …

POPL 2017 Invited Talk on Rust

What do we care Easy to use Better performance Language design: good syntax, clear semantics, high-abstraction level Enhance software productivity e.g., domain specific languages (DSL) Better performance Language implementations: compilers, runtime (GC), parallelization Better software quality (reliability and security) Type safety, static/dynamic checking, verification Theoretical foundations Semantics, verification, etc. Connections with other related fields: logic, computation theory, etc.

Language goals and trade-offs

Why should you take this course Programming language concepts A language is a “conceptual universe” (Perlis) OO vs. Functional, for instance Distinguish key properties from superficial details Better programming skills Write more efficient and reliable code Be prepared for new PL methods, paradigms, tools Learn to design your own languages Domain-specific languages (e.g., big data, machine learning, networking, robotics)

Some PL Research Goals Design and Implementation Easy to use (design), efficient executable code (impl) Multicore/Parallel/Distributed programming Flaw detection: static, dynamic, etc. Related fields: OS, architecture, domain specific fields Principles and Theories Semantics and Properties (e.g. expressiveness) of Programming Languages Principles and theories for safety/security/correctness Program analysis and verification Related fields: logic and algebra, computation theory

Major Conferences Principles of Programming Languages (POPL) Programming Language Design and Implementation (PLDI) Object-Oriented Programming, Systems, Languages & Applications (OOPSLA) Principles and Practice of Parallel Programming (PPoPP) International Conferences on Functional Programming (ICFP) Architectural Support for Programming Languages and Operating Systems (ASPLOS) Languages, Compilers and Tools for Embedded Systems (LCTES)

Major Conferences (2) Related: Logic in Computer Science (LICS) Computer Aided Verification (CAV)

1-slide overview of research@KYHCS KYHCS: USTC-Yale Joint Research Center for High-Confidence Software (founded in 2008) Location: Suzhou and Hefei Goal: building high-confidence SW systems System software verification (e.g. OS kernels, compilers) Verification of concurrent algorithms (e.g. multicore programs) Automated analysis and verification of programs Other: new language design and impl., semantics, …

Course Infomation Instructors Course webpage Feng Xinyu Course webpage http://staff.ustc.edu.cn/~xyfeng/teaching/FOPL/ TA, office hours, news and assignments, lecture notes, reading materials and resources Follow the courseware of Stanford CS242 https://courseware.stanford.edu/pg/courses/317431/

Temporary Syllabus Introduction Haskell Foundations: lambda calculus, opr. semantics Scope and stack storage allocation Types and type checking/inference Parametric polymorphism, type classes (ad-hoc polymorphism) Monads Exceptions and continuations

Temporary Syllabus (2) Modularity Objects Prototypes, classes, inheritance Object types and subtyping Implementation structures Templates and generics Concurrency & Atomicity Advanced topics

Grading Attendance: 15% Homework: 55% Final paper: 30% Class attendance is highly recommended Homework: 55% Problem sets and programming assignments Final paper: 30%