slides/slides01.tex
changeset 309 b192bc772613
parent 308 e86add5a6961
child 314 21b52310bd8b
equal deleted inserted replaced
308:e86add5a6961 309:b192bc772613
     2 \documentclass[dvipsnames,14pt,t,xelatex]{beamer}
     2 \documentclass[dvipsnames,14pt,t,xelatex]{beamer}
     3 \usepackage{../slides}
     3 \usepackage{../slides}
     4 \usepackage{../graphics}
     4 \usepackage{../graphics}
     5 \usepackage{../langs}
     5 \usepackage{../langs}
     6 %\usepackage{../data}
     6 %\usepackage{../data}
       
     7 \usetikzlibrary{shapes}
     7 
     8 
     8 \hfuzz=220pt 
     9 \hfuzz=220pt 
     9 
    10 
    10 %\setmonofont[Scale=.88]{Consolas}
    11 %\setmonofont[Scale=.88]{Consolas}
    11 %\newfontfamily{\consolas}{Consolas}
    12 %\newfontfamily{\consolas}{Consolas}
    14         style=mystyle,
    15         style=mystyle,
    15         numbersep=0pt,
    16         numbersep=0pt,
    16         numbers=none,
    17         numbers=none,
    17         xleftmargin=0mm}
    18         xleftmargin=0mm}
    18 
    19 
    19 \newcommand{\bl}[1]{\textcolor{blue}{#1}}     
    20 \newcommand{\bl}[1]{\textcolor{blue}{#1}}    
       
    21 
       
    22 \newcommand{\RIGHTarrow}[3]{%
       
    23 \begin{textblock}{0}(#2,#3)%
       
    24 \onslide<#1>{%
       
    25 \begin{tikzpicture}%
       
    26 \node at (0,0) [single arrow, shape border rotate=0, fill=red,text=red]{a};%
       
    27 \end{tikzpicture}}%
       
    28 \end{textblock}}
       
    29 \newcommand{\LEFTarrow}[3]{%
       
    30 \begin{textblock}{0}(#2,#3)%
       
    31 \onslide<#1>{%
       
    32 \begin{tikzpicture}%
       
    33 \node at (0,0) [single arrow, shape border rotate=180, fill=red,text=red]{a};%
       
    34 \end{tikzpicture}}%
       
    35 \end{textblock}}
       
    36 \newcommand{\DOWNarrow}[3]{%
       
    37 \begin{textblock}{0}(#2,#3)%
       
    38 \onslide<#1>{%
       
    39 \begin{tikzpicture}%
       
    40 \node at (0,0) [single arrow, shape border rotate=270, fill=red,text=red]{a};%
       
    41 \end{tikzpicture}}%
       
    42 \end{textblock}}
    20 
    43 
    21 % beamer stuff 
    44 % beamer stuff 
    22 \renewcommand{\slidecaption}{PEP (Scala) \liningnums{01}, King's College London}
    45 \renewcommand{\slidecaption}{PEP (Scala) \liningnums{01}, King's College London}
    23 
    46 
    24 %https://insights.stackoverflow.com/survey/2019#technology-most-loved-dreaded-and-wanted
    47 %https://insights.stackoverflow.com/survey/2019#technology-most-loved-dreaded-and-wanted
    35 
    58 
    36   \normalsize
    59   \normalsize
    37   \begin{center}
    60   \begin{center}
    38   \begin{tabular}{ll}
    61   \begin{tabular}{ll}
    39     Email:  & christian.urban at kcl.ac.uk\\
    62     Email:  & christian.urban at kcl.ac.uk\\
    40     Office: & N\liningnums{7.07} (North Wing, Bush House)\\
    63     Office: & N\liningnums{7.07} (North Wing, Bush House)\bigskip\\
    41     Slides \& Code: & KEATS\medskip\\
    64     Slides \& Code: & KEATS\bigskip\\
    42     Office Hours: &  Thursdays 12:00 -- 14:00\\
    65     Office Hours: &  Thursdays 12:00 -- 14:00\\
    43     Additionally: & (for Scala) Tuesdays 10:45 -- 11:45\\ 
    66     Additionally: & (for Scala) Tuesdays 10:45 -- 11:45\\ 
    44   \end{tabular}
    67   \end{tabular}
    45   \end{center}
    68   \end{center}
    46 
    69 
    92 \end{textblock}
   115 \end{textblock}
    93 
   116 
    94 \end{frame}
   117 \end{frame}
    95 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   118 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
    96 
   119 
    97 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
    98 %\begin{frame}[c]
       
    99 %\frametitle{Why Scala?}
       
   100 %
       
   101 %In the last few years there is  a ``Cambrian explosion'' of
       
   102 %languages from both academia and industry.
       
   103 %
       
   104 %It is essential for students to have skills to pick up new languages
       
   105 %quickly.
       
   106 %
       
   107 %\end{frame}
       
   108 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
       
   109 
   120 
   110 
   121 
   111 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   122 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   112 \begin{frame}[c]
   123 \begin{frame}[c]
   113 \frametitle{Why Scala?}
   124 \frametitle{Why Scala?}
   151 \end{textblock}  
   162 \end{textblock}  
   152 
   163 
   153 \end{frame}
   164 \end{frame}
   154 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   165 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   155 
   166 
   156 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   157 %\begin{frame}[c]
       
   158 %\frametitle{Scala (imperative) vs Scala (functional)}
       
   159 %
       
   160 %Reham's example
       
   161 %
       
   162 %
       
   163 %\end{frame}
       
   164 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   165 
       
   166 
   167 
   167 
   168 
   168 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   169 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   169 \begin{frame}[c]
   170 \begin{frame}[c]
   170 \frametitle{First Steps: Scala Tools}
   171 \frametitle{First Steps: Scala Tools}
   182 
   183 
   183 \end{frame}
   184 \end{frame}
   184 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   185 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   185 
   186 
   186 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   187 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   187 \begin{frame}[c]
   188 \begin{frame}[t]
   188   \frametitle{\bf
   189 \frametitle{Why Scala?}
   189   \only<1>{\begin{tabular}{l}\\[2mm]Why Scala?\\ \mbox{}\end{tabular}}
   190 
   190   \only<2->{\begin{tabular}{c}\\[2mm]Why Functional\\[-2mm] Programming?\end{tabular}}
   191 \onslide<2->{%
       
   192 \begin{center} 
       
   193 {\large\bf{}Money?}\bigskip\\  
       
   194 \begin{tabular}{@{}c@{}c@{}}
       
   195 \includegraphics[scale=0.2]{../pics/salary1.png} &
       
   196 \includegraphics[scale=0.2]{../pics/salary2.png}\\
       
   197 \multicolumn{2}{r@{}}{\footnotesize$^*$ source: Stackoverflow Developer Survey, 2019}
       
   198 \end{tabular}  
       
   199 \end{center}
       
   200 \RIGHTarrow{2}{2.3}{5.45}
       
   201 \DOWNarrow{2}{10.1}{3.6}
       
   202 }
       
   203 
       
   204 
       
   205 \small
       
   206 Elm, Rust, Haskell, Ocaml, F$\#$, Erlang, ML, Lisp (Racket)\ldots 
       
   207 
       
   208 \only<3>{
       
   209 \begin{textblock}{6}(3.3,6.2)
       
   210 \begin{bubble}[6.5cm]
       
   211 \bf\huge\textcolor{RoyalBlue}{Functional Programming!}
       
   212 \end{bubble}
       
   213 \end{textblock}}
       
   214 
       
   215 \end{frame}
       
   216 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
       
   217 
       
   218 
       
   219 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   220 \begin{frame}[c]
       
   221   \frametitle{\begin{tabular}{c}\\[2mm]
       
   222   Why Functional\\[-2mm] Programming?\end{tabular}
   191 }
   223 }
   192 
   224 
   193   %
   225   %
   194   \mbox{}\\[3.5cm]
   226   \mbox{}\\[3.5cm]
   195   \small
   227   \small
   196 Scala, Elm, Haskell, Ocaml, F$\sharp$, Erlang, ML, Lisp (Racket), \ldots 
   228 Elm, Haskell, Ocaml, F$\#$, Erlang, ML, Lisp (Racket)\ldots 
   197 
   229 
   198 \only<3>{
   230 \only<2>{
   199 \begin{textblock}{6}(2,6.2)
   231 \begin{textblock}{6}(1.3,6.2)
   200 \begin{bubble}[10cm]
   232 \begin{bubble}[10cm]
   201 \normalsize``If you want to see which features will be in mainstream programming
   233 \normalsize``If you want to see which features will be in mainstream programming
   202   languages tomorrow, then take a look at functional programming
   234   languages tomorrow, then take a look at functional programming
   203   languages today.''\medskip\small\\
   235   languages today.''\medskip\small\\
   204   \hfill{}---Simon Peyton Jones (works at Microsoft)\\
   236   \hfill{}---Simon Peyton Jones (works at Microsoft)\\
   205   \hfill{}main developer of the Glasgow Haskell Compiler
   237   \hfill{}main developer of the Glasgow Haskell Compiler
   206 \end{bubble}
   238 \end{bubble}
   207 \end{textblock}}
   239 \end{textblock}}
   208 
   240 
   209 \only<4>{
   241 \only<3>{
   210 \begin{textblock}{6}(5,5.8)
   242 \begin{textblock}{6}(5,5.8)
   211 \hspace{2mm}\includegraphics[scale=0.06]{../pics/assign.jpg}\\[-1mm]
   243 \hspace{2mm}\includegraphics[scale=0.06]{../pics/assign.jpg}\\[-1mm]
   212 \Large\alert{\textbf{Immutability}}
   244 \Large\alert{\hspace{5mm}\textbf{Immutability}}
   213 \end{textblock}}
   245 \end{textblock}}
   214 
   246 
   215 
   247 
   216 \end{frame}
   248 \end{frame}
   217 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   249 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
       
   250 
       
   251 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   252 \begin{frame}[c]
       
   253 
       
   254 \begin{center}  
       
   255 \includegraphics[scale=0.4]{../pics/pure.png}
       
   256 \end{center}
       
   257 
       
   258 \begin{textblock}{6}(9,14)
       
   259 \tiny$^*$ from ``What pure functional programming is all about?''
       
   260 \end{textblock}
       
   261 \end{frame}
       
   262 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   263   
   218 
   264 
   219 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   265 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   220 \begin{frame}[c, fragile]
   266 \begin{frame}[c, fragile]
   221 
   267 
   222 {\Large Why bother? or\smallskip\\\hfill What is wrong with this?}\bigskip\bigskip
   268 {\Large Why bother? or\smallskip\\\hfill What is wrong with this?}\bigskip\bigskip
   458 %\end{frame}
   504 %\end{frame}
   459 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   505 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   460 
   506 
   461 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   507 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   462 \begin{frame}[c]
   508 \begin{frame}[c]
       
   509   \frametitle{Coursework Dates}
       
   510   
       
   511 Similar to C++:\bigskip
       
   512 
       
   513 \begin{itemize}
       
   514   \item Preliminary Parts: Wednesdays 4pm
       
   515     \begin{itemize}
       
   516       \item Preliminary Part 6: 3\% (13 November)
       
   517       \item Preliminary Part 7: 4\% (20 November)
       
   518       \item Preliminary Part 8: 4\% (27 November)
       
   519       \item Preliminary Part 9: 4\% (5 December) 
       
   520     \end{itemize}\medskip    
       
   521   \item Core Part: 35\% (15 January 2020) 
       
   522   
       
   523 \end{itemize}
       
   524 \end{frame}
       
   525   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   526   
       
   527 
       
   528 
       
   529 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   530 \begin{frame}[c]
   463 \frametitle{Coursework}
   531 \frametitle{Coursework}
   464 
   532 
   465 \begin{itemize}
   533 \begin{itemize}
   466 \item Sorry, I might have been a bit wordy:\\
   534 \item Sorry, I might have been a bit wordy:\\
   467   Part 6 of CW description is 7 pages, but
   535   Part 6 of CW description is 7 pages, but
   468   I only needed \mbox{< 100} loc for \emph{all} Part 6.\bigskip
   536   I only needed \mbox{< 100} loc for \emph{all} Part 6.\bigskip
   469 
   537 
   470 \item there is feedback when pushing code to github\medskip
   538 \item there is feedback when pushing code to github\medskip
   471 
   539 
   472 \item there are \texttt{jar}-files you can use to test my implementation\bigskip
   540 \item there are \texttt{jar}-files you can use to test 
   473   
   541   my reference implementation\bigskip
   474 \item we want you to learn FP!\\ \alert{\bf no vars}, no mutable
   542   
   475   data-structures\\ e.g.~no \texttt{Arrays}, no \texttt{ListBuffer}
   543 \item we want you to learn FP!\smallskip\\ \alert{\bf no vars}, no mutable
       
   544   data-structures\\ \quad{}e.g.~no \texttt{Arrays}, no \texttt{ListBuffer}
   476 \end{itemize}
   545 \end{itemize}
       
   546 
       
   547 \LEFTarrow{1}{11}{11.8}
   477 \end{frame}
   548 \end{frame}
   478 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   549 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   479 
   550 
   480 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   551 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   481 
   552 
   657 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   728 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   658 
   729 
   659 
   730 
   660 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   731 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   661 \begin{frame}[c]
   732 \begin{frame}[c]
   662 \frametitle{Conclusion}
   733 \frametitle{Conclusion for Today}
   663 
   734 
   664 \begin{itemize}
   735 \begin{itemize}
   665 \item Scala is still under heavy development\\ (the compiler is terribly slow)\medskip
   736 \item Scala is still under development, 2.13.1 came out in Sept.\\ 
       
   737   (the compiler is terribly slow)\medskip
   666 \item {\bf\url{http://www.scala-lang.org/}}\bigskip
   738 \item {\bf\url{http://www.scala-lang.org/}}\bigskip
   667   
   739   
   668 \item it is a rather \textbf{\alert{deep}} language\ldots i.e.~gives
   740 \item it is a rather \textbf{\alert{deep}} language\ldots i.e.~gives
   669   you a lot of rope to shoot yourself\bigskip
   741   you a lot of rope to shoot yourself\bigskip
   670 
   742 
   688   \end{tabular}     
   760   \end{tabular}     
   689 \end{center}
   761 \end{center}
   690 
   762 
   691 \begin{center}
   763 \begin{center}
   692   My Office Hours: Thursdays 12 -- 14\\
   764   My Office Hours: Thursdays 12 -- 14\\
   693   And specifically for Scala: Tuesday 10:45 -- 11:45
   765   And specifically for Scala: Tuesdays 10:45 -- 11:45
   694 \end{center}
   766 \end{center}
   695 \end{frame}
   767 \end{frame}
   696 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   768 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   697 \end{document}
   769 \end{document}
   698 
   770