# HG changeset patch # User Christian Urban # Date 1348434056 -3600 # Node ID 4856ff72a64b873e133441afee7ce69f76ca1f73 # Parent 8d6145cea799b9ce382e87903ce47794d8ebb464 initial slides diff -r 8d6145cea799 -r 4856ff72a64b pics/anderson.jpg Binary file pics/anderson.jpg has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/andersonbook1.jpg Binary file pics/andersonbook1.jpg has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/bag.png Binary file pics/bag.png has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/bank.png Binary file pics/bank.png has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/cart.gif Binary file pics/cart.gif has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/chip-attack.png Binary file pics/chip-attack.png has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/creditcard1.jpg Binary file pics/creditcard1.jpg has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/creditcard2.jpg Binary file pics/creditcard2.jpg has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/factory.png Binary file pics/factory.png has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/gear.gif Binary file pics/gear.gif has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/gman.png Binary file pics/gman.png has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/rbssecure.gif Binary file pics/rbssecure.gif has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/rbssecure.jpg Binary file pics/rbssecure.jpg has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/rman.png Binary file pics/rman.png has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/schneier.png Binary file pics/schneier.png has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/schneierbook1.jpg Binary file pics/schneierbook1.jpg has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/schneierbook2.jpg Binary file pics/schneierbook2.jpg has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/store.png Binary file pics/store.png has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/tetris.jpg Binary file pics/tetris.jpg has changed diff -r 8d6145cea799 -r 4856ff72a64b pics/thief.png Binary file pics/thief.png has changed diff -r 8d6145cea799 -r 4856ff72a64b root.beamer.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/root.beamer.tex Sun Sep 23 22:00:56 2012 +0100 @@ -0,0 +1,12 @@ +\documentclass[14pt,t]{beamer} +%%%\usepackage{pstricks} + +\input{root.tex} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% TeX-command-default: "Slides" +%%% TeX-view-style: (("." "kghostview --landscape --scale 0.45 --geometry 605x505 %f")) +%%% End: + diff -r 8d6145cea799 -r 4856ff72a64b root.notes.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/root.notes.tex Sun Sep 23 22:00:56 2012 +0100 @@ -0,0 +1,18 @@ +\documentclass[11pt]{article} +%%\usepackage{pstricks} +\usepackage{dina4} +\usepackage{beamerarticle} +\usepackage{times} +\usepackage{hyperref} +\usepackage{pgf} +\usepackage{amssymb} +\setjobnamebeamerversion{root.beamer} +\input{root.tex} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% TeX-command-default: "Slides" +%%% TeX-view-style: (("." "kghostview --landscape --scale 0.45 --geometry 605x505 %f")) +%%% End: + diff -r 8d6145cea799 -r 4856ff72a64b slides01.pdf Binary file slides01.pdf has changed diff -r 8d6145cea799 -r 4856ff72a64b slides01.tex --- a/slides01.tex Sat Sep 22 19:50:07 2012 +0100 +++ b/slides01.tex Sun Sep 23 22:00:56 2012 +0100 @@ -18,9 +18,6 @@ \usetikzlibrary{shadows} \usetikzlibrary{positioning} \usetikzlibrary{calc} - -%%%\usetikzlibrary{mindmap} - \usepackage{graphicx} \definecolor{javared}{rgb}{0.6,0,0} % for strings @@ -74,7 +71,7 @@ showstringspaces=false} % beamer stuff -\renewcommand{\slidecaption}{Scala, King's College London, 27.~March 2012} +\renewcommand{\slidecaption}{APP 01, King's College London, 25.~September 2012} \begin{document} @@ -83,64 +80,117 @@ \mode{ \begin{frame}<1>[t] \frametitle{% -\begin{tabular}{@ {\hspace{-3mm}}c@ {}} -\\ -\large \textcolor{black}{PRA, Programming Applications:}\\[5mm] -\Huge Scala\\[-1mm] -\large ``Better Java'' for Programming the JVM\\[5mm] -\normalsize \textcolor{black}{Christian Urban} -\end{tabular}} + \begin{tabular}{@ {}c@ {}} + \LARGE Access Control and \\[-3mm] + \LARGE Privacy Policies (1)\\[-6mm] + \end{tabular}} + + \begin{center} + \includegraphics[scale=1.3]{pics/barrier.jpg} + \end{center} + +\normalsize + \begin{center} + \begin{tabular}{ll} + Email: & christian.urban at kcl.ac.uk\\ + Office: & S1.27 (1st floor Strand Building)\\ + Slides: & KEATS + \end{tabular} + \end{center} + + \end{frame}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{@ {}c@ {}}Security Engineers\end{tabular}} + +According to Bruce Schneier, {\bf security engineers} require +a particular {\bf mindset}:\bigskip + +\begin{tikzpicture} +\draw (0,0) node[inner sep=2mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] +{\normalsize\color{darkgray} +\begin{minipage}{10cm}\raggedright\small +``Security engineers --- at least the good ones --- see the world dif$\!$ferently. +They can't walk into a store without noticing how they might shoplift. They can't +use a computer without wondering about the security vulnerabilities. They can't +vote without trying to figure out how to vote twice. They just can't help it.'' +\end{minipage}}; +\end{tikzpicture} + +\begin{flushright} +\includegraphics[scale=0.0087]{pics/schneierbook1.jpg}\; +\includegraphics[scale=0.0087]{pics/schneierbook2.jpg}\; +\includegraphics[scale=0.85]{pics/schneier.png} +\end{flushright} + + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \mode{ \begin{frame}[c] -\frametitle{\begin{tabular}{c}1.~Reason\end{tabular}} +\frametitle{\begin{tabular}{@ {}c@ {}}Yes\ldots\end{tabular}} + +\begin{tikzpicture} +\draw (0,0) node[inner sep=2mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] +{\normalsize\color{darkgray} +\begin{minipage}{10cm}\raggedright\small +The Guardian (2006): ``Chip-and-PIN is so effective in this country that fraudsters are starting to move their activities overseas,'' +said Emile Abu-Shakra, spokesman for Lloyds TSB. +\end{minipage}}; +\end{tikzpicture}\bigskip + -\begin{textblock}{6}(1,3) -\begin{tabular}{l} -\mbox{}\hspace{-1mm}\includegraphics[scale=0.36]{twitter.png}\\[-1mm] -\includegraphics[scale=0.30]{linked.png}\\ -\includegraphics[scale=0.30]{guardian.jpg}\\[-3mm] -\mbox{}\hspace{-2mm}\includegraphics[scale=0.38]{morgan.png}\\[-3mm] -\includegraphics[scale=0.30]{suisse.png}\\ -\includegraphics[scale=0.20]{edf.png}\\[-1mm] -\includegraphics[scale=0.08]{novell.png}\\[-1mm] -\includegraphics[scale=0.30]{foursquare.png}\\ -\includegraphics[scale=0.30]{hsbc.png}\\ -{\large\bf ...} +\begin{itemize} +\item mag-stripe cards cannot be cloned anymore +\item stolen or cloned cards need to be used abroad +\item fraud on lost, stolen and counterfeit credit cards was down \pounds{}60m (24\%) on 2004's figure +\end{itemize} + + +\end{frame}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mode{ +\begin{frame}[c] +\frametitle{\begin{tabular}{c}BUT\ldots\end{tabular}} + + +\begin{textblock}{1}(3,4) +\begin{tabular}{c} +\includegraphics[scale=0.3]{pics/bank.png}\\[-2mm] +\small Bank \end{tabular} \end{textblock} - + +\begin{textblock}{1}(7,4.5) +\begin{tabular}{c} +\includegraphics[scale=3]{pics/store.png}\\[-2mm] +\end{tabular} +\end{textblock} + \only<2->{ -\begin{textblock}{6}(6,3) -\includegraphics[scale=0.35]{jobgraph.png}\\ -\end{textblock}} - -\only<3->{ -\begin{textblock}{6}(7.3,9.2) -\begin{tabular}{l} -\footnotesize 2013: 1$\%$\\[-2mm] -\footnotesize 2014: 3$\%$\\[-2mm] -\footnotesize 2015: 9$\%$\\[-2mm] -\footnotesize 2016: 27$\%$\\[-2mm] -\footnotesize 2017: 81$\%$\\[-2mm] -\footnotesize 2018: 243$\%$ \raisebox{-1mm}{\includegraphics[scale=0.02]{smiley.jpg}} +\begin{textblock}{1}(12,6.5) +\begin{tabular}{c} +\includegraphics[scale=0.8]{pics/factory.png}\\[-1mm] +\small terminal\\[-2mm] \small producer \end{tabular} \end{textblock}} - -\only<3->{ -\begin{textblock}{6}(6,9.5) -\footnotesize 5 yrs $\begin{cases}\mbox{}\\[1.4cm]\end{cases}$ -\end{textblock}} -\only<4->{ -\begin{textblock}{11}(5,14.1) -\textcolor{gray}{ -\footnotesize {\bf in London today:} 1 Scala job for every 30 Java jobs;\\[-2mm] -Scala programmers seem to get up to 20\% better salary} -\end{textblock}} +\begin{textblock}{1}(4.5,9.9) +\begin{tabular}{c} +\includegraphics[scale=0.16]{pics/rman.png}\\[-1mm] +\small costumer / you +\end{tabular} +\end{textblock} \end{frame}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -148,93 +198,33 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \mode{ \begin{frame}[c] -\frametitle{\begin{tabular}{c}2.~Reason\end{tabular}} +\frametitle{\begin{tabular}{c}Chip-and-PIN\end{tabular}} -\begin{textblock}{11}(1,7) -\begin{tikzpicture}[scale=1.0] -%\draw[step=2mm] (-1,-1) grid (10,1); -\draw[->, line width=2mm] (-0.2,0) -- (11,0); -\draw[line width=0.8mm] (0,0) -- (0,-0.3); -\node at (0,-0.5) [black] {\footnotesize 1985}; -\draw[line width=0.8mm] (2.8,0) -- (2.8,-0.3); -\node at (2.8,-0.5) [black] {\footnotesize 1992}; -\draw[line width=0.8mm] (1.2,0) -- (1.2,-0.3); -\node at (1.2,-0.5) [black] {\footnotesize 1988}; -\draw[line width=0.8mm] (4.8,0) -- (4.8,-0.3); -\node at (4.8,-0.5) [black] {\footnotesize 1997}; -\draw[line width=0.8mm] (6,0) -- (6,-0.3); -\node at (6,-0.5) [black] {\footnotesize 2000}; -\draw[line width=0.8mm] (7.6,0) -- (7.6,-0.3); -\node at (7.6,-0.5) [black] {\footnotesize 2004}; -\draw[line width=0.8mm] (10.4,0) -- (10.4,-0.3); -\node at (10.4,-0.5) [black] {\footnotesize 2011}; -\end{tikzpicture} -\end{textblock} -\begin{textblock}{5}(1,9) -\small Basic\\[-1mm] -Assembler\\ -\end{textblock} -\begin{textblock}{5}(2.8,11) -\small Pascal\\[-1mm] -C\\ -\end{textblock} -\begin{textblock}{5}(4.3,9) -\small Modula 3\\[-1mm] -C++\\ -\end{textblock} -\begin{textblock}{5}(6.7,9) -\small $\lambda$Prolog\\ -\end{textblock} -\begin{textblock}{5}(8.6,9) -\small Ocaml\\[-1mm] -\small SMLj\\[-1mm] -\small Pizza -\end{textblock} -\begin{textblock}{5}(10.6,9) -\normalsize\bf SML\\[-1mm] -\end{textblock} -\begin{textblock}{5}(14,9) -\small Scala\\ -\end{textblock} -\begin{textblock}{5}(13.2,11) -\small \underline{Future?}\\[0mm] -\small Python\\[-1mm] -\small Ruby\\[-1mm] -\small Javascript\\ -\end{textblock} - -\begin{textblock}{5}(0.2,2) -\includegraphics[scale=0.30]{punch.jpg}\\ -\end{textblock} -\begin{textblock}{5}(0.4,4.5) -\includegraphics[scale=0.20]{plus4.jpg}\\ -\end{textblock} -\begin{textblock}{5}(2.8,2.1) -\includegraphics[scale=0.15]{robotron.jpg}\\ -\end{textblock} -\begin{textblock}{5}(5.0,3.7) -\includegraphics[scale=0.10]{sparc.jpg}\\ -\end{textblock} -\begin{textblock}{5}(8.0,4) -\includegraphics[scale=0.40]{titanium.jpg}\\ -\end{textblock} -\begin{textblock}{5}(12,4.5) -\includegraphics[scale=0.10]{air.jpg}\\ -\end{textblock} +\begin{itemize} +\item ``tamperesitant'' terminal playing Tetris on +\textcolor{blue}{\href{http://www.youtube.com/watch?v=wWTzkD9M0sU}{youtube}}\\ +\textcolor{lightgray}{\footnotesize(\url{http://www.youtube.com/watch?v=wWTzkD9M0sU})} +\end{itemize} + + +\includegraphics[scale=0.2]{pics/tetris.jpg} + + \end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \mode{ \begin{frame}[c] -\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}} +\frametitle{\begin{tabular}{c}Chip-and-PIN\end{tabular}} + -\large \begin{itemize} -\item compiles to JVM (.Net \& Android)\bigskip -\item integrates seamlessly with Java (Swing)\bigskip +\item in 2006, Shell petrol stations stopped accepting Chip-and-PIN after \pounds{}1m had been stolen from customer accounts +\item in 2008, hundreds of card readers for use in Britain, Ireland, the Netherlands, Denmark, and Belgium had been +expertly tampered with shortly after manufacture so that details and PINs of credit cards were sent during the 9 months +before over mobile phone networks to criminals in Lahore, Pakistan \end{itemize} \end{frame}} @@ -243,40 +233,20 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \mode{ \begin{frame}[c] -\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}} +\frametitle{\begin{tabular}{c}Chip-and-PIN is Broken\end{tabular}} -\large -\begin{itemize} -\item combines {\bf functional} and {\bf object-oriented} programming -\end{itemize} - -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}[c] -\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}} - +\begin{flushright} +\includegraphics[scale=0.01]{pics/andersonbook1.jpg}\; +\includegraphics[scale=1.5]{pics/anderson.jpg} +\end{flushright} \begin{itemize} -\item \large {\bf Actors}:\\ -\normalsize keep asynchronous concurrency simple +\item Man-in-the-middle attacks by the group around Ross Anderson\medskip \end{itemize} - -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}[c] -\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}} - - -\begin{itemize} -\item \large {\bf Immutability}:\\ -\normalsize keeps concurrency predictable -\end{itemize} +\begin{center} +\includegraphics[scale=0.5]{pics/chip-attack.png} +\end{center} \end{frame}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -284,57 +254,58 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \mode{ \begin{frame}[c] -\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}} +\frametitle{\begin{tabular}{@ {}c@ {}}Chip-and-PIN is Really Broken\end{tabular}} +\begin{flushright} +\includegraphics[scale=0.01]{pics/andersonbook1.jpg}\; +\includegraphics[scale=1.5]{pics/anderson.jpg} +\end{flushright} \begin{itemize} -\item \large {\bf First-Class Functions}:\\ -\normalsize powerful idea from functional programming +\item same group successfully attacked last this year card readers and ATM machines +\item the problem: several types of ATMs generate poor random numbers, which are used as nonces \end{itemize} - + \end{frame}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \mode{ \begin{frame}[c] -\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}} - - -\begin{itemize} -\item \large {\bf Pattern-Matching}:\\ -\normalsize ``keeps your needles out of the haystacks'' -\end{itemize} - -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}[t] -\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}} +\frametitle{\begin{tabular}{c}The Problem\ldots\end{tabular}} -\begin{itemize} -\item \large {\bf You can avoid \textcolor{blue}{\texttt{null}}}: -\end{itemize} +\begin{textblock}{1}(3,4) +\begin{tabular}{c} +\includegraphics[scale=0.3]{pics/bank.png}\\[-2mm] +\small Bank +\end{tabular} +\end{textblock} + +\begin{textblock}{1}(7,4.5) +\begin{tabular}{c} +\includegraphics[scale=3]{pics/store.png}\\[-2mm] +\end{tabular} +\end{textblock} -\begin{textblock}{6}(0.5,5) - \begin{tikzpicture} - \draw (0,0) node[inner sep=3mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] - { \begin{minipage}{11cm}\raggedright\small - ``I call it my billion-dollar mistake. It was the invention of the null reference in - 1965. At that time, I was designing the first comprehensive type system for references in an - object oriented language (ALGOL W). My goal was to ensure that all use of references should - be absolutely safe, with checking performed automatically by the compiler. But I couldn't resist - the temptation to put in a null reference, simply because it was so easy to implement. This has - led to innumerable errors, vulnerabilities, and system crashes, which have probably caused - a billion dollars of pain and damage in the last forty years.'' Sir Tony Hoare\end{minipage}}; -\end{tikzpicture} +\begin{textblock}{1}(12,6.5) +\begin{tabular}{c} +\includegraphics[scale=0.8]{pics/factory.png}\\[-1mm] +\small terminal\\[-2mm] \small producer +\end{tabular} \end{textblock} + +\begin{textblock}{1}(4.5,9.9) +\begin{tabular}{c} +\includegraphics[scale=0.13]{pics/rman.png}\\[-1mm] +\small costumer / you +\end{tabular} +\end{textblock} -\begin{textblock}{5}(11.8,1) -\includegraphics[scale=0.20]{hoare.jpg}\\ +\begin{textblock}{14}(1,13.5) +\begin{itemize} +\item the burden of proof for fraud and financial liability shifted to the costumer +\end {itemize} \end{textblock} \end{frame}} @@ -343,300 +314,22 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \mode{ \begin{frame}[c] -\frametitle{\begin{tabular}{c}\texttt{null}\end{tabular}} - -\lstset{language=java}\footnotesize -\texttt{\lstinputlisting{MapJavaTester.java}} - -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}[c] -\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}} +\frametitle{\begin{tabular}{c}Screwed Again\end{tabular}} +\begin{flushright} +\includegraphics[scale=0.3]{pics/rbssecure.jpg} +\end{flushright} + \begin{itemize} -\item \large The Price You Pay with Scala: \textcolor{red}{\bf Complexity}\\ -\normalsize But it is worth it! +\item {\bf Responsibility}\\ +``You understand that you are financially responsible for all uses of RBS Secure.''\\ +\textcolor{lightgray}{\footnotesize\url{https://www.rbssecure.co.uk/rbs/tdsecure/terms_of_use.jsp}} \end{itemize} \end{frame}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}[c] -\frametitle{\begin{tabular}{c}Java: A Brief History\end{tabular}} - -\begin{itemize} -\item Released in 1995 by James Gosling from \\Sun Microsystems (work started in 1991)\medskip -\item derives much of its syntax from C and C++\medskip -\item compiles to JVM (``write once, run everywhere'')\medskip -\item no pointers --- instead automatic memory management (has a garbage collector)\medskip -\item statically typed\\ (``you cannot compare apples with oranges'') -\end{itemize} - -\begin{textblock}{5}(13,2) -\includegraphics[scale=0.20]{java.png}\\ -\end{textblock} - -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}[c] - -\lstset{language=java}\fontsize{8}{10}\selectfont -\texttt{\lstinputlisting{FruitMain.java}} - -\only<2>{ -\begin{textblock}{6}(5,5) -\begin{tikzpicture} - \draw (0,0) node[inner sep=3mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] - {\begin{minipage}{8cm}\raggedright\tt\footnotesize -\begin{tabular}{l} -FruitMain.java:20:~incompatible types\\ -found: Orange\\ -required: Apple\\ - a = o;\\ -1 error\\ -\end{tabular} -\end{minipage}}; -\end{tikzpicture} -\end{textblock}} - - -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}[c] - -\lstset{language=java}\fontsize{8}{10}\selectfont -\texttt{\lstinputlisting{FruitArray.java}} - -\only<2>{ -\begin{textblock}{8}(1,5) -\begin{tikzpicture} - \draw (0,0) node[inner sep=3mm,fill=cream, ultra thick, draw=red, rounded corners=2mm] - {\begin{minipage}{11cm}\raggedright\tt\fontsize{8}{10}\selectfont -\begin{tabular}{l} -{\large \rm runtime exception}\\ -orange\\ -Exception in thread "main" java.lang.ArrayStoreException:~Apple\\ -at FruitArray.main(FruitArray.java:21)\\ -\end{tabular} -\end{minipage}}; -\end{tikzpicture} -\end{textblock}} - - -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}[c] - -\begin{itemize} -\item {\bf In Java a class for students} -\end{itemize} - -{\lstset{language=java}\fontsize{8}{10}\selectfont -\texttt{\lstinputlisting{Student.java}}} - -\onslide<2->{ -\begin{itemize} -\item {\bf Same in Scala} -\end{itemize} - -{\lstset{language=Scala}\fontsize{8}{10}\selectfont -\texttt{\lstinputlisting{Student.scala}}}} - -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}[c] -\frametitle{\begin{tabular}{c}Scala\end{tabular}} - -\begin{itemize} -\item First released in 2003 (work started in 2001) by Martin Odersky from EPFL in Lausanne\smallskip -\item at the moment 2.9.2 (2012)\smallskip -\item blend of functional and oo-programming\medskip\medskip -\item Twitter switched in 2009 from Ruby to Scala -\item Guardian switched in 2011 from Java to Scala -\item UBS approved it for general production usage (2011) -\end{itemize} - - -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}[t] - -\only<1>{ -Hello World in Java:\medskip -{\lstset{language=Java}\fontsize{12}{14}\selectfont -\texttt{\lstinputlisting{Hello.java}}}} -\only<2->{ -Hello World in Scala:\medskip -{\lstset{language=Scala}\fontsize{12}{14}\selectfont -\texttt{\lstinputlisting{Hello.scala}}}\bigskip\medskip - - -Some curiosities, compared to Java: -\begin{itemize} -\item<3-> The semicolons are missing. -\item<4-> The {\bf\texttt{public}} access modifier is missing. -\item<5-> The declaration of main starts with {\bf\texttt{def}}. -\item<6-> main returns mysterious type {\bf\texttt{Unit}}. -\item<7-> In Scala there is {\bf\texttt{object}} and {\bf\texttt{class}}. -\end{itemize}} - - -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}[c] - -\begin{center} -\textcolor{ProcessBlue}{\LARGE\bf Demo} -\end{center} -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}[c] -\frametitle{\begin{tabular}{c}Functions\end{tabular}} - -Transformations:\bigskip -\begin{center} -\LARGE -Input(s) $\Rightarrow$ Output\bigskip\bigskip -\end{center}\pause - -``Given some input; produce some output.''\\ -``Transform the input into some output.''\\ - -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}[c] -\frametitle{\begin{tabular}{c}Functions in Scala\end{tabular}} - -\mbox{}\bigskip\bigskip\bigskip\bigskip -{\lstset{language=Scala}\fontsize{12}{14}\selectfont -\texttt{\lstinputlisting{max.scala}}} - -\small -\begin{textblock}{8}(1,3) -{\bf\texttt{def}} starts a function definition -\end{textblock} -\begin{textblock}{8}(2.3,4) -function name -\end{textblock} -\begin{textblock}{8}(3.8,5) -parameter list in parentheses -\end{textblock} -\begin{textblock}{8}(6.5,6) -function's result type -\end{textblock} -\begin{textblock}{8}(11,7) -equal sign -\end{textblock} -\begin{textblock}{8}(9,10) -function body\\ -in curly braces -\end{textblock} - -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}[c] - -{\lstset{language=Java}\fontsize{7}{8}\selectfont -\texttt{\lstinputlisting{URLReader.java}}} - -\only<2>{ -\begin{textblock}{5}(12,2) -\includegraphics[scale=0.50]{skeleton.jpg}\\ -\end{textblock}} -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}[t] -\frametitle{\begin{tabular}{c}Map\end{tabular}} - -\begin{itemize} -\item {\bf\texttt{map}} takes a function, say f, and applies it to every element of the list: -\end{itemize} - -\begin{textblock}{15}(2,7) -\fontsize{13}{14}\selectfont -\bf\texttt{List(1, 2, 3, 4, 5, 6, 7, 8, 9)} -\end{textblock} - -\begin{textblock}{15}(2,10) -\fontsize{13}{14}\selectfont -\bf\texttt{List(1, 4, 9, 16, 25, 36, 49, 64, 81)} -\end{textblock} - -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}<1-2>[t] -\frametitle{\begin{tabular}{c}Filter\end{tabular}} - -\begin{itemize} -\item {\bf\texttt{filter}} takes a condition, say p, and filters out all elements of the list not satisfying p: -\end{itemize} - -\begin{textblock}{15}(2,7) -\fontsize{13}{14}\selectfont -\bf\texttt{List(1, 2, 3, 4, 5, 6, 7, 8, 9)} -\end{textblock} - -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\mode{ -\begin{frame}[c] -\frametitle{\begin{tabular}{c}Conclusion\end{tabular}} - -\begin{itemize} -\item Scala is still under development (compiler is slow)\medskip -\item there are at least 5 books on the market\medskip -\item {\bf\texttt{http://www.scala-lang.org/}}\medskip -\item ``deep'' type-system (computer science)\bigskip\pause -\item (for the lazy programmer)\\ programming in Scala is much more fun - -\end{itemize} -\end{frame}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \end{document}