Tom Lokhorst

Students
Name: Tom Lokhorst
Twitter: @tomlokhorst
Email: tom@lokhorst.eu
Website: tom.lokhorst.eu

Planning

2007-2008

Period 1

Period 2

Period 3

Period 4

2008-2009

Period 1

Period 2

Period 3 and 4

  • Thesis Proposal

2009-2010

  • Research
  • Thesis Writing

Software Technology Colloquium

Paper & talk: Language Integrated Query (LINQ) for the .NET Framework.

Visited talks:
  1. The structure of the Essential Haskell Compiler, or Coping with Compiler Complexity
  2. Improving Automated Feedback - Building a Generic Rule-Feedback Generator
  3. JML: a notation for specifying the detailed design of Java classes and interfaces
  4. Design Of A Functionality Language
  5. Quick Checking Your Java Classes With T2
  6. Generating Syntax Diagrams From EBNF With AG
  7. Proving Program Properties Automatically With AgdaLight
  8. The Default Case In Haskell Counterparty Credit Risk Calculation At ABN AMRO
  9. Automatic Instruction Set Generation
  10. The ICFP Contest 2007
  11. Comparing Program Plagiarism Detection Tools
  12. Intermediate Sequence Removal
  13. Implement your own Dynamic Binary Analysis using the Valgrind Framework
  14. Generic Views For Generic Types
  15. The Spring Framework
  16. CLP, A load & performance framework for the Conclusion Test Platform
  17. Relations As A First-Class Citizen In Java
  18. The Zipper
  19. F# - A Functional Programming Language Within The .NET Framework
  20. Vector LLVA
  21. Abstract Interpretation Of Functional Programs Using An Attribute Grammar System
  22. The Burrows-Wheeler Transform
  23. Static Contract Checking For Haskell
  24. Optimizing Attribute Grammars
  25. Model-Based Testing With Spec Explorer
  26. Object-Relational Mapping With Hibernate
  27. Trace-based Logic Testing
  28. Multiple inheritance
  29. Protocol And Interface Testing With The Conclusion Test Platform
  30. Map Reduce
  31. The Haskell Application Server
  32. Power Of Pi
  33. Terminating Combinator Parsers In Agda
  34. Debugging Haskell programs by asking the Oracle
  35. Comparing Libraries For Generic Programming In Haskell
  36. Scientific ICT-Research Event Netherlands (SIREN) (2008)
    • Negotiation Dynamics
    • Semantic network analysis: old ideas and new means to master the information society
    • Knowledge Management of Global Work
    • Mythology and Folklore of Computer Network Protocol Design
  37. Constructing and Composing Efficient Top-down Parsers at Runtime
  38. An executable operational semantics for Python
  39. Applying Algebraic Specifications and Testing to Java
  40. Extending T2 with Prime Path Coverage Exploration
  41. Using Python Generators in Multiplexing Servers
  42. Polyvariant Escape Analysis
  43. Binding-Time Analysis : Subtyping versus Subeffecting
  44. Shifting The Stage: Staging with Delimited Control
  45. Binary Relational Querying For Structural Source Code Analysis
  46. Proxima 2.0, WYSIWYG generic editing for the Web
  47. Garbage Collection
  48. Pugs, Bootstrapping Perl 6 with Haskell
  49. Slicing it: indexed containers? in Haskell?
  50. Session Types in Haskell
  51. Automated Model-based Analysis Of Web-based User Interface (UI)
  52. Typed Transformations of Typed Abstract Syntax
  53. A Proxima editor for Shuffle: manipulating fragmented text visually
  54. Attribute Grammars Fly First-Class: How To Do Aspect Oriented Programming In Haskell
  55. Computational Semantics With Functional Programming
  56. Functional Self-Adjusting Programming
  57. Algorithmic Type Inferencer Specifications for Declarative Type Systems
  58. Comparing Mason to other plagiarism detectors
  59. Dynamic typing in C# 4.0
  60. Automated discovery of algebraic specifications from Java classes
  61. Dependently Typed Grammar Transformations
  62. Static Testing: Using the Weakest Pre-condition
  63. Spreading the Joy. Making “Stricterness” More Relevant
  64. Generic Type-Safe Diff and Patch for Families of Datatypes (Thesis defense, Eelco Lempsink)
  65. wxFlashkell: Building Flash based GUI's in Haskell
  66. Practical and Generic Incrementalization
  67. Classification of development activities using source code metrics
  68. Universes for Generic Programs
  69. Data Parallel Haskell
  70. Concise tree walks using attribute grammars: in Haskell and Java
  71. Extending a Simple Functional Programming Language with Dependent Types
  72. Generic programming with fixed points for parametrized datatypes (Thesis defense, Erik Hesselink)
  73. Oleg Kiselyov and Ken Chan
  74. Call-pattern specialization in Haskell
  75. Making "Stricterness" More Relevant
  76. Final presentations of Advanced Compiler Construction Seminar
  77. On the Role of Minimal Typing Derivations in Type-driven Program Transformation
  78. Feedback oriented security analysis (Thesis defense, Jeroen Weijers)
  79. Fun With Attribute Grammars
  80. First Class Tree Traversal Idioms with Nested Attribute Grammars
  81. The Pesto Framework (Thesis defense, Chris Eidhof)
  82. Neon, Analyzing errors in Helium (Thesis defense, Mathijs Swint)
  83. Persistent Data Structures In Haskell (Thesis defense, Sebastiaan Visser)
  84. Generic Selections of Subexpressions (Thesis defense, Martijn van Steenbergen)
  85. Optimizing Closures In Lazy Functional Languages (Thesis defense, Atze van der Ploeg)
  86. IDEAS: Improving the Functional Programming Domain (Thesis defense, Peter van de Werken)
  87. Managing consistency between dependent objects (Thesis defense, Jeroen Bouwmans)

Thesis Project

Topic/Area

I really liked the last two seminars I took: Type-based program analysis and Advanced compiler construction. So I've decided to smash them together in a Master's thesis project.

Project

Project title: Strictness Optimization in a Typed Intermediate Language
Advisor: Atze Dijkstra and Doaitse Swierstra
Start date: September 2009
End date: August 2010

Description

Abstract: Static program analysis and compile time program optimizations are important aspects of functional language compilers. Strictness optimization is a big part of a Haskell compiler, it is interesting from a research perspective, as well as being needed for practical performance issues.

In this presentation we explore a new, typed intermediate language designed for doing static program analysis. This language is well suited to implementing optimizing transformations. We implement strictness optimization for first-order functions, and see how we can safely combine this optimization with other optimizations.

Finally, we discuss how we can extend the language to implement strictness optimization for higher-order functions.

Thesis & subsequent work

The final thesis Strictness Optimization in a Typed Intermediate Language is now available.

The chapter on strictness optimization for higher-order functions was presented at IFL 2010 and will be turned into a paper for the IFL proceedings.