|    370 \end{frame} |    356 \end{frame} | 
|    371 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    |    357 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    | 
|    372  |    358  | 
|    373 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |    359 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|    374 \begin{frame}[c] |    360 \begin{frame}[c] | 
|    375 \frametitle{Coursework: PLs (16)} |    361 \frametitle{Coursework: Submissions} | 
|    376  |    362  | 
|    377 \begin{itemize} |    363 \begin{itemize} | 
|    378 \item Java (16) |    364 \item Scala (29) | 
|    379 \item C++, C, C\# (14) |    365 \item Haskell (1) | 
|    380 \item JavaScript (10) |    366 \item Kotlin (1) | 
|    381 \item Scala (9) |    367 \item Rust (1) | 
|    382 \item Python (9)   |    368 \end{itemize}\bigskip   | 
|    383 \item PHP (6) |    369  | 
|    384 \item Haskell (3) |    370 Please get in contact if you intend to do CW Strand 2. | 
|    385 \item Ruby (4) |    371 \end{frame} | 
|    386 \item Bash, Perl, Powershell (2) |    372 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|    387 \item TypeScript (1) |         | 
|    388 \item R (1) |         | 
|    389 \item Coconut (1)   |         | 
|    390 \item Pascal (1) |         | 
|    391 \end{itemize}   |         | 
|    392  |         | 
|    393 \end{frame} |         | 
|    394 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |         | 
|    395  |         | 
|    396 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |         | 
|    397 \begin{frame}[c] |         | 
|    398 \frametitle{Coursework: Nullable} |         | 
|    399  |         | 
|    400 \begin{center} |         | 
|    401 \begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}} |         | 
|    402   \bl{$nullable([c_1 c_2 \ldots c_n])$}  & \bl{$\dn$} & $?$\\ |         | 
|    403   \bl{$nullable(r^+)$}                   & \bl{$\dn$} & $?$\\ |         | 
|    404   \bl{$nullable(r^?)$}                   & \bl{$\dn$} & $?$\\ |         | 
|    405   \bl{$nullable(r^{\{n\}})$}              & \bl{$\dn$} & $?$\\ |         | 
|    406   \bl{$nullable(r^{\{n..\}})$}            & \bl{$\dn$} & $?$\\ |         | 
|    407   \bl{$nullable(r^{\{..n\}})$}            & \bl{$\dn$} & $?$\\ |         | 
|    408   \bl{$nullable(r^{\{n..m\}})$}           & \bl{$\dn$} & $?$\\ |         | 
|    409   \bl{$nullable(\sim{}r)$}               & \bl{$\dn$} & $?$\\ |         | 
|    410                                                          |         | 
|    411 \end{tabular} |         | 
|    412 \end{center} |         | 
|    413  |         | 
|    414 \end{frame} |         | 
|    415 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |         | 
|    416  |         | 
|    417 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |         | 
|    418 \begin{frame}[c] |         | 
|    419 %%\frametitle{Coursework: der} |         | 
|    420  |         | 
|    421 \begin{center} |         | 
|    422 \begin{tabular}{@ {}l@ {\hspace{1mm}}c@ {\hspace{1mm}}l@ {}} |         | 
|    423   \bl{$der\, c\, ([c_1 c_2 \ldots c_n])$}  & \bl{$\dn$} & $?$\\ |         | 
|    424   \bl{$der\, c\, (r^+)$}                   & \bl{$\dn$} & $?$\\ |         | 
|    425   \bl{$der\, c\, (r^?)$}                   & \bl{$\dn$} & $?$\\ |         | 
|    426   \bl{$der\, c\, (r^{\{n\}})$}              & \bl{$\dn$} & |         | 
|    427      \bl{$if\;n=0\;then\;\ZERO\;else\;(der\,c\,r)\cdot r^{\{n-\liningnums{1}\}}$}\\ |         | 
|    428   \bl{$der\, c\, (r^{\{n..\}})$}            & \bl{$\dn$} & |         | 
|    429      \bl{$if\;n=0\;then (der\,c\,r)\cdot r^*$}\\ |         | 
|    430   & & \bl{$\phantom{if\;n=0\;}else \;(der\,c\,r)\cdot r^{\{n-\liningnums{1}..\}}$}\\ |         | 
|    431   \bl{$der\, c\, (r^{\{..n\}})$}            & \bl{$\dn$} & |         | 
|    432      \bl{$if\;n=0\;then\;\ZERO\;else\;(der\,c\,r)\cdot r^{\{..n-\liningnums{1}\}}$}\\ |         | 
|    433    |    373    | 
|    434   \bl{$der\, c\, (r^{\{n..m\}})$}          & \bl{$\dn$} & |    374  | 
|    435      \bl{$if\;n = 0 \wedge m = 0\;then\;\ZERO\; else$}\\ |    375  | 
|    436   \multicolumn{3}{l}{\bl{$if\;n = 0 \wedge m > 0\;then\;(der\,c\,r)\cdot r^{\{..m-\liningnums{1}\}}$}}\\ |    376 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|    437   \multicolumn{3}{l}{\bl{$\phantom{if\;n = 0 \wedge m > 0\;}else |    377 %\begin{frame}[c] | 
|    438           \;(der\,c\,r)\cdot r^{\{n-\liningnums{1}..m-\liningnums{1}\}}$}}\\ |    378 %\frametitle{Coursework: PLs (16)} | 
|    439   \bl{$der\, c\, (\sim{}r)$}              & \bl{$\dn$} & $?$\\ |    379 % | 
|    440 \end{tabular} |    380 %\begin{itemize} | 
|    441 \end{center} |    381 %\item Java (16) | 
|    442  |    382 %\item C++, C, C\# (14) | 
|    443 \end{frame} |    383 %\item JavaScript (10) | 
|    444 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |    384 %\item Scala (9) | 
|    445  |    385 %\item Python (9)   | 
|    446 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |    386 %\item PHP (6) | 
|    447 \begin{frame}[c] |    387 %\item Haskell (3) | 
|    448 \frametitle{Coursework: CFUN} |    388 %\item Ruby (4) | 
|    449  |    389 %\item Bash, Perl, Powershell (2) | 
|    450 \begin{center} |    390 %\item TypeScript (1) | 
|    451 \begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}} |    391 %\item R (1) | 
|    452   \bl{$nullable(CFUN(\_))$}  & \bl{$\dn$} & \bl{$false$}\\ |    392 %\item Coconut (1)   | 
|    453   \bl{$der\,c\,(CFUN(f))$}   & \bl{$\dn$} & |    393 %\item Pascal (1) | 
|    454      \bl{$if\;f(c)\;then\;\ONE\;else\;\ZERO$}\bigskip\\ |    394 %\end{itemize}   | 
|    455   \bl{$CHAR(c)$}                   & \bl{$\dn$} & \bl{$CFUN(\lambda{}d.\;c=d)$}\\ |    395 % | 
|    456   \bl{$CSET([c_1,\ldots,c_n])$} & \bl{$\dn$} & \bl{$CFUN(\lambda{}d.\;d\in [c_1,\ldots,c_n])$}\\ |    396 %\end{frame} | 
|    457   \bl{$ALL$}                   & \bl{$\dn$} & \bl{$CFUN(\lambda{}d.\;true)$}\\                                                       |    397 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|    458 \end{tabular} |    398  | 
|    459 \end{center} |    399 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|    460  |    400 %\begin{frame}[c] | 
|    461 \end{frame} |    401 %\frametitle{Coursework: Nullable} | 
|         |    402 % | 
|         |    403 %\begin{center} | 
|         |    404 %\begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}} | 
|         |    405 %  \bl{$nullable([c_1 c_2 \ldots c_n])$}  & \bl{$\dn$} & $?$\\ | 
|         |    406 %  \bl{$nullable(r^+)$}                   & \bl{$\dn$} & $?$\\ | 
|         |    407 %  \bl{$nullable(r^?)$}                   & \bl{$\dn$} & $?$\\ | 
|         |    408 %  \bl{$nullable(r^{\{n\}})$}              & \bl{$\dn$} & $?$\\ | 
|         |    409 %  \bl{$nullable(r^{\{n..\}})$}            & \bl{$\dn$} & $?$\\ | 
|         |    410 %  \bl{$nullable(r^{\{..n\}})$}            & \bl{$\dn$} & $?$\\ | 
|         |    411 %  \bl{$nullable(r^{\{n..m\}})$}           & \bl{$\dn$} & $?$\\ | 
|         |    412 %  \bl{$nullable(\sim{}r)$}               & \bl{$\dn$} & $?$\\ | 
|         |    413 %                                                         | 
|         |    414 %\end{tabular} | 
|         |    415 %\end{center} | 
|         |    416 % | 
|         |    417 %\end{frame} | 
|         |    418 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|         |    419  | 
|         |    420 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|         |    421 %\begin{frame}[c] | 
|         |    422 %%%\frametitle{Coursework: der} | 
|         |    423 % | 
|         |    424 %\begin{center} | 
|         |    425 %\begin{tabular}{@ {}l@ {\hspace{1mm}}c@ {\hspace{1mm}}l@ {}} | 
|         |    426 %  \bl{$der\, c\, ([c_1 c_2 \ldots c_n])$}  & \bl{$\dn$} & $?$\\ | 
|         |    427 %  \bl{$der\, c\, (r^+)$}                   & \bl{$\dn$} & $?$\\ | 
|         |    428 %  \bl{$der\, c\, (r^?)$}                   & \bl{$\dn$} & $?$\\ | 
|         |    429 %  \bl{$der\, c\, (r^{\{n\}})$}              & \bl{$\dn$} & | 
|         |    430 %     \bl{$if\;n=0\;then\;\ZERO\;else\;(der\,c\,r)\cdot r^{\{n-\liningnums{1}\}}$}\\ | 
|         |    431 %  \bl{$der\, c\, (r^{\{n..\}})$}            & \bl{$\dn$} & | 
|         |    432 %     \bl{$if\;n=0\;then (der\,c\,r)\cdot r^*$}\\ | 
|         |    433 %  & & \bl{$\phantom{if\;n=0\;}else \;(der\,c\,r)\cdot r^{\{n-\liningnums{1}..\}}$}\\ | 
|         |    434 %  \bl{$der\, c\, (r^{\{..n\}})$}            & \bl{$\dn$} & | 
|         |    435 %     \bl{$if\;n=0\;then\;\ZERO\;else\;(der\,c\,r)\cdot r^{\{..n-\liningnums{1}\}}$}\\ | 
|         |    436 %   | 
|         |    437 %  \bl{$der\, c\, (r^{\{n..m\}})$}          & \bl{$\dn$} & | 
|         |    438 %     \bl{$if\;n = 0 \wedge m = 0\;then\;\ZERO\; else$}\\ | 
|         |    439 %  \multicolumn{3}{l}{\bl{$if\;n = 0 \wedge m > 0\;then\;(der\,c\,r)\cdot r^{\{..m-\liningnums{1}\}}$}}\\ | 
|         |    440 %  \multicolumn{3}{l}{\bl{$\phantom{if\;n = 0 \wedge m > 0\;}else | 
|         |    441 %          \;(der\,c\,r)\cdot r^{\{n-\liningnums{1}..m-\liningnums{1}\}}$}}\\ | 
|         |    442 %  \bl{$der\, c\, (\sim{}r)$}              & \bl{$\dn$} & $?$\\ | 
|         |    443 %\end{tabular} | 
|         |    444 %\end{center} | 
|         |    445 % | 
|         |    446 %\end{frame} | 
|         |    447 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|         |    448  | 
|         |    449 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|         |    450 %\begin{frame}[c] | 
|         |    451 %\frametitle{Coursework: CFUN} | 
|         |    452 % | 
|         |    453 %\begin{center} | 
|         |    454 %\begin{tabular}{@ {}l@ {\hspace{2mm}}c@ {\hspace{2mm}}l@ {}} | 
|         |    455 %  \bl{$nullable(CFUN(\_))$}  & \bl{$\dn$} & \bl{$false$}\\ | 
|         |    456 %  \bl{$der\,c\,(CFUN(f))$}   & \bl{$\dn$} & | 
|         |    457 %     \bl{$if\;f(c)\;then\;\ONE\;else\;\ZERO$}\bigskip\\ | 
|         |    458 %  \bl{$CHAR(c)$}                   & \bl{$\dn$} & \bl{$CFUN(\lambda{}d.\;c=d)$}\\ | 
|         |    459 %  \bl{$CSET([c_1,\ldots,c_n])$} & \bl{$\dn$} & \bl{$CFUN(\lambda{}d.\;d\in [c_1,\ldots,c_n])$}\\ | 
|         |    460 %  \bl{$ALL$}                   & \bl{$\dn$} & \bl{$CFUN(\lambda{}d.\;true)$}\\                                                       | 
|         |    461 %\end{tabular} | 
|         |    462 %\end{center} | 
|         |    463 % | 
|         |    464 %\end{frame} | 
|    462 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |    465 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|    463   |    466   | 
|    464 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |    467 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 
|    465 \begin{frame}[t] |    468 \begin{frame}[t] | 
|    466 \frametitle{Lexer, Parser} |    469 \frametitle{Lexer, Parser} |