WebHome
Center
Master Program
Center
Home
Courses
People
Projects
Page
Edit Page
Rename Page
Attach File
Printable
Wiki Source
More ...
Web
Recent Changes
Notify Service
News
Page Index
Search
More ...
Wiki
About TWiki
Text Formatting
Registration
Change Password
Reset Password
Users
Groups
Log In
or
Register
Tom Lokhorst
Students
Name: Tom Lokhorst <br> Twitter: <a href="http://twitter.com/tomlokhorst">@tomlokhorst</a> <br> Email: <a href="mailto:tom@lokhorst.eu">tom@lokhorst.eu</a> <br> Website: <a href="http://tom.lokhorst.eu/">tom.lokhorst.eu</a> ----++ Planning -----+++ 2007-2008 -----++++ Period 1 * %Y% [[Master.Software Engineering][Software Engineering]] * %Y% [[Master.Distributed Object Systems][Distributed Object Systems]] * %Y% [[Master.Introduction To Functional Programming And Grammars And Parsing][Introduction To Functional Programming And Grammars And Parsing]] -----++++ Period 2 * %Y% [[Master.Implementation of Programming Languages][Implementation of Programming Languages]] * %Y% [[Master.Software Architecture][Software Architecture]] -----++++ Period 3 * %Y% [[Master.Automatic Program Analysis][Automatic Program Analysis]] * %Y% [[Master.Advanced Functional Programming][Advanced Functional Programming]] -----++++ Period 4 * <s>[[Master.Generic Programming][Generic Programming]]</s> * <s>[[Master.Intern.ExperimentationProject][Experimentation Project: Visualizing Algorithms & Data structures]]</s> ----+++ 2008-2009 -----++++ Period 1 * %Y% [[http://www.cs.uu.nl/education/vak.php?vak=INFOMDTP&jaar=2008][Seminar Dependently typed programming]] * %Y% [[http://www.cs.uu.nl/education/vak.php?vak=INFOMTBPA&jaar=2008][Seminar Type-based program analysis]] -----++++ Period 2 * %Y% [[http://www.cs.uu.nl/education/vak.php?vak=INFOMACC&jaar=2008][Seminar Advanced compiler construction]] -----++++ Period 3 and 4 * Thesis Proposal ----+++ 2009-2010 * Research * Thesis Writing -----++ Software Technology Colloquium Paper & talk: [[Stc.LanguageIntegratedQuery(LINQ)ForTheDotNETFramework][Language Integrated Query (LINQ) for the .NET Framework]]. <div id="talks-switch">Visited talks:</div> <div id="talks"> 1. [[Stc.TheStructureOfTheEssentialHaskellCompiler,OrCopingWithCompilerComplexity][The structure of the Essential Haskell Compiler, or Coping with Compiler Complexity]] 1. [[Stc.ImprovingAutomatedFeedback-BuildingAGenericRule-FeedbackGenerator][Improving Automated Feedback - Building a Generic Rule-Feedback Generator]] 1. [[Stc.JML:ANotationForSpecifyingTheDetailedDesignOfJavaClassesAndInterfaces][JML: a notation for specifying the detailed design of Java classes and interfaces]] 1. [[Stc.DesignOfAFunctionalityLanguage][Design Of A Functionality Language]] 1. [[Stc.QuickCheckingYourJavaClassesWithT2][Quick Checking Your Java Classes With T2]] 1. [[Stc.GeneratingSyntaxDiagramsFromEBNFWithAG][Generating Syntax Diagrams From EBNF With AG]] 1. [[Stc.ProvingProgramPropertiesAutomaticallyWithAgdaLight][Proving Program Properties Automatically With AgdaLight]] 1. [[Stc.TheDefaultCaseInHaskell:CounterpartyCreditRiskCalculationAtABNAMRO][The Default Case In Haskell Counterparty Credit Risk Calculation At ABN AMRO]] 1. [[Stc.AutomaticInstructionSetGeneration][Automatic Instruction Set Generation]] 1. [[Stc.TheICFPContest2007][The ICFP Contest 2007]] 1. [[Stc.ComparingProgramPlagiarismDetectionTools][Comparing Program Plagiarism Detection Tools]] 1. [[Stc.IntermediateSequenceRemoval][Intermediate Sequence Removal]] 1. [[Stc.Valgrind][Implement your own Dynamic Binary Analysis using the Valgrind Framework]] 1. [[Stc.GenericViewsForGenericTypes][Generic Views For Generic Types]] 1. [[Stc.TheSpringFramework][The Spring Framework]] 1. [[Stc.CLP,ALoadPerformanceFrameworkForTheConclusionTestPlatform][CLP, A load & performance framework for the Conclusion Test Platform]] 1. [[Stc.RelationsAsAFirst-ClassCitizenInJava][Relations As A First-Class Citizen In Java]] 1. [[Stc.TheZipper][The Zipper]] 1. [[Stc.FSharp-AFunctionalProgrammingLanguageWithinTheDotNETFramework][F# - A Functional Programming Language Within The .NET Framework]] 1. [[Stc.VectorLLVA][Vector LLVA]] 1. [[Stc.AbstractInterpretationOfFunctionalProgramsUsingAnAttributeGrammarSystem][Abstract Interpretation Of Functional Programs Using An Attribute Grammar System]] 1. [[Stc.TheBurrows-WheelerTransform][The Burrows-Wheeler Transform]] 1. [[Stc.StaticContractCheckingForHaskell][Static Contract Checking For Haskell]] 1. [[Stc.OptimizingAttributeGrammars][Optimizing Attribute Grammars]] 1. [[Stc.Model-BasedTestingWithSpecExplorer][Model-Based Testing With Spec Explorer]] 1. [[Stc.Object-RelationalMappingWithHibernate][Object-Relational Mapping With Hibernate]] 1. [[Stc.Trace-basedLogicTesting][Trace-based Logic Testing]] 1. [[Stc.MultipleInheritance][Multiple inheritance]] 1. [[Stc.ProtocolAndInterfaceTestingWithTheConclusionTestPlatform][Protocol And Interface Testing With The Conclusion Test Platform]] 1. [[Stc.MapReduce][Map Reduce]] 1. [[Stc.TheHaskellApplicationServer][The Haskell Application Server]] 1. [[Stc.PowerOfPi][Power Of Pi]] 1. [[Stc.TerminatingCombinatorParsersInAgda][Terminating Combinator Parsers In Agda]] 1. [[Stc.DebuggingHaskellProgramsByAskingTheOracle][Debugging Haskell programs by asking the Oracle]] 1. [[Stc.ComparingLibrariesForGenericProgrammingInHaskell][Comparing Libraries For Generic Programming In Haskell]] 1. [[http://www.ictonderzoek.net/?c=652][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 1. [[Stc.ConstructingAndComposingEfficientTop-downParsersAtRuntime][Constructing and Composing Efficient Top-down Parsers at Runtime]] 1. [[Stc.AnExecutableOperationalSemanticsForPython][An executable operational semantics for Python]] 1. [[Stc.ApplyingAlgebraicSpecificationsAndTestingToJava][Applying Algebraic Specifications and Testing to Java]] 1. [[Stc.ExtendingT2WithPrimePathCoverageExploration][Extending T2 with Prime Path Coverage Exploration]] 1. [[Stc.UsingPythonGeneratorsInMultiplexingServers][Using Python Generators in Multiplexing Servers]] 1. [[Stc.PolyvariantEscapeAnalysis][Polyvariant Escape Analysis]] 1. [[Stc.Binding-TimeAnalysis:SubtypingVersusSubeffecting][Binding-Time Analysis : Subtyping versus Subeffecting]] 1. [[Stc.ShiftingTheStage][Shifting The Stage: Staging with Delimited Control]] 1. [[Stc.BinaryRelationalQueryingForStructuralSourceCodeAnalysis][Binary Relational Querying For Structural Source Code Analysis]] 1. [[Stc.Proxima2WYSIWYGGenericEditingForTheWeb][Proxima 2.0, WYSIWYG generic editing for the Web]] 1. [[Stc.GarbageCollection][Garbage Collection]] 1. [[Stc.PugsBootstrappingPerl6WithHaskell][Pugs, Bootstrapping Perl 6 with Haskell]] 1. [[Stc.SlicingIt:IndexedContainersInHaskell][Slicing it: indexed containers? in Haskell?]] 1. [[Stc.SessionTypesInHaskell][Session Types in Haskell]] 1. [[Stc.AutomatedModel-basedAnalysisOfWeb-basedUserInterface(UI)][Automated Model-based Analysis Of Web-based User Interface (UI)]] 1. [[Stc.TypedTransformationsOfTypedAbstractSyntax][Typed Transformations of Typed Abstract Syntax]] 1. [[Stc.AProximaEditorForShuffle:ManipulatingFragmentedTextVisually][A Proxima editor for Shuffle: manipulating fragmented text visually]] 1. [[Stc.AttributeGrammarsFlyFirst-Class:HowToDoAspectOrientedProgrammingInHaskell][Attribute Grammars Fly First-Class: How To Do Aspect Oriented Programming In Haskell]] 1. [[Stc.ComputationalSemanticsWithFunctionalProgramming][Computational Semantics With Functional Programming]] 1. [[Stc.FunctionalSelf-AdjustingProgramming][Functional Self-Adjusting Programming]] 1. [[Stc.AlgorithmicTypeInferencerSpecificationsForDeclarativeTypeSystems][Algorithmic Type Inferencer Specifications for Declarative Type Systems]] 1. [[Stc.ComparingMasonToOtherPlagiarismDetectors][Comparing Mason to other plagiarism detectors]] 1. [[Stc.DynamicTypingInCs4][Dynamic typing in C# 4.0]] 1. [[Stc.AutomatedDiscoveryOfAlgebraicSpecificationsFromJavaClasses][Automated discovery of algebraic specifications from Java classes]] 1. [[Stc.DependentlyTypedGrammarTransformations][Dependently Typed Grammar Transformations]] 1. [[Stc.StaticTesting:UsingTheWeakestPre-condition][Static Testing: Using the Weakest Pre-condition]] 1. [[Stc.SpreadingTheJoy][Spreading the Joy. Making “Stricterness” More Relevant]] 1. [[Stc.GenericType-safeDiffAndPatchForFamiliesOfDatatypes][Generic Type-Safe Diff and Patch for Families of Datatypes]] (Thesis defense, Eelco Lempsink) 1. [[Stc.BuildingFlashBasedGUISInHaskell][wxFlashkell: Building Flash based GUI's in Haskell]] 1. [[Stc.PracticalAndGenericIncrementalization][Practical and Generic Incrementalization]] 1. [[Stc.ClassificationOfDevelopmentActivitiesUsingSourceCodeMetrics][Classification of development activities using source code metrics]] 1. [[Stc.UniversesForGenericPrograms][Universes for Generic Programs]] 1. [[Stc.DataParallelHaskell][Data Parallel Haskell]] 1. [[Stc.ConciseTreeWalksUsingAttributeGrammars:InHaskellAndJava][Concise tree walks using attribute grammars: in Haskell and Java]] 1. [[Stc.ExtendingASimpleFunctionalProgrammingLanguageWithDependentTypes][Extending a Simple Functional Programming Language with Dependent Types]] 1. [[Stc.GenericProgrammingWithFixedPointsForParametrizedDatatypes][Generic programming with fixed points for parametrized datatypes]] (Thesis defense, Erik Hesselink) 1. [[http://okmij.org/ftp/][Oleg Kiselyov]] and Ken Chan * [[Stc.IterateeIO--Safe,Practical,Declarative,IncrementalInputProcessing][Iteratee IO -- safe, practical, declarative, incremental input processing]] * [[Stc.ClickingOnDelimitedContinuations][Clicking on Delimited Continuations]] 1. [[Stc.Call-patternSpecializationInHaskell][Call-pattern specialization in Haskell]] 1. [[Stc.MakingStricternessMoreRelevant][Making "Stricterness" More Relevant]] 1. [[Stc.FinalPresentationsOfAdvancedCompilerConstructionSeminar][Final presentations of Advanced Compiler Construction Seminar]] 1. [[Stc.OnTheRoleOfMinimalTypingDerivationsInType-drivenProgramTransformation][On the Role of Minimal Typing Derivations in Type-driven Program Transformation]] 1. [[Stc.FeedbackOrientedSecurityAnalysis][Feedback oriented security analysis]] (Thesis defense, Jeroen Weijers) 1. [[Stc.FunWithAttributeGrammars][Fun With Attribute Grammars]] 1. [[Stc.FirstClassTreeTraversalIdiomsWithNestedAttributeGrammars][First Class Tree Traversal Idioms with Nested Attribute Grammars]] 1. [[Stc.ThePestoFramework][The Pesto Framework]] (Thesis defense, Chris Eidhof) 1. [[Stc.Neon,AnalyzingErrorsInHelium][Neon, Analyzing errors in Helium]] (Thesis defense, Mathijs Swint) 1. [[Stc.PersistentDataStructuresInHaskell][Persistent Data Structures In Haskell]] (Thesis defense, Sebastiaan Visser) 1. [[Stc.GenericSelectionsOfSubexpressions][Generic Selections of Subexpressions]] (Thesis defense, Martijn van Steenbergen) 1. [[Stc.OptimizingClosuresInLazyFunctionalLanguages][Optimizing Closures In Lazy Functional Languages]] (Thesis defense, Atze van der Ploeg) 1. [[Stc.IDEAS:ImprovingTheFunctionalProgrammingDomain][IDEAS: Improving the Functional Programming Domain]] (Thesis defense, Peter van de Werken) 1. [[Stc.ManagingConsistencyBetweenDependentObjects][Managing consistency between dependent objects]] (Thesis defense, Jeroen Bouwmans) </div> <script type="text/javascript"> var talksDiv = document.getElementById("talks"); var ol = null; for (ol = talksDiv.firstChild; ol; ol = ol.nextSibling) if (ol.tagName && ol.tagName.toLowerCase() == "ol") break; var lis = []; for (var olChild = ol.firstChild; olChild; olChild = olChild.nextSibling) if (olChild.tagName && olChild.tagName.toLowerCase() == "li") lis.push(olChild); var nrTalks = lis.length; var switchDiv = document.getElementById("talks-switch"); switchDiv.innerHTML = "<a></a>"; var switchA = switchDiv.childNodes[0]; switchA.href = "javascript:return false;"; switchA.addEventListener("click", switchTalks, false); // Init switchTalks(); function switchTalks() { var talks = "Visited talks (" + nrTalks + ")"; if (talksDiv.style.display == "none") { talksDiv.style.display = "block"; switchA.innerHTML = "- " + talks; } else { talksDiv.style.display = "none"; switchA.innerHTML = "+ " + talks; } } </script> -----++ Thesis Project -----+++ Topic/Area I really liked the last two seminars I took: [[http://www.cs.uu.nl/education/vak.php?vak=INFOMTBPA&jaar=2008][Type-based program analysis]] and [[http://www.cs.uu.nl/education/vak.php?vak=INFOMACC&jaar=2008][Advanced compiler construction]]. So I've decided to smash them together in a Master's thesis project. -----+++ Project <table> <tr> <td>Project title:</td> <td>Strictness Optimization in a Typed Intermediate Language <tr> <td>Advisor: <td>[[/staff/atze.html][Atze Dijkstra]] and [[/staff/doaitse.html][Doaitse Swierstra]] <tr> <td>Start date: <td>September 2009 <tr> <td>End date: <td>August 2010 </table> -----++++ 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 [[http://tom.lokhorst.eu/media/thesis-strictness-optimization.pdf][Strictness Optimization in a Typed Intermediate Language]] is now available. The chapter on strictness optimization for higher-order functions was presented at [[http://www.cs.uu.nl/wiki/IFL2010][IFL 2010]] and will be turned into a paper for the IFL proceedings.