250 likes | 447 Views
Principles of Programming Languages. Hongwei Xi University of Cincinnati Spring, 2001. Welcome!. 20-ECES-730: Principles of Programming Languages Introduction to fundamental principles in programming language design and implementation
E N D
Principles of Programming Languages Hongwei Xi University of Cincinnati Spring, 2001 Introduction
Welcome! • 20-ECES-730: Principles of Programming Languages • Introduction to fundamental principles in programming language design and implementation • Emphasis on the use of mathematical methods in programming language studies Introduction
Course Overview • Type Systems • What is type safety? • What are the advantages of typed languages? • What are the disadvantages of typed languages? Introduction
Course Overview • Operational Semantics • What is operational semantics? • Why do we need operational semantics? • How do we formally present operational semantics? • Natural semantics (big step) • Reduction semantics (small step) Introduction
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? • Polymorphism • How can polymorphism help code reuse? • How can polymorphism enforce data abstraction? Introduction
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
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
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
What this course is like? • There is no textbook for this course • Taking notes is a large part of the course • Both studying and experimentation are essential to gaining understanding of the material 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 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! Introduction
People • Teaching Staff • Hongwei Xi, Assistant Prof • Swaroop Kavalanekar, Graduate Student Introduction
Schedules • Lectures: TTh 3:30-4:45PM • Classroom: Swift 500 • Office Hours: • Thursday 4:30-6:30PM • Or by appointment (preferred) • Or stop by 826 Rhodes Introduction
Programming Language • Standard ML (SML) • http://cm.bell-labs.com/cm/cs/what/smlnj • If you know nothing of SML, learn it now! Introduction
Homework • Approximately 5 or 6 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
Exams and Grades • Midterm (30%) • Date: Friday, 27 April, 2001 • Format: In-class or Take-home • Final (40%) • Date: Thursday, 7 June, 2001 • Time: 7:30-9:30AM • Place: Classroom • Homework (30%) • All exams are open-book • Participation can make difference on letter grade 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 teaching staff are always willing to help • Ask earlier, rather than later Introduction
A Plea and A Warning • This is my second 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 Introduction
Course Information • Everything is on the web! • Course Homepagehttp://www.ececs.uc.edu/~hwxi/eces730.html • Notes, Slides, Handouts, Assignments, Solutions • Please visit the homepage frequently! Introduction
Welcome on Board and Enjoy the Ride! Introduction