slides/slides01.tex
changeset 200 01ee4b576eb2
parent 199 54befaf23648
child 278 0c2481cd8b1c
equal deleted inserted replaced
199:54befaf23648 200:01ee4b576eb2
    82 
    82 
    83 \begin{textblock}{6}(2,12)
    83 \begin{textblock}{6}(2,12)
    84 \begin{bubble}[9cm]
    84 \begin{bubble}[9cm]
    85   \small
    85   \small
    86   developed since 2004 by Martin Odersky\\
    86   developed since 2004 by Martin Odersky\\
    87   (he was behind Generic Scala which was included in Java 5)
    87   (he was behind Generic Java which was included in Java 5
       
    88   \ldots I am using it maybe since 2008?)
    88 \end{bubble}
    89 \end{bubble}
    89 \end{textblock}
    90 \end{textblock}
    90 
    91 
    91 \end{frame}
    92 \end{frame}
    92 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
    93 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   141 
   142 
   142 \begin{textblock}{6}(13,3)
   143 \begin{textblock}{6}(13,3)
   143 \textbf{\large Java}
   144 \textbf{\large Java}
   144 \end{textblock}
   145 \end{textblock}
   145 
   146 
   146 \begin{textblock}{6}(13,13.4)
   147 \begin{textblock}{6}(13,13.6)
   147 \textbf{\large Scala}
   148 \textbf{\large Scala}
   148 \end{textblock}  
   149 \end{textblock}  
   149 
   150 
   150 \end{frame}
   151 \end{frame}
   151 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   152 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   165 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   166 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   166 \begin{frame}[c]
   167 \begin{frame}[c]
   167 \frametitle{First Steps: Scala Tools}
   168 \frametitle{First Steps: Scala Tools}
   168 
   169 
   169 \begin{itemize}
   170 \begin{itemize}
   170 \item I use VS Code and a Scala extension
   171 \item I use VS Code and a Scala extension (M'place)
   171 \begin{center}  
   172 \begin{center}  
   172 \includegraphics[scale=0.10]{../pics/vscode.png}\\[-10mm]\mbox{}
   173 \includegraphics[scale=0.10]{../pics/vscode.png}\\[-10mm]\mbox{}
   173 \end{center}\bigskip
   174 \end{center}\bigskip
   174   
   175   
   175 \item there is a plugin for Eclipse (called Scala IDE)\medskip
   176 \item there is a plugin for Eclipse (called Scala IDE)\medskip
   181 
   182 
   182 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   183 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   183 \begin{frame}[c]
   184 \begin{frame}[c]
   184   \frametitle{\bf
   185   \frametitle{\bf
   185   \only<1>{\begin{tabular}{l}\\[2mm]Why Scala?\\ \mbox{}\end{tabular}}
   186   \only<1>{\begin{tabular}{l}\\[2mm]Why Scala?\\ \mbox{}\end{tabular}}
   186   \only<2->{\begin{tabular}{l}\\[2mm]Why Functional\\ Programming?\end{tabular}}
   187   \only<2->{\begin{tabular}{c}\\[2mm]Why Functional\\[-2mm] Programming?\end{tabular}}
   187 }
   188 }
   188 
       
   189 
   189 
   190   %
   190   %
   191   \mbox{}\\[3.5cm]
   191   \mbox{}\\[3.5cm]
   192   \small
   192   \small
   193 Scala, Elm, Haskell, Ocaml, F$\sharp$, Erlang, ML, Lisp (Racket), \ldots 
   193 Scala, Elm, Haskell, Ocaml, F$\sharp$, Erlang, ML, Lisp (Racket), \ldots 
   201   \hfill{}---Simon Peyton Jones (works at Microsoft)\\
   201   \hfill{}---Simon Peyton Jones (works at Microsoft)\\
   202   \hfill{}main developer of the Glasgow Haskell Compiler
   202   \hfill{}main developer of the Glasgow Haskell Compiler
   203 \end{bubble}
   203 \end{bubble}
   204 \end{textblock}}
   204 \end{textblock}}
   205 
   205 
       
   206 \only<4>{
       
   207 \begin{textblock}{6}(5,5.8)
       
   208 \hspace{2mm}\includegraphics[scale=0.06]{../pics/assign.jpg}\\[-1mm]
       
   209 \Large\alert{\textbf{Immutability}}
       
   210 \end{textblock}}
       
   211 
       
   212 
   206 \end{frame}
   213 \end{frame}
   207 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   214 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
       
   215 
       
   216 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   217 \begin{frame}[c, fragile]
       
   218 
       
   219 {\Large Why bother? or\smallskip\\\hfill What is wrong with this?}\bigskip\bigskip
       
   220 
       
   221   
       
   222 \begin{lstlisting}[language=C,numbers=none]
       
   223 for (int i = 10; i < 20; i++) {
       
   224     
       
   225   //...Do something interesting
       
   226   //   with i...
       
   227 
       
   228 }
       
   229 \end{lstlisting}
       
   230 
       
   231   
       
   232 \end{frame}
       
   233 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   234 
       
   235 
   208 
   236 
   209 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   237 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   210 \begin{frame}[c]
   238 \begin{frame}[c]
   211 \mbox{}\\[-21mm]\mbox{}  
   239 \mbox{}\\[-21mm]\mbox{}  
   212 
   240 
   294   \only<9>{
   322   \only<9>{
   295   \begin{textblock}{1}(3,3)
   323   \begin{textblock}{1}(3,3)
   296     \begin{bubble}[9cm]  
   324     \begin{bubble}[9cm]  
   297       \begin{tabular}{@{\hspace{8mm}}llll@{\hspace{8mm}}}
   325       \begin{tabular}{@{\hspace{8mm}}llll@{\hspace{8mm}}}
   298         \\
   326         \\
   299       \multicolumn{4}{c}{\bf Speedup by Moore's Law}\medskip\\
   327       \multicolumn{4}{c}{\alert{\bf Speedup by Moore's Law}}\medskip\\
   300       \textbf{1986:} & 3 days    & \textbf{1996:} & 135 mins\\
   328       \textbf{1986:} & 3 days    & \textbf{1996:} & 135 mins\\
   301       \textbf{1988:} & 1.5 days  & \textbf{1998:} & 67 mins\\
   329       \textbf{1988:} & 1.5 days  & \textbf{1998:} & 67 mins\\
   302       \textbf{1990:} & 18 hs     & \textbf{2000:} & 33 mins\\
   330       \textbf{1990:} & 18 hs     & \textbf{2000:} & 33 mins\\
   303       \textbf{1992:} & 9 hs      & \textbf{2002:} & 16 mins\\
   331       \textbf{1992:} & 9 hs      & \textbf{2002:} & 16 mins\\
   304       \textbf{1994:} & 4.5 hs    & \multicolumn{2}{c}{???}\\                    
   332       \textbf{1994:} & 4.5 hs    & \multicolumn{2}{c}{???}\\                    
   311 \end{frame}
   339 \end{frame}
   312 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   340 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   313 
   341 
   314 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   342 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   315 \begin{frame}[c]
   343 \begin{frame}[c]
   316 \frametitle{Seq vs Par}
   344 \frametitle{Seq \;vs\; Par}
   317 
   345 
   318 \begin{center}
   346 \begin{center}
   319   \begin{tabular}[t]{@{}l@{}l@{}}
   347   \begin{tabular}[t]{@{}l@{}l@{}}
   320     \includegraphics[scale=0.14]{../pics/mand4.png} &
   348     \includegraphics[scale=0.14]{../pics/mand4.png} & \hspace{4mm}
   321     \raisebox{1.2mm}{\includegraphics[scale=0.14]{../pics/mand3.png}}      
   349     \raisebox{0mm}{\includegraphics[scale=0.14]{../pics/mand3.png}}\\
       
   350     \hspace{6mm}\includegraphics[scale=0.5]{../pics/cpu2.png} &
       
   351     \hspace{11mm}\includegraphics[scale=0.5]{../pics/cpu1.png}
   322   \end{tabular}     
   352   \end{tabular}     
   323 \end{center}  
   353 \end{center}  
   324 
   354 
   325 \only<2>{
   355 \only<2>{
   326   \begin{textblock}{5}(12,2)
   356   \begin{textblock}{5}(12,2)
   329       \includegraphics[scale=0.50]{../pics/skeleton.jpg}\\
   359       \includegraphics[scale=0.50]{../pics/skeleton.jpg}\\
   330     \end{bubble}  
   360     \end{bubble}  
   331   \end{textblock}}
   361   \end{textblock}}
   332 
   362 
   333 \only<3>{
   363 \only<3>{
   334   \begin{textblock}{14.2}(1,12.3)
   364   \begin{textblock}{14.2}(1,13.5)
   335     In FP: Once a variable is created, it is assigned a value and then
   365     In FP: Once a variable is created, it is assigned a value and then
   336     never changed again $\Rightarrow$ no synchronisation\smallskip\\
   366     never changed again $\Rightarrow$ no synchronisation\smallskip\\
   337     \small\textcolor{gray}{(Andrew's second favourite feature of C++)}
   367     %%\small\textcolor{gray}{(Andrew's second favourite feature of C++)}
   338   \end{textblock}}
   368   \end{textblock}}
   339 
   369 
   340 \end{frame}
   370 \end{frame}
   341 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
   371 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
   342 
   372 
   368     \textcolor{codegreen}{\texttt{Set[Double]}}   & sets of Double's \\
   398     \textcolor{codegreen}{\texttt{Set[Double]}}   & sets of Double's \\
   369     \textcolor{codegreen}{\texttt{(Int, String)}} & Int-String pair\\
   399     \textcolor{codegreen}{\texttt{(Int, String)}} & Int-String pair\\
   370     \textcolor{codegreen}{\texttt{List[(BigInt, String)]}} &
   400     \textcolor{codegreen}{\texttt{List[(BigInt, String)]}} &
   371                                       lists of BigInt-String\\
   401                                       lists of BigInt-String\\
   372                                       & pairs\\
   402                                       & pairs\\
   373     \textcolor{codegreen}{\texttt{List[List[Int]]}} & list of lists of Int's\\                                  
   403     \textcolor{codegreen}{\texttt{List[List[Int]]}} & list of lists of Int's\\      \textcolor{codegreen}{\texttt{Option[Int]}}     & options of Int's \\                            
   374   \end{tabular}
   404   \end{tabular}
   375 
   405 
   376 \end{itemize}  
   406 \end{itemize}  
   377 
   407 
   378 \end{frame}
   408 \end{frame}
   379 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   409 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   380 
   410 
   381 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   411 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   382 \begin{frame}[c]
   412 %\begin{frame}[c]
   383 \frametitle{An Http Request}
   413 %\frametitle{An Http Request}
   384   
   414   
   385 \begin{textblock}{1}(2,5)
   415 %\begin{textblock}{1}(2,5)
   386 \begin{tabular}{c}
   416 %\begin{tabular}{c}
   387 \includegraphics[scale=0.15]{../pics/servers.png}\\[-2mm]
   417 %\includegraphics[scale=0.15]{../pics/servers.png}\\[-2mm]
   388 \small Server
   418 %\small Server
   389 \end{tabular}
   419 %\end{tabular}
   390 \end{textblock}
   420 %\end{textblock}
   391 
   421 
   392 \begin{textblock}{1}(5.6,4)
   422 %\begin{textblock}{1}(5.6,4)
   393   \begin{tikzpicture}[scale=1.1]
   423 %  \begin{tikzpicture}[scale=1.1]
   394   \draw[white] (0,1) node (X) {};
   424 %  \draw[white] (0,1) node (X) {};
   395   \draw[white] (2,1) node (Y) {};
   425 %  \draw[white] (2,1) node (Y) {};
   396    \draw[white] (0,0) node (X1) {};
   426 %   \draw[white] (0,0) node (X1) {};
   397   \draw[white] (2,0) node (Y1) {};
   427 %  \draw[white] (2,0) node (Y1) {};
   398    \draw[white] (0,-1) node (X2) {};
   428 %   \draw[white] (0,-1) node (X2) {};
   399   \draw[white] (2,-1) node (Y2) {};
   429 %  \draw[white] (2,-1) node (Y2) {};
   400   \draw[red, <-, line width = 2mm] (X) -- (Y);
   430 %  \draw[red, <-, line width = 2mm] (X) -- (Y);
   401   \node [inner sep=5pt,label=above:\textcolor{black}{GET request}] at ($ (X)!.5!(Y) $) {};
   431 %  \node [inner sep=5pt,label=above:\textcolor{black}{GET request}] at ($ (X)!.5!(Y) $) {};
   402   \draw[red, ->, line width = 2mm] (X1) -- (Y1);
   432 %  \draw[red, ->, line width = 2mm] (X1) -- (Y1);
   403   \node [inner sep=5pt,label=above:\textcolor{black}{webpage}] at ($ (X1)!.5!(Y1) $) {};
   433 %  \node [inner sep=5pt,label=above:\textcolor{black}{webpage}] at ($ (X1)!.5!(Y1) $) {};
   404   \draw[red, <-, line width = 2mm] (X2) -- (Y2);
   434 %  \draw[red, <-, line width = 2mm] (X2) -- (Y2);
   405   \node [inner sep=7pt,label=above:\textcolor{black}{POST data}] at ($ (X2)!.5!(Y2) $) {};
   435 %  \node [inner sep=7pt,label=above:\textcolor{black}{POST data}] at ($ (X2)!.5!(Y2) $) {};
   406   \end{tikzpicture}
   436 %  \end{tikzpicture}
   407 \end{textblock}
   437 %\end{textblock}
   408 
   438 
   409 
   439 
   410 \begin{textblock}{1}(9,5.5)
   440 %\begin{textblock}{1}(9,5.5)
   411 \begin{tabular}{c}
   441 %\begin{tabular}{c}
   412 \includegraphics[scale=0.15]{../pics/laptop.png}\\[-2mm]
   442 %\includegraphics[scale=0.15]{../pics/laptop.png}\\[-2mm]
   413 \small Browser
   443 %\small Browser
   414 \end{tabular}
   444 %\end{tabular}
   415 \end{textblock}
   445 %\end{textblock}
   416 \end{frame}
   446 %\end{frame}
   417 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   447 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   418 
   448 
   419 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   449 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   420 \begin{frame}[c]
   450 %\begin{frame}[c]
   421 
   451 %
   422 {\lstset{language=Java}\fontsize{7}{8}\selectfont
   452 %{\lstset{language=Java}\fontsize{7}{8}\selectfont
   423 \texttt{\lstinputlisting{URLReader.java}}}
   453 %\texttt{\lstinputlisting{URLReader.java}}}
   424 
   454 %
   425 \end{frame}
   455 %\end{frame}
   426 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   456 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   427 
   457 
   428 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   458 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   429 \begin{frame}[c]
   459 \begin{frame}[c]
   430 \frametitle{Coursework}
   460 \frametitle{Coursework}
   431 
   461 
   432 \begin{itemize}
   462 \begin{itemize}
   433 \item sorry, I might have been a bit wordy:\\
   463 \item Sorry, I might have been a bit wordy:\\
   434   CW description is 7 pages, but
   464   CW description is 7 pages, but
   435   I only needed \mbox{< 150} loc for all the CW\bigskip
   465   I only needed \mbox{< 100} loc for \emph{all} the CW6.\bigskip
   436 
   466 
   437 \item there is email feedback when pushing code to github\bigskip
   467 \item there is email feedback when pushing code to github\medskip
   438 
   468 
   439 \item we want you to learn FP: \alert{no vars}, no mutable
   469 \item there are \texttt{jar}-files you can use to test my implementation\bigskip
   440   datastructures, e.g.~\texttt{ListBuffer}
   470   
       
   471 \item we want you to learn FP: \alert{\bf no vars}, no mutable
       
   472   data-structures, e.g.~no \texttt{Arrays}, no \texttt{ListBuffer}
   441 \end{itemize}
   473 \end{itemize}
   442 \end{frame}
   474 \end{frame}
   443 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   475 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   444 
   476 
   445 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   477 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   456   \begin{lstlisting}[language=Scala, numbers=none, xleftmargin=-1mm]
   488   \begin{lstlisting}[language=Scala, numbers=none, xleftmargin=-1mm]
   457     val old_list = List(1, 2, 3, 5)
   489     val old_list = List(1, 2, 3, 5)
   458     val new_list = 0 :: old_list
   490     val new_list = 0 :: old_list
   459   \end{lstlisting}}  
   491   \end{lstlisting}}  
   460   
   492   
   461 \item You do not have to be defensive about who can access the data
   493 \item You do not have to be defensive about who can access the data.
   462   (concurrency, lazyness).
   494 
       
   495 \item You can look at your code in isolation.  
   463 \end{itemize}  
   496 \end{itemize}  
   464 \end{frame}
   497 \end{frame}
   465 
   498 
   466 
   499 
   467 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   500 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   630   
   663   
   631 \item it is a rather \textbf{\alert{deep}} language\ldots i.e.~gives
   664 \item it is a rather \textbf{\alert{deep}} language\ldots i.e.~gives
   632   you a lot of rope to shoot yourself\bigskip
   665   you a lot of rope to shoot yourself\bigskip
   633 
   666 
   634 \item learning functional programming is not easy\ldots{}when you have
   667 \item learning functional programming is not easy\ldots{}when you have
   635   spent all of your career thinking in a procedural way it is hard to
   668   spent all of your career thinking in an imperative way, it is hard to
   636   change\bigskip\medskip
   669   change\bigskip\medskip
   637   
   670   
   638 \item hope you have fun with the coursework  
   671 \item hope you have fun with Scala and the assignments
   639 \end{itemize}
   672 \end{itemize}
   640 \end{frame}
   673 \end{frame}
   641 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   674 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   642 
   675 
   643 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   676 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   644 \begin{frame}[c]
   677 \begin{frame}[c]
   645 \frametitle{\begin{tabular}{c}\\[0cm]\alert{Questions?}\end{tabular}}
   678 \frametitle{\begin{tabular}{c}\\[0cm]\alert{Questions?}\end{tabular}}
   646 
   679 
   647 \begin{center}
   680 \begin{center}
   648   \begin{tabular}[t]{@{}l@{}l@{}}
   681   \begin{tabular}[t]{@{}l@{}l@{}}
   649     \includegraphics[scale=0.1]{../pics/mand4.png} &
   682     \includegraphics[scale=0.1]{../pics/mand4.png} & \hspace{4mm}
   650     \raisebox{1.2mm}{\includegraphics[scale=0.1]{../pics/mand3.png}}      
   683     \raisebox{0mm}{\includegraphics[scale=0.1]{../pics/mand3.png}}      
   651   \end{tabular}     
   684   \end{tabular}     
   652 \end{center}
   685 \end{center}
   653 
   686 
   654 \begin{center}
   687 \begin{center}
   655 My Scala Office Hours: Thursdays 11 -- 13
   688   My Office Hours: Mondays 12 -- 14\\
       
   689   except next week: Tuesday 12 -- 14
   656 \end{center}
   690 \end{center}
   657 \end{frame}
   691 \end{frame}
   658 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   692 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   659 \end{document}
   693 \end{document}
   660 
   694