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}, |
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} |
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] |