2
0
Fork 0
mirror of https://github.com/MartinThoma/LaTeX-examples.git synced 2025-04-26 06:48:04 +02:00
LaTeX-examples/presentations/Programmieren-Tutorium/Tutorium-13/tutorium-13.tex
2013-11-05 19:39:03 +01:00

159 lines
5.6 KiB
TeX

\documentclass[usepdftitle=false,hyperref={pdfpagelabels=false}]{beamer}
\usepackage{../templates/myStyle}
\begin{document}
\title{\titleText}
\subtitle{Five-in-A-Row, Multithreading}
\author{\tutor}
\date{\today}
\subject{Programmieren}
\frame{\titlepage}
\frame{
\frametitle{Inhaltsverzeichnis}
\setcounter{tocdepth}{1}
\tableofcontents
\setcounter{tocdepth}{2}
}
%\AtBeginSection[]{
% \InsertToC[sections={\thesection}] % shows only subsubsections of one subsection
%}
\section{Einleitung}
\subsection{Quiz}
\begin{frame}{Quiz}
\begin{minipage}[b]{0.45\linewidth}
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{QuizMain.java}
\end{minipage}
\hspace{0.5cm}
\begin{minipage}[b]{0.45\linewidth}
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{QuizSum.java}
\vspace{3.5cm}
\end{minipage}
\end{frame}
\begin{frame}{Quiz: Race-Condition}
\begin{itemize}[<+->]
\item \myCode{bigSum++;} ist nicht atomar:
\item[] 3 Operationen: Wert holen, Wert erhöhen, Wert schreiben
\item[$\Rightarrow$] Ergebnis ist zufällig
\item Alles im Bereich $[BIG\_NR, 50 \cdot BIG\_NR]$ ist möglich:
\begin{enumerate}
\item Thread 1 holt sich den Wert von \texttt{bigSum}
\item Thread 2 - 50 laufen durch
\item Thread 1 erhöht den zuvor geholten Wert um 1
\item Thread 1 überschreibt \texttt{bigSum} mit 2
\item Thread 1 läuft durch
\end{enumerate}
\item Sind kleinere Werte möglich?
\end{itemize}
\end{frame}
\begin{frame}{Quiz: Race-Condition}
Sind kleinere Werte als \texttt{BIG\_NR} für \texttt{bigSum} möglich?
\begin{enumerate}[<+->]
\item[] Ja:
\item Thread 1 holt sich den Wert von \texttt{bigSum}
\item Thread 2 holt sich den Wert von \texttt{bigSum}
\item Thread 3 - 50 laufen durch
\item Thread 2 läuft bis 1 vorm Ende durch
\item Thread 1 erhöht Wert im Register von 0 auf 1 und schreibt 1
\item Thread 2 hohlt sich die 1 aus \texttt{bigSum}
\item Thread 1 läuft durch
\item Thread 2 erhöht Wert im Register von 1 auf 2 und schreibt 2
\item[$\Rightarrow$] Alle Werte in $[2, 50 \cdot BIG\_NR]$ sind möglich!
\item[] Wie löst man das Problem?
\end{enumerate}
\end{frame}
\begin{frame}{Quiz}
Wie löst man das Problem:?
Mit
\href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html}{AtomicLong}
aus
\href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html}{java.util.concurrent}
\end{frame}
\begin{frame}{Quiz}
\begin{minipage}[b]{0.45\linewidth}
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{AnswerMain.java}
\end{minipage}
\hspace{0.5cm}
\begin{minipage}[b]{0.45\linewidth}
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{AnswerSum.java}
\vspace{3.5cm}
\end{minipage}
\end{frame}
\section{Abschlussaufgaben}
\subsection{Abschlussaufgaben}
\begin{frame}{Abschlussaufgaben}
\begin{itemize}
\item Herangehensweise
\begin{itemize}
\item Genau lesen
\item Frühzeitig lösen, viel Testen (Am besten schon heute!)
\item Bei Unklarheiten frühzeitig fragen!
\end{itemize}
\item Ausgabe
\begin{itemize}
\item Genau die erwartete Ausgabe liefern
\item An \myCode{toString()} denken
\end{itemize}
\item Trennung von Logik und Shell
\begin{itemize}
\item Siehe \href{https://github.com/MartinThoma/prog-ws1213/tree/master/Blatt-05.5}{Lösung zur Aufgabe 5.5}
\end{itemize}
\item Code
\begin{itemize}
\item \myCode{equals()}, \myCode{compareTo()} nutzen wenn sinnvoll
\item Exceptions einbauen, sollte der Nutzer aber nie sehen!
\item Gute JavaDoc!
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{Abschlussaufgaben}
Bepunktung:
\begin{itemize}
\item Punkte für Funktionalität
\item Punkte für Programmier-Stil
\item Nicht unbedingt gleich gewichtet
\end{itemize}
\end{frame}
% http://www.tutorialspoint.com/java/java_multithreading.htm
%TODO David Kulicke - Nr. 13
\section{Spiele}
\subsection{Spiele}
\begin{frame}{Spiele}
Anleitung für Snake, Tetris, Sokuban, Breakout \dots ist \href{http://zetcode.com/tutorials/javagamestutorial/}{hier}.
\end{frame}
\section{Multithreading}
\subsection{Multithreading}
\begin{frame}{Multithreading}
\begin{itemize}
\item \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html}{Runnable}
\item \href{http://www.vogella.com/articles/JavaConcurrency/article.html}{Java Concurrency (Multithreading) - Tutorial}
\item \href{http://www.tutorialspoint.com/java/java_multithreading.htm}{Java - Multithreading}
\end{itemize}
\end{frame}
\section{Abspann}
\subsection{Kommende Tutorien}
\begin{frame}{Kommende Tutorien}
\begin{itemize}
\item[1.] 28.01.2013: Abschlussprüfunsvorbereitung
\item[0.] 04.02.2013: Abschlussprüfunsvorbereitung
\item[-] 10.02.2013: Ende der Vorlesungszeit des WS 2012/2013 (\href{http://www.kit.edu/studieren/2873.php}{Quelle})
\end{itemize}
\end{frame}
\framedgraphic{Vielen Dank für eure Aufmerksamkeit!}{../images/Teach-yourself-C++-in-21-days.png}
\end{document}