slides/slides01.tex
changeset 477 a4e1f63157d8
parent 443 80c691a4caab
child 481 e03a0100ec46
equal deleted inserted replaced
476:7550c816187a 477:a4e1f63157d8
   108   \begin{tabular}{ll}
   108   \begin{tabular}{ll}
   109     Email:  & christian.urban at kcl.ac.uk\\
   109     Email:  & christian.urban at kcl.ac.uk\\
   110     %Office: & N\liningnums{7.07} (North Wing, Bush House)\bigskip\\
   110     %Office: & N\liningnums{7.07} (North Wing, Bush House)\bigskip\\
   111     Slides \& Code: & KEATS\bigskip\\
   111     Slides \& Code: & KEATS\bigskip\\
   112 
   112 
   113     Office Hour: &  Fridays 11:00 -- 12:00\\
   113     Office Hour: &  Fridays 13:00 -- 14:00\\
   114     Location: & N7.07 (North Wing, Bush House)\bigskip\\
   114     Location: & N7.07 (North Wing, Bush House)\bigskip\\
   115 
   115 
   116     Pollev: & \texttt{\alert{https://pollev.com/cfltutoratki576}}\\  \\
   116     Pollev: & \texttt{\alert{https://pollev.com/cfltutoratki576}}\\  \\
   117     %Additionally: & (for Scala) Tuesdays 10:45 -- 11:45\\ 
   117     %Additionally: & (for Scala) Tuesdays 10:45 -- 11:45\\ 
   118   \end{tabular}
   118   \end{tabular}
   139 %%\mbox{}\hspace{-1mm}\includegraphics[scale=0.36]{../pics/twitter.png}\\[-1mm]
   139 %%\mbox{}\hspace{-1mm}\includegraphics[scale=0.36]{../pics/twitter.png}\\[-1mm]
   140 \includegraphics[scale=0.30]{../pics/linked.png}\\
   140 \includegraphics[scale=0.30]{../pics/linked.png}\\
   141 \includegraphics[scale=0.30]{../pics/guardian.jpg}\\[-3mm]
   141 \includegraphics[scale=0.30]{../pics/guardian.jpg}\\[-3mm]
   142 \mbox{}\hspace{-2mm}\includegraphics[scale=0.38]{../pics/morgan.png}\\[-3mm]
   142 \mbox{}\hspace{-2mm}\includegraphics[scale=0.38]{../pics/morgan.png}\\[-3mm]
   143 \includegraphics[scale=0.30]{../pics/suisse.png}\\
   143 \includegraphics[scale=0.30]{../pics/suisse.png}\\
       
   144 Standard \& Poor's\\  
   144 {\large\bf ...}
   145 {\large\bf ...}
   145 \end{tabular}
   146 \end{tabular}
   146 \end{textblock}
   147 \end{textblock}
   147 
   148 
   148 \begin{textblock}{6}(9,3)
   149 \begin{textblock}{6}(8,3)
   149 \begin{tabular}{l}
   150 \begin{tabular}{l}
   150 \includegraphics[scale=0.20]{../pics/edf.png}\\[-1mm]
   151 \includegraphics[scale=0.20]{../pics/edf.png}\\[-1mm]
   151 \includegraphics[scale=0.08]{../pics/novell.png}\\[-1mm]
   152 \includegraphics[scale=0.08]{../pics/novell.png}\\[-1mm]
   152 \includegraphics[scale=0.30]{../pics/foursquare.png}\\
   153 \includegraphics[scale=0.30]{../pics/foursquare.png}\\
   153 \includegraphics[scale=0.30]{../pics/hsbc.png}\\
   154 \includegraphics[scale=0.30]{../pics/hsbc.png}\\
   154 {\large\bf ...}
   155 {\large\bf ...}
       
   156 \end{tabular}
       
   157 \end{textblock}
       
   158 
       
   159 \begin{textblock}{6}(11,3)
       
   160 \begin{tabular}{l}
       
   161 \includegraphics[scale=0.08]{../pics/lichess.png}\\[-1mm]
       
   162 {\footnotesize  lichess engine (open source)}  
   155 \end{tabular}
   163 \end{tabular}
   156 \end{textblock}
   164 \end{textblock}
   157 
   165 
   158 
   166 
   159 \begin{textblock}{12}(2,11)
   167 \begin{textblock}{12}(2,11)
   257 
   265 
   258 
   266 
   259 
   267 
   260 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   268 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   261 \begin{frame}[c]
   269 \begin{frame}[c]
   262 \frametitle{First Steps: Scala Tools}
   270 \frametitle{First Steps: \textcolor{red}{Scala 3} Tools}
   263 
   271 
       
   272 \mbox{}\\
       
   273 
       
   274 \begin{minipage}{1.1\textwidth}
   264 \begin{itemize}
   275 \begin{itemize}
   265 \item contains a REPL  
   276 \item contains a REPL $\Rightarrow$ but this year we use
   266 \item I use VS Code and a Scala extension (M'place)
   277   \textcolor{red}{\texttt{scala-cli}}  
       
   278 \item I use VS Codium and a Scala extension (M'place)
   267 \begin{center}  
   279 \begin{center}  
   268 \includegraphics[scale=0.10]{../pics/vscode.png}\\[-10mm]\mbox{}
   280 \includegraphics[scale=0.10]{../pics/vscode.png}\\[-10mm]\mbox{}
   269 \end{center}\bigskip
   281 \end{center}\bigskip
   270   
   282   
   271 \item there is a plugin for Eclipse (called Scala IDE)\medskip
   283 \item there is a plugin for Eclipse (called Scala IDE)\medskip
   272 \item there is also a plugin for IntelliJ\medskip
   284 \item there is also a plugin for IntelliJ\medskip
   273 \end{itemize}  
   285 \end{itemize}
       
   286 \end{minipage}
   274 
   287 
   275 \end{frame}
   288 \end{frame}
   276 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   289 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   277 
   290 
   278 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   291 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   295 
   308 
   296   
   309   
   297 \end{frame}
   310 \end{frame}
   298 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   311 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   299 
   312 
       
   313 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   314 \begin{frame}[c, fragile]
       
   315 \frametitle{This year Scala 3/ \textbf{\texttt{scala-cli}}}
       
   316 
       
   317 \mbox{}\\
       
   318 
       
   319 \begin{minipage}{1.3\textwidth}
       
   320 \begin{center}
       
   321 \textbf{\texttt{scala-cli}}
       
   322 $\quad\Rightarrow$ {\small\url{https://scala-cli.virtuslab.org/}}\bigskip
       
   323 \end{center}
       
   324 
       
   325 Installation problems:
       
   326 \begin{itemize}
       
   327 \item Oscar Sjostedt (\texttt{\small{}oscar.sjostedt@kcl.ac.uk})
       
   328 \item Nicole Lehchevska (\texttt{\small{}nicole.lehchevska@kcl.ac.uk})\bigskip
       
   329 \end{itemize}
       
   330 Github problems:
       
   331 \begin{itemize}
       
   332 \item Quan Tran (\texttt{\small{}anh.tran@kcl.ac.uk})\bigskip
       
   333 \end{itemize}
       
   334 Discussion forum:
       
   335 \begin{itemize}  
       
   336 \item Ruben Ticehurst-James (\texttt{\small{}ruben.ticehurst-james@kcl.ac.uk})  
       
   337 \end{itemize}
       
   338 \end{minipage}
       
   339   
       
   340 \end{frame}
       
   341 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   342 
       
   343 
       
   344 
   300 
   345 
   301 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   346 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   302 \begin{frame}[t]
   347 \begin{frame}[t]
   303 \frametitle{Why Scala?}
   348 \frametitle{Why Scala?}
   304 
   349 
   305 \onslide<2->{%
   350 \only<2-4>{%
   306 \begin{center} 
   351 \begin{center} 
   307 {\large\bf{}Money?}\bigskip\\  
   352 {\large\bf{}Money?}\bigskip\\  
   308 \begin{tabular}{@{}c@{}c@{}}
   353 \begin{tabular}{@{}c@{}c@{}}
   309 \includegraphics[scale=0.2]{../pics/salary1.png} &
   354 \includegraphics[scale=0.2]{../pics/salary1.png} &
   310 \includegraphics[scale=0.2]{../pics/salary2.png}\\
   355 \includegraphics[scale=0.2]{../pics/salary2.png}\\
   311 \multicolumn{2}{r@{}}{\footnotesize$^*$ source: Stackoverflow Developer Survey, 2019}
   356 \multicolumn{2}{r@{}}{\footnotesize$^*$ source: Stackoverflow Developer Survey, 2019}
   312 \end{tabular}  
   357 \end{tabular}  
   313 \end{center}
   358 \end{center}
   314 \RIGHTarrow{2}{2.0}{6.3}
   359 \RIGHTarrow{2}{2.0}{6.3}
   315 \DOWNarrow{2}{10.1}{4.4}
   360 \DOWNarrow{2}{10.1}{4.4}
   316 }
       
   317 
       
   318 
   361 
   319 \small
   362 \small
   320 Elm, Rust, Haskell, Ocaml, F$\#$, Erlang, ML, Lisp (Racket)\ldots 
   363 Elm, Rust, Haskell, Ocaml, F$\#$, Erlang, ML, Lisp (Racket)\ldots 
       
   364 }
   321 
   365 
   322 \only<3>{
   366 \only<3>{
       
   367 \begin{textblock}{2}(7.5,6.7)
       
   368 \includegraphics[scale=0.2]{../pics/salary3.png}
       
   369 \end{textblock}
       
   370 \RIGHTarrow{2}{2.0}{6.3}
       
   371 \DOWNarrow{2}{10.1}{4.4}}
       
   372 
       
   373 
       
   374 \only<4>{
   323 \begin{textblock}{6}(3.3,6.2)
   375 \begin{textblock}{6}(3.3,6.2)
   324 \begin{bubble}[6.5cm]
   376 \begin{bubble}[6.5cm]
   325 \bf\huge\textcolor{RoyalBlue}{Functional Programming!}
   377 \bf\huge\textcolor{RoyalBlue}{Functional Programming!}
   326 \end{bubble}
   378 \end{bubble}
   327 \end{textblock}}
   379 \end{textblock}}
   328 
   380 
       
   381 
       
   382 
   329 \end{frame}
   383 \end{frame}
   330 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   384 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   331 
   385 
   332 
   386 
   333 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   387 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   340   \mbox{}\\[3.5cm]
   394   \mbox{}\\[3.5cm]
   341   \small
   395   \small
   342 Elm, Haskell, Ocaml, F$\#$, Erlang, ML, Lisp (Racket)\ldots 
   396 Elm, Haskell, Ocaml, F$\#$, Erlang, ML, Lisp (Racket)\ldots 
   343 
   397 
   344 \only<2>{
   398 \only<2>{
   345 \begin{textblock}{6}(1.3,6.2)
   399 \begin{textblock}{8}(1.3,6.2)
   346 \begin{bubble}[10cm]
   400 \begin{bubble}[12cm]
   347 \normalsize``If you want to see which features will be in mainstream programming
   401 \normalsize\it``If you want to see which features will be in mainstream programming
   348   languages tomorrow, then take a look at functional programming
   402   languages tomorrow, then take a look at functional programming
   349   languages today.''\medskip\small\\
   403   languages today.''\medskip\small\\
   350   \hfill{}---Simon Peyton Jones (works at Microsoft)\\
   404   \hfill{}---Simon Peyton Jones (works at Epic Games, used to work at Microsoft)\\
   351   \hfill{}main developer of the Glasgow Haskell Compiler
   405   \hfill{}main developer of the Glasgow Haskell Compiler
   352 \end{bubble}
   406 \end{bubble}
   353 \end{textblock}}
   407 \end{textblock}}
   354 
   408 
   355 \only<3>{
   409 \only<3>{
   896 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   950 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   897 
   951 
   898 \begin{frame}[t,fragile]
   952 \begin{frame}[t,fragile]
   899 
   953 
   900 \begin{bubble}[10.5cm]
   954 \begin{bubble}[10.5cm]
   901   "PEP was my favourite module so far during these 2 years. It motivated me to apply and get a summer internship offer at S\&P Global as a Scala developer. The module content was more than enough for me to start working on the projects here at the company." -- Szabolcs Daniel Nagi (PEP 2021)
   955 \it  "PEP was my favourite module so far during these 2 years. It motivated me to apply and get a summer internship offer at S\&P Global as a Scala developer. The module content was more than enough for me to start working on the projects here at the company."\\
       
   956   \mbox{}\hfill{}--- Szabolcs Daniel Nagi (PEP 2021)
   902 \end{bubble}  
   957 \end{bubble}  
   903 \end{frame}
   958 \end{frame}
   904 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   959 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   905 
   960 
   906 
   961 
   907 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   962 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   908 \begin{frame}[c]
   963 \begin{frame}[c]
   909 \frametitle{Conclusion for Today}
   964 \frametitle{Conclusion for Today}
   910 
   965 
   911 \begin{itemize}
   966 \begin{itemize}
   912 \item Scala is still under development, 2.13.1 came out in Sept.\\ 
   967 \item This year we will be using Scala 3 with the \texttt{scala-cli} REPL!\\ 
   913   (the compiler is terribly slow)\medskip
   968   \medskip
   914 \item {\bf\url{http://www.scala-lang.org/}}\bigskip
   969 \item {\bf\url{https://scala-cli.virtuslab.org/}}\bigskip
   915   
   970   
   916 \item it is a rather \textbf{\alert{deep}} language\ldots i.e.~gives
   971 \item Scala can be a rather \textbf{\alert{deep}} language\ldots i.e.~gives
   917   you a lot of rope to shoot yourself\bigskip
   972   you a lot of rope to shoot yourself.\bigskip
   918 
   973 
   919 \item learning functional programming is not easy\ldots{}when you have
   974 \item Learning functional programming is not easy\ldots{}when you have
   920   spent all of your career thinking in an imperative way, it is hard to
   975   spent all of your career thinking in an imperative way, it is hard to
   921   change\bigskip\medskip
   976   change.\bigskip\medskip
   922   
   977   
   923 \item hope you have fun with Scala and the assignments
   978 \item Hope you have fun with Scala and the assignments.
   924 \end{itemize}
   979 \end{itemize}
   925 \end{frame}
   980 \end{frame}
   926 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   981 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   927 
   982 
   928 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   983 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%