You are on page 1of 6

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Author: Emmanuel Urias

% Course: COTI 4306

% 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{flushright} % Right align

\begin{center}

{\LARGE\@title} % Increase the font size of the title

\vspace{20pt} % Some vertical space between the title and author name

{\large\@author} % Author name


\\\@date % Date

\vspace{10pt} % Some vertical space between the author block and abstract

%\end{flushright}

\end{center}

%----------------------------------------------------------------------------------------

% TITLE

%----------------------------------------------------------------------------------------

\title{\textbf{Abstracts}\\ % Title

COTI 4306 Homework 2} % Subtitle

\author{\textsc{First \& Last name} % Author

\\{\textit{University name}}} % Institution

\date{\today} % Date

%----------------------------------------------------------------------------------------

\begin{document}

\maketitle % Print the title section

Abstract (Paper: Why Functional Programming Matters)

\marginnote{ \colorbox{yellow}{Background} }[1cm]

\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.}}\\

\marginnote{ \colorbox{green}{Purpose} }[1cm]

\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.}}\\

\marginnote{ \colorbox{red}{Methods} }[1cm]

\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).}}\\

\marginnote{ \colorbox{orange}{Results and Conclusions} }[1cm]

\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.}}\\

Abstract (Paper: Neural Functional Programming)

\marginnote{ \colorbox{yellow}{Background} }[1cm]

\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}}\\

\marginnote{ \colorbox{green}{Purpose} }[1cm]

\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}{

We build a range of models leading up to a simple differentiable functional programming language}}\\

\marginnote{ \colorbox{orange}{Results and Conclusions} }[1cm]

\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)

\marginnote{ \colorbox{yellow}{Background} }[1cm]

\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.

\marginnote{ \colorbox{green}{Purpose} }[1cm]

\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.}}\\

\marginnote{ \colorbox{red}{Method} }[1cm]

\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.}}\\

\marginnote{ \colorbox{orange}{Results and Conclusions} }[1cm]


\color{black}\colorbox{orange}{\parbox{10cm}{

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.}}\\

Abstract (Paper: A Brief Overview of Functional Programming Languages)

\marginnote{ \colorbox{yellow}{Background} }[1cm]

\color{black}\colorbox{yellow}{\parbox{10cm}{

Functional programming is an important programming paradigm. It is based on a branch of mathematics


known as lambda calculus.}}\\

\marginnote{ \colorbox{green}{Purpose} }[1cm]

\color{black}\colorbox{green}{\parbox{10cm}{

In this article, we provide a brief overview, aimed at those new to the field,}}\\

\marginnote{ \colorbox{gray}{Particular focus} }[1cm]

\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}}\\

Abstract (Paper: Functional Programming with side-effects)

\marginnote{ \colorbox{yellow}{Background} }[1cm]

\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.

\marginnote{ \colorbox{green}{Purpose} }[1cm]

\color{black}\colorbox{green}{\parbox{10cm}{
This paper introduces the key idea and gives examples of its use to solve various programming
problems.}}\\

\marginnote{ \colorbox{gray}{Particular focus} }[1cm]

\color{black}\colorbox{gray}{\parbox{10cm}{

On implementations that support parallel evaluation of expressions, further interesting possibilities


arise. }}\\

\end{document}

You might also like