Compilation 2007 What Have We Learned? Michael I. Schwartzbach BRICS, University of Aarhus.

Slides:



Advertisements
Similar presentations
Inside an XSLT Processor Michael Kay, ICL 19 May 2000.
Advertisements

Software Engineering Key construction decisions Design challenges.
Microsoft Research March 20, 2000 A Programming Language for Developing Interactive Web Services Claus Brabrand BRICS, University of Aarhus, Denmark.
By Rohen Shah – rxs07u.  Introduction  Different methodologies used  Different types of testing tools  Most commonly used testing tools  Summary.
1 XML Data Management Course Outline and Organisation Werner Nutt.
INFORMATION TECHNOLOGY IN BUSINESS AND SOCIETY SESSION 20 – HOW SOFTWARE IS MADE SEAN J. TAYLOR.
1 DiSTiL : A Transformation Library for Data Structures Yannis Smaragdakis.
Java.  Java is an object-oriented programming language.  Java is important to us because Android programming uses Java.  However, Java is much more.
SableCC SableCC is developed by professors and graduate students at McGill University and is open source (licensed under the Apache License, Version 2.0)‏
Compilation 2007 What Will You Learn? Michael I. Schwartzbach BRICS, University of Aarhus.
28/1/2001 Seminar in Databases in the Internet Environment Introduction to J ava S erver P ages technology by Naomi Chen.
Miser-C MISRA-C Compliance Checker Ian Biller, Phillippe Dass, Bryan Eldridge, Jon Senchyna, Tracy Thomas.
Software Reliability Methods Sorin Lerner. Software reliability methods: issues What are the issues?
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
© Andy Wellings, 2003 Roadmap  Introduction  Concurrent Programming  Communication and Synchronization  Completing the Java Model  Overview of the.
Copyright © 2002 Pearson Education, Inc. Slide 4-1 Choosing the Hardware for an E-commerce Site  Hardware platform  Refers to all the underlying computing.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
CS 330 Programming Languages 09 / 16 / 2008 Instructor: Michael Eckmann.
All About the Master’s Thesis Michael I. Schwartzbach Gudmund S. Frandsen University of Aarhus Department of Computer Science.
Master’s Theses on Programming Validation Tools at Michael Schwartzbach
Research in Compilers and How it Relates to Software Engineering Part III: Relation to SE Tomofumi Yuki EJCP 2015 June 22, Nancy.
Java PAL.  Contains the development kit and the runtime environment ( aka the Java Virtual Machine )  Download Link:
Miser-C MISRA-C Compliance Checker Ian Biller, Phillippe Dass, Bryan Eldridge, Jon Senchyna, Tracy Thomas Faculty Coach: Professor Michael Lutz Project.
Introduction to Systems Analysis and Design Trisha Cummings.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Introduction to Software Engineering CEN 4010.
CSCI 224 Introduction to Java Programming. Course Objectives  Learn the Java programming language: Syntax, Idioms Patterns, Styles  Become comfortable.
Managing the development and purchase of information systems (Part 1)
COMPUTER PROGRAMMING Source: Computing Concepts (the I-series) by Haag, Cummings, and Rhea, McGraw-Hill/Irwin, 2002.
A Simple Method for Extracting Models from Protocol Code David Lie, Andy Chou, Dawson Engler and David Dill Computer Systems Laboratory Stanford University.
Programming. What is a Program ? Sets of instructions that get the computer to do something Instructions are translated, eventually, to machine language.
Team Skill 6: Building the Right System From Use Cases to Implementation (25)
CS 330 Programming Languages 09 / 04 / 2008 Instructor: Michael Eckmann.
1 XML Data Management Course Outline and Organisation Werner Nutt.
{ Graphite Grigory Arashkovich, Anuj Khanna, Anirban Gangopadhyay, Michael D’Egidio, Laura Willson.
Algoval: Evaluation Server Past, Present and Future Simon Lucas Computer Science Dept Essex University 25 January, 2002.
An Ad Hoc Writable Rule Language for White-Box Security Scanners Author:Sebastian Schinzel Referent:Prof. Dr. Alexander del Pino Korreferent:Prof. Dr.
MSFC Avionics Department Flight Software Group CMM Level 2 Certified Automated Software Coding Standards System Development Team Assessment Team Luis Trevino.
Slide 1 Teams l Most products are too large to be completed by a single software professional with the given time constraints l You will work within a.
What IS a Journeyman Programmer? Why this program?
© 2006 IBM Corporation Agile Planning Web UI. © 2006 IBM Corporation Agenda  Overview of APT Web UI  Current Issues  Required Infrastructure  API.
L8 - March 28, 2006copyright Thomas Pole , all rights reserved 1 Lecture 8: Software Asset Management and Text Ch. 5: Software Factories, (Review)
Writing requirements specifications. Why we need requirements specifications To give structure to your desires To avoid waste of resources To avoid slippage.
Chapter 1 Introduction. Chapter 1 - Introduction 2 The Goal of Chapter 1 Introduce different forms of language translators Give a high level overview.
CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A.
Implementation of SCENS Yan Zhao. Current Status Current implementation is web-based –
ICFEM 2002, Shanghai Reasoning about Hardware and Software Memory Models Abhik Roychoudhury School of Computing National University of Singapore.
Chapter 3 JSP Overview. The Problem with Servlets processing the request and generating the response are both handled by a single servlet class Java programming.
1 The Requirements Problem Chapter 1. 2 Standish Group Research Research paper at:  php (1994)
Software Quality Assurance and Testing Fazal Rehman Shamil.
Software Development Introduction
ANALYSIS PHASE OF BUSINESS SYSTEM DEVELOPMENT METHODOLOGY.
Aspect Security - RaviShekhar Gopalan - Prof. Lieberherr Software Security (CSG379)
Introduction to System Analysis and Design MADE BY: SIR NASEEM AHMED KHAN DOW VOCATIONAL & TECHNICAL TRAINING CENTRE.
1 Computer Science 1021 Programming in Java Geoff Draper University of Utah.
Compilers: History and Context COMP Outline Compilers and languages Compilers and architectures – parallelism – memory hierarchies Other uses.
Slice & dice the Web with XmlPL, The XML Processing Language A presentation for Boise Code Camp 2007 Joseph Coffland Cauldron Development LLC.
Teaching Compiler Design
Chapter 1 The Systems Development Environment
Basic 1960s It was designed to emphasize ease of use. Became widespread on microcomputers It is relatively simple. Will make it easier for people with.
Chapter 1 Introduction.
Introduction to Compiler Construction
Definition CASE tools are software systems that are intended to provide automated support for routine activities in the software process such as editing.
Types for Programs and Proofs
Chapter 1 The Systems Development Environment
Chapter 1 Introduction.
Chapter 1 The Systems Development Environment
An Introduction to Visual Basic .NET and Program Design
MBI 630: Systems Analysis and Design
An introduction into learning and performance
Chapter 1 The Systems Development Environment
Presentation transcript:

Compilation 2007 What Have We Learned? Michael I. Schwartzbach BRICS, University of Aarhus

2 What Have We Learned? 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

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

4 What Have We Learned? 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

5 What Have We Learned? 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

6 What Have We Learned? 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

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

8 What Have We Learned? 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

9 What Have We Learned? 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

10 What Have We Learned? 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

11 What Have We Learned? 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

12 What Have We Learned? 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)

13 What Have We Learned? 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

14 What Have We Learned? 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)

15 What Have We Learned? 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 ( ) Static validation of XSLT ( ) 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)

16 What Have We Learned? 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 ( ) Static validation of XSLT ( ) 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)

17 What Have We Learned? 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