Stratego/XT is a language and toolset for program transformation. The Stratego language provides rewrite rules for expressing basic transformations, programmable rewriting strategies for controlling the application of rules, concrete syntax for expressing the patterns of rules in the syntax of the object language, and dynamic rewrite rules for expressing context-sensitive transformations, thus supporting the development of transformation components at a high level of abstraction.
How do design ideas come together? Sketching provides a way to quickly examine a variety of design solutions. See how a digital pen-and-paper system reveals graphic processes through interactive animations. High-tech meets high-touch with Anoto technology, allowing traditional designers to easily generate vector animations. By recording stroke by stroke how designers develop their ideas, Architecture Professor Nancy Cheng is building a new way to teach drawing and research design thinking.
The Internet's layered architecture gives rise to a number of different topologies, with the lower layers defining more physical and the higher layers more virtual/logical types of connectivity structures. These topologies are very different and successful Internet topology modeling requires annotating the nodes and edges of the corresponding graphs with information that reflects their network-intrinsic meaning.
A transitive orientation of an undirected graph is an assignment of directions to its edges so that these directed edges represent a transitive relation between the vertices of the graph. Not every graph has a transitive orientation, but every graph can be turned into a graph that has a transitive orientation, by adding edges. We study the problem of adding an inclusion minimal set of edges to an arbitrary graph so that the resulting graph is transitively orientable. We show that this problem can be solved in polynomial time, and we give a surprisingly simple algorithm for it.
In my DRP, I explained how data integration can be implemented using a logic-based theorem prover or reasoner. The framework is based on ontology translation at a high level plus various syntax wrappers to store and retrieve data from underlying sources at the low level. This work focused primarily on the scenario of one source and one target. But how about multiple sources? This problem becomes interesting when we consider that each model transformation reasons independently over objects in the source domain, but it is highly possible that objects are shared across domains.
Vector and tensor fields appear naturally in many engineering and graphics applications. In this work, we develop a interactive design system for vector and tensor fields on 3D surfaces, which enables painterly rendering, pen-and-ink sketching of 3D shapes, texture synthesis, and quad-dominant remeshing. At the core of our system are efficient algorithms for the analysis and control of vector and tensor fields. For instance, vector and tensor fields often contain unwanted singularities, where visual artifacts can occur.
There has been a lot of recent interest in exploiting the Curry-Howard isomorphism in type systems for more or less traditional programming languages. Types based upon the Curry-Howard isomorphism can express precise properties of programs. Such properties can be either functional or non-functional properties. I.e. they can constrain either the output of the program, or the resources needed to produce the output, or both. In the talk I will introduce the basic ideas from scratch, and give many, many examples that illustrate its use.
Algorithms that are known to work well in practice are often applied to problems besides the one that they were originally designed to solve. This is accomplished by transforming the input and output into the appropriate format. Applying an algorithm to other problems is only useful when these transformations are efficient, hence there are limits on the scope of an algorithm.
Visual search is an integral and complicated component of most human-computer interaction (HCI) tasks. Most computer tasks involve visual search. Further, many design decisions can affect visual search. For example, listing menu items alphabetically or grouped by function can reduce the number of items the user needs to search through when compared to arbitrarily ordered items. Common or well-understood terms for web page link labels can increase the chance that users choose the correct links.
At Microsoft, we now regularly apply a new generation of static analysis tools that can automatically identify serious defects in programs. These tools examine millions of lines of code every day, long before the software is released for general use. With these tools, we catch more defects earlier in the software process, enabling Microsoft to deliver more reliable systems. A number of these tools have been released for general use through Microsoft's Visual Studio integrated development environment as well as freely available development kits.