1 / 19

Type Systems for Programming Languages

Delve into type systems for programming languages with an emphasis on mathematical methods. Explore topics like lambda-calculus, polymorphism, subtyping, effects, continuation, type inference, and more. This course stresses both mathematical reasoning and implementation skills to achieve clarity and rigor. Learn about practical application alongside theoretical concepts for a comprehensive understanding of language design and implementation.

Download Presentation

Type Systems for Programming Languages

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Type Systems for Programming Languages Hongwei Xi University of Cincinnati Spring, 2000 Introduction

  2. Welcome! • 20-ECES-717: Type Systems for Programming Languages • Introduction to type disciplines in programming language design and implementation • Emphasis on the use of mathematical methods in programming language studies Introduction

  3. Course Overview • Type Systems • What is type safety? • What are the advantages of typed languages? • What are the disadvantages of typed languages? Introduction

  4. Course Overview • Simply Typed Lambda-Calculus • Call-by-name and Call-by-value • Confluence Property (Church-Rosser) • Weak Normalization Theorem • Strong Normalization Theorem Introduction

  5. Course Overview • Parametric Polymorphism • How can polymorphism facilitate code reuse? • How can polymorphism enforce data abstraction? Introduction

  6. Course Overview • Subtyping • 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? Introduction

  7. Course Overview • Effects • References • Exceptions • Problematic interaction between polymorphism and effects • Value restriction Introduction

  8. Course Overview • Continuation • callcc (call with current continuation) • throw • CPS compilation Introduction

  9. Course Overview • Type Inference • Do types have to be obtrusive to programming? • Is it a good practice to omit writing types as much as possible? • What are the desirable properties in a type inference algorithm? Introduction

  10. What is this course like? • Stressing both mathematical reasoning and implementation skill • Prove theorems • Build systems • Emphasizing mathematical rigor and clarity • “If you can’t explain it, I won’t trust it ” Introduction

  11. 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. Introduction

  12. What this course is like? • There is a draft textbook for this course on-line as well as some course notes • Taking notes is a large part of the course as we may often digress from the text book • Both studying and experimentation are essential to gaining understanding of the material Introduction

  13. 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 Introduction

  14. Schedules • Lectures: MWF 12-12:50PM BH839 • Office Hours: • Thursday 4-6PM • Or by appointment (preferred) • Or stop by 811 D Rhodes Introduction

  15. Programming Languages • Standard ML (preferred) • http://cm.bell-labs.com/cm/cs/what/smlnj • Objective Caml (preferred) • http://caml.inria.fr Introduction

  16. Homework • Approximately 5 assignments • About one every two weeks • Individual work only unless specified otherwise! • Clarity and elegance count • It is not enough to just “work” on test data Introduction

  17. Exams and Grades • Midterm • Monday, May 1 • In-class or Take Home (20%) • Final • Tuesday, June 6 • In-class or Take Home (40%) • Homework (40%) • All exams are open-book • Participation can make difference on letter grade Introduction

  18. 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 Introduction

  19. Course Information • Everything is on the web! • Course Homepagehttp://www.ececs.uc.edu/~hwxi/eces717.html • Notes, Slides, Handouts, Assignments, Solutions • Please visit the homepage frequently! Introduction

More Related