slides/slides01.tex
changeset 965 94f5cce73a4f
parent 961 c0600f8b6427
equal deleted inserted replaced
964:da1f8c033b8e 965:94f5cce73a4f
     4 \usepackage{../graphicss}
     4 \usepackage{../graphicss}
     5 \usepackage{../langs}
     5 \usepackage{../langs}
     6 \usepackage{../data}
     6 \usepackage{../data}
     7 \usetikzlibrary{cd}
     7 \usetikzlibrary{cd}
     8 \usepackage{listings-rust}
     8 \usepackage{listings-rust}
     9 
     9 \usepackage{ulem}
    10 
    10 
    11 \usepackage{tcolorbox}
    11 \usepackage{tcolorbox}
    12 \newtcolorbox{mybox}{colback=red!5!white,colframe=red!75!black}
    12 \newtcolorbox{mybox}{colback=red!5!white,colframe=red!75!black}
    13 \newtcolorbox{mybox2}[1]{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,title=#1}
    13 \newtcolorbox{mybox2}[1]{colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,title=#1}
    14 \newtcolorbox{mybox3}[1]{colback=Cyan!5!white,colframe=Cyan!75!black,fonttitle=\bfseries,title=#1}
    14 \newtcolorbox{mybox3}[1]{colback=Cyan!5!white,colframe=Cyan!75!black,fonttitle=\bfseries,title=#1}
   625 \begin{flushright}
   625 \begin{flushright}
   626 \includegraphics[scale=0.3]{pics/hopper.jpg}\\
   626 \includegraphics[scale=0.3]{pics/hopper.jpg}\\
   627 \footnotesize\textcolor{gray}{Grace Hopper}\smallskip\\
   627 \footnotesize\textcolor{gray}{Grace Hopper}\smallskip\\
   628 
   628 
   629 {\small\textcolor{gray}{(she made it to David Letterman's Tonight Show
   629 {\small\textcolor{gray}{(she made it to David Letterman's Tonight Show
   630     \here{https://www.youtube.com/watch?v=oE2uls6iIEU})}}
   630     \here{https://youtu.be/oE2uls6iIEU})}}
   631 \end{flushright}
   631 \end{flushright}
   632 \end{textblock}
   632 \end{textblock}
   633 
   633 
   634 \end{frame}
   634 \end{frame}
   635 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   635 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     
   636 
   636 
   637 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   637 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   638 {\setbeamercolor{background canvas}{bg=cream}
   638 \begin{frame}[c]
   639 \begin{frame}[c]
   639 \frametitle{Some Housekeeping}
   640 \frametitle{Some Housekeeping}
   640 
   641 
   641 \textbf{Exam will be computer-based, invigilated in some big examination hall:}\bigskip
   642 \textbf{Exam will be computer-based, invigilated in some big examination hall:}\bigskip
   642 
   643 
   643 \begin{itemize}
   644 \begin{itemize}
   644 \item final exam in January (35\%)
   645 \item final exam in January (\xout{35\%} \textbf{40\%})
   645 \item four CWs (65\% - first CW is optional) 
   646 \item coursework (\xout{65\%} \textbf{60\%- very first part is now optional}) 
   646 \end{itemize}\bigskip\bigskip\pause
   647 \end{itemize}\bigskip\bigskip\pause
   647 
   648 
   648 
   649 
   649 \textbf{Weekly Homework (optional):}
   650 \textbf{Weekly Homework (optional):}
   650 \begin{itemize}
   651 \begin{itemize}
   651 \item uploaded on KEATS - solutions will be discussed during the SGTs
   652 \item uploaded on KEATS - solutions will be discussed during the SGTs
   652 \item \alert{\bf all} questions in the exam will be from the HWs!!
   653 \item \alert{\bf all} questions in the exam will be in some close shape or form from the HWs!!
   653 \end{itemize}  
   654 \end{itemize}  
   654 
   655 
   655 \end{frame}
   656 \end{frame}}
   656 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   657 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
       
   658 
       
   659 
       
   660 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
       
   661 {
       
   662 \setbeamercolor{background canvas}{bg=cream}
       
   663 \begin{frame}[c]
       
   664 \frametitle{Homework}
       
   665 
       
   666 Until 3 years ago: I did not give out solutions; students
       
   667 sent emails to me and I responded to them individually.\bigskip\\
       
   668 
       
   669 Now: We will review the homework mainly during the SGTs.\bigskip\\\pause
       
   670 
       
   671 I will still choose the questions from the HW for the exam, but there might be
       
   672 some larger amount of deviation.\bigskip\pause
       
   673 
       
   674 Do not harass your TAs for the solutions!
       
   675 
       
   676 \end{frame}
       
   677 }
   657 
   678 
   658 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   679 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   659 {\definecolor{rred}{HTML}{C0504D}
   680 {\definecolor{rred}{HTML}{C0504D}
   660 \setbeamercolor{background canvas}{bg=cream}
   681 \setbeamercolor{background canvas}{bg=cream}
   661 \begin{frame}[c]
   682 \begin{frame}[c]
   674     clip=false,
   695     clip=false,
   675     hide y axis,
   696     hide y axis,
   676     axis line style={-},
   697     axis line style={-},
   677     name=mygraph
   698     name=mygraph
   678     ]
   699     ]
   679     
   700 
   680 \addplot[ybar,style={rred,fill=rred!75,mark=none},text=black] coordinates {
   701 \only<1>{\addplot[ybar,style={rred,fill=rred!75,mark=none},text=black] coordinates {
   681 (2024,136)
   702 (2024,136)
   682 (2023,169)
   703 (2023,169)
   683 (2022,111)
   704 (2022,111)
   684 (2021,98)
   705 (2021,98)
   685 (2020,59)
   706 (2020,59)
   686 (2019,38)
   707 (2019,38)
   687 (2018,20)
   708 (2018,20)
   688 (2017,22)
   709 (2017,22)
   689 (2016,8)};
   710 (2016,8)}};
       
   711 \only<2>{\addplot[ybar,style={rred,fill=rred!75,mark=none},text=black] coordinates {
       
   712 (2024,173)
       
   713 (2023,169)
       
   714 (2022,111)
       
   715 (2021,98)
       
   716 (2020,59)
       
   717 (2019,38)
       
   718 (2018,20)
       
   719 (2017,22)
       
   720 (2016,8)}};
   690 \end{axis}
   721 \end{axis}
   691 \node[anchor=north, yshift=-10mm] at (mygraph.south) {\small{}Student numbers since the start of the compiler module.};
   722 \node[anchor=north, yshift=-10mm] at (mygraph.south) {\small{}Student numbers since the start of the compiler module.};
   692 
   723 
   693 \end{tikzpicture}
   724 \end{tikzpicture}
   694 \end{center}
   725 \end{center}
   695 
   726 
   696 
   727 
   697 \end{frame}
   728 \end{frame}
   698 }
   729 }
   699 
   730 
   700 
   731 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   701 
       
   702 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
       
   703 {
   732 {
   704 \setbeamercolor{background canvas}{bg=cream}
   733 \setbeamercolor{background canvas}{bg=cream}
   705 \begin{frame}[c]
   734 \begin{frame}[c]
   706 \frametitle{Homework}
       
   707 
       
   708 Until 2 years ago: I did not give out solutions; students
       
   709 sent emails to me and I responded to them individually.\bigskip\\
       
   710 
       
   711 
       
   712 Since last year: We will review the homework mainly during the SGTs.\bigskip\\\pause
       
   713 
       
   714 I will still choose the questions from the HW for the exam, but there might be
       
   715 some larger amount of deviation.
       
   716 
       
   717 \end{frame}
       
   718 }
       
   719 
       
   720 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   721 \begin{frame}[c]
       
   722 \frametitle{Some Housekeeping}
   735 \frametitle{Some Housekeeping}
   723 
   736 
   724 \textbf{Coursework (5 accounting for 65\%):}\bigskip
   737 \textbf{Coursework (4 parts accounting for 60\%; submission deadline \underline{2nd January}):}\bigskip
   725 
   738 
   726 \begin{itemize}
   739 \begin{itemize}
   727 \item matcher (5\%)
   740 \item matcher \xout{(5\%)}\;\;\textcolor{red}{optional from this year}
   728 \item lexer (10\%)
   741 \item lexer (10\%)
   729 \item parser / interpreter (10\%)
   742 \item parser / interpreter (10\%)
   730 \item JVM compiler (15\%)
   743 \item JVM compiler (15\%)
   731 \item LLVM compiler (25\%) 
   744 \item LLVM compiler (25\%) 
   732 \end{itemize}\bigskip\pause
   745 \end{itemize}\bigskip\pause
   733 
   746 
   734 you can use \alert{any} programming language you like (Haskell, Rust, Swift)\\\pause
   747 you can use \alert{any} programming language you like (Haskell, Rust, Swift)\\\pause
   735 you can use any code I show you and is uploaded to KEATS\ldots\textbf{BUT NOTHING ELSE!}
   748 you can use any code I show you and is uploaded to KEATS\ldots\textbf{BUT NOTHING ELSE!}
   736 
   749 
   737 \end{frame}
   750 \end{frame}
   738 
   751 }
       
   752 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   753 {
       
   754 \setbeamercolor{background canvas}{bg=cream}
       
   755 \begin{frame}[c,fragile]
       
   756 \end{frame}  
       
   757 }
       
   758 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
   759 {
       
   760 \setbeamercolor{background canvas}{bg=cream}
       
   761 \begin{frame}[c,fragile]
       
   762 %%\frametitle{Scala 3}
       
   763 
       
   764 I will show you all my code in Scala 3
       
   765 
       
   766 \begin{minipage}{1.4\textwidth}
       
   767 \begin{lstlisting}[language={},numbers=none,basicstyle=\ttfamily\small]
       
   768 $ scala-cli
       
   769 Welcome to Scala 3.5.0 (21.0.4, Java OpenJDK 64-Bit Server VM).
       
   770 Type in expressions for evaluation. Or try :help.
       
   771 
       
   772 scala> 1 + 2
       
   773 res0: Int = 3
       
   774 \end{lstlisting} %% $
       
   775 \end{minipage}\medskip
       
   776 \pause
       
   777 
       
   778 Since Scala 3.5.0, scala-cli is included in "plain" Scala
       
   779 
       
   780 \begin{minipage}{1.4\textwidth}
       
   781 \begin{lstlisting}[language={},numbers=none,basicstyle=\ttfamily\small]
       
   782 $ scala
       
   783 Welcome to Scala 3.5.1 (21.0.4, Java OpenJDK 64-Bit Server VM).
       
   784 Type in expressions for evaluation. Or try :help.
       
   785 
       
   786 scala> 
       
   787 \end{lstlisting} %% $
       
   788 \end{minipage}
       
   789 \end{frame}
       
   790 }
       
   791 
       
   792 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   739 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   793 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
   740 {
   794 {
   741 \setbeamercolor{background canvas}{bg=cream}
   795 \setbeamercolor{background canvas}{bg=cream}
   742 \begin{frame}[c,fragile]
   796 \begin{frame}[c,fragile]
   743 \frametitle{Ammonite \& Scala 3}
   797 \frametitle{Ammonite \& Scala 3}
   744 
   798 
   745 I will show you all my code in Amm / Scala 3
   799 Actually in CFL, I will use Amm / Scala 3
   746 
   800 
   747 \begin{minipage}{1.4\textwidth}
   801 \begin{minipage}{1.4\textwidth}
   748 \begin{lstlisting}[language={},numbers=none,basicstyle=\ttfamily\small]
   802 \begin{lstlisting}[language={},numbers=none,basicstyle=\ttfamily\small]
   749 $ amm
   803 $ amm
   750 Loading...
   804 Loading...
   751 Welcome to the Ammonite Repl 2.5.9 (Scala 3.2.2 Java 17.0.7)
   805 Welcome to the Ammonite Repl 3.0.0-M2 (Scala 3.3.3 Java 21.0.4)
   752 scala> 1 + 2
   806 scala> 1 + 2
   753 res0: Int = 3
   807 res0: Int = 3
   754 \end{lstlisting} %% $
   808 \end{lstlisting} %% $
   755 \end{minipage}\medskip
   809 \end{minipage}\medskip
   756 \pause
   810 \pause
   775 \frametitle{For Install Problems}
   829 \frametitle{For Install Problems}
   776 
   830 
   777 \begin{itemize}
   831 \begin{itemize}
   778 \item Harry Dilnot (harry.dilnot@kcl.ac.uk) \\
   832 \item Harry Dilnot (harry.dilnot@kcl.ac.uk) \\
   779   \;\;Windows expert
   833   \;\;Windows expert
   780 \item Meilai Ji (meilai.ji@kcl.ac.uk) 
   834 \item Oliver Iliffe (oliver.iliffe@kcl.ac.uk) 
   781 \end{itemize}
   835 \end{itemize}
   782   
   836   
   783 \end{frame}
   837 \end{frame}
   784 }
   838 }
   785 
   839 
  1116 
  1170 
  1117 \end{frame}
  1171 \end{frame}
  1118 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1172 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1119 
  1173 
  1120 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
  1174 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
  1121 {
  1175 % {
  1122 \setbeamercolor{background canvas}{bg=cream}
  1176 % \setbeamercolor{background canvas}{bg=cream}
  1123 \begin{frame}[c]
  1177 % \begin{frame}[c]
  1124 \frametitle{Rust vs.~Scala (from PEP)}
  1178 % \frametitle{Rust vs.~Scala (from PEP)}
  1125 
  1179 
  1126 \mbox{}
  1180 % \mbox{}
  1127 
  1181 
  1128 \begin{minipage}{1.3\textwidth}
  1182 % \begin{minipage}{1.3\textwidth}
  1129 \begin{mybox3}{}\it\small
  1183 % \begin{mybox3}{}\it\small
  1130 \textbf{Re: Another question of purely academic interest about regex implementation in cw3}
  1184 % \textbf{Re: Another question of purely academic interest about regex implementation in cw3}
  1131 
  1185 
  1132 This conversation is interesting to me, and I've researched it a
  1186 % This conversation is interesting to me, and I've researched it a
  1133 little bit [...] I also disagree with Dr.~Urban on the cost/benefit of
  1187 % little bit [...] I also disagree with Dr.~Urban on the cost/benefit of
  1134 non-GC languages [...]\smallskip
  1188 % non-GC languages [...]\smallskip
  1135 
  1189 
  1136 But regardless, Scala is a lot slower than, say, C or Rust. To say
  1190 % But regardless, Scala is a lot slower than, say, C or Rust. To say
  1137 it's not is basically wrong (imo). Perhaps one could argue that some
  1191 % it's not is basically wrong (imo). Perhaps one could argue that some
  1138 of the guarantees Scala has makes it easier to write multi-threaded
  1192 % of the guarantees Scala has makes it easier to write multi-threaded
  1139 programs that utilise more of the CPU... but, in my opinion, this is
  1193 % programs that utilise more of the CPU... but, in my opinion, this is
  1140 also a bit misleading. Most CPUs have something like 4 to 12 cores
  1194 % also a bit misleading. Most CPUs have something like 4 to 12 cores
  1141 nowadays. It's very possible that a given Scala program runs 4-12x
  1195 % nowadays. It's very possible that a given Scala program runs 4-12x
  1142 slower than its Rust equivalent. Would you rather have your program
  1196 % slower than its Rust equivalent. Would you rather have your program
  1143 run quickly and use a single core, or have it run equally
  1197 % run quickly and use a single core, or have it run equally
  1144 quickly... and... hog your entire CPU for its duration?\ldots{}
  1198 % quickly... and... hog your entire CPU for its duration?\ldots{}
  1145 
  1199 
  1146 \mbox{}\hfill-- Oliver Iliffe,  discussion from PEP
  1200 % \mbox{}\hfill-- Oliver Iliffe,  discussion from PEP
  1147 \end{mybox3}
  1201 % \end{mybox3}
  1148 \end{minipage}
  1202 % \end{minipage}
  1149 
  1203 
  1150 \end{frame}
  1204 % \end{frame}
  1151 }
  1205 % }
  1152 
  1206 
  1153 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
  1207 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
  1154 {
  1208 % {
  1155 \setbeamercolor{background canvas}{bg=cream}
  1209 % \setbeamercolor{background canvas}{bg=cream}
  1156 \begin{frame}[c]
  1210 % \begin{frame}[c]
  1157 \frametitle{Regex Lib in Rust}
  1211 % \frametitle{Regex Lib in Rust}
  1158 
  1212 
  1159 \begin{center}
  1213 % \begin{center}
  1160 \includegraphics[scale=0.34]{../pics/rust-regex.png}
  1214 % \includegraphics[scale=0.34]{../pics/rust-regex.png}
  1161 \end{center}
  1215 % \end{center}
  1162 
  1216 
  1163 \end{frame}
  1217 % \end{frame}
  1164 }
  1218 % }
  1165 
  1219 
  1166 
  1220 
  1167 
  1221 
  1168 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1222 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1169 {
  1223 % {
  1170 \setbeamercolor{background canvas}{bg=cream}
  1224 % \setbeamercolor{background canvas}{bg=cream}
  1171 \begin{frame}[c,fragile]
  1225 % \begin{frame}[c,fragile]
  1172 
  1226 
  1173 \begin{columns}[t,onlytextwidth]
  1227 % \begin{columns}[t,onlytextwidth]
  1174 \begin{column}{1\textwidth}
  1228 % \begin{column}{1\textwidth}
  1175 \small re: \bl{$(abc)^{\{n\}}$}\quad str: \bl{$\underbrace{abc\ldots{}abc}_n$}\medskip\\  
  1229 % \small re: \bl{$(abc)^{\{n\}}$}\quad str: \bl{$\underbrace{abc\ldots{}abc}_n$}\medskip\\  
  1176 \begin{tikzpicture}\footnotesize
  1230 % \begin{tikzpicture}\footnotesize
  1177 \begin{axis}[
  1231 % \begin{axis}[
  1178     xlabel={$n$},
  1232 %     xlabel={$n$},
  1179     x label style={at={(1.07,0.0)}},
  1233 %     x label style={at={(1.07,0.0)}},
  1180     ylabel={time in secs},
  1234 %     ylabel={time in secs},
  1181     enlargelimits=false,
  1235 %     enlargelimits=false,
  1182     xmax=65000,
  1236 %     xmax=65000,
  1183     ymax=100,
  1237 %     ymax=100,
  1184     xtick={0,15000,...,60000},
  1238 %     xtick={0,15000,...,60000},
  1185     ytick={0,10,...,90},
  1239 %     ytick={0,10,...,90},
  1186     scaled ticks=false,
  1240 %     scaled ticks=false,
  1187     axis lines=left,
  1241 %     axis lines=left,
  1188     width=7cm,
  1242 %     width=7cm,
  1189     height=5cm]
  1243 %     height=5cm]
  1190     \addplot[black,mark=square*,mark options={fill=red}] table [x=x, y=y, col sep=comma, row sep=crcr]
  1244 %     \addplot[black,mark=square*,mark options={fill=red}] table [x=x, y=y, col sep=comma, row sep=crcr]
  1191     {x, y\\
  1245 %     {x, y\\
  1192       0, 0\\
  1246 %       0, 0\\
  1193      5000, 0.487\\ 
  1247 %      5000, 0.487\\ 
  1194      10000, 1.650\\
  1248 %      10000, 1.650\\
  1195      15000, 3.617\\
  1249 %      15000, 3.617\\
  1196      20000, 6.462\\
  1250 %      20000, 6.462\\
  1197      25000, 10.736\\
  1251 %      25000, 10.736\\
  1198      30000, 17.665\\
  1252 %      30000, 17.665\\
  1199      35000, 25.662\\
  1253 %      35000, 25.662\\
  1200      40000, 36.422\\
  1254 %      40000, 36.422\\
  1201      45000, 49.119\\
  1255 %      45000, 49.119\\
  1202      50000, 62.058\\
  1256 %      50000, 62.058\\
  1203      55000, 75.941\\
  1257 %      55000, 75.941\\
  1204      60000, 93.022\\
  1258 %      60000, 93.022\\
  1205     };
  1259 %     };
  1206 \end{axis}
  1260 % \end{axis}
  1207 \end{tikzpicture}
  1261 % \end{tikzpicture}
  1208 \end{column}
  1262 % \end{column}
  1209 \end{columns}
  1263 % \end{columns}
  1210 
  1264 
  1211 \begin{textblock}{10}(8.4,3.8)
  1265 % \begin{textblock}{10}(8.4,3.8)
  1212 \tiny  
  1266 % \tiny  
  1213 \begin{lstlisting}[language=Rust]
  1267 % \begin{lstlisting}[language=Rust]
  1214 extern crate regex;
  1268 % extern crate regex;
  1215 
  1269 
  1216 use regex::Regex;
  1270 % use regex::Regex;
  1217 use std::time::Instant;
  1271 % use std::time::Instant;
  1218 
  1272 
  1219 // bounded regular expression example
  1273 % // bounded regular expression example
  1220 
  1274 
  1221 fn main() {
  1275 % fn main() {
  1222    for bound in (0..=60000).step_by(5000) {
  1276 %    for bound in (0..=60000).step_by(5000) {
  1223    
  1277    
  1224       let re = Regex::new(&format!("(abc){{{}}}", bound)).unwrap();
  1278 %       let re = Regex::new(&format!("(abc){{{}}}", bound)).unwrap();
  1225       let text = "abc".repeat(bound);
  1279 %       let text = "abc".repeat(bound);
  1226 
  1280 
  1227       let start_time = Instant::now();
  1281 %       let start_time = Instant::now();
  1228       let is_match = re.is_match(&text);
  1282 %       let is_match = re.is_match(&text);
  1229       let elapsed_time = start_time.elapsed().as_secs_f64();
  1283 %       let elapsed_time = start_time.elapsed().as_secs_f64();
  1230 
  1284 
  1231       println!("Bound: {}, Match: {}, Time: {} seconds", bound, is_match, elapsed_time);
  1285 %       println!("Bound: {}, Match: {}, Time: {} seconds", bound, is_match, elapsed_time);
  1232    }
  1286 %    }
  1233 }
  1287 % }
  1234 \end{lstlisting}    
  1288 % \end{lstlisting}    
  1235 \end{textblock}
  1289 % \end{textblock}
  1236 \end{frame}
  1290 % \end{frame}
  1237 }  
  1291 % }  
  1238 
  1292 
  1239 
  1293 
  1240 
  1294 
  1241 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1295 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1242 %\begin{frame}[c]
  1296 %\begin{frame}[c]
  1980 \begin{frame}[c]
  2034 \begin{frame}[c]
  1981 \frametitle{\begin{tabular}{c}\\[1cm]\alert{Questions?}\end{tabular}}
  2035 \frametitle{\begin{tabular}{c}\\[1cm]\alert{Questions?}\end{tabular}}
  1982 
  2036 
  1983 
  2037 
  1984 \begin{tabular}{lll}
  2038 \begin{tabular}{lll}
  1985   SGT TAs: & Flavio Melinte Citea & (was a KURF last summer)\\
  2039   SGT TAs: & Flavio Melinte Citea & (was a KURF two summers ago)\\
  1986            & Krishi Wali \\
  2040            & Zishan Rahman\\
  1987            & Meilai Ji \medskip\\
  2041            & Harry Dilnot\\
       
  2042            & Opale Sjostedt\medskip\\
  1988   Amm Helpers & Harry Dilnot & (harry.dilnot@kcl.ac.uk)\\
  2043   Amm Helpers & Harry Dilnot & (harry.dilnot@kcl.ac.uk)\\
  1989               & Meilai Ji & (meilai.ji@kcl.ac.uk)\medskip\\
  2044            & Oliver Iliffe & (oliver.iliffe@kcl.ac.uk)\medskip\\
       
  2045            & \multicolumn{2}{l}{\hspace{5mm}(was a KURF last summer)}\\
  1990 \end{tabular}  
  2046 \end{tabular}  
  1991 \mbox{}
  2047 \mbox{}
  1992 \end{frame}
  2048 \end{frame}
  1993 
  2049 
  1994 \begin{frame}[c]
  2050 \begin{frame}[c]