aboutsummaryrefslogtreecommitdiff
path: root/thesis/parts/introduction.tex
diff options
context:
space:
mode:
Diffstat (limited to 'thesis/parts/introduction.tex')
-rw-r--r--thesis/parts/introduction.tex34
1 files changed, 31 insertions, 3 deletions
diff --git a/thesis/parts/introduction.tex b/thesis/parts/introduction.tex
index 42f29c3..452a6d8 100644
--- a/thesis/parts/introduction.tex
+++ b/thesis/parts/introduction.tex
@@ -1,3 +1,31 @@
-\todo{Motivation: Effect of structure selection on performance}
-\todo{Shortfalls in existing work: Flexibility, scalability}
-\todo{Contributions: Speed, Accuracy, etc.}
+
+%% *** Introduce problem
+
+%% **** Container types common in programs
+
+The vast majority of programs will make extensive use of collection data types --- types intended to hold multiple instances of other types.
+This allows programmers to use things like growable lists, sets, or trees without worrying about implementing them themselves.
+
+%% **** Functionally identical implementations
+
+However, this still leaves the problem of selecting the ``best'' underlying implementation.
+Most programmers will simply stick with the same one every time, with some languages like Python even building in a single implementation for everyone.
+%% **** Large difference in performance
+While this is simplest, it can have a drastic effect on performance in many cases (\cite{l_liu_perflint_2009}, \cite{jung_brainy_2011}).
+
+%% *** Motivate w/ effectiveness claims
+
+%% *** Overview of aims & approach
+
+We propose a system for the automatic selection of container implementations, based on both user-specified requirements and inferred requirements for performance.
+%% **** Scalability to larger projects
+%% **** Ease of integration into existing projects
+%% **** Ease of adding new container types
+Our system is built to be scalable, both in the sense that it can be applied to large projects, and that new container types can be added with ease.
+
+%% **** Flexibility of selection
+We are also able to detect some cases where the optimal container type varies at runtime, and supply containers which start off as one implementation, and move to another when it is more optimal to do so.
+
+%% *** Overview of results
+\todo{Overview of results}
+