1 / 17

Compilation 2007 What Have We Learned?

Compilation 2007 What Have We Learned?. Michael I. Schwartzbach BRICS, University of Aarhus. What Have You Had the Chance to Learn. Concrete skills: compiler technology insights into programming language design Technical skills: all about Java

Download Presentation

Compilation 2007 What Have We Learned?

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. Compilation 2007What Have We Learned? Michael I. Schwartzbach BRICS, University of Aarhus

  2. What Have You Had the Chance to Learn • Concrete skills: • compiler technology • insights into programming language design • Technical skills: • all about Java • building and testing software on a larger scale • reading huge and complex specifications • Organizational skills: • handling stress and deadlines • finding relevant help and information • surviving as a group What Have We Learned?

  3. Compiler Technology • Compiler architecture • Typical compiler phases • Scanners and parsers • Scope resolvers • Type checkers • Static analyzers • Code templates • You can build your own compiler What Have We Learned?

  4. Programming Language Design • The interplay between languages and compilers • Features that are difficult to implement • Limitations of current technology • Scope rules • Type rules • Consequences of undecidability • You can discuss language design intelligently • You can design another language What Have We Learned?

  5. All About Java • The subtleties of the Java specification • Name resolution • Hierarchy checks • Type checking • Static analysis • JVM and verification • Code templates • You are a Java expert, not merely a user What Have We Learned?

  6. All About Java • The subtleties of the Java specification • Name resolution • Hierarchy checks • Type checking • Static analysis • JVM and verification • Code templates • You are a Java expert, not merely a user What Have We Learned?

  7. Building and Testing Software • 10,000 lines of code handed in • 203,742 lines for 22 groups [6,381..14,538] • Code sharing and versioning (cvs) • Unit testing • Auto-generated code • Visitor patterns • Aspects • Debugging • You can handle a complex piece of software What Have We Learned?

  8. Reading Complex Specifications • The Java Language Specification (25,000 lines) • The JVM Specification (24,000 lines) • The SableCC specification (too few lines) • The Joos Languages • 6 complex and subtle hand-in specifications • You can read huge and complex specs What Have We Learned?

  9. Handling Stress and Deadlines • You have met 7 hard deadlines • Deadlines are a way of life, not a sudden crisis • Balancing ambitions with resources • Realistic estimations of work load • Getting started in time • You are better at facing stress and deadlines What Have We Learned?

  10. Finding Help and Information • Specifications may be missing or unclear • Don't panic! • Help is available from many sources • RTFM • Help each other • Use weekly consulting productively • Ask useful questions on the phorum • You are better at finding help and information What Have We Learned?

  11. Surviving as a Group • Group work is a challenge • Negotiating ambitions • Exploiting different skills • Setting aside your ego • Respecting internal deadlines • Ensuring your own outcome • You have more experience in group work What Have We Learned?

  12. A Large Tool to Solve a Large Problem • The project is much larger that that of comparable courses at other institutions • This is made possible by: • big technology • explicit phase slicing • the online test tool • Pros: • more fun, more instructive, more real • Cons: • possibly confusing (compared to a C0 compiler) What Have We Learned?

  13. Status After the Course • You have these nice new competences • You have an experience to look back on • You should be proud of yourselves • You probably know now whether you like compilers and programming languages What Have We Learned?

  14. Want More? • Look for courses by: • Michael Schwartzbach • Anders Møller • Olivier Danvy • Erik Ernst • Klaus Ostermann • Spring 2008: • Static Analysis (Q3) • Software Verification (Q4) • Types in Object-Oriented Languages (Q4) What Have We Learned?

  15. Want Even More? • Michael and Anders as thesis advisors: A domain-specific language for Web surfing (2007) Type checking for Javascript (2007) Static analysis for Java servlets and JSP (2007) Analysis of SAX applications (2007) Contracts for Web service development (2004 + 2006) Static validation of XSLT (2004 + 2006) Understanding shape analysis (2005) Specification and validation of Web services (2004) Extensible syntax transformation (2003) Automatic validation of Web forms (2002) Static bounds on memory usage in Java (2002) What Have We Learned?

  16. Want Even More? • Michael and Anders as thesis advisors: A domain-specific language for Web surfing (2007) Type checking for Javascript (2007) Static analysis for Java servlets and JSP (2007) Analysis of SAX applications (2007) Contracts for Web service development (2004 + 2006) Static validation of XSLT (2004 + 2006) Understanding shape analysis (2005) Specification and validation of Web services (2004) Extensible syntax transformation (2003) Automatic validation of Web forms (2002) Static bounds on memory usage in Java (2002) What Have We Learned?

  17. Want Still More? • PhD studies • 4+4 model starts after 4 years of study • But talk to us early (now?), if you are interested • Ongoing project with student programmers What Have We Learned?

More Related