Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lägger till en modul om enklare kryptografi #5

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions krypto/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
ltxobj/
notes.pdf
krypto.py
krypto.tex
krypto
slides.pdf

36 changes: 36 additions & 0 deletions krypto/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
.PHONY: all
all: slides.pdf notes.pdf

LATEXFLAGS+= -shell-escape

SRC+= krypto.tex
SRC+= abstract.tex
SRC+= preamble.tex
SRC+= rovarspraket.py

notes.pdf: notes.tex ${SRC}
slides.pdf: slides.tex ${SRC}

krypto.tex: krypto.nw


.PHONY:
all: krypto

krypto.py: krypto.nw
krypto rovarspraket.py: krypto.py
cp $^ $@
chmod +x $@


.PHONY: clean
clean:
${RM} krypto krypto.py krypto.tex
${RM} notes.pdf slides.pdf
${RM} __pycache__



INCLUDE_MAKEFILES=../makefiles
include ${INCLUDE_MAKEFILES}/tex.mk
include ${INCLUDE_MAKEFILES}/noweb.mk
23 changes: 23 additions & 0 deletions krypto/abstract.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
% What's the problem?
% Why is it a problem? Research gap left by other approaches?
% Why is it important? Why care?
% What's the approach? How to solve the problem?
% What's the findings? How was it evaluated, what are the results, limitations,
% what remains to be done?

I den här modulen skriver vi ett program som låter användaren kryptera och
avkryptera meddelanden.
Syftet är att illustrera enkla algoritmiska problem och alla grundläggande
programmeringstekniska konstruktioner; såsom funktioner och kontrollflöden.
Syftet är också att inspirera till reflektion om säkerhet och kryptografi.

\emph{Lärandemål:}
Efter att ha genomfört modulen ska den lärande kunna:
\begin{itemize}
\item läsa grundläggande programkod med enkla konstruktioner
och, mestadels korrekt, förklara vad koden gör;
\item konstruera enkla algoritmer (inte syntaktiskt korrekt programkod) på en
detaljnivå lämpad för programmering, exempelvis att man måste läsa bokstav
för bokstav och göra någonting för varje.
\item förklara vad kryptering och avkryptering är och varför det är viktigt.
\end{itemize}
88 changes: 88 additions & 0 deletions krypto/krypto.nw
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
\title{%
Krypto
}
\author{%
Daniel Bosk\thanks{%
Detta verk är licensierat under Creative Commons Erkännande-DelaLika 4.0
Internationell Licens.
}
}
\institute{%
KTH EECS
}

@

\mode*

\begin{frame}
\maketitle
\end{frame}

\begin{abstract}
\input{abstract.tex}
\end{abstract}
\clearpage

\begin{frame}
\tableofcontents
\end{frame}

\clearpage

\section{Översikt}

Vi vill skriva ett program ([[<<krypto.py>>]]) som \dots


\subsection{Programstruktur}

Vi vill ha följande struktur på koden.
\begin{frame}[fragile]
<<krypto.py>>=
"""
<<kort beskrivning av denna modul>>
"""

<<konstanter>>
<<hjälpfunktioner>>

def huvudfunktion():
"""
<<kort beskrivning av huvudprogrammet>>
"""
<<huvudprogrammet>>
@
\end{frame}

För att kunna använda denna som en modul vill vi även ha med följande:
<<krypto.py>>=
if __name__ == '__main__':
huvudfunktion()
@

Fördelen med denna struktur är att vi kan återanvända hjälpfunktionerna i andra
program.
Funktionen \texttt{huvudfunktion} kommer då bara att köras om vi kör programmet
som huvudprogram, dvs kör [[python3 krypto.py]].
Den kommer inte att köras om vi importerar programmet i ett annat program, dvs
\mintinline{python}{import krypto}.


\subsection{Modulen och huvudprogrammet}

Låt oss nu beskriva modulen och huvudprogrammet, så att vi kan se vad som
skiljer.
\begin{frame}[fragile]
<<kort beskrivning av denna modul>>=
...
<<kort beskrivning av huvudprogrammet>>=
...
@
\end{frame}


\begin{frame}[allowframebreaks]
\printbibliography
\end{frame}

29 changes: 29 additions & 0 deletions krypto/notes.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
\documentclass{article}

\usepackage[hyphens]{url}
\usepackage[hidelinks]{hyperref}

\input{preamble.tex}

\usepackage[noamsthm,notheorems]{beamerarticle}
\setjobnamebeamerversion{slides}

%\usepackage{authblk}
%\let\institute\affil

\declaretheorem[numbered=unless unique,style=example,
name=Exempel,refname=exempel,Refname=Exempel]{example}
%\declaretheorem[style=definition,numbered=unless unique,
% name=Example,refname={example,examples}]{example}
\declaretheorem[numbered=unless unique,style=remark,
name=Anmärkning,refname=anmärkning,Refname=Anmärkning]{remark}
\declaretheorem[numbered=unless unique,style=exercise,
name=Övning,refname=övning,Refname=Övning]{exercise}
\declaretheorem[numbered=unless unique,style=exercise,
name=Fråga,refname=fråga,Refname=Fråga]{question}
\declaretheorem[numbered=no,style=solution,
name=Lösning,refname=lösning,Refname=Lösning]{solution}

\begin{document}
\input{rövarspråket.tex}
\end{document}
50 changes: 50 additions & 0 deletions krypto/preamble.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[british,swedish]{babel}

\usepackage{noweb}
% Needed to relax penalty for breaking code chunks across pages, otherwise
% there might be a lot of space following a code chunk.
\def\nwendcode{\endtrivlist \endgroup}
\let\nwdocspar=\smallbreak

\usepackage{booktabs}

\usepackage[natbib,style=alphabetic,maxbibnames=99]{biblatex}
\addbibresource{bibliography.bib}

\usepackage[all]{foreign}
\renewcommand{\foreignfullfont}{}
\renewcommand{\foreignabbrfont}{}

\usepackage{newclude}
\usepackage{import}

\usepackage[strict]{csquotes}
\usepackage[single]{acro}

\usepackage{subcaption}

\usepackage[noend]{algpseudocode}
\usepackage{xparse}

\let\email\texttt

\usepackage[outputdir=ltxobj]{minted}
\setminted{autogobble,linenos}

\usepackage{pythontex}
\setpythontexoutputdir{.}
\setpythontexworkingdir{..}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage[unq]{unique}
\DeclareMathOperator{\powerset}{\mathcal{P}}

\usepackage[binary-units]{siunitx}

\usepackage[capitalize]{cleveref}
112 changes: 112 additions & 0 deletions krypto/slides.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
\documentclass[ignoreframetext]{beamer}
\input{preamble.tex}

\usepackage{translator}
\newtranslation[to=swedish]{Example}{Exempel}

\usetheme{Berlin}
\setbeamertemplate{footline}%{miniframes theme}
{%
\begin{beamercolorbox}[colsep=1.5pt]{upper separation line foot}
\end{beamercolorbox}
\begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,%
leftskip=.3cm,rightskip=.3cm plus1fil]{author in head/foot}%
\leavevmode{\usebeamerfont{author in head/foot}\insertshortauthor}%
\hfill%
{\usebeamerfont{institute in head/foot}\usebeamercolor[fg]{institute in head/foot}\insertshortinstitute}%
\end{beamercolorbox}%
\begin{beamercolorbox}[ht=2.5ex,dp=1.125ex,%
leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}%
{\usebeamerfont{title in head/foot}\insertshorttitle} \hfill \insertframenumber%
\end{beamercolorbox}%
\begin{beamercolorbox}[colsep=1.5pt]{lower separation line foot}
\end{beamercolorbox}
}
\setbeamercovered{transparent}
\setbeamertemplate{bibliography item}[text]

\AtBeginSection[]{%
\begin{frame}<beamer>
\tableofcontents[currentsection,
subsectionstyle=show/show/hide]
\end{frame}
}

\AtBeginSubsection[]{%
\begin{frame}<beamer>
\tableofcontents[currentsection,
subsectionstyle=show/shaded/hide]
\end{frame}
}

\ProvideDocumentEnvironment{assumption}{o}{%
\IfValueTF{#1}{%
\begin{block}{Assumption: #1}
}{%
\begin{block}{Assumption}
}
}{%
\end{block}
}

\ProvideDocumentEnvironment{protocol}{o}{%
\IfValueTF{#1}{%
\begin{block}{Protocol: #1}
}{%
\begin{block}{Protocol}
}
}{%
\end{block}
}

\ProvideDocumentEnvironment{remark}{o}{%
\IfValueTF{#1}{%
\begin{alertblock}{Anmärkning: #1}
}{%
\begin{alertblock}{Anmärkning}
}
}{%
\end{alertblock}
}

\ProvideDocumentEnvironment{idea}{o}{%
\IfValueTF{#1}{%
\begin{block}{Idea: #1}
}{%
\begin{block}{Idea}
}
}{%
\end{block}
}

\ProvideDocumentEnvironment{question}{o}{%
\setbeamercolor{block body}{bg=orange!15,fg=black}
\setbeamercolor{block title}{bg=orange,fg=white}
\setbeamercolor{local structure}{fg=orange}
\IfValueTF{#1}{%
\begin{block}{Fråga: #1}
}{%
\begin{block}{Fråga}
}
}{%
\end{block}
}

\ProvideDocumentEnvironment{exercise}{o}{%
\setbeamercolor{block body}{bg=yellow!10,fg=black}
\setbeamercolor{block title}{bg=yellow,fg=black}
\setbeamercolor{local structure}{fg=yellow}
\IfValueTF{#1}{%
\begin{block}{Övning: #1}
}{%
\begin{block}{Övning}
}
}{%
\end{block}
}

\begin{document}
\mode<all>
\input{rövarspråket.tex}
\mode*
\end{document}