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-01/tutorium-01.tex
2013-11-05 19:39:03 +01:00

612 lines
22 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\documentclass[usepdftitle=false,hyperref={pdfpagelabels=false}]{beamer}
% use KIT-Theme
% see http://sdqweb.ipd.kit.edu/wiki/Dokumentvorlagen
%\usetheme{Frankfurt} % see http://deic.uab.es/~iblanes/beamer_gallery/index_by_theme.html as fallback
\InputIfFileExists{../templates/beamerthemekit.sty}{\usepackage{../templates/beamerthemekit}}{\usetheme{Frankfurt}}
\usefonttheme{professionalfonts}
\usepackage{hyperref}
\usepackage{lmodern}
\usepackage{listings}
\usepackage{wrapfig} % see http://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions
\usepackage[utf8]{inputenc} % this is needed for german umlauts
\usepackage[ngerman]{babel} % this is needed for german umlauts
\usepackage[T1]{fontenc} % this is needed for correct output of umlauts in pdf
\usepackage{verbatim}
\usepackage{relsize}
\usepackage{subfigure}
\usepackage{algorithm,algpseudocode}
\usepackage{minted} % needed for the inclusion of source code
\usepackage{tikz}
\usetikzlibrary{shapes,snakes,calc,patterns}
\usepackage{xcolor}
\usepackage{menukeys}
\usepackage{braket}
\usepackage{ulem}
\usepackage{../templates/myStyle}
\newcommand\tutor{Martin Thoma}
\newcommand\tutNR{10}
\newcommand\titleText{Programmieren-Tutorium Nr. \tutNR{}}
\institute{Fakultät für Informatik}
\hypersetup{pdftitle={\titleText}}
\beamertemplatenavigationsymbolsempty
\newcommand\InsertToC[1][]{
\begin{frame}{Outline}
\tableofcontents[subsectionstyle=show/show/show, subsubsectionstyle=show/show/show, #1]
\end{frame}
}
\begin{document}
\title{\titleText}
\subtitle{Einführung in Java, Eclipse}
\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{Allgemeines}
\subsection{Formalien}
\begin{frame}{Formalien}
\begin{itemize}
\item Die Folien werden online gestellt $ \Rightarrow $
\textbf{Mitschreiben nicht nötig}
\item $\rightarrow$ \href{http://martin-thoma.com/programmieren-tutorium}{martin-thoma.com/programmieren-tutorium}
\item Fragen immer sofort stellen und traut euch!\\
Wenn nicht hier, wo dann?
\end{itemize}
\end{frame}
\subsection{Vorstellung}
\begin{frame}
\frametitle{Das bin ich}
\begin{itemize}
\item Martin Thoma (\href{mailto:info@martin-thoma.de}{info@martin-thoma.de}) $\rightarrow$ \href{http://www.martin-thoma.de/about.htm}{CV}
\item 22 Jahre alt
\item komme aus Augsburg
\item 3. Semester, Informatik
\item Programmieren
\begin{itemize}
\item \textbf{2005}: Angefangen mit PHP (\& HTML, CSS, JavaScript, (My)SQL)
\item \textbf{2009}: Liebe zu Python entdeckt \\
(\href{http://martin-thoma.com/challenge-websites/}{HackIts und Challenges} auf ProjectEuler, Brightshadows)
\item \textbf{Selten}: C, C++ (z.B. für ein größeres Forschungsprojekt)
\item \textbf{2011}: Java am KIT gelernt
\item BwInf, Online-Projekte wie z.B. \href{http://world-of-dungeons.net/}{world-of-dungeons}
\end{itemize}
\end{itemize}
\textbf{Und wer seid ihr?}
\end{frame}
\subsection{Websites}
\begin{frame}
\frametitle{Websites und Links}
\begin{itemize}
\item \href{http://martin-thoma.com/programmieren-tutorium}{martin-thoma.com/programmieren-tutorium}:\\
Alle Links, Folien, Hinweise und viele weitere Inhalte
\item \href{https://praktomat.info.uni-karlsruhe.de/}{praktomat.info.uni-karlsruhe.de}:\\
Forum; Abgabe der Übungsaufgaben; Klausur
\item \href{https://webinscribe.ira.uka.de/}{webinscribe.de}: Anmeldung für das Tutorium
\item \href{http://verialg.iti.kit.edu/english/583.php}{tinyurl.com/prog2012}: Website von Prof. Dr. Sinz
\item \href{http://docs.oracle.com/javase/7/docs/}{docs.oracle.com}: Manual $\rightarrow$ \href{http://docs.oracle.com/javase/7/docs/api/}{API}
\item \href{http://stackoverflow.com/}{stackoverflow.com}: Weitergehende Fragen
\end{itemize}
\end{frame}
\subsection{Tutorium, Übung, Vorlesung}
\begin{frame}
\frametitle{Tutorium, Übung, Vorlesung}
\begin{tikzpicture}[%
auto,
example/.style={
rectangle,
draw=blue,
thick,
fill=blue!20,
text width=4.5em,
align=center,
rounded corners,
minimum height=2em
},
longName/.style={
text width=12em,
align=center,
minimum height=2em
},
algebraicName/.style={
text width=7em,
align=center,
minimum height=2em
},
explanation/.style={
text width=10em,
align=left,
minimum height=3em
}
]
\pgfdeclarepatternformonly{north east lines wide}%
{\pgfqpoint{-1pt}{-1pt}}%
{\pgfqpoint{10pt}{10pt}}%
{\pgfqpoint{9pt}{9pt}}%
{
\pgfsetlinewidth{3pt}
\pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
\pgfpathlineto{\pgfqpoint{9.1pt}{9.1pt}}
\pgfusepath{stroke}
}
% Big background
\draw[fill=lime!20,lime!20, rounded corners] (-1.8, 0.60) rectangle (10,-5);
\draw[fill=purple!20,purple!20, rounded corners] (0.55, -3.1) rectangle (3.5,-3.9);
\draw[fill=purple!20,purple!20, rounded corners] (4.55, -3.1) rectangle (7.5,-3.9);
\draw[fill=blue!20,blue!20, rounded corners] (-1.45,-1.4) rectangle (1.5,-0.6);
\draw[fill=blue!20,blue!20, rounded corners] (2.55,-1.4) rectangle (5.5,-0.6);
\draw[fill=blue!20,blue!20, rounded corners] (6.55,-1.4) rectangle (9.5,-0.6);
\draw (2, 0) node[longName] (A) {Modul: Programmieren}
(6, 0) node[explanation] (X) {
\begin{minipage}{0.9\textwidth}
\tiny
\begin{itemize}
\item 5 ECTS
\end{itemize}
\end{minipage}
}
(0,-1) node[algebraicName] (B) {Tutorium}
(4,-1) node[algebraicName] (C) {Übung}
(8,-1) node[algebraicName] (D) {Vorlesung}
(0,-2) node[algebraicName] (E) {Student}
(4,-2) node[algebraicName] (F) {Mitarbeiter}
(8,-2) node[algebraicName] (G) {Dozent}
(2,-3.5) node[algebraicName, purple] (H) {Übungsschein}
(1.8,-4.35) node[explanation] (X) {
\begin{minipage}{\textwidth}
\tiny
\begin{itemize} \itemsep-0.2em
\item Muss bestanden werden
\item Keine Note
\item keine Bonuspunkte
\end{itemize}
\end{minipage}
}
(6,-3.5) node[algebraicName, purple] (I) {Klausur}
(5.8,-4.3) node[explanation] (X) {
\begin{minipage}{\textwidth}
\tiny
\begin{itemize} \itemsep-0.2em
\item Muss bestanden werden
\item Abschlussnote ergibt Modulnote
\end{itemize}
\end{minipage}
};
\draw[blue, thick, rounded corners] ($(B.north west)$) rectangle ($(B.south east)$);
\draw[blue, thick, rounded corners] ($(C.north west)$) rectangle ($(C.south east)$);
\draw[blue, thick, rounded corners] ($(D.north west)$) rectangle ($(D.south east)$);
\draw[purple, thick, rounded corners] ($(H.north west)$) rectangle ($(H.south east)$);
\draw[purple, thick, rounded corners] ($(I.north west)$) rectangle ($(I.south east)$);
\draw[lime, thick, rounded corners] ($(B.north west)+(-0.1,0.1)$) rectangle ($(E.south east)+(0.1,-0.1)$);
\draw[lime, thick, rounded corners] ($(C.north west)+(-0.1,0.1)$) rectangle ($(F.south east)+(0.1,-0.1)$);
\draw[lime, thick, rounded corners] ($(D.north west)+(-0.1,0.1)$) rectangle ($(G.south east)+(0.1,-0.1)$);
\end{tikzpicture}
\end{frame}
\subsection{Was ist der Job eines Tutors?}
\begin{frame}
\frametitle{Was ist der Job eines Tutors?}
\begin{itemize}
\item Fragen zum Stoff beantworten
\begin{itemize}
\item Gerne auch \emph{etwas} darüber hinaus
\end{itemize}
\item Fragen zur Vorlesung beantworten
\begin{itemize}
\item z.B. Klausurmodalitäten
\end{itemize}
\item Übungsblätter korrigieren
\end{itemize}
\end{frame}
\subsection{Was ist nicht der Job eines Tutors?}
\begin{frame}
\frametitle{Was ist \underline{nicht} der Job eines Tutors?}
\begin{itemize}
\item Vorlesung wiederholen
\item Bespaßung im Tutorium
\item Jeden durch die Klausur bringen
\item \dots oder die Korrektur der Klausur
\end{itemize}
\end{frame}
\subsection{Für was ist der Student verantwortlich?}
\begin{frame}
\frametitle{Für was ist der Student verantwortlich?}
Der Student ist für sich selbst verantwortlich, also \dots
\begin{itemize}
\item \dots die rechtzeitige Übungsblattabgabe
\item \dots die Vor- und Nachbereitung der Vorlesung
\item \dots das Lernen der Inhalte
\item \dots die rechtzeitige Klausuranmeldung
\item \dots das Finden relevanter Informationen
\end{itemize}
\end{frame}
\subsection{Warnung!}
\subsection{Erinnerungen}
\begin{frame}{Erinnerungen}
\begin{block}{Praktomat-Anmeldung}
\url{https://praktomat.info.uni-karlsruhe.de/praktomat\_2012\_WS/}
\begin{itemize}
\item Deadline: \textbf{Freitag, 02. November 2012}
\end{itemize}
\end{block}
\begin{block}{Disclaimer: \href{http://tinyurl.com/prog-disclaimer}{tinyurl.com/prog-disclaimer}}
\begin{itemize}
\item PDF im VAB
\item Abgabe in den Briefkasten der Vorlesung Programmieren\\(Gebäude 50.34, Keller)
\item Deadline: \textbf{Freitag, 02. November 2012}
\end{itemize}
\end{block}
\begin{block}{Übungsschein \href{studium.kit.edu}{http://studium.kit.edu}}
\begin{itemize}
\item Anmeldung für den Übungsschein
\item Deadline: \textbf{Sonntag, 31. März 2013}
\end{itemize}
\end{block}
\end{frame}
\subsection{Nicht abschreiben!}
\begin{frame}{Nicht abschreiben!}
\begin{alertblock}{Warnung!}
\begin{itemize}
\item \emph{\textbf{Nicht abschreiben!}}
\item Schon bei \textbf{einmaligem} Nachweis verwirkt man die Chance auf den \textbf{Übungsschein}
\item Ohne Schein darf man die \textbf{Abschlussaufgabe} nicht schreiben
\item Nur mit beidem besteht man das \textbf{Modul Programmieren}
\item Programmieren ist Teil der \textbf{Orientierungsprüfung}
\item Ohne bestandene Orientierungsprüfung bis zum 3. Semester \textbf{fällt man aus dem Studium} und darf bundesweit das Studienfach nicht mehr belegen!
\end{itemize}
\end{alertblock}
\end{frame}
\subsection{Praktomat}
\begin{frame}{Praktomat}
\begin{itemize}
\item Ihr könnt beliebig häufig Lösungen hochladen!
\item Ladet Teillösungen hoch
\begin{itemize}
\item[$\Rightarrow$] Sicherungskopie für euch
\item[$\Rightarrow$] Eine vergessene Deadline ist nicht ganz so ärgerlich
\end{itemize}
\item Rechnet nicht mit der Erreichbarkeit des Praktomaten
kurz vor der Deadline
\item \textbf{Disclaimer nicht vergessen!}
\end{itemize}
\end{frame}
\section{Was ist Programmieren?}
\subsection{Algorithmen}
\begin{frame}
\frametitle{Algorithmen}
\begin{block}{Allgemeines}
\begin{itemize}
\item Modul des 2. Semesters
\item 6 ECTS
\end{itemize}
\end{block}
\begin{block}{Themen}
\begin{itemize}
\item Sortieralgorithmen
\item Suchalgorithmen
\item Speicherplatz- und Laufzeitkomplexität
\item Weiterführende Datenstrukturen (Stack, Heap, B-Bäume, \dots)
\end{itemize}
\end{block}
\end{frame}
\subsection{SWT - Softwaretechnik}
\begin{frame}
\frametitle{SWT - Softwaretechnik}
oder auch "`Programmieren im Großen"'
\begin{block}{Allgemeines}
\begin{itemize}
\item Modul des 2. Semesters
\item 6 ECTS
\end{itemize}
\end{block}
\begin{block}{Themen}
\begin{itemize}
\item Wie gehe ich die Entwicklung von Software an?
\item Wie strukturiere ich Programme?
\item Wie entwickle ich \emph{leicht} wartbare Software?
\item Entwurfsmuster
\item Wasserfallmodell, Scrum, V-Modell
\end{itemize}
\end{block}
\end{frame}
\subsection{Programmieren}
\begin{frame}
\frametitle{Programmieren}
oder auch "`Programmieren im Kleinen"'
\begin{block}{Allgemeines}
\begin{itemize}
\item Modul des 1. Semesters
\item 5 ECTS
\item Teil der Orientierungsprüfung
\end{itemize}
\end{block}
\begin{block}{Themen}
\begin{itemize}
\item \textbf{Allgemeines}: Was ist eine if-Abfrage, was eine for- bzw. while-Schleife?
\item Wie mache ich meinen Code wartbar?
\item \textbf{Objektorientierung}: Was ist eine Klasse, was ein Objekt?
\item Modellierung von Problemen
\item \textbf{Elementare Datenstrukturen und -typen}: int, String, Array
\end{itemize}
\end{block}
\end{frame}
\section{Java}
\subsection{Begriffe}
\begin{frame}{Begriffe}
\begin{block}{JDK}
Das Java Development Kit (JDK) ist eines der von
Java-Entwicklern meistgenutzten Java-SDKs.\\
$[\dots]$ Nun wird eine angepasste freie Version als ihr nunmehr
offizieller Nachfolger unter dem Namen OpenJDK weitergeführt.
\end{block}
\begin{block}{JRE}
Die Java-Laufzeitumgebung (englisch: Java Runtime Environment, kurz JRE)
ist die Laufzeitumgebung der Java-Technik. Mit ihr werden
Programme (Java-Anwendungen) weitgehend unabhängig vom
darunter liegenden Betriebssystem ausgeführt.
\end{block}
Quelle: Wikipedia
\end{frame}
\subsection{Workflow}
\framedgraphic{Workflow}{schaubild-java-workflow.png}
\section{System einrichten}
\subsection{Linux}
\begin{frame}{Java unter Linux}
\begin{itemize}
\item Ubuntu: \href{http://wiki.ubuntuusers.de/Java/Installation}{UbuntuUsers.de}\\
\myCode{\$ sudo apt-get install openjdk-7-jre openjdk-7-jdk}
\item Arch: \href{https://wiki.archlinux.de/title/Java}{archlinux.de}\\
\myCode{\$ pacman -S jre7-openjdk}
\end{itemize}
\end{frame}
\subsection{Windows}
\begin{frame}{Windows}
\begin{itemize}
\item \href{http://java.com/de/download/index.jsp}{java.com/download}
\end{itemize}
\includegraphics[width=100mm]{java-download.png}
\end{frame}
\begin{frame}{Windows - 32 oder 64 Bit Version?}
\menu{Start > Systemsteuerung} oder \keys{Windows + Pause}
\includegraphics{windows-systemsteuerung.png}
\end{frame}
\begin{frame}{Windows - cmd}
\begin{itemize}
\item Ausführen: \myCode{cmd}
\item \myCode{> javac -version}
\item \myCode{javac 1.7.0\_09} $\rightarrow$ hat geklappt
\item Sonst: javac zu PATH hinzufügen
\begin{enumerate}
\item Wo liegt "`javac.exe"'?\\(z.B. \directory{C:/Program Files/Java/jdk1.7.0\_09/bin/javac.exe})
\item Systemsteuerung (\keys{Windows + Pause})\\
\menu{Systemsteuerung > Erweiterte Systemeinstellungen > Umgebungsvariablen}
\item Zu "`Path"' durch \myCode{;} getrennt hinzufügen
\end{enumerate}
\end{itemize}
\end{frame}
\subsection{Java testen}
\begin{frame}{Java testen}
\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=HelloWorld.java]{java}{HelloWorld.java}
\inputminted[linenos=false]{console}{Bash.sh}
\end{frame}
\subsection{Eclipse: Allgemeines}
\begin{frame}{Eclipse: Allgemeines}
\begin{itemize}
\item Sehr komfortable Java-IDE:
\begin{itemize}
\item Syntaxhighlighting und Code-Vervollständigung
\item Automatisch korrektes Einrücken mit \keys{\ctrl + \shift + F})
\end{itemize}
\item Sehr groß (RAM \& HDD)
\item Startet Langsam
\item Müsst ihr in SWT verwenden
\item Download: \href{http://www.eclipse.org/}{eclipse.org}
\end{itemize}
\end{frame}
\subsection{Eclipse: Einrichten}
\begin{frame}{Eclipse: Einrichten}
\begin{itemize}
\item \menu{Window > Open Perspective > Java}
\item \menu{Window > Show Toolbar}
\item \menu{Window > Preferences > General > Editors > Text Editors}
\begin{itemize}
\item Show line numbers
\item Print margin column: 120
\end{itemize}
\end{itemize}
\end{frame}
\framedgraphic{Zwischenstand}{eclipse-einrichten.png}
\subsection{Eclipse: Erstes Projekt}
\begin{frame}{Eclipse: Erstes Projekt}
\begin{itemize}
\item \menu{File > New > Java}: Projektname: HelloWorld
\item \menu{File > New > Class}: Name: HelloWorld
\end{itemize}
\end{frame}
\framedgraphic{Zwischenstand}{eclipse-projekt.png}
\section{Wiederholung}
\subsection{Begriffe}
\begin{frame}{Begriffe}
Welche Begriffe habt ihr in der Vorlesung kennen gelernt?
\end{frame}
\begin{frame}{Begriffe}
\begin{itemize}
\item \textbf{Objekt}: Exemplar eines bestimmten Datentyps
\item \textbf{Klasse}: abstraktes Modell für eine Reihe von ähnlichen Objekten
\item \textbf{Variable}: Behälter für Werte
\item \textbf{Konstante}: Wert, der sich während der Laufzeit des Programms nicht ändern kann
\item \textbf{Attribut}: Eigenschaft eines konkreten Objekts
\item \textbf{Funktion}: Programmkonstrukt mit Parametern und Rückgabewert
\item \textbf{Methode}: Funktion in einem Objekt
\item \textbf{Datentyp}: Zusammenfassung von Objektmengen mit den darauf definierten Operationen
\item int, Integer
\item String
\item \dots
\end{itemize}
\end{frame}
\subsection{Beispiel für eine Klasse}
\begin{frame}{Beispiel für eine Klasse}
\begin{block}{Schal}
\begin{itemize}
\item hat eine Farbe
\item besteht aus einem Stoff
\item hat eine Länge
\item kann warm halten
\end{itemize}
\end{block}
\end{frame}
\subsection{Java: Primitive Datentypen}
\begin{frame}{Java: Primitive Datentypen}
\begin{tabular}{l|l|l}
Datentyp & Werte & Länge\\
\hline
\hline
boolean & \texttt{true} oder \texttt{false} & 1 Byte\\
char & 16-Bit Unicode Zeichen & 2 Byte\\
\hline
byte & $-2^7 =-128 \dots 2^7-1$ & 1 Byte\\
short & $-2^{15}=-32\,768 \dots 2^{15}-1$ & 2 Byte\\
int & $-2^{31}\approx-2 \cdot 10^9 \dots 2^{31}-1$ & 4 Byte\\
long & $-2^{63}=-9\cdot 10^{18} \dots 2^{63}-1$ & 8 Byte\\
\hline
float & single-precision 32-bit IEEE 754 floating point & 4 Byte\\
double & double-precision 64-bit IEEE 754 floating point & 8 Byte\\
\end{tabular}
\\
Quelle: \href{http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html}{docs.oracle.com}
\end{frame}
\subsection{Java: Enum}
\begin{frame}{Java: Enum}
\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Day.java]{java}{Day.java}
Quelle: \href{http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html}{docs.oracle.com}
\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=SomeClass.java]{java}{SomeClass.java}
\end{frame}
\subsection{Java: String}
\begin{frame}{Java: String}
\begin{itemize}
\item \textbf{Klasse} für Zeichenketten
\item UTF-16
\item max. $2^{31}-1 = 2\,147\,483\,647$ Zeichen (siehe \href{http://stackoverflow.com/a/816152/562769}{stackoverflow.com})
\begin{itemize}
\item King James Bible: $4\,397\,206$ Zeichen\\
(\href{http://printkjv.ifbweb.com/\#downloads}{Quelle} \& \myCode{wc -w file.txt})
\end{itemize}
\item weitere Informationen: \href{http://docs.oracle.com/javase/7/docs/api/java/lang/String.html}{docs.oracle.com}
\end{itemize}
\end{frame}
\subsection{Java: Naming Conventions}
\begin{frame}{Java: Naming Conventions}
\begin{itemize}
\item \myCode{camelCase} für Variablen und Attribute
\item \myCode{BIG\_AND\_FAT} für Konstanten
\item Typische Variablen- und Methodennamen:
\begin{itemize}
\item isSomething: Meist für \texttt{boolean}
\item hasSomething: Meist Methode mit Rückgabewert \texttt{boolean}
\item getValue: Getter, Wrapper für Attribut "`value"'
\item setValue: Setter, Wrapper für Attribut "`value"'
\end{itemize}
\item Genauer: \href{http://www.oracle.com/technetwork/java/codeconventions-150003.pdf}{orcacle.com}, ab S. 15
\end{itemize}
\end{frame}
\subsection{Aufgabenstellung}
\begin{frame}{Aufgabenstellung}
\begin{alertblock}{Bitte achtet auf folgendes:}
\begin{itemize}
\item Einsatz sinnvoller Datentypen
\item aussagekräftige Attributnamen
\item Einrückungen, Namenskonventionen, Dokumentation
\end{itemize}
\end{alertblock}
\end{frame}
\section{Abspann}
\subsection{Hinweise zum Übungsblatt}
\begin{frame}{Hinweise zum Übungsblatt}
\begin{itemize}
\item Aufgaben online im \textbf{Praktomaten} oder im \textbf{VAB}
\item Abgabetermin: Montag, der \textbf{5. November 2012, 13 Uhr}
\item Abgabe online im Praktomaten\\
Uni-Netz oder VPN erforderlich!
\item min. \textbf{50 \% der Gesamtpunktzahl} zum Bestehen des Scheins\\
(ca. 60 Punkte)
\item \textbf{keine Bibliotheken} verwenden, die im Übungsblatt nicht explizit zugelassen wurden
\item keine ungewollte Funktionalität einbauen es gilt die Devise:\\ \textbf{Einfache Fragen erfordern einfache Antworten!}
\end{itemize}
\end{frame}
\subsection{Dropbox Space Race}
\begin{frame}{Dropbox Space Race}
\begin{itemize}
\item Hat nichts mit Programmieren zu tun
\item Bei \href{https://www.dropbox.com/spacerace}{dropbox.com} anmelden
\item KIT ist auf Platz 3, RWTH Aachen und TU München vor uns
\end{itemize}
\end{frame}
\subsection{Comic}
\framedgraphic{Vielen Dank für eure Aufmerksamkeit!}{../images/Teach-yourself-C++-in-21-days.png}
\end{document}