slides/slides01.tex
changeset 745 7dc3643a0cc5
parent 744 99c5916d9a8f
child 754 1c9a23304b85
equal deleted inserted replaced
744:99c5916d9a8f 745:7dc3643a0cc5
   257 
   257 
   258 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   258 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   259 \begin{frame}[c]
   259 \begin{frame}[c]
   260 \frametitle{Why Bother with Compilers?}
   260 \frametitle{Why Bother with Compilers?}
   261   
   261   
   262 \textbf{Boeings 777}: First flight in 1994. They want to achieve
   262 \textbf{Boeing 777's}: First flight in 1994. They want to achieve
   263 triple redundancy in hardware faults.\bigskip
   263 triple redundancy for potential hardware faults.
       
   264 \here{http://www.citemaster.net/get/db3a81c6-548e-11e5-9d2e-00163e009cc7/R8.pdf}\bigskip
   264   
   265   
   265 They compile 1 Ada program to\medskip
   266 They compile 1 Ada program to\medskip
   266   
   267   
   267 \begin{itemize}
   268 \begin{itemize}
   268   \item Intel 80486
   269   \item Intel 80486
   271 \end{itemize}\medskip\medskip
   272 \end{itemize}\medskip\medskip
   272   
   273   
   273 using 3 independent compilers.\bigskip\pause
   274 using 3 independent compilers.\bigskip\pause
   274   
   275   
   275 \small Airbus uses C and static analysers. Recently started using CompCert.
   276 \small Airbus uses C and static analysers. Recently started using CompCert.
   276   
   277 
       
   278 \only<1->{%
       
   279 \begin{textblock}{6}(8,4.5)
       
   280 \includegraphics[scale=0.28]{../pics/777.png}
       
   281 \end{textblock}}
       
   282 
   277 \end{frame}
   283 \end{frame}
   278 %%%%%%%%%%%
   284 %%%%%%%%%%%
   279 
   285 
   280 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   286 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   281 \begin{frame}[c]
   287 \begin{frame}[c]
   282 \frametitle{Why Bother?}
   288 \frametitle{Why Bother with Regexes?}
   283 
   289 
   284 \begin{columns}[t]
   290 \begin{columns}[t,onlytextwidth]
   285 \begin{column}{.4\textwidth}
   291 \begin{column}{1.8cm}
   286 Ruby, Python, Java 8\medskip\\
   292 \mbox{}   
       
   293 \end{column}    
       
   294 \begin{column}{.5\textwidth}
       
   295 \small{}Ruby, Python, Java 8\medskip\\
   287 \begin{tikzpicture}\footnotesize
   296 \begin{tikzpicture}\footnotesize
   288 \begin{axis}[
   297 \begin{axis}[
   289     xlabel={$n$},
   298     xlabel={$n$},
   290     x label style={at={(1.05,0.0)}},
   299     x label style={at={(1.05,0.0)}},
   291     ylabel={time in secs},
   300     ylabel={time in secs},
   294     xmax=33,
   303     xmax=33,
   295     ymax=35,
   304     ymax=35,
   296     ytick={0,5,...,30},
   305     ytick={0,5,...,30},
   297     scaled ticks=false,
   306     scaled ticks=false,
   298     axis lines=left,
   307     axis lines=left,
   299     width=5.5cm,
   308     width=\textwidth,
   300     height=4cm, 
   309     height=4cm, 
   301     legend entries={Python,Ruby},  
   310     legend entries={Python,Ruby},  
   302     legend pos=north west,
   311     legend pos=north west,
   303     legend cell align=left]
   312     legend cell align=left]
   304 \addplot[blue,mark=*, mark options={fill=white}] table {re-python.data};
   313 \addplot[blue,mark=*, mark options={fill=white}] table {re-python.data};
   315     xmax=33,
   324     xmax=33,
   316     ymax=35,
   325     ymax=35,
   317     ytick={0,5,...,30},
   326     ytick={0,5,...,30},
   318     scaled ticks=false,
   327     scaled ticks=false,
   319     axis lines=left,
   328     axis lines=left,
   320     width=5.5cm,
   329     width=\textwidth,
   321     height=4cm, 
   330     height=4cm, 
   322     legend entries={Python, Java 8, JavaScript},  
   331     legend entries={Python, Java 8, JavaScript},  
   323     legend pos=north west,
   332     legend pos=north west,
   324     legend cell align=left]
   333     legend cell align=left]
   325 \addplot[blue,mark=*, mark options={fill=white}] table {re-python2.data};   
   334 \addplot[blue,mark=*, mark options={fill=white}] table {re-python2.data};   
   326 \addplot[cyan,mark=*, mark options={fill=white}] table {re-java.data};
   335 \addplot[cyan,mark=*, mark options={fill=white}] table {re-java.data};
   327 \addplot[red,mark=*, mark options={fill=white}] table {re-js.data};
   336 \addplot[red,mark=*, mark options={fill=white}] table {re-js.data};
   328 \end{axis}
   337 \end{axis}
   329 \end{tikzpicture}
   338 \end{tikzpicture}
   330 
   339 %
   331 \end{column}
   340 \end{column}
   332 \begin{column}{.4\textwidth}
   341 \begin{column}{.5\textwidth}
   333 Us (after next lecture)\medskip\\
   342 \small{}Us (after next lecture)\medskip\\
   334 \begin{tikzpicture}\footnotesize
   343 \begin{tikzpicture}\footnotesize
   335 \begin{axis}[
   344 \begin{axis}[
   336     xlabel={$n$},
   345     xlabel={$n$},
   337     x label style={at={(1.07,0.0)}},
   346     x label style={at={(1.07,0.0)}},
   338     ylabel={time in secs},
   347     ylabel={time in secs},
   341     xmax=11000,
   350     xmax=11000,
   342     ymax=35,
   351     ymax=35,
   343     ytick={0,5,...,30},
   352     ytick={0,5,...,30},
   344     scaled ticks=false,
   353     scaled ticks=false,
   345     axis lines=left,
   354     axis lines=left,
   346     width=5.5cm,
   355     width=\textwidth,
   347     height=4cm]
   356     height=4cm]
   348 \addplot[green,mark=square*,mark options={fill=white}] table {re2.data};
   357 \addplot[green,mark=square*,mark options={fill=white}] table {re2.data};
   349 \addplot[black,mark=square*,mark options={fill=white}] table {re3.data};
   358 \addplot[black,mark=square*,mark options={fill=white}] table {re3.data};
   350 \end{axis}
   359 \end{axis}
   351 \end{tikzpicture}
   360 \end{tikzpicture}
   357     enlargelimits=false,
   366     enlargelimits=false,
   358     ymax=35,
   367     ymax=35,
   359     ytick={0,5,...,30},
   368     ytick={0,5,...,30},
   360     scaled ticks=false,
   369     scaled ticks=false,
   361     axis lines=left,
   370     axis lines=left,
   362     width=5.5cm,
   371     width=\textwidth,
   363     height=4cm]
   372     height=4cm]
   364 \addplot[black,mark=square*,mark options={fill=white}] table {re3a.data};
   373 \addplot[black,mark=square*,mark options={fill=white}] table {re3a.data};
   365 \end{axis}
   374 \end{axis}
   366 \end{tikzpicture}
   375 \end{tikzpicture}
   367 \end{column}
   376 \end{column}
   368 \end{columns}\bigskip
   377 \end{columns}
   369 
   378 \medskip
   370 \small\centering
   379 
   371 matching \bl{\texttt{[a?]\{n\}[a]\{n\}}} and \bl{\texttt{(a*)*b}}
   380 \begin{textblock}{3}(-0.1,3.3)
   372 against \bl{$\underbrace{\texttt{a}...\texttt{a}}_n$}
   381 \small\hfill\bl{\texttt{[a?]\{n\}[a]\{n\}}}:
       
   382 \end{textblock}
       
   383 
       
   384 \begin{textblock}{3}(-0.1,8.7)  
       
   385 \small\hfill\bl{\texttt{(a*)*b}}:
       
   386 \end{textblock}
       
   387 
       
   388 \begin{textblock}{3}(0.3,13)
       
   389 \small{}matching with strings
       
   390 \bl{$\underbrace{\texttt{a}...\texttt{a}}_n$}  
       
   391 \end{textblock}
       
   392 
   373 \end{frame} 
   393 \end{frame} 
   374 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
   394 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
   375     
   395     
   376 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   396 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   377 \begin{frame}[c,fragile]
   397 \begin{frame}[c,fragile]
   388   |-|~|!|{}|\|\||\+)*.*(?:.*=.*)))  
   408   |-|~|!|{}|\|\||\+)*.*(?:.*=.*)))  
   389   \end{verbatim}
   409   \end{verbatim}
   390   \end{center}\bigskip\bigskip\bigskip\bigskip\bigskip\bigskip\bigskip    
   410   \end{center}\bigskip\bigskip\bigskip\bigskip\bigskip\bigskip\bigskip    
   391   
   411   
   392   \item on 20 July 2016 the \textbf{Stack Exchange} webpage went down
   412   \item on 20 July 2016 the \textbf{Stack Exchange} webpage went down
   393   because of an evil regular expression
   413     because of an evil regular expression
       
   414     \here{https://stackstatus.net/post/147710624694/outage-postmortem-july-20-2016}    
   394   \end{itemize}
   415   \end{itemize}
   395   
   416   
   396   \begin{textblock}{6}(9,7.6)
   417   \begin{textblock}{6}(6,7.6)
   397     \includegraphics[scale=0.14]{../pics/cloudflare.png}\\
   418     \includegraphics[scale=0.14]{../pics/cloudflare.png}\\
   398     \footnotesize
   419     \footnotesize
   399     It serves more web traffic than Twitter, Amazon, Apple, Instagram, Bing \& Wikipedia combined.
   420     It serves more web traffic than Twitter, Amazon, Apple,
       
   421     Instagram, Bing \& Wikipedia combined.
       
   422     \here{https://blog.cloudflare.com/details-of-the-cloudflare-outage-on-july-2-2019/}
   400     \end{textblock}
   423     \end{textblock}
   401   
   424   
   402   \end{frame}
   425   \end{frame}
   403 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   426 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   404     
   427     
   406 \begin{frame}[c]
   429 \begin{frame}[c]
   407 \frametitle{Evil Regular Expressions}
   430 \frametitle{Evil Regular Expressions}
   408 
   431 
   409 \begin{itemize}
   432 \begin{itemize}
   410 \item \alert{R}egular \alert{e}xpression \alert{D}enial \alert{o}f \alert{S}ervice (ReDoS)\medskip
   433 \item \alert{R}egular \alert{e}xpression \alert{D}enial \alert{o}f \alert{S}ervice (ReDoS)\medskip
   411 \item Evil regular expressions\medskip
   434 \item Some evil regular expressions:\medskip
   412 \begin{itemize}
   435 \begin{itemize}
   413 \item \bl{$(a^{?\{n\}}) \cdot a^{\{n\}}$}
   436 \item \bl{\texttt{[a?]\{n\}\;[a]\{n\}}}
   414 \item \bl{$(a^*)^*\cdot b$}
   437 \item \bl{\texttt{(a*)*\;b}}  
   415 \item \bl{$([a-z]^+)^*$}
   438 \item \bl{\texttt{([a-z]+)*}} 
   416 \item \bl{$(a + a \cdot a)^*$}
   439 \item \bl{\texttt{(a + aa)*}}
   417 \item \bl{$(a + a^?)^*$}
   440 \item \bl{\texttt{(a + a?)*}}
   418 \end{itemize}
   441 \end{itemize}
   419 
   442 
   420 \item sometimes also called \alert{catastrophic backtracking}
   443 \item sometimes also called \alert{catastrophic backtracking}
   421 \item this is a problem for \alert{N}etwork \alert{I}ntrusion
   444 \item this is a problem for \alert{N}etwork \alert{I}ntrusion
   422   \alert{D}etection systems, Cloudflare, StackExchange, Atom editor
   445   \alert{D}etection systems, Cloudflare, StackExchange, Atom editor
   425 
   448 
   426 \end{frame}
   449 \end{frame}
   427 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   450 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   428 
   451 
   429 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   452 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   430 \begin{frame}[c]
   453 \begin{frame}[t]
   431 \frametitle{The Acad.~Subject is Mature}
   454 \frametitle{The Acad.~Subject is Mature}
   432 
   455 
   433 \bigskip
   456 \bigskip
   434 \begin{itemize}
   457 \begin{itemize}
   435 \item Turing Machines, 1936 (a tape as memory)
   458 \item Turing Machines, 1936 (a tape as memory)
   436 \item Regular Expressions, 1956\\
   459 \item Regular Expressions, 1956\\
   437 \item The first compiler for COBOL, 1957\\ (Grace Hopper)\medskip
   460 \item The first compiler for COBOL, 1957\\ (Grace Hopper)\medskip
   438 \item But surprisingly research papers are still published nowadays\\
   461 \item But surprisingly research papers are still published nowadays\\
   439 \item ``Parsing: The Solved Problem That Isn't''
   462 \item ``Parsing: The Solved Problem That Isn't''
       
   463   \here{https://tratt.net/laurie/blog/entries/parsing_the_solved_problem_that_isnt.html}
   440 \end{itemize}
   464 \end{itemize}
   441 
   465 
       
   466 
       
   467 \begin{textblock}{8.5}(5,7.6)
   442 \begin{flushright}
   468 \begin{flushright}
   443 \includegraphics[scale=0.3]{pics/hopper.jpg}\\
   469 \includegraphics[scale=0.3]{pics/hopper.jpg}\\
   444 \footnotesize\textcolor{gray}{Grace Hopper}
   470 \footnotesize\textcolor{gray}{Grace Hopper}\smallskip\\
       
   471 
       
   472 {\small\textcolor{gray}{(she made it to David Letterman's Tonight Show
       
   473  \here{https://youtu.be/3N_ywhx6_K0?t=31})}}
   445 \end{flushright}
   474 \end{flushright}
   446 
   475 \end{textblock}
   447 
       
   448 \begin{flushright}
       
   449 \mbox{}\\[-6mm]
       
   450 {\footnotesize\textcolor{gray}{(she made it to David Letterman's Tonight Show,\\[-2mm]
       
   451  \url{https://youtu.be/3N_ywhx6_K0?t=31})}}
       
   452 \end{flushright}
       
   453 
   476 
   454 \end{frame}
   477 \end{frame}
   455 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   478 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   456 
   479 
   457 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   480 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   458 \begin{frame}[c]
   481 \begin{frame}[c]
   459 \frametitle{Remember BF*** from PEP?}
   482 \frametitle{What Do Compilers Do?}
       
   483 
       
   484 Remember BF*** from PEP?
   460 
   485 
   461 \begin{center}
   486 \begin{center}
   462 \begin{tabular}{lcl}
   487 \begin{tabular}{lcl}
   463 \bl{\texttt{>}} & $\Rightarrow$ & move one cell right\\
   488 \bl{\texttt{>}} & $\Rightarrow$ & move one cell right\\
   464 \bl{\texttt{<}} & $\Rightarrow$ & move one cell left\\
   489 \bl{\texttt{<}} & $\Rightarrow$ & move one cell left\\
   475 \end{frame}
   500 \end{frame}
   476 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   501 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   477 
   502 
   478 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   503 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   479 \begin{frame}[c]
   504 \begin{frame}[c]
   480   \frametitle{A ``Compiler'' for BF***}
   505   \frametitle{A ``Compiler'' for BF*** to C}
   481   
   506   
   482   \begin{center}
   507   \begin{center}
   483   \begin{tabular}{lcl}
   508   \begin{tabular}{lcl}
   484   \bl{\texttt{>}} & $\Rightarrow$ & \texttt{ptr++}\\
   509   \bl{\texttt{>}} & $\Rightarrow$ & \texttt{ptr++}\\
   485   \bl{\texttt{<}} & $\Rightarrow$ & \texttt{ptr--}\\
   510   \bl{\texttt{<}} & $\Rightarrow$ & \texttt{ptr--}\\
   523 
   548 
   524 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   549 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   525 \begin{frame}[c]
   550 \begin{frame}[c]
   526   \frametitle{Lectures 5 - 10}
   551   \frametitle{Lectures 5 - 10}
   527   
   552   
   528   code generation for a small imperative and a small functional languages\\[10mm]
   553   code generation for a small imperative and a small functional language\\[10mm]
   529   
   554   
   530   {\LARGE\bf Interpreters}\medskip\\
   555   {\LARGE\bf Interpreters}\medskip\\
   531   \hspace{5mm}(directly runs a program)\\[6mm]
   556   \hspace{5mm}(directly runs a program)\\[6mm]
   532   
   557   
   533   {\LARGE\bf Compilers}\medskip\\
   558   {\LARGE\bf Compilers}\medskip\\
   534   \hspace{5mm}(generates JVM code)
   559   \hspace{5mm}(generate JVM code and LLVM-IR code)
   535   
   560   
   536   \begin{textblock}{1}(10,8.1)
   561   \begin{textblock}{1}(8.8,8.1)
   537   \begin{tabular}{c}
   562   \begin{tabular}{c@{}c}
   538   \includegraphics[scale=0.4]{../pics/javaduke.png}
   563     \includegraphics[scale=0.4]{../pics/javaduke.png} &
       
   564     \includegraphics[scale=0.23]{../pics/llvmlogo.png}
   539   \end{tabular}
   565   \end{tabular}
   540   \end{textblock}
   566   \end{textblock}
   541   
   567   
   542   \end{frame}
   568   \end{frame}
   543   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   569   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   877 \end{frame}
   903 \end{frame}
   878 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   904 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   879 
   905 
   880 
   906 
   881 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   907 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   882 \mode<presentation>{
   908 \begin{frame}[c]
   883 \begin{frame}[c]
   909 \frametitle{The Meaning of a Regex}
   884 \frametitle{\begin{tabular}{c}The Meaning of a\\[-2mm] 
       
   885   Regular Expression\end{tabular}}
       
   886 
   910 
   887 \begin{textblock}{15}(1,4)
   911 \begin{textblock}{15}(1,4)
   888  \begin{tabular}{rcl}
   912  \begin{tabular}{rcl}
   889  \bl{$L(\ZERO)$}  & \bl{$\dn$} & \bl{$\{\}$}\\
   913  \bl{$L(\ZERO)$}  & \bl{$\dn$} & \bl{$\{\}$}\\
   890  \bl{$L(\ONE)$}     & \bl{$\dn$} & \bl{$\{[]\}$}\\
   914  \bl{$L(\ONE)$}     & \bl{$\dn$} & \bl{$\{[]\}$}\\
   899 \bl{$L(r)^{n+1} \;\dn\; L(r) \,@\, L(r)^n$}\hspace{9mm}\onslide<3->{\small\textcolor{gray}{(append on sets)}\\
   923 \bl{$L(r)^{n+1} \;\dn\; L(r) \,@\, L(r)^n$}\hspace{9mm}\onslide<3->{\small\textcolor{gray}{(append on sets)}\\
   900 \small\hspace{5cm}\textcolor{gray}{$\{ s_1 @ s_2 \;|\; s_1\in L(r) \wedge s_2 \in L(r)^n \}$}}
   924 \small\hspace{5cm}\textcolor{gray}{$\{ s_1 @ s_2 \;|\; s_1\in L(r) \wedge s_2 \in L(r)^n \}$}}
   901 }  
   925 }  
   902     \end{textblock}
   926     \end{textblock}
   903 
   927 
   904 \end{frame}}
   928 \end{frame}
   905 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   929 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   906 
   930 
   907 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   931 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   908 \begin{frame}[c]
   932 \begin{frame}[c]
   909 \frametitle{The Meaning of Matching}
   933 \frametitle{The Meaning of Matching}
  1021   
  1045   
  1022 
  1046 
  1023 
  1047 
  1024 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1048 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1025 \begin{frame}[c]
  1049 \begin{frame}[c]
  1026 \frametitle{
  1050 \frametitle{The Meaning of a Regex}
  1027     The Meaning of a\\[-2mm] 
       
  1028     Regular Expression}
       
  1029 
  1051 
  1030  ...all the strings a regular expression can match.   
  1052  ...all the strings a regular expression can match.   
  1031 
  1053 
  1032 \begin{center}
  1054 \begin{center}
  1033  \begin{tabular}{rcl}
  1055  \begin{tabular}{rcl}
  1175 
  1197 
  1176 \end{frame}
  1198 \end{frame}
  1177 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
  1199 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
  1178 
  1200 
  1179 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1201 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1180 \begin{frame}[c]
  1202 %\begin{frame}[c]
  1181 \frametitle{Lecture Capture}
  1203 %\frametitle{Lecture Capture}
  1182 
  1204 %
  1183 \begin{itemize}
  1205 %\begin{itemize}
  1184 \item Hope it works\ldots\pause actually no, it does not!\medskip\pause
  1206 %\item Hope it works\ldots\pause actually no, it does not!\medskip\pause
  1185 \item It is important to use lecture capture wisely\\ (it is only the ``baseline''):
  1207 %\item It is important to use lecture capture wisely\\ (it is only the ``baseline''):
  1186 \begin{itemize}  
  1208 %\begin{itemize}  
  1187 \item Lecture recordings are a study and revision aid.
  1209 %\item Lecture recordings are a study and revision aid.
  1188 \item Statistically, there is a clear and direct link between attendance and
  1210 %\item Statistically, there is a clear and direct link between attendance and
  1189   attainment: students who do not attend lectures, do less well in exams.
  1211 %  attainment: students who do not attend lectures, do less well in exams.
  1190 \end{itemize}
  1212 %\end{itemize}
  1191 
  1213 %
  1192 \item Attending a lecture is more than watching it online -- if you do not
  1214 %\item Attending a lecture is more than watching it online -- if you do not
  1193 attend, you miss out!  
  1215 %attend, you miss out!  
  1194   
  1216 %  
  1195 \end{itemize}
  1217 %\end{itemize}
  1196 
  1218 %
  1197 \end{frame}
  1219 %\end{frame}
  1198 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
  1220 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
  1199 
  1221 
  1200 
  1222 
  1201 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1223 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1202 \begin{frame}[c]
  1224 \begin{frame}[c]