slides01.tex
author Christian Urban <urbanc@in.tum.de>
Sat, 22 Sep 2012 19:50:07 +0100
changeset 0 8d6145cea799
child 1 4856ff72a64b
permissions -rw-r--r--
initial

\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: