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