--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/slides01.tex Sat Sep 22 19:50:07 2012 +0100
@@ -0,0 +1,648 @@
+\documentclass[dvipsnames,14pt,t]{beamer}
+\usepackage{beamerthemeplainculight}
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+\usepackage{mathpartir}
+\usepackage[absolute,overlay]{textpos}
+\usepackage{ifthen}
+\usepackage{tikz}
+\usepackage{pgf}
+\usepackage{calc}
+\usepackage{ulem}
+\usepackage{courier}
+\usepackage{listings}
+\renewcommand{\uline}[1]{#1}
+\usetikzlibrary{arrows}
+\usetikzlibrary{automata}
+\usetikzlibrary{shapes}
+\usetikzlibrary{shadows}
+\usetikzlibrary{positioning}
+\usetikzlibrary{calc}
+
+%%%\usetikzlibrary{mindmap}
+
+\usepackage{graphicx}
+
+\definecolor{javared}{rgb}{0.6,0,0} % for strings
+\definecolor{javagreen}{rgb}{0.25,0.5,0.35} % comments
+\definecolor{javapurple}{rgb}{0.5,0,0.35} % keywords
+\definecolor{javadocblue}{rgb}{0.25,0.35,0.75} % javadoc
+
+\lstset{language=Java,
+ basicstyle=\ttfamily,
+ keywordstyle=\color{javapurple}\bfseries,
+ stringstyle=\color{javagreen},
+ commentstyle=\color{javagreen},
+ morecomment=[s][\color{javadocblue}]{/**}{*/},
+ numbers=left,
+ numberstyle=\tiny\color{black},
+ stepnumber=1,
+ numbersep=10pt,
+ tabsize=2,
+ showspaces=false,
+ showstringspaces=false}
+
+\lstdefinelanguage{scala}{
+ morekeywords={abstract,case,catch,class,def,%
+ do,else,extends,false,final,finally,%
+ for,if,implicit,import,match,mixin,%
+ new,null,object,override,package,%
+ private,protected,requires,return,sealed,%
+ super,this,throw,trait,true,try,%
+ type,val,var,while,with,yield},
+ otherkeywords={=>,<-,<\%,<:,>:,\#,@},
+ sensitive=true,
+ morecomment=[l]{//},
+ morecomment=[n]{/*}{*/},
+ morestring=[b]",
+ morestring=[b]',
+ morestring=[b]"""
+}
+
+\lstset{language=Scala,
+ basicstyle=\ttfamily,
+ keywordstyle=\color{javapurple}\bfseries,
+ stringstyle=\color{javagreen},
+ commentstyle=\color{javagreen},
+ morecomment=[s][\color{javadocblue}]{/**}{*/},
+ numbers=left,
+ numberstyle=\tiny\color{black},
+ stepnumber=1,
+ numbersep=10pt,
+ tabsize=2,
+ showspaces=false,
+ showstringspaces=false}
+
+% beamer stuff
+\renewcommand{\slidecaption}{Scala, King's College London, 27.~March 2012}
+
+
+\begin{document}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mode<presentation>{
+\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}}
+\end{frame}}
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mode<presentation>{
+\begin{frame}[c]
+\frametitle{\begin{tabular}{c}1.~Reason\end{tabular}}
+
+\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 ...}
+\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}}
+\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}}
+
+\end{frame}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mode<presentation>{
+\begin{frame}[c]
+\frametitle{\begin{tabular}{c}2.~Reason\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}
+\end{frame}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mode<presentation>{
+\begin{frame}[c]
+\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}}
+
+\large
+\begin{itemize}
+\item compiles to JVM (.Net \& Android)\bigskip
+\item integrates seamlessly with Java (Swing)\bigskip
+\end{itemize}
+
+\end{frame}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mode<presentation>{
+\begin{frame}[c]
+\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}}
+
+\large
+\begin{itemize}
+\item combines {\bf functional} and {\bf object-oriented} programming
+\end{itemize}
+
+\end{frame}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mode<presentation>{
+\begin{frame}[c]
+\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}}
+
+
+\begin{itemize}
+\item \large {\bf Actors}:\\
+\normalsize keep asynchronous concurrency simple
+\end{itemize}
+
+\end{frame}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mode<presentation>{
+\begin{frame}[c]
+\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}}
+
+
+\begin{itemize}
+\item \large {\bf Immutability}:\\
+\normalsize keeps concurrency predictable
+\end{itemize}
+
+\end{frame}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mode<presentation>{
+\begin{frame}[c]
+\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}}
+
+
+\begin{itemize}
+\item \large {\bf First-Class Functions}:\\
+\normalsize powerful idea from functional programming
+\end{itemize}
+
+\end{frame}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mode<presentation>{
+\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<presentation>{
+\begin{frame}[t]
+\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}}
+
+
+\begin{itemize}
+\item \large {\bf You can avoid \textcolor{blue}{\texttt{null}}}:
+\end{itemize}
+
+\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}
+\end{textblock}
+
+\begin{textblock}{5}(11.8,1)
+\includegraphics[scale=0.20]{hoare.jpg}\\
+\end{textblock}
+
+\end{frame}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mode<presentation>{
+\begin{frame}[c]
+\frametitle{\begin{tabular}{c}\texttt{null}\end{tabular}}
+
+\lstset{language=java}\footnotesize
+\texttt{\lstinputlisting{MapJavaTester.java}}
+
+\end{frame}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mode<presentation>{
+\begin{frame}[c]
+\frametitle{\begin{tabular}{c}Why Scala?\end{tabular}}
+
+
+\begin{itemize}
+\item \large The Price You Pay with Scala: \textcolor{red}{\bf Complexity}\\
+\normalsize But it is worth it!
+\end{itemize}
+
+\end{frame}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mode<presentation>{
+\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<presentation>{
+\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<presentation>{
+\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<presentation>{
+\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<presentation>{
+\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<presentation>{
+\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<presentation>{
+\begin{frame}[c]
+
+\begin{center}
+\textcolor{ProcessBlue}{\LARGE\bf Demo}
+\end{center}
+\end{frame}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\mode<presentation>{
+\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<presentation>{
+\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<presentation>{
+\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<presentation>{
+\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<presentation>{
+\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<presentation>{
+\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}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
+