Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Nada Amin is active.

Publication


Featured researches published by Nada Amin.


symposium on principles of programming languages | 2013

Optimizing data structures in high-level programs: new directions for extensible compilers based on staging

Tiark Rompf; Arvind K. Sujeeth; Nada Amin; Kevin J. Brown; Vojin Jovanovic; HyoukJoong Lee; Manohar Jonnalagedda; Kunle Olukotun

High level data structures are a cornerstone of modern programming and at the same time stand in the way of compiler optimizations. In order to reason about user- or library-defined data structures compilers need to be extensible. Common mechanisms to extend compilers fall into two categories. Frontend macros, staging or partial evaluation systems can be used to programmatically remove abstraction and specialize programs before they enter the compiler. Alternatively, some compilers allow extending the internal workings by adding new transformation passes at different points in the compile chain or adding new intermediate representation (IR) types. None of these mechanisms alone is sufficient to handle the challenges posed by high level data structures. This paper shows a novel way to combine them to yield benefits that are greater than the sum of the parts. Instead of using staging merely as a front end, we implement internal compiler passes using staging as well. These internal passes delegate back to program execution to construct the transformed IR. Staging is known to simplify program generation, and in the same way it can simplify program transformation. Defining a transformation as a staged IR interpreter is simpler than implementing a low-level IR to IR transformer. With custom IR nodes, many optimizations that are expressed as rewritings from IR nodes to staged program fragments can be combined into a single pass, mitigating phase ordering problems. Speculative rewriting can preserve optimistic assumptions around loops. We demonstrate several powerful program optimizations using this architecture that are particularly geared towards data structures: a novel loop fusion and deforestation algorithm, array of struct to struct of array conversion, object flattening and code generation for heterogeneous parallel devices. We validate our approach using several non trivial case studies that exhibit order of magnitude speedups in experiments.


Nature Biotechnology | 2003

Global architecture of genetic interactions on the protein network.

Owen Ozier; Nada Amin; Trey Ideker

• VOLUME 21 • MAY 2003 • www.nature.com/naturebiotechnology CORRESPONDENCE 490 plants retain both of the adjacent cpDNA NcoI sites that are outside the experimental construct. Most digested DNA samples from the kanamycin-resistant plants show two hybridization fragments that mirror those in the transplastome (Fig. 3a,b in ref. 1). The generally large size of the integrants is confirmed by sequence data from two of the kanamycin-resistant plants (Fig. 3e,f in ref. 1). For example, there are 1,775 bp of vector chloroplast DNA and 5,917 bp of nonvector chloroplast DNA (see Supplementary Information to ref. 1) between the junction with nuclear DNA and the aadA gene in kr1. Similarly, there are 1,165 bp of vector chloroplast DNA and 934 bp of nonvector chloroplast DNA adjacent to the junction site downstream of neo in the nuclear integrant of kr17. Consequently, there can be no doubt that most of these integrants contain more DNA of chloroplast origin than was present in our experimental cassette (see Fig. 1). Integrants that are shorter than the chloroplast transformation vector may also be present. Regarding the concern over multiple integrants, we do not yet understand the complexity of the transfer process, but we do know that single Mendelian loci are involved in all but four of the kanamycin-resistant plants from the screen. Multiple integrations do not require multiple transposition events. The lysis of a single plastid would release tens to hundreds of plastid genomes into the cytoplasm, some of which could integrate into a common genomic location. This process could be analogous to the high-copy number of transgenes delivered into the cell via biolis-tic transformation, so it is not surprising to find a proportion of multiple integrants among the kanamycin-resistant plants. We did not conclude that chloroplast-specific genes, such as aadA in our experiment, will not function when transposed to the nucleus. What we did show, in all cases where we selected for nuclear kanamycin resistance, was that the relocated neo gene was accompanied by the adjacent aadA gene (and other flanking native chloroplast DNA). We noted that the latter gene was not expressed to confer spectinomycin resistance. A News & Views commentary 4 that accompanied our article in Nature suggested that we undertake a much larger screen to search for spectinomycin resistance to determine whether a chloroplast specific gene rarely could be expressed after integration into an appropriate nuclear environment. This is an evolutionary experiment in the …


international conference on computer design | 2009

Computer-aided design for microfluidic chips based on multilayer soft lithography

Nada Amin; William Thies; Saman P. Amarasinghe

Microfluidic chips are emerging as a powerful platform for automating biology experiments. As it becomes possible to integrate tens of thousands of components on a single chip, researchers will require design automation tools to push the scale and complexity of their designs to match the capabilities of the substrate. However, to date such tools have focused only on droplet-based devices, leaving out the popular class of chips that are based on multilayer soft lithography. In this paper, we develop design automation techniques for microfluidic chips based on multilayer soft lithography. We focus our attention on the control layer, which is driven by pressure actuators to invoke the desired flows on chip. We present a language in which designers can specify the Instruction Set Architecture (ISA) of a microfluidic device. Given an ISA, we automatically infer the locations of valves needed to implement the ISA. We also present novel algorithms for minimizing the number of control lines needed to drive the valves, as well as for routing valves to control ports while admitting sharing between the control lines. To the microfluidic community, we offer a free computer-aided design tool, Micado, which implements a subset of our algorithms as a practical plug-in to AutoCAD. Micado is being used successfully by microfluidic designers. We demonstrate its performance on three realistic chips.


Higher-Order and Symbolic Computation archive | 2012

Scala-Virtualized: linguistic reuse for deep embeddings

Tiark Rompf; Nada Amin; Adriaan Moors; Philipp Haller

Scala-Virtualized extends the Scala language to better support hosting embedded DSLs. Scala is an expressive language that provides a flexible syntax, type-level computation using implicits, and other features that facilitate the development of embedded DSLs. However, many of these features work well only for shallow embeddings, i.e. DSLs which are implemented as plain libraries. Shallow embeddings automatically profit from features of the host language through linguistic reuse: any DSL expression is just as a regular Scala expression. But in many cases, directly executing DSL programs within the host language is not enough and deep embeddings are needed, which reify DSL programs into a data structure representation that can be analyzed, optimized, or further translated. For deep embeddings, linguistic reuse is no longer automatic.Scala-Virtualized defines many of the language’s built-in constructs as method calls, which enables DSLs to redefine the built-in semantics using familiar language mechanisms like overloading and overriding. This in turn enables an easier progression from shallow to deep embeddings, as core language constructs such as conditionals or pattern matching can be redefined to build a reified representation of the operation itself.While this facility brings shallow, syntactic, reuse to deep embeddings, we also present examples of what we call deep linguistic reuse: combining shallow and deep components in a single DSL in such a way that certain features are fully implemented in the shallow embedding part and do not need to be reified at the deep embedding level.


A List of Successes That Can Change the World: Essays Dedicated to Philip Wadler on the Occasion of His 60th Birthday | 2016

The Essence of Dependent Object Types

Nada Amin; Karl Samuel Grütter; Tiark Rompf; Sandro Stucki

Focusing on path-dependent types, the paper develops foundations for Scala from first principles. Starting from a simple calculus D\(_{<:}\) of dependent functions, it adds records, intersections and recursion to arrive at DOT, a calculus for dependent object types. The paper shows an encoding of System F with subtyping in D\(_{<:}\) and demonstrates the expressiveness of DOT by modeling a range of Scala constructs in it.


european conference on object oriented programming | 2012

JavaScript as an embedded DSL

Grzegorz Kossakowski; Nada Amin; Tiark Rompf

Developing rich web applications requires mastering different environments on the client and server sides. While there is considerable choice on the server-side, the client-side is tied to JavaScript, which poses substantial software engineering challenges, such as moving or sharing pieces of code between the environments. We embed JavaScript as a DSL in Scala, using Lightweight Modular Staging. DSL code can be compiled to JavaScript or executed as part of the server application. We use features of the host language to make client-side programming safer and more convenient. We use gradual typing to interface typed DSL programs with existing JavaScript APIs. We exploit a selective CPS transform already available in the host language to provide a compelling abstraction over asynchronous callback-driven programming in our DSL.


conference on object-oriented programming systems, languages, and applications | 2014

Foundations of path-dependent types

Nada Amin; Tiark Rompf

A scalable programming language is one in which the same concepts can describe small as well as large parts. Towards this goal, Scala unifies concepts from object and module systems. An essential ingredient of this unification is the concept of objects with type members, which can be referenced through path-dependent types. Unfortunately, path-dependent types are not well-understood, and have been a roadblock in grounding the Scala type system on firm theory. We study several calculi for path-dependent types. We present DOT which captures the essence - DOT stands for Dependent Object Types. We explore the design space bottom-up, teasing apart inherent from accidental complexities, while fully mechanizing our models at each step. Even in this simple setting, many interesting patterns arise from the interaction of structural and nominal features. Whereas our simple calculus enjoys many desirable and intuitive properties, we demonstrate that the theory gets much more complicated once we add another Scala feature, type refinement, or extend the subtyping relation to a lattice. We discuss possible remedies and trade-offs in modeling type systems for Scala-like languages.


international conference on functional programming | 2015

Functional pearl: a SQL to C compiler in 500 lines of code

Tiark Rompf; Nada Amin

We present the design and implementation of a SQL query processor that outperforms existing database systems and is written in just about 500 lines of Scala code -- a convincing case study that high-level functional programming can handily beat C for systems-level programming where the last drop of performance matters. The key enabler is a shift in perspective towards generative programming. The core of the query engine is an interpreter for relational algebra operations, written in Scala. Using the open-source LMS Framework (Lightweight Modular Staging), we turn this interpreter into a query compiler with very low effort. To do so, we capitalize on an old and widely known result from partial evaluation known as Futamura projections, which state that a program that can specialize an interpreter to any given input program is equivalent to a compiler. In this pearl, we discuss LMS programming patterns such as mixed-stage data structures (e.g. data records with static schema and dynamic field components) and techniques to generate low-level C code, including specialized data structures and data loading primitives.


1st Summit on Advances in Programming Languages (SNAPL 2015) | 2015

Go Meta! A Case for Generative Programming and DSLs in Performance Critical Systems

Tiark Rompf; Kevin J. Brown; HyoukJoong Lee; Arvind K. Sujeeth; Manohar Jonnalagedda; Nada Amin; Georg Ofenbeck; Alen Stojanov; Yannis Klonatos; Mohammad Dashti; Christoph Koch; Markus Püschel; Kunle Olukotun

Most performance critical software is developed using very low-level techniques. We argue that this needs to change, and that generative programming is an effective avenue to enable the use of high-level languages and programming techniques in many such circumstances.


conference on object oriented programming systems languages and applications | 2016

Java and scala's type systems are unsound: the existential crisis of null pointers

Nada Amin; Ross Tate

We present short programs that demonstrate the unsoundness of Java and Scalas current type systems. In particular, these programs provide parametrically polymorphic functions that can turn any type into any type without (down)casting. Fortunately, parametric polymorphism was not integrated into the Java Virtual Machine (JVM), so these examples do not demonstrate any unsoundness of the JVM. Nonetheless, we discuss broader implications of these findings on the field of programming languages.

Collaboration


Dive into the Nada Amin's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Adriaan Moors

École Polytechnique Fédérale de Lausanne

View shared research outputs
Top Co-Authors

Avatar

Manohar Jonnalagedda

École Polytechnique Fédérale de Lausanne

View shared research outputs
Top Co-Authors

Avatar

Sandro Stucki

École Polytechnique Fédérale de Lausanne

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Owen Ozier

Massachusetts Institute of Technology

View shared research outputs
Researchain Logo
Decentralizing Knowledge