--- a/slides/slides01.tex Tue Sep 29 21:52:52 2020 +0100
+++ b/slides/slides01.tex Sat Oct 03 00:51:47 2020 +0100
@@ -1453,8 +1453,265 @@
\begin{frame}[c]
\frametitle{\begin{tabular}{c}\\[3cm]\alert{Questions?}\end{tabular}}
+
+\begin{tabular}{lll}
+ TAs: & Anton Luca-Dorin & (took the module last year)\\
+ & Chengsong Tan & (PhD student working on derivatives)
+\end{tabular}
\mbox{}
\end{frame}
+
+\begin{frame}[c]
+\begin{mybox3}{Coursework}
+ Do we need to provide instructions on running the coursework files
+ if we're using languages other than Scala? Thanks
+\end{mybox3}\pause
+
+\begin{mybox2}{Zip-File for Coursework}
+ Please, please submit a zipfile that generates a subdirectory
+ \begin{center}
+ \texttt{NameFamilyName}
+ \end{center}
+\end{mybox2}
+\end{frame}
+
+
+\begin{frame}[c]
+\begin{mybox3}{Coursework}
+ What is the purpose of the workshop session on the timetable?
+
+ Slightly confused about how to undertake cw1 and what exactly we
+ should be implementing. This is more for clarification of the cw1
+ structure, including the implementation and questions present in
+ cw1.
+\end{mybox3}
+\end{frame}
+
+\begin{frame}[c]
+\begin{mybox3}{What is the trick?}\small
+ What was the trick to improve the evil regular expressions matcher
+ to have such good results compared to other programming languages?
+ Is it working better on casual regular expressions (the ones that
+ Python and Java handle pretty well), too? Or was it just optimised
+ for these evil ones?
+\end{mybox3}
+
+\begin{mybox3}{}\small
+ It was shown in the lectures that the pattern matching algorithms
+ currently implemented in popular programming languages (Python, JS,
+ Java, etc) are far slower than the algorithm we are going to be
+ implementing in this module. My question is why do these programming
+ languages not implement the algorithm that we are going to implement
+ in this module?
+\end{mybox3}
+\end{frame}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{frame}[c]
+ \frametitle{Thanks to Martin Mikusovic}
+
+\bigskip
+\begin{center}
+\begin{tikzpicture}
+ \begin{axis}[
+ xlabel={$n$},
+ x label style={at={(1.05,0.0)}},
+ ylabel={time in secs},
+ enlargelimits=false,
+ xtick={0,5,...,30},
+ xmax=33,
+ ymax=35,
+ ytick={0,10,...,30},
+ scaled ticks=false,
+ axis lines=left,
+ width=9cm,
+ height=5.5cm,
+ legend entries={Java 8, Python, JavaScript, Swift},
+ legend pos=north west,
+ legend cell align=left]
+\addplot[blue,mark=*, mark options={fill=white}] table {re-python2.data};
+\addplot[cyan,mark=*, mark options={fill=white}] table {re-java.data};
+\addplot[red,mark=*, mark options={fill=white}] table {re-js.data};
+\addplot[magenta,mark=*, mark options={fill=white}] table {re-swift.data};
+\end{axis}
+\end{tikzpicture}
+\end{center}
+
+Regex: \bl{$(a^*)^* \cdot b$}
+
+Strings of the form \bl{$\underbrace{\,a\ldots a\,}_{n}$}
+
+\end{frame}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{frame}[c]
+\frametitle{Same Example in Java 9+}
+
+\begin{center}
+\begin{tikzpicture}
+ \begin{axis}[
+ xlabel={$n$},
+ x label style={at={(1.09,-0.15)}},
+ ylabel={time in secs},
+ scaled x ticks=false,
+ enlargelimits=false,
+ xtick distance=10000,
+ xmax=44000,
+ ytick={0,10,...,30},
+ ymax=35,
+ axis lines=left,
+ width=9cm,
+ height=5cm,
+ legend entries={Java \liningnums{9}+},
+ legend pos=north west,
+ legend cell align=left]
+\addplot[blue,mark=square*,mark options={fill=white}] table {re-java9.data};
+\end{axis}
+\end{tikzpicture}
+\end{center}
+
+Regex: \bl{$(a^*)^* \cdot b$}
+
+Strings of the form \bl{$\underbrace{\,a\ldots a\,}_{n}$}
+
+\end{frame}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{frame}[c]
+\begin{mybox3}{}
+ Are there any (common) languages that have a built-in regex
+ implementation matching the set of functions of a formal 'simple'
+ regular expression, as opposed to an 'extended' regular expression
+ implemented in most regex-supporting languages?
+\end{mybox3}
+\end{frame}
+
+\begin{frame}[c]
+\begin{mybox3}{Passing Mark}
+ I believe the assessment is 70\% coursework (broken into 10\% weekly
+ stuff, 15\% mid term exam and 45\% CW in any programming language)
+ and 30\% January exam. However, I would like to know if we just need
+ 40\% overall to pass the module or pass the each component
+ individually?
+\end{mybox3}
+
+\hfill$\Rightarrow$ 40\% overall
+\end{frame}
+
+\begin{frame}[c]
+\begin{mybox3}{Regexes}
+ Can we determine all the possible regular expressions matching a
+ certain string? If we take into account all the possible ways to
+ combine the operations: \bl{$\ZERO$}, \bl{$\ONE$},
+ \bl{$r_1 + r_2$}, \bl{$r_1 \cdot r_2$}, \bl{$r^*$}?
+\end{mybox3}
+\end{frame}
+
+\begin{frame}[c]
+\begin{mybox3}{\bl{$L$} + Equivalence}
+ When we explain why two regular expressions are not equivalent, what
+ method is better for us, using mathematics formulas or making an
+ example?
+\end{mybox3}
+\begin{mybox3}{}
+ Meaning of Regex and Operations
+\end{mybox3}
+\end{frame}
+
+\begin{frame}[c]
+\begin{mybox3}{\bl{$L$}}
+ Can the function L be applied to anything other than regular
+ expressions? For example would L(L(c)) return anything?
+\end{mybox3}
+
+\hfill $\Rightarrow$ No
+\end{frame}
+
+\begin{frame}[c]
+\begin{mybox3}{\bl{$(a?)\{n\} \cdot a\{n\}$}}
+ In the evil regexes section, is there any reason why in the regex
+ \texttt{[a?]\{n\}[a]\{n\}} the square brackets are used? It is defined as a
+ single character from the square brackets, however there is just one
+ character, so it seems like it is not necessary. Maybe it is just
+ necessary for the first part, because ? is a token instead of a
+ character and we need to refer to a? as a ``unit''? Could regular
+ brackets be used instead? Is there any difference apart from the
+ fact that it would create a group? Also, are the regexes
+ \texttt{[a?]\{n\}} and
+ \texttt{a\{0,3\}} equivalent?
+\end{mybox3}
+\end{frame}
+
+\begin{frame}[c]
+\begin{mybox3}{Python + Parser Combinators (CW3)}\small
+ Hi Christian,
+
+ I don’t see a problem: you certainly have higher order functions and
+ it is easy to implement algebraic data types using classes. As far
+ as I can see that’s all you need. You don’t get the static types but
+ that should be obvious. Basically if you can do it in LISP you can
+ do it in Python. The only problem could be stack overflows due to a
+ lack of tail recursion optimisation. On the other hand you can
+ simulate laziness using generators.
+
+ Cheers,
+ Thorsten
+\end{mybox3}
+
+Trees \url{https://youtu.be/7tCNu4CnjVc}
+
+Laziness \url{https://youtu.be/5jwV3zxXc8E}
+
+\end{frame}
+
+\begin{frame}[c]
+\begin{mybox3}{}
+ What suggestions do you have for us to get the most out of this
+ module, especially in the online format? I.e. form discussion
+ groups, will you have office hours?
+\end{mybox3}
+
+\small
+\hfill $\Rightarrow$\mbox{} Discussion Forum on KEATS
+
+\hfill online tutorial sessions
+
+\hfill ???
+
+\hfill PL-groups for ``exotic'' langs
+\end{frame}
+
+\begin{frame}[c]
+ \small
+\begin{mybox3}{}
+Where do most students struggle with this module? What will the format
+of the exam be? What is the most efficient way of studying for the
+exam? There are plenty of resources available on KEATS, but is there
+anything else you'd recommend us to study? Although (just by skimming
+the headings) the module seems to be a combination of practical and
+theoretical matters, exactly in what field would the syllabus be
+applied? Besides these questions and the ones other students asked, is
+there anything else we should know? Thank you!
+\end{mybox3}
+\end{frame}
+
+
+\begin{frame}[c]
+\end{frame}
+
+\begin{frame}[c]
+\end{frame}
+
+\begin{frame}[c]
+\end{frame}
+
+\begin{frame}[c]
+\end{frame}
+
+\begin{frame}[c]
+\end{frame}
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document}