Professional Documents
Culture Documents
% Homework 1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[a4paper, 12pt]{article} % Font size (can be 10pt, 11pt or 12pt) and paper size (remove
a4paper for US letter paper)
\usepackage{xcolor}
\usepackage{marginnote}
\linespread{1.05} % Change line spacing here, Palatino benefits from a slight increase by default
\textheight = 674pt
\textwidth = 350pt
\parindent = 0pt
\topmargin = -10pt
\makeatletter
\renewcommand{\maketitle}{ % Customize the title - do not edit title and author name here, see the
TITLE block below
\begin{center}
\vspace{20pt} % Some vertical space between the title and author name
\vspace{10pt} % Some vertical space between the author block and abstract
%\end{flushright}
\end{center}
%----------------------------------------------------------------------------------------
% TITLE
%----------------------------------------------------------------------------------------
\title{\textbf{Abstracts}\\ % Title
\date{\today} % Date
%----------------------------------------------------------------------------------------
\begin{document}
\color{black}\colorbox{yellow}{\parbox{10cm}{
As software becomes more and more complex, it is more and more important to structure it well. Well-
structured software is easy to write and to debug, and provides a collection of modules that can be
reused to reduce future programming costs.}}\\
\color{black}\colorbox{green}{\parbox{10cm}{
In this paper we show that two features of functional languages in particular, higher-order functions and
lazy evaluation, can contribute significantly to modularity.}}\\
\color{black}\colorbox{red}{\parbox{10cm}{
As examples, we manipulate lists and trees, program several numerical algorithms, and implement the
alpha-beta heuristic (an algorithm from Artificial Intelligence used in game-playing programs).}}\\
\color{black}\colorbox{orange}{\parbox{10cm}{
We conclude that since modularity is the key to successful programming, functional programming offers
important advantages for software development.}}\\
\color{black}\colorbox{yellow}{\parbox{10cm}{
We discuss a range of modeling choices that arise when constructing an end-to-end differentiable
programming language suitable for learning programs from inputoutput examples}}\\
\color{black}\colorbox{green}{\parbox{10cm}{
Taking cues from programming languages research, we study the effect of memory allocation schemes,
immutable data, type systems, and built-in control-flow structures on the success rate of learning
algorithms.}}\\
\marginnote{ \colorbox{red}{Methods} }[1cm]
\color{black}\colorbox{red}{\parbox{10cm}{
\color{black}\colorbox{orange}{\parbox{10cm}{
Our empirical evaluation shows that this language allows to learn far more programs than existing
baselines.}}\\
Abstract (Paper: Crossing the Gap from Imperative to Functional Programming through Refactoring)
\color{black}\colorbox{yellow}{\parbox{10cm}{
Java 8 introduces two functional features: lambda expressions and functional operations like map or
filter that apply
a lambda expression over the elements of a Collection. Refactoring existing code to use these new
features enables explicit but unobtrusive parallelism and makes the code more succinct.
\color{black}\colorbox{green}{\parbox{10cm}{
However, refactoring is tedious: it requires changing many lines of code. It is also error-prone: the
programmer must reason about the control-, data-flow, and side-effects. Fortunately, refactorings can
be automated.}}\\
\color{black}\colorbox{red}{\parbox{10cm}{
We designed and implemented LambdaFicator, a tool which automates two refactorings. The first
refactoring converts anonymous inner classes to lambda expressions. The second refactoring converts
for loops that iterate over Collections to functional operations that use lambda expressions. Using 9
open-source projects, we have applied these two refactorings 1263 and 1709 times, respectively.}}\\
The results show that LambdaFicator is useful: (i) it is widely applicable, (ii) it reduces the code bloat, (iii)
it increases programmer productivity, and (iv) it is accurate.}}\\
\color{black}\colorbox{yellow}{\parbox{10cm}{
\color{black}\colorbox{green}{\parbox{10cm}{
In this article, we provide a brief overview, aimed at those new to the field,}}\\
\color{black}\colorbox{gray}{\parbox{10cm}{
and explain the progress of functional programming since its inception. A selection of functional
languages are provided as examples. We also suggest some improvements and speculate on the
potential future directions of this paradigm}}\\
\color{black}\colorbox{yellow}{\parbox{10cm}{
Functional and logic programming languages are combined into a new applicative language. The
ultimate aim is the development of more efficient programs than would otherwise be possible.
\color{black}\colorbox{green}{\parbox{10cm}{
This paper introduces the key idea and gives examples of its use to solve various programming
problems.}}\\
\color{black}\colorbox{gray}{\parbox{10cm}{
\end{document}