Organization of Programming Languages

Slides:



Advertisements
Similar presentations
Programming Paradigms Introduction. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1:
Advertisements

Imperative Programming with Dependent Types Hongwei Xi University of Cincinnati.
June 13, Introduction to CS II Data Structures Hongwei Xi Comp. Sci. Dept. Boston University.
January 12, Compiler Design Hongwei Xi Comp. Sci. Dept. Boston University.
January 19, Compiler Design Hongwei Xi Comp. Sci. Dept. Boston University.
Programming Languages Structure
September 5, Concepts of Programming Languages Hongwei Xi Comp. Sci. Dept. Boston University.
September 7, Concepts of Programming Languages Hongwei Xi Comp. Sci. Dept. Boston University.
Summer 02-03Programming Language Concepts1 Programming Language Concepts (CS 360) Lecture 1: Overview, Grammars, and Little Languages Jeremy R. Johnson.
July 16, Introduction to CS II Data Structures Hongwei Xi Comp. Sci. Dept. Boston University.
Introduction to Programming Using C++ Dr. Mohamed Khafagy.
CS 415: Programming Languages Course Introduction Aaron Bloomfield Fall 2005.
New experiences with teaching Java as a second programming language Ioan Jurca “Politehnica” University of Timisoara/Romania
1 CSCE Programming Languages Introduction and Course Administration Dr. Hyunyoung Lee 410B HR Bright
PZ01A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ01A -- Introduction Programming Language Design and.
Computer Network Fundamentals CNT4007C
EECE 310 Software Engineering Lecture 0: Course Orientation.
CNS 4450 Syllabus. Context Language is a tool of thought. We rarely think without words. In solving problems by computer, we eventually get to the point.
1 Introduction Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
CSE 3302 Programming Languages Chengkai Li Spring 2008 Lecture 1 - Introduction, Spring CSE3302 Programming Languages, UT-Arlington ©Chengkai Li,
Chapter 12 Support for Object oriented Programming.
Computer Networks CNT5106C
Principles of Imperative Computation Lecture 1 January 15 th, 2012.
1 Welcome Alireza Humber College Lecture 1 Game 540 Alireza
서울대한양대 ( 안 산 ) 충남대 1년1년 컴퓨터기초 (C) 컴퓨터프로그래밍 (C, Java) 컴퓨터프로그래밍 (C) 2. 봄 프로그래밍 원리 (Scheme, ML) Structure & Interpretation of Computer Programs 프로그래밍 방법론.
Scott C. Johnson Lecturer Rochester Institute of Technology Spring 2016.
EGR 115 Introduction to Computing for Engineers Course Overview and Introduction Monday 29 Aug EGR 115 Introduction to Computing for Engineers Slide 1.
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
CSE341: Programming Languages Lecture 26 Course Victory Lap
Computer Network Fundamentals CNT4007C
CSE 3302 Programming Languages
COP 5621 Compiler Construction
EGR 115 Introduction to Computing for Engineers
PROGRAMMING LANGUAGES
Programming Language Design Concepts
Theory and Practice of Web Technology
课程名 编译原理 Compiling Techniques
Foundations of Programming Languages – Course Overview
CSE341: Programming Languages Lecture 26 Course Victory Lap
Introduction to Data Structures
Midterm Review In Text: Chapters 1-3, 5-7, 15, 16.
EECE 310 Software Engineering
Programming Languages
Foundations of Programming Languages – Course Overview
Final Review In Text: Chapters 1-3, 5-10, 12,
Final Review In Text: Chapters 1-3, 5-10, 12,
Introduction to CS II Data Structures
Introduction to Programming Using C++
Final Review In Text: Chapters 1-3, 5-10,
Computer Programming 1 introduction to JAVA Lecture 1 Instructor: Ruba A. Salamah Islamic University of Gaza.
Final Review In Text: Chapters 1-3, 5-12,
Automata and Formal Languages
Principles of Programming Languages
Richard Anderson Autumn 2015 Lecture 1
CSE341: Programming Languages Lecture 26 Course Victory Lap
Principles of Programming Languages
CSE341: Programming Languages Lecture 26 Course Victory Lap
Overview of Programming Paradigms
Principles of Programming Languages
강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
Programming Languages
Programming Languages and Paradigms
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
Type Systems for Programming Languages
CSCE 314: Programming Languages Dr. Dylan Shell
Richard Anderson Winter 2019 Lecture 2
EECE.2160 ECE Application Programming
Richard Anderson Autumn 2016 Lecture 1
CSCI 1730: C++ and System Programming
Richard Anderson Autumn 2019 Lecture 2
Presentation transcript:

Organization of Programming Languages Hongwei Xi University of Cincinnati Winter, 2001 10 December 2018 Introduction

Welcome! 20-ECES-403: Organization of Programming Languages Introduction to fundamental principles in programming language design and implementation Emphasis on the use of mathematical methods in programming language studies 10 December 2018 Introduction

Software Crisis Faulty and fragile software becomes more and more common Security breaches happen more and more frequently Maintenance cost skyrockets Programming productivity stagnates 10 December 2018 Introduction

Programming Languages Ideally, a programming language should be simple and general permit extensive error checking facilitate proofs of program properties Possess a correct and efficient implementation … … 10 December 2018 Introduction

Programming Languages Invariably, there are conflicts among these expectations Language design must resolve such conflicts with careful attention to the needs of the user 10 December 2018 Introduction

Programming Paradigms Imperative programming FORTRAN, Algol 60, C, Pascal Functional programming LISP, SML, Haskell Object-oriented programming Smalltalk, C++, Java Logic programming Prolog … … 10 December 2018 Introduction

Course Overview Syntactic Structure Expression notations Prefix, Postfix, Infix, Mixed Abstract Syntax Trees Lexical Analysis Context-free Grammars Backus-Naur Form (BNF) Ambiguity 10 December 2018 Introduction

Course Overview Structured programming Syntax-directed control-flow Programming with invariants Proofs rules for partial correctness 10 December 2018 Introduction

Course Overview Procedure activations What is a procedure? Parameter-passing methods call-by-value, call-by-name, call-by-reference, call-by-value-result Scope rules for names Activation records 10 December 2018 Introduction

Course Overview Object-oriented programming What is an object? Object-oriented thinking Inheritance code reuse 10 December 2018 Introduction

Course Overview Type Systems What is type safety? What are the advantages of typed languages? What are the disadvantages of typed languages? 10 December 2018 Introduction

Course Overview Type Inference Polymorphism Do types have to be obtrusive to programming? Is it a good practice to omit writing types as much as possible? Polymorphism How can polymorphism help code reuse? How can polymorphism enforce data abstraction? 10 December 2018 Introduction

Course Overview Subtyping Objects, Classes and Inheritance When is one type a subtype of another? How can subtyping help code reuse? Objects, Classes and Inheritance How can we build flexible and extensible software? How is subtyping related to inheritance? 10 December 2018 Introduction

What is this course like? You will have to work hard in order to keep up! Many ideas may sound unfamiliar to you. They are often formal and take time to “sink in”. Assignments often require both mathematical reasoning and implementation skill. 10 December 2018 Introduction

What is this course like? Most of all, it’s a lot fun! Elegant interplay between theory and practice Rapid exposure to many fundamental ideas Enormous potential for pursuing further studies in language design and implementation 10 December 2018 Introduction

What this course is not! This is not a course on your top 10 favorite programming languages We care about fundamental principles, not fads! This is not a compiler course This course can be of great help for you to learn compiler construction Nonetheless, you will be doing a lot of programming! 10 December 2018 Introduction

Schedules Lectures: Office Hours: 3-6PM Wednesdays Time: MWF 10-10:50AM Place: 821B Rvschl Office Hours: 3-6PM Wednesdays Or by appointment Or stop by 826 Rhodes Hall 10 December 2018 Introduction

Programming Languages Standard ML (preferred) http://cm.bell-labs.com/cm/cs/what/smlnj C, C++, Java If you use none of these languages, you need permission to register 10 December 2018 Introduction

Homework Approximately one assignment each week Individual work only unless specified otherwise! Clarity and elegance count It is not enough to just “work” on test data 10 December 2018 Introduction

Exams and Grades Midterm Final Homework (25%) All exams are open-book Friday, Feb 9, 2001 In-class (25%) Final 8-10AM, Monday, Mar 12 In-class (50%) Homework (25%) All exams are open-book Participation can make a difference on letter grade 10 December 2018 Introduction

Academic Integrity Strict adherence to the university guidelines All work must be solely your own! If you have difficulty keeping up, ask for help! The instructor is always willing to help Ask earlier, rather than later 10 December 2018 Introduction

A Plea and A Warning This is my first time to offer such a course I’m likely to be overly ambitious I’m certain to make (many) mistakes But I’ll do my best to run the course smoothly Please be patient and ask a lot of questions 10 December 2018 Introduction

Course Information Everything is on the web! Course Homepage http://www.ececs.uc.edu/~hwxi/eces403.html Notes, Slides, Handouts, Assignments, Solutions Please visit the homepage frequently! 10 December 2018 Introduction