updated
authorChristian Urban <christian.urban@kcl.ac.uk>
Mon, 10 Nov 2025 11:04:33 +0000
changeset 493 f7c84bfa3cee
parent 492 17e6f46260bd
child 494 4e0f0309c2ca
updated
handouts/pep-ho.pdf
handouts/pep-ho.tex
styles/graphics.sty
styles/langs.sty
styles/mygraphs.sty
styles/slides-old.sty
styles/slides.sty
styles/style.sty
Binary file handouts/pep-ho.pdf has changed
--- a/handouts/pep-ho.tex	Fri Sep 12 10:36:07 2025 +0100
+++ b/handouts/pep-ho.tex	Mon Nov 10 11:04:33 2025 +0000
@@ -186,7 +186,7 @@
 \noindent\alert
 For PEP, make sure you are using the version 3(!) of Scala. This is
 the version I am going to use in the lectures and in the coursework. This
-can be any version of Scala 3.X where $X=\{4,5\}$. Also the minor
+can be any version of Scala 3.X where $X=\{4,5,6,7\}$. Also the minor
 number does not matter. Note that this will be the second year I am
 using this newer version of Scala -- some hiccups can still happen. Apologies
 in advance!\bigskip
@@ -214,7 +214,7 @@
 tricks for Scala programs to run as a native
 GraalVM~\hr{https://scala-cli.virtuslab.org/docs/cookbooks/native-images/}
 image.  Though be warned these backends are still rather beta or even
-alpha.
+alpha. But for the coursework we are going to use the ``vanilla'' Scala compiler.
 
 \subsection*{VS Code and Scala}
 
@@ -252,7 +252,7 @@
   action ``Run-Selected-Text-In-Active-Terminal'' in order to quickly
   evaluate small code snippets in the Scala REPL. I use Codium's internal
   terminal to run \texttt{scala} version 1.0.5 which
-  uses Scala 3.3.1.\label{vscode}}
+  uses Scala 3.7.3.\label{vscode}}
 \end{boxedminipage}
 \end{figure}
 
@@ -545,7 +545,7 @@
 
 \begin{lstlisting}[language={},numbers=none,basicstyle=\ttfamily\small]
 $ scala
-Welcome to Scala 3.5.1 (21.0.4, Java OpenJDK 64-Bit Server VM).
+Welcome to Scala 3.7.3 (21.0.8, Java OpenJDK 64-Bit Server VM).
 Type in expressions for evaluation. Or try :help.  
 
 scala>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/styles/graphics.sty	Mon Nov 10 11:04:33 2025 +0000
@@ -0,0 +1,21 @@
+\usepackage{tikz}
+\usepackage{pgf}
+\usetikzlibrary{positioning}
+\usetikzlibrary{calc}
+\usetikzlibrary{automata}
+\usetikzlibrary{arrows}
+\usetikzlibrary{backgrounds}
+\usetikzlibrary{fit}
+\usepackage{tikz-qtree}
+\usepackage{graphicx} 
+\usepackage{pgfplots}
+
+\pgfplotsset{compat=1.11}
+
+\newenvironment{bubble}[1][]{%
+\addtolength{\leftmargini}{4mm}%
+\begin{tikzpicture}[baseline=(current bounding box.north)]%
+\draw (0,0) node[inner sep=2mm,fill=cream,ultra thick,draw=red,rounded corners=2mm]% 
+\bgroup\begin{minipage}{#1}\raggedright{}}
+{\end{minipage}\egroup;%
+\end{tikzpicture}\bigskip}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/styles/langs.sty	Mon Nov 10 11:04:33 2025 +0000
@@ -0,0 +1,98 @@
+\usepackage{listings}
+\usepackage{etoolbox}
+\setmonofont[Scale=.95]{Consolas}
+\newfontfamily{\consolas}{Consolas}
+
+\makeatletter
+\let\old@lstKV@SwitchCases\lstKV@SwitchCases
+\def\lstKV@SwitchCases#1#2#3{}
+\makeatother
+\usepackage{lstlinebgrd}
+\makeatletter
+\let\lstKV@SwitchCases\old@lstKV@SwitchCases
+
+\lst@Key{numbers}{none}{%
+    \def\lst@PlaceNumber{\lst@linebgrd}%
+    \lstKV@SwitchCases{#1}%
+    {none:\\%
+     left:\def\lst@PlaceNumber{\llap{\normalfont
+                \lst@numberstyle{\thelstnumber}\kern\lst@numbersep}\lst@linebgrd}\\%
+     right:\def\lst@PlaceNumber{\rlap{\normalfont
+                \kern\linewidth \kern\lst@numbersep
+                \lst@numberstyle{\thelstnumber}}\lst@linebgrd}%
+    }{\PackageError{Listings}{Numbers #1 unknown}\@ehc}}
+\makeatother
+
+
+
+\definecolor{codered}{rgb}{0.6,0,0}            % for strings
+\definecolor{codegreen}{rgb}{0.25,0.5,0.35}    % comments
+\definecolor{codepurple}{rgb}{0.5,0,0.35}      % keywords
+\definecolor{codedocblue}{rgb}{0.25,0.35,0.75} % doc
+\definecolor{codeblue}{rgb}{0.25,0.35,0.75}    % types
+
+\BeforeBeginEnvironment{lstlisting}{\par\noindent\begin{minipage}{\linewidth}}
+\AfterEndEnvironment{lstlisting}{\end{minipage}\par}
+
+\lstdefinelanguage{Scala}{
+  morekeywords={abstract,case,catch,class,def,%
+    do,else,extends,false,final,finally,%
+    for,if,implicit,import,match,mixin,%
+    new,null,object,override,package,%
+    private,protected,requires,return,sealed,%
+    super,this,throw,trait,then,true,try,%
+    type,val,var,while,with,yield,write,read},%
+  otherkeywords={=>,<-,<\%,<:,>:,\#},%
+  sensitive=true,%
+  %directives={Int,Char,Rexp,String,Boolean,BigInt,Unit,List,Set},%
+  %moredelim=*[directive]:,%
+  morecomment=[l]{//},%
+  morecomment=[n]{/*}{*/},
+  morestring=[s]{"""}{"""},
+  morestring=[b]",
+  morestring=[b]',
+}[keywords,comments,strings]
+
+\lstdefinelanguage{While}{
+  morekeywords={if,then,else,while,do,true,false,write,upto,read,for,skip},
+  morecomment=[l]{//},
+  morecomment=[n]{/*}{*/},
+  morestring=[b]",
+  otherkeywords={=,!=,:=,<,>,\%;*,/},
+}[keywords,comments,strings]
+
+
+\newcommand{\code}[1]{{\lstinline{#1}}}
+\newcommand{\pcode}[1]{\mbox{\lstset{language={},keywordstyle=\color{black}}\lstinline!#1!}}
+\newcommand{\scode}[1]{\mbox{\lstset{language={},basicstyle=\ttfamily\color{codegreen}}\lstinline!#1!}}
+\makeatother
+
+%%\lstset{escapeinside={(*@}{@*)}}
+\lstset{escapeinside={/*@}{@*/}}
+
+%% stripy code
+\usepackage{lstlinebgrd}
+\definecolor{capri}{rgb}{0.0, 0.75, 1.0}
+
+
+\lstdefinestyle{mystyle}
+       {basicstyle=\ttfamily,
+	keywordstyle=\color{codepurple}\bfseries,
+	stringstyle=\color{codegreen},
+	commentstyle=\color{codegreen},
+	morecomment=[s][\color{codedocblue}]{/**}{*/},
+	numbers=none,
+	numberstyle=\tiny\color{black},
+	stepnumber=1,
+	numbersep=10pt,
+	tabsize=2,
+	showspaces=false,
+	showstringspaces=false,
+        xleftmargin=8mm,
+        emphstyle=\color{codeblue}\bfseries,
+        keepspaces,
+        linebackgroundcolor={\ifodd\value{lstnumber}\color{capri!3}\fi}
+}
+
+\lstset{language=Scala,
+        style=mystyle}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/styles/mygraphs.sty	Mon Nov 10 11:04:33 2025 +0000
@@ -0,0 +1,21 @@
+\usepackage{tikz}
+\usepackage{pgf}
+\usetikzlibrary{positioning}
+\usetikzlibrary{calc}
+\usetikzlibrary{automata}
+\usetikzlibrary{arrows}
+\usetikzlibrary{backgrounds}
+\usetikzlibrary{fit}
+\usepackage{tikz-qtree}
+\usepackage{graphicx} 
+\usepackage{pgfplots}
+
+\pgfplotsset{compat=1.11}
+
+\newenvironment{bubble}[1][]{%
+\addtolength{\leftmargini}{4mm}%
+\begin{tikzpicture}[baseline=(current bounding box.north)]%
+\draw (0,0) node[inner sep=2mm,fill=cream,ultra thick,draw=red,rounded corners=2mm]% 
+\bgroup\begin{minipage}{#1}\raggedright{}}
+{\end{minipage}\egroup;%
+\end{tikzpicture}\bigskip}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/styles/slides-old.sty	Mon Nov 10 11:04:33 2025 +0000
@@ -0,0 +1,88 @@
+\usepackage[absolute,overlay]{textpos}
+\usepackage{xcolor}
+\usepackage{fontspec}
+\usepackage[sc]{mathpazo}
+\usefonttheme{serif}
+\defaultfontfeatures{Ligatures=TeX}
+\defaultfontfeatures{Mapping=tex-text}
+\setromanfont{Hoefler Text}
+\setmonofont[Scale=.88]{Consolas}
+\newfontfamily{\consolas}{Consolas}
+
+\definecolor{darkblue}{rgb}{0,0,0.6}
+\hypersetup{colorlinks=true}
+\hypersetup{linkcolor=darkblue}
+\hypersetup{urlcolor=darkblue}
+
+\newcommand{\tttext}[1]{{\consolas{#1}}}
+
+\newcommand{\ZERO}{\mbox{\bf 0}}
+\newcommand{\ONE}{\mbox{\bf 1}}
+\newcommand{\Der}{\textit{Der}}
+\newcommand{\der}{\textit{der}}
+\newcommand{\Ders}{\textit{Ders}}
+\newcommand{\ders}{\textit{ders}}
+\newcommand{\dn}{\stackrel{\mbox{\scriptsize def}}{=}}%
+\newcommand{\slidecaption}{}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Frametitles
+
+\setbeamerfont{frametitle}{size={\LARGE}}
+\setbeamerfont{frametitle}{family={\fontspec{Hoefler Text Black}}}
+\setbeamercolor{frametitle}{fg=ProcessBlue,bg=white}
+
+\setbeamertemplate{frametitle}{%
+\vskip 2mm  % distance from the top margin
+\hskip -3mm % distance from left margin
+\vbox{%
+\begin{minipage}{1.05\textwidth}%
+\centering%
+\begin{tabular}{@{}c@{}}%
+\insertframetitle%
+\end{tabular}%
+\end{minipage}\vspace{-10pt}}%
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Foot
+%
+\setbeamertemplate{navigation symbols}{} 
+\usefoottemplate{%
+\vbox{%
+  \tinyline{%
+    \tiny\hfill\textcolor{gray!50}{\slidecaption{} --
+      p.~\insertframenumber/\inserttotalframenumber}}}%
+}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\beamertemplateballitem
+\setlength\leftmargini{2mm}
+\setlength\leftmarginii{0.6cm}
+\setlength\leftmarginiii{1.5cm}
+\setbeamertemplate{itemize/enumerate body end}{\vspace{-2mm}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% blocks
+%\definecolor{cream}{rgb}{1,1,.65}
+\definecolor{cream}{rgb}{1,1,.8}
+\setbeamerfont{block title}{size=\normalsize}
+\setbeamercolor{block title}{fg=black,bg=cream}
+\setbeamercolor{block body}{fg=black,bg=cream}
+
+\setbeamertemplate{blocks}[rounded][shadow=true]
+
+\setbeamercolor{boxcolor}{fg=black,bg=cream}
+
+\mode
+<all>
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/styles/slides.sty	Mon Nov 10 11:04:33 2025 +0000
@@ -0,0 +1,115 @@
+\usepackage[absolute,overlay]{textpos}
+\usepackage{xcolor}
+\usepackage[no-math]{fontspec}
+
+%%%%% CODE FONT
+%\setmonofont[Scale=.95]{Consolas}
+\setmonofont[Scale=.88]{Consolas}
+%\newfontfamily{\consolas}{Consolas}
+
+%%%%% MATHFONT
+\usepackage[sc]{mathpazo}
+%\usepackage{fourier}
+%\usepackage{mathspec}
+%\usepackage[varg]{txfonts}
+%\usepackage{mathpple}
+
+%%%%% MAIN TEXT FONT
+\setromanfont{Cronos Pro}
+%\setbeamerfont{normal text}{family={\fontspec{Cronos Pro}}}
+%\setbeamerfont{normal text}{family={\fontspec{Hoefler Text}}}
+%\setromanfont{Cronos Pro}
+%\setromanfont{Hoefler Text}
+\usefonttheme{serif}
+\defaultfontfeatures{Ligatures=TeX}
+\defaultfontfeatures{Mapping=tex-text}
+
+%% for recording slides
+\setbeamersize{text margin right=5cm} % <- like this
+
+%%%% Colours
+
+\definecolor{darkblue}{rgb}{0,0,0.6}
+\hypersetup{colorlinks=true}
+\hypersetup{linkcolor=darkblue}
+\hypersetup{urlcolor=darkblue}
+
+\hfuzz=320pt 
+
+
+\newcommand{\tttext}[1]{{\consolas{#1}}}
+
+\newcommand{\ZERO}{\mathit{\bf 0}}
+\newcommand{\ONE}{\mathit{\bf 1}}
+\newcommand{\Der}{\mathit{Der}}
+\newcommand{\der}{\mathit{der}}
+\newcommand{\Ders}{\mathit{Ders}}
+\newcommand{\ders}{\mathit{ders}}
+\newcommand{\dn}{\stackrel{\mbox{\scriptsize def}}{=}}%
+\newcommand{\slidecaption}{}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Frametitles
+
+\setbeamerfont{frametitle}{size={\LARGE}}
+%\setbeamerfont{frametitle}{family={\fontspec{Hoefler Text Black}}}
+\setbeamerfont{frametitle}{family={\fontspec{Cronos Pro Bold Caption}}}
+\setbeamercolor{frametitle}{fg=ProcessBlue,bg=white}
+
+\setbeamertemplate{frametitle}{%
+\vskip 2mm  % distance from the top margin
+\hskip -3mm % distance from left margin
+\vbox{%
+\begin{minipage}{1.05\textwidth}%
+\centering%
+%\begin{tabular}{@{}c@{}}%
+\insertframetitle%
+%\end{tabular}%
+\end{minipage}\vspace{-10pt}}%
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Foot
+%
+\setbeamertemplate{navigation symbols}{} 
+\usefoottemplate{%
+\vbox{%
+  \tinyline{%
+    \tiny\hfill\textcolor{gray!50}{\slidecaption{} --
+      p.~\insertframenumber/\inserttotalframenumber}}}%
+}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%\beamertemplateballitem
+\setbeamertemplate{itemize item}[ball]
+\setbeamertemplate{itemize subitem}[ball]
+\setbeamertemplate{itemize subsubitem}[ball]
+\setlength\leftmargini{2mm}
+\setlength\leftmarginii{0.6cm}
+\setlength\leftmarginiii{1.5cm}
+\setbeamertemplate{itemize/enumerate body end}{\vspace{-2mm}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% blocks
+%\definecolor{cream}{rgb}{1,1,.65}
+\definecolor{cream}{rgb}{1,1,.8}
+\setbeamerfont{block title}{size=\normalsize}
+\setbeamercolor{block title}{fg=black,bg=cream}
+\setbeamercolor{block body}{fg=black,bg=cream}
+
+\setbeamertemplate{blocks}[rounded][shadow=true]
+
+\setbeamercolor{boxcolor}{fg=black,bg=cream}
+
+\mode
+<all>
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/styles/style.sty	Mon Nov 10 11:04:33 2025 +0000
@@ -0,0 +1,61 @@
+\usepackage{xcolor}
+%%\usepackage{fontspec}
+\usepackage[sc]{mathpazo}
+\usepackage{fontspec}
+\setmainfont[Ligatures=TeX]{Palatino Linotype}
+\usepackage{amssymb}
+\usepackage{amsmath}
+\definecolor{darkblue}{rgb}{0,0,0.6}
+\usepackage[colorlinks=true,urlcolor=darkblue,linkcolor=darkblue]{hyperref}
+\usepackage{marginnote}
+\usepackage{fontawesome5}
+
+%% does not work after the last upgrade
+%%\usepackage{menukeys}
+
+%%% for regular expressions and values
+\newcommand{\ZERO}{\mbox{\bf 0}}
+\newcommand{\ONE}{\mbox{\bf 1}}
+\newcommand{\Left}{\textit{Left}}
+\newcommand{\Der}{\textit{Der}}
+\newcommand{\der}{\textit{der}}
+\newcommand{\Ders}{\textit{Ders}}
+\newcommand{\ders}{\textit{ders}}
+
+%%% for trees
+%% http://anorien.csc.warwick.ac.uk/mirrors/CTAN/graphics/pgf/contrib/forest/forest.pdf
+
+
+%%% url pointers
+\newcommand{\hv}[1]{\href{#1}{\faFilm}}
+\newcommand{\hr}[1]{\href{#1}{\faHandPointRight[regular]}}
+\newcommand{\here}[1]{\marginnote{\href{#1}{\faHandPointRight[regular]}}}
+\newcommand{\video}[1]{\marginnote{\href{#1}{\faFilm}}}
+\newcommand{\alert}{\reversemarginpar\marginpar{\mbox{}\hfill\textcolor{red}{\faExclamationTriangle}}}
+
+\newcommand{\dn}{\stackrel{\mbox{\scriptsize def}}{=}}
+\newcommand{\defn}[1]{\textit{\textbf{#1}}}
+\newcommand{\dq}[1]{\mbox{\tt{"}}#1\mbox{\tt{"}}}
+
+\definecolor{codegray}{gray}{0.9}
+
+\makeatletter
+\def\fnote{\gdef\@thefnmark{}\@footnotetext}
+\makeatother
+
+% CW deadlines
+\def\cwSIX{20 November}
+\def\cwSIXa{15 January}
+
+\def\cwSEVEN{27 November}
+\def\cwSEVENa{15 January}
+
+\def\cwEIGHT{4 December}
+\def\cwEIGHTa{15 January}
+
+\def\cwNINE{11 December}
+\def\cwNINEa{15 January}
+
+\def\cwTEN{15 January}
+\def\cwTENa{15 January}
+