Recent Here is my CV as a PDF (updated February 10, 2011). Publications Conal Elliott's home page
supertech.csail.mit.edu/cilk/ Cilk Cilk (pronounced "silk") is a linguistic and runtime technology for algorithmic multithreaded programming developed at MIT. The philosophy behind Cilk is that a programmer should concentrate on structuring her or his program to expose parallelism and exploit locality, leaving Cilk's runtime system with the responsibility of scheduling the computation to run efficiently on a given platform. The Cilk runtime system takes care of details like load balancing, synchronization, and communication protocols. Cilk is algorithmic in that the runtime system guarantees efficient and predictable performance.
The circle-ellipse problem in software development (sometimes known as the square-rectangle problem) illustrates a number of pitfalls which can arise when using subtype polymorphism in object modelling. The issues are most commonly encountered when using object-oriented programming. The existence of the circle-ellipse problem is sometimes used to criticize object-oriented programming. It may also imply that hierarchical taxonomies are difficult to make universal, implying that situational classification systems may be more practical. Circle-ellipse problem
SOLID Development Principles – In Motivational Pictures I found the Motivator this morning. It lets you create your own motivational pictures. So, here’s my first run at creating the SOLID software development principles in motivational picture form.
Duck typing When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck. In duck typing, a programmer is only concerned with ensuring that objects behave as demanded of them in a given context, rather than ensuring that they are of a specific type. For example, in a non-duck-typed language, one would create a function that requires that the object passed into it be of type Duck, in order to ensure that that function can then use the object's walk and quack methods. In a duck-typed language, the function would take an object of any type and simply call its walk and quack methods, producing a run-time error if they are not defined. Instead of specifying types formally, duck typing practices rely on documentation, clear code, and testing to ensure correct use. Concept examples
Let be a property provable about objects of type Liskov substitution principle
Design by contract "Design by Contract" is a registered trademark of Eiffel Software in the United States, and should not be confused with the general design approach. Microsoft calls their design-by-contract programming implementation "Code Contracts". History Design by contract has its roots in work on formal verification, formal specification and Hoare logic. The original contributions include: Description
The lambda cube. Direction of each arrow is direction of inclusion. In mathematical logic and type theory, the λ-cube is a framework for exploring the axes of refinement in Coquand's calculus of constructions, starting from the simply typed lambda calculus (written as Lambda cube
Logical harmony, a name coined by Sir Michael Dummett, is a supposed constraint on the rules of inference that can be used in a given logical system. The logician Gerhard Gentzen proposed that the meanings of logical connectives could be given by the rules for introducing them into discourse. For example, if one believes that the sky is blue and one also believes that grass is green, then one can introduce the connective and as follows: The sky is blue AND grass is green. Gentzen's idea was that having rules like this is what gives meaning to one's words, or at least to certain words. The idea has also been associated with Wittgenstein's dictum that in many cases we can say, the meaning is the use. Most contemporary logicians prefer to think that the introduction rules and the elimination rules for an expression are equally important. Logical harmony
Here’s another GamePitches exclusive! We bring to you Tiger Style Games’ Concept Document for the best-selling, multiple award-winning, and widely considered to be 2009′s iPhone Game of the Year, SPIDER! (iTunes product page link) YOU ARE A SPIDER. One day you discover an abandoned mansion. Who lived here, and why did they leave? Game Pitches | Game Pitches
Service-oriented architecture Service-oriented architecture (SOA) is a software design and software architecture design pattern based on discrete pieces of software providing application functionality as services to other applications. This is known as service-orientation. It is independent of any vendor, product or technology.
Service-orientation design principles are proposed principles for developing the solution logic of services within service-oriented architectures (SOA). Overview The success of software development based on any particular design paradigm is never assured. Software developed under the service-oriented design paradigm carries even greater risks. This is because a service-oriented architecture usually spans multiple business areas and requires considerable initial analysis. Therefore, SOA developed without concrete guidelines is very likely to fail. To ensure that the move towards service-orientation is a positive change that delivers on its promised benefits, it is helpful to adopt a set of rules. Service-Orientation Design Principles
Orchestration (computing) This usage of orchestration is often discussed in the context of service oriented architecture, virtualization, provisioning, Converged Infrastructure and dynamic datacenter topics. Orchestration in this sense is about aligning the business request with the applications, data, and infrastructure. It defines the policies and service levels through automated workflows, provisioning, and change management.
Web Service Choreography
Component-based software engineering
Prefer Composition over Inheritance | Learn & Master Cocos2D Game Development
Cowboy Programming » Evolve Your Hierarchy
Elliott » Denotational design with type class morphisms