\documentclass[dvipsnames,14pt,t,xelatex]{beamer}+ −
\usepackage{../slides}+ −
\usepackage{../graphics}+ −
\usepackage{../langs}+ −
%\usepackage{../data}+ −
\usepackage[export]{adjustbox}+ −
+ −
\hfuzz=220pt + −
+ −
%\setmonofont[Scale=.88]{Consolas}+ −
%\newfontfamily{\consolas}{Consolas}+ −
+ −
\lstset{language=Scala,+ −
style=mystyle,+ −
numbersep=0pt,+ −
numbers=none,+ −
xleftmargin=0mm}+ −
+ −
\newcommand{\bl}[1]{\textcolor{blue}{#1}} + −
+ −
% beamer stuff + −
\renewcommand{\slidecaption}{PEP (Scala) 03, King's College London}+ −
+ −
+ −
\begin{document}+ −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\begin{frame}[t]+ −
\frametitle{%+ −
\begin{tabular}{@ {}c@ {}}+ −
\\[5mm]+ −
\huge PEP Scala (3) + −
\end{tabular}}+ −
+ −
\normalsize+ −
\begin{center}+ −
\begin{tabular}{ll}+ −
Email: & christian.urban at kcl.ac.uk\\+ −
Office: & S1.27 (1st floor Strand Building)\\+ −
Slides \& Code: & KEATS+ −
\end{tabular}+ −
\end{center}+ −
+ −
+ −
\end{frame}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
\begin{frame}[c, fragile]+ −
\frametitle{The Joy of Immutability}+ −
+ −
\begin{itemize}+ −
\item If you need to manipulate some data in a list say, then you make+ −
a new list with the updated values, rather than revise the original+ −
list. Easy!\medskip+ −
+ −
{\small+ −
\begin{lstlisting}[language=Scala, numbers=none, xleftmargin=-1mm]+ −
val old_list = List(1, 2, 3, 5)+ −
val new_list = 0 :: old_list+ −
\end{lstlisting}} + −
+ −
\item You do not have to be defensive about who can access the data+ −
(concurrency, lazyness).+ −
\end{itemize} + −
\end{frame}+ −
+ −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\begin{frame}[t]+ −
\frametitle{Email: Hate 'val'}+ −
+ −
\mbox{}\\[-25mm]\mbox{}+ −
+ −
\begin{center}+ −
\begin{bubble}[10.5cm]+ −
Subject: \textbf{Hate '\textbf{\texttt{val}}'}\hfill 01:00 AM\medskip\\+ −
+ −
Hello Mr Urban,\medskip\\+ −
+ −
I just wanted to ask, how are we suppose to work+ −
with the completely useless \textbf{\texttt{val}}, that can’t be changed ever? Why is+ −
this rule active at all? I’ve spent 4 hours not thinking on the+ −
coursework, but how to bypass this annoying rule. What’s the whole+ −
point of all these coursework, when we can’t use everything Scala+ −
gives us?!?\medskip\\+ −
+ −
Regards.\\+ −
\mbox{}\hspace{5mm}\textcolor{black!50}{<<deleted>>}\\+ −
\end{bubble}+ −
\end{center}+ −
+ −
\end{frame}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\begin{frame}[c]+ −
+ −
\mbox{}\\[-25mm]\mbox{}+ −
+ −
\begin{center}+ −
\begin{bubble}[10.5cm]+ −
Subject: \textbf{Re: Hate '\textbf{\texttt{val}}'}\hfill 01:02 AM\bigskip\bigskip\\+ −
+ −
\textcolor{black!70}{+ −
\textit{\large<<my usual rant about fp\ldots\\ concurrency bla bla\ldots{} better programs+ −
yada>>}}\bigskip\bigskip\bigskip+ −
+ −
PS: What are you trying to do where you desperately want to use \texttt{var}?+ −
\end{bubble}+ −
\end{center}+ −
+ −
\end{frame}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\begin{frame}[c,fragile]+ −
+ −
\begin{textblock}{6}(0.5,0.5)+ −
\begin{bubble}[11.5cm]+ −
\small + −
Subject: \textbf{Re: Re: Hate '\textbf{\texttt{val}}'}\hfill 01:04 AM\medskip\\+ −
+ −
\textbf{Right now my is\_legal function works fine:}+ −
+ −
\footnotesize\begin{lstlisting}[language=Scala, numbers=none, xleftmargin=-1mm]+ −
def is_legal(dim: Int, path: Path)(x: Pos): Boolean = {+ −
var boolReturn = false+ −
if(x._1 > dim || x._2 > dim || x._1 < 0 || x._2 < 0) {+ −
else { var breakLoop = false+ −
if(path == Nil) { boolReturn = true }+ −
else { for(i <- 0 until path.length) {+ −
if(breakLoop == false) {+ −
if(path(i) == x) {+ −
boolReturn = true+ −
breakLoop = true+ −
}+ −
else { boolReturn = false }+ −
} else breakLoop+ −
}+ −
}+ −
boolReturn+ −
}+ −
\end{lstlisting}+ −
\end{bubble}+ −
\end{textblock}+ −
+ −
\begin{textblock}{6}(8.2,11.8)+ −
\begin{bubble}[5.5cm]\footnotesize\bf+ −
\ldots{}but I can’t make it work with boolReturn being val. What approach would+ −
you recommend in this case, and is using var in this case justified?+ −
\end{bubble}+ −
\end{textblock}+ −
+ −
\only<2>{+ −
\begin{textblock}{6}(0.3,11.8)+ −
\begin{bubble}[3.1cm]+ −
\textbf{Me:} \includegraphics[scale=0.08, valign=t]{../pics/throwup.jpg}+ −
\end{bubble}+ −
\end{textblock}}+ −
+ −
\end{frame}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\begin{frame}[t,fragile]+ −
+ −
\mbox{}\\[-25mm]\mbox{}+ −
+ −
\begin{textblock}{6}(0.5,2)+ −
\begin{bubble}[11.5cm]+ −
Subject: \textbf{Re: Re: Re: Hate '\textbf{\texttt{val}}'}\hfill 01:06 AM\bigskip\\+ −
\small+ −
+ −
OK. So you want to make sure that the \texttt{x}-position is not outside the+ −
board....and furthermore you want to make sure that the \texttt{x}-position+ −
is not yet in the path list. How about something like\bigskip+ −
+ −
\footnotesize\begin{lstlisting}[language=Scala, numbers=none, xleftmargin=-1mm]+ −
def is_legal(dim: Int, path: Path)(x: Pos): Boolean = + −
...<<some board conditions>>... && !path.contains(x)+ −
\end{lstlisting}\bigskip+ −
+ −
\small Does not even contain a \texttt{val}.+ −
\end{bubble}+ −
\end{textblock}+ −
+ −
\begin{textblock}{6}(7,12)+ −
\footnotesize\textcolor{black!50}{(This is all on one line)}+ −
\end{textblock}+ −
+ −
\end{frame}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\begin{frame}[t,fragile]+ −
+ −
\mbox{}\\[-15mm]\mbox{}+ −
+ −
\begin{textblock}{6}(1,3)+ −
\begin{bubble}[10.5cm]+ −
Subject: \textbf{Re: Re: Re: Re: Hate '\textbf{\texttt{val}}'}\hfill 11:02 AM\bigskip\bigskip\\+ −
+ −
THANK YOU! You made me change my coding perspective. Because of you,+ −
I figured out the next one\ldots+ −
\end{bubble}+ −
\end{textblock}+ −
+ −
\only<2>{+ −
\begin{textblock}{6}(0.3,11.8)+ −
\begin{bubble}[3.1cm]+ −
\textbf{Me:} \includegraphics[scale=0.08]{../pics/happy.jpg}+ −
\end{bubble}+ −
\end{textblock}}+ −
+ −
\end{frame}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\begin{frame}[c]+ −
\frametitle{CW3: Regexes (1 Part)}+ −
+ −
\begin{center}+ −
Graphs: $(a^*)^* b$ and strings $\underbrace{\;a\ldots a\;}_{n}$\bigskip+ −
+ −
\begin{tabular}[t]{@{\hspace{-8mm}}c@{\hspace{-4mm}}c@{}}+ −
\raisebox{6mm}{\begin{tikzpicture}+ −
\begin{axis}[+ −
xlabel={$n$},+ −
x label style={at={(1.05,0.0)}},+ −
ylabel={time in secs},+ −
enlargelimits=false,+ −
xtick={0,5,...,30},+ −
xmax=33,+ −
ymax=35,+ −
ytick={0,5,...,30},+ −
scaled ticks=false,+ −
axis lines=left,+ −
width=5.5cm,+ −
height=5cm, + −
legend entries={Python, Java}, + −
legend pos=north west,+ −
legend cell align=left]+ −
\addplot[blue,mark=*, mark options={fill=white}] table {re-python2.data}; + −
\addplot[cyan,mark=*, mark options={fill=white}] table {re-java.data};+ −
\end{axis}+ −
\end{tikzpicture}}+ −
&+ −
\onslide<2>{\begin{tikzpicture}+ −
\begin{axis}[+ −
xlabel={$n$},+ −
x label style={at={(1.05,0.0)}},+ −
ylabel={time in secs},+ −
enlargelimits=false,+ −
ymax=35,+ −
ytick={0,5,...,30},+ −
axis lines=left,+ −
%%scaled ticks=false,+ −
width=5.5cm, + −
height=5cm]+ −
%%\addplot[green,mark=square*,mark options={fill=white}] table {re2a.data}; + −
\addplot[red,mark=square*,mark options={fill=white}] table {re3a.data};+ −
\end{axis}+ −
\end{tikzpicture}}+ −
\end{tabular}+ −
\end{center}+ −
+ −
\hfill\small\url{https://vimeo.com/112065252}+ −
\end{frame}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
\begin{frame}[c]+ −
\frametitle{Where to go on from here?}+ −
+ −
\begin{itemize}+ −
\item Martin Odersky (EPFL)\ldots he is currently throwing out everything+ −
and starts again with the dotty compiler for Scala\medskip+ −
+ −
\item Elm (\url{http://elm-lang.org})\ldots web applications with style\medskip + −
+ −
\item Haskell, Ocaml, Standard ML, Scheme, \ldots + −
\end{itemize} + −
\end{frame}+ −
+ −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
\begin{frame}[c]+ −
\frametitle{\begin{tabular}{c}\\[3cm]\alert{Questions?}\end{tabular}}+ −
+ −
\mbox{}\footnotesize+ −
Thanks: ``\it{}By the way - Scala is really getting quite fun+ −
when you start to get the hang of it\ldots''+ −
+ −
\end{frame}+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + −
+ −
\begin{frame}[c]+ −
\frametitle{Marks for CW6 (Part 1)}+ −
+ −
Absolute raw marks, alleged collusions still included:+ −
+ −
\begin{itemize}+ −
\item 0\%: 18 students+ −
\item 1\%: 2+ −
\item 2\%: 11+ −
\item 3\%: 29+ −
\item 4\%: 18+ −
\item 5\%: 33+ −
\item 6\%: 55+ −
\item 7\%: 62 + −
\end{itemize} + −
\end{frame}+ −
+ −
+ −
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+ −
+ −
\end{document}+ −
+ −
+ −
\end{document}+ −
+ −
%%% Local Variables: + −
%%% mode: latex+ −
%%% TeX-master: t+ −
%%% End: + −
+ −