slides/slides01.tex
changeset 200 01ee4b576eb2
parent 199 54befaf23648
child 278 0c2481cd8b1c
--- a/slides/slides01.tex	Thu Nov 08 23:42:03 2018 +0000
+++ b/slides/slides01.tex	Fri Nov 09 01:08:43 2018 +0000
@@ -84,7 +84,8 @@
 \begin{bubble}[9cm]
   \small
   developed since 2004 by Martin Odersky\\
-  (he was behind Generic Scala which was included in Java 5)
+  (he was behind Generic Java which was included in Java 5
+  \ldots I am using it maybe since 2008?)
 \end{bubble}
 \end{textblock}
 
@@ -143,7 +144,7 @@
 \textbf{\large Java}
 \end{textblock}
 
-\begin{textblock}{6}(13,13.4)
+\begin{textblock}{6}(13,13.6)
 \textbf{\large Scala}
 \end{textblock}  
 
@@ -167,7 +168,7 @@
 \frametitle{First Steps: Scala Tools}
 
 \begin{itemize}
-\item I use VS Code and a Scala extension
+\item I use VS Code and a Scala extension (M'place)
 \begin{center}  
 \includegraphics[scale=0.10]{../pics/vscode.png}\\[-10mm]\mbox{}
 \end{center}\bigskip
@@ -183,10 +184,9 @@
 \begin{frame}[c]
   \frametitle{\bf
   \only<1>{\begin{tabular}{l}\\[2mm]Why Scala?\\ \mbox{}\end{tabular}}
-  \only<2->{\begin{tabular}{l}\\[2mm]Why Functional\\ Programming?\end{tabular}}
+  \only<2->{\begin{tabular}{c}\\[2mm]Why Functional\\[-2mm] Programming?\end{tabular}}
 }
 
-
   %
   \mbox{}\\[3.5cm]
   \small
@@ -203,9 +203,37 @@
 \end{bubble}
 \end{textblock}}
 
+\only<4>{
+\begin{textblock}{6}(5,5.8)
+\hspace{2mm}\includegraphics[scale=0.06]{../pics/assign.jpg}\\[-1mm]
+\Large\alert{\textbf{Immutability}}
+\end{textblock}}
+
+
 \end{frame}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{frame}[c, fragile]
+
+{\Large Why bother? or\smallskip\\\hfill What is wrong with this?}\bigskip\bigskip
+
+  
+\begin{lstlisting}[language=C,numbers=none]
+for (int i = 10; i < 20; i++) {
+    
+  //...Do something interesting
+  //   with i...
+
+}
+\end{lstlisting}
+
+  
+\end{frame}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 \begin{frame}[c]
 \mbox{}\\[-21mm]\mbox{}  
@@ -296,7 +324,7 @@
     \begin{bubble}[9cm]  
       \begin{tabular}{@{\hspace{8mm}}llll@{\hspace{8mm}}}
         \\
-      \multicolumn{4}{c}{\bf Speedup by Moore's Law}\medskip\\
+      \multicolumn{4}{c}{\alert{\bf Speedup by Moore's Law}}\medskip\\
       \textbf{1986:} & 3 days    & \textbf{1996:} & 135 mins\\
       \textbf{1988:} & 1.5 days  & \textbf{1998:} & 67 mins\\
       \textbf{1990:} & 18 hs     & \textbf{2000:} & 33 mins\\
@@ -313,12 +341,14 @@
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}[c]
-\frametitle{Seq vs Par}
+\frametitle{Seq \;vs\; Par}
 
 \begin{center}
   \begin{tabular}[t]{@{}l@{}l@{}}
-    \includegraphics[scale=0.14]{../pics/mand4.png} &
-    \raisebox{1.2mm}{\includegraphics[scale=0.14]{../pics/mand3.png}}      
+    \includegraphics[scale=0.14]{../pics/mand4.png} & \hspace{4mm}
+    \raisebox{0mm}{\includegraphics[scale=0.14]{../pics/mand3.png}}\\
+    \hspace{6mm}\includegraphics[scale=0.5]{../pics/cpu2.png} &
+    \hspace{11mm}\includegraphics[scale=0.5]{../pics/cpu1.png}
   \end{tabular}     
 \end{center}  
 
@@ -331,10 +361,10 @@
   \end{textblock}}
 
 \only<3>{
-  \begin{textblock}{14.2}(1,12.3)
+  \begin{textblock}{14.2}(1,13.5)
     In FP: Once a variable is created, it is assigned a value and then
     never changed again $\Rightarrow$ no synchronisation\smallskip\\
-    \small\textcolor{gray}{(Andrew's second favourite feature of C++)}
+    %%\small\textcolor{gray}{(Andrew's second favourite feature of C++)}
   \end{textblock}}
 
 \end{frame}
@@ -370,7 +400,7 @@
     \textcolor{codegreen}{\texttt{List[(BigInt, String)]}} &
                                       lists of BigInt-String\\
                                       & pairs\\
-    \textcolor{codegreen}{\texttt{List[List[Int]]}} & list of lists of Int's\\                                  
+    \textcolor{codegreen}{\texttt{List[List[Int]]}} & list of lists of Int's\\      \textcolor{codegreen}{\texttt{Option[Int]}}     & options of Int's \\                            
   \end{tabular}
 
 \end{itemize}  
@@ -379,50 +409,50 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\begin{frame}[c]
-\frametitle{An Http Request}
+%\begin{frame}[c]
+%\frametitle{An Http Request}
   
-\begin{textblock}{1}(2,5)
-\begin{tabular}{c}
-\includegraphics[scale=0.15]{../pics/servers.png}\\[-2mm]
-\small Server
-\end{tabular}
-\end{textblock}
+%\begin{textblock}{1}(2,5)
+%\begin{tabular}{c}
+%\includegraphics[scale=0.15]{../pics/servers.png}\\[-2mm]
+%\small Server
+%\end{tabular}
+%\end{textblock}
 
-\begin{textblock}{1}(5.6,4)
-  \begin{tikzpicture}[scale=1.1]
-  \draw[white] (0,1) node (X) {};
-  \draw[white] (2,1) node (Y) {};
-   \draw[white] (0,0) node (X1) {};
-  \draw[white] (2,0) node (Y1) {};
-   \draw[white] (0,-1) node (X2) {};
-  \draw[white] (2,-1) node (Y2) {};
-  \draw[red, <-, line width = 2mm] (X) -- (Y);
-  \node [inner sep=5pt,label=above:\textcolor{black}{GET request}] at ($ (X)!.5!(Y) $) {};
-  \draw[red, ->, line width = 2mm] (X1) -- (Y1);
-  \node [inner sep=5pt,label=above:\textcolor{black}{webpage}] at ($ (X1)!.5!(Y1) $) {};
-  \draw[red, <-, line width = 2mm] (X2) -- (Y2);
-  \node [inner sep=7pt,label=above:\textcolor{black}{POST data}] at ($ (X2)!.5!(Y2) $) {};
-  \end{tikzpicture}
-\end{textblock}
+%\begin{textblock}{1}(5.6,4)
+%  \begin{tikzpicture}[scale=1.1]
+%  \draw[white] (0,1) node (X) {};
+%  \draw[white] (2,1) node (Y) {};
+%   \draw[white] (0,0) node (X1) {};
+%  \draw[white] (2,0) node (Y1) {};
+%   \draw[white] (0,-1) node (X2) {};
+%  \draw[white] (2,-1) node (Y2) {};
+%  \draw[red, <-, line width = 2mm] (X) -- (Y);
+%  \node [inner sep=5pt,label=above:\textcolor{black}{GET request}] at ($ (X)!.5!(Y) $) {};
+%  \draw[red, ->, line width = 2mm] (X1) -- (Y1);
+%  \node [inner sep=5pt,label=above:\textcolor{black}{webpage}] at ($ (X1)!.5!(Y1) $) {};
+%  \draw[red, <-, line width = 2mm] (X2) -- (Y2);
+%  \node [inner sep=7pt,label=above:\textcolor{black}{POST data}] at ($ (X2)!.5!(Y2) $) {};
+%  \end{tikzpicture}
+%\end{textblock}
 
 
-\begin{textblock}{1}(9,5.5)
-\begin{tabular}{c}
-\includegraphics[scale=0.15]{../pics/laptop.png}\\[-2mm]
-\small Browser
-\end{tabular}
-\end{textblock}
-\end{frame}
+%\begin{textblock}{1}(9,5.5)
+%\begin{tabular}{c}
+%\includegraphics[scale=0.15]{../pics/laptop.png}\\[-2mm]
+%\small Browser
+%\end{tabular}
+%\end{textblock}
+%\end{frame}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\begin{frame}[c]
-
-{\lstset{language=Java}\fontsize{7}{8}\selectfont
-\texttt{\lstinputlisting{URLReader.java}}}
-
-\end{frame}
+%\begin{frame}[c]
+%
+%{\lstset{language=Java}\fontsize{7}{8}\selectfont
+%\texttt{\lstinputlisting{URLReader.java}}}
+%
+%\end{frame}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -430,14 +460,16 @@
 \frametitle{Coursework}
 
 \begin{itemize}
-\item sorry, I might have been a bit wordy:\\
+\item Sorry, I might have been a bit wordy:\\
   CW description is 7 pages, but
-  I only needed \mbox{< 150} loc for all the CW\bigskip
+  I only needed \mbox{< 100} loc for \emph{all} the CW6.\bigskip
 
-\item there is email feedback when pushing code to github\bigskip
+\item there is email feedback when pushing code to github\medskip
 
-\item we want you to learn FP: \alert{no vars}, no mutable
-  datastructures, e.g.~\texttt{ListBuffer}
+\item there are \texttt{jar}-files you can use to test my implementation\bigskip
+  
+\item we want you to learn FP: \alert{\bf no vars}, no mutable
+  data-structures, e.g.~no \texttt{Arrays}, no \texttt{ListBuffer}
 \end{itemize}
 \end{frame}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -458,8 +490,9 @@
     val new_list = 0 :: old_list
   \end{lstlisting}}  
   
-\item You do not have to be defensive about who can access the data
-  (concurrency, lazyness).
+\item You do not have to be defensive about who can access the data.
+
+\item You can look at your code in isolation.  
 \end{itemize}  
 \end{frame}
 
@@ -632,10 +665,10 @@
   you a lot of rope to shoot yourself\bigskip
 
 \item learning functional programming is not easy\ldots{}when you have
-  spent all of your career thinking in a procedural way it is hard to
+  spent all of your career thinking in an imperative way, it is hard to
   change\bigskip\medskip
   
-\item hope you have fun with the coursework  
+\item hope you have fun with Scala and the assignments
 \end{itemize}
 \end{frame}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
@@ -646,13 +679,14 @@
 
 \begin{center}
   \begin{tabular}[t]{@{}l@{}l@{}}
-    \includegraphics[scale=0.1]{../pics/mand4.png} &
-    \raisebox{1.2mm}{\includegraphics[scale=0.1]{../pics/mand3.png}}      
+    \includegraphics[scale=0.1]{../pics/mand4.png} & \hspace{4mm}
+    \raisebox{0mm}{\includegraphics[scale=0.1]{../pics/mand3.png}}      
   \end{tabular}     
 \end{center}
 
 \begin{center}
-My Scala Office Hours: Thursdays 11 -- 13
+  My Office Hours: Mondays 12 -- 14\\
+  except next week: Tuesday 12 -- 14
 \end{center}
 \end{frame}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%