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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |