📚 The CoCalc Library - books, templates and other resources
cocalc-examples / martinthoma-latex-examples / presentations / Programmieren-Tutorium / Tutorium-01 / tutorium-01.tex
132939 viewsLicense: OTHER
\documentclass[usepdftitle=false,hyperref={pdfpagelabels=false}]{beamer}12% use KIT-Theme3% see http://sdqweb.ipd.kit.edu/wiki/Dokumentvorlagen4%\usetheme{Frankfurt} % see http://deic.uab.es/~iblanes/beamer_gallery/index_by_theme.html as fallback5\InputIfFileExists{../templates/beamerthemekit.sty}{\usepackage{../templates/beamerthemekit}}{\usetheme{Frankfurt}}6\usefonttheme{professionalfonts}78\usepackage{hyperref}9\usepackage{lmodern}10\usepackage{listings}11\usepackage{wrapfig} % see http://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions12\usepackage[utf8]{inputenc} % this is needed for german umlauts13\usepackage[ngerman]{babel} % this is needed for german umlauts14\usepackage[T1]{fontenc} % this is needed for correct output of umlauts in pdf15\usepackage{verbatim}16\usepackage{relsize}17\usepackage{subfigure}18\usepackage{algorithm,algpseudocode}19\usepackage{minted} % needed for the inclusion of source code20\usepackage{tikz}21\usetikzlibrary{shapes,snakes,calc,patterns}22\usepackage{xcolor}23\usepackage{menukeys}24\usepackage{braket}25\usepackage{ulem}26\usepackage{../templates/myStyle}2728\newcommand\tutor{Martin Thoma}29\newcommand\tutNR{10}30\newcommand\titleText{Programmieren-Tutorium Nr. \tutNR{}}31\institute{Fakultät für Informatik}3233\hypersetup{pdftitle={\titleText}}34\beamertemplatenavigationsymbolsempty3536\newcommand\InsertToC[1][]{37\begin{frame}{Outline}38\tableofcontents[subsectionstyle=show/show/show, subsubsectionstyle=show/show/show, #1]39\end{frame}40}4142\begin{document}43\title{\titleText}44\subtitle{Einführung in Java, Eclipse}45\author{\tutor}46\date{\today}47\subject{Programmieren}4849\frame{\titlepage}5051\frame{52\frametitle{Inhaltsverzeichnis}53\setcounter{tocdepth}{1}54\tableofcontents55\setcounter{tocdepth}{2}56}5758%\AtBeginSection[]{59% \InsertToC[sections={\thesection}] % shows only subsubsections of one subsection60%}6162\section{Allgemeines}63\subsection{Formalien}64\begin{frame}{Formalien}65\begin{itemize}66\item Die Folien werden online gestellt $ \Rightarrow $67\textbf{Mitschreiben nicht nötig}68\item $\rightarrow$ \href{http://martin-thoma.com/programmieren-tutorium}{martin-thoma.com/programmieren-tutorium}69\item Fragen immer sofort stellen – und traut euch!\\70Wenn nicht hier, wo dann?71\end{itemize}72\end{frame}7374\subsection{Vorstellung}75\begin{frame}76\frametitle{Das bin ich}77\begin{itemize}78\item Martin Thoma (\href{mailto:info@martin-thoma.de}{info@martin-thoma.de}) $\rightarrow$ \href{http://www.martin-thoma.de/about.htm}{CV}79\item 22 Jahre alt80\item komme aus Augsburg81\item 3. Semester, Informatik82\item Programmieren83\begin{itemize}84\item \textbf{2005}: Angefangen mit PHP (\& HTML, CSS, JavaScript, (My)SQL)85\item \textbf{2009}: Liebe zu Python entdeckt \\86(\href{http://martin-thoma.com/challenge-websites/}{HackIts und Challenges} auf ProjectEuler, Brightshadows)87\item \textbf{Selten}: C, C++ (z.B. für ein größeres Forschungsprojekt)88\item \textbf{2011}: Java am KIT gelernt89\item BwInf, Online-Projekte wie z.B. \href{http://world-of-dungeons.net/}{world-of-dungeons}90\end{itemize}91\end{itemize}92\textbf{Und wer seid ihr?}93\end{frame}9495\subsection{Websites}96\begin{frame}97\frametitle{Websites und Links}98\begin{itemize}99\item \href{http://martin-thoma.com/programmieren-tutorium}{martin-thoma.com/programmieren-tutorium}:\\100Alle Links, Folien, Hinweise und viele weitere Inhalte101\item \href{https://praktomat.info.uni-karlsruhe.de/}{praktomat.info.uni-karlsruhe.de}:\\102Forum; Abgabe der Übungsaufgaben; Klausur103\item \href{https://webinscribe.ira.uka.de/}{webinscribe.de}: Anmeldung für das Tutorium104\item \href{http://verialg.iti.kit.edu/english/583.php}{tinyurl.com/prog2012}: Website von Prof. Dr. Sinz105\item \href{http://docs.oracle.com/javase/7/docs/}{docs.oracle.com}: Manual $\rightarrow$ \href{http://docs.oracle.com/javase/7/docs/api/}{API}106\item \href{http://stackoverflow.com/}{stackoverflow.com}: Weitergehende Fragen107\end{itemize}108\end{frame}109110\subsection{Tutorium, Übung, Vorlesung}111\begin{frame}112\frametitle{Tutorium, Übung, Vorlesung}113\begin{tikzpicture}[%114auto,115example/.style={116rectangle,117draw=blue,118thick,119fill=blue!20,120text width=4.5em,121align=center,122rounded corners,123minimum height=2em124},125longName/.style={126text width=12em,127align=center,128minimum height=2em129},130algebraicName/.style={131text width=7em,132align=center,133minimum height=2em134},135explanation/.style={136text width=10em,137align=left,138minimum height=3em139}140]141\pgfdeclarepatternformonly{north east lines wide}%142{\pgfqpoint{-1pt}{-1pt}}%143{\pgfqpoint{10pt}{10pt}}%144{\pgfqpoint{9pt}{9pt}}%145{146\pgfsetlinewidth{3pt}147\pgfpathmoveto{\pgfqpoint{0pt}{0pt}}148\pgfpathlineto{\pgfqpoint{9.1pt}{9.1pt}}149\pgfusepath{stroke}150}151152153% Big background154\draw[fill=lime!20,lime!20, rounded corners] (-1.8, 0.60) rectangle (10,-5);155156\draw[fill=purple!20,purple!20, rounded corners] (0.55, -3.1) rectangle (3.5,-3.9);157\draw[fill=purple!20,purple!20, rounded corners] (4.55, -3.1) rectangle (7.5,-3.9);158159\draw[fill=blue!20,blue!20, rounded corners] (-1.45,-1.4) rectangle (1.5,-0.6);160\draw[fill=blue!20,blue!20, rounded corners] (2.55,-1.4) rectangle (5.5,-0.6);161\draw[fill=blue!20,blue!20, rounded corners] (6.55,-1.4) rectangle (9.5,-0.6);162163\draw (2, 0) node[longName] (A) {Modul: Programmieren}164(6, 0) node[explanation] (X) {165\begin{minipage}{0.9\textwidth}166\tiny167\begin{itemize}168\item 5 ECTS169\end{itemize}170\end{minipage}171}172(0,-1) node[algebraicName] (B) {Tutorium}173(4,-1) node[algebraicName] (C) {Übung}174(8,-1) node[algebraicName] (D) {Vorlesung}175(0,-2) node[algebraicName] (E) {Student}176(4,-2) node[algebraicName] (F) {Mitarbeiter}177(8,-2) node[algebraicName] (G) {Dozent}178(2,-3.5) node[algebraicName, purple] (H) {Übungsschein}179(1.8,-4.35) node[explanation] (X) {180\begin{minipage}{\textwidth}181\tiny182\begin{itemize} \itemsep-0.2em183\item Muss bestanden werden184\item Keine Note185\item keine Bonuspunkte186\end{itemize}187\end{minipage}188}189(6,-3.5) node[algebraicName, purple] (I) {Klausur}190(5.8,-4.3) node[explanation] (X) {191\begin{minipage}{\textwidth}192\tiny193\begin{itemize} \itemsep-0.2em194\item Muss bestanden werden195\item Abschlussnote ergibt Modulnote196\end{itemize}197\end{minipage}198};199200\draw[blue, thick, rounded corners] ($(B.north west)$) rectangle ($(B.south east)$);201\draw[blue, thick, rounded corners] ($(C.north west)$) rectangle ($(C.south east)$);202\draw[blue, thick, rounded corners] ($(D.north west)$) rectangle ($(D.south east)$);203204\draw[purple, thick, rounded corners] ($(H.north west)$) rectangle ($(H.south east)$);205\draw[purple, thick, rounded corners] ($(I.north west)$) rectangle ($(I.south east)$);206207\draw[lime, thick, rounded corners] ($(B.north west)+(-0.1,0.1)$) rectangle ($(E.south east)+(0.1,-0.1)$);208\draw[lime, thick, rounded corners] ($(C.north west)+(-0.1,0.1)$) rectangle ($(F.south east)+(0.1,-0.1)$);209\draw[lime, thick, rounded corners] ($(D.north west)+(-0.1,0.1)$) rectangle ($(G.south east)+(0.1,-0.1)$);210\end{tikzpicture}211\end{frame}212213\subsection{Was ist der Job eines Tutors?}214\begin{frame}215\frametitle{Was ist der Job eines Tutors?}216\begin{itemize}217\item Fragen zum Stoff beantworten218\begin{itemize}219\item Gerne auch \emph{etwas} darüber hinaus220\end{itemize}221\item Fragen zur Vorlesung beantworten222\begin{itemize}223\item z.B. Klausurmodalitäten224\end{itemize}225\item Übungsblätter korrigieren226\end{itemize}227\end{frame}228229\subsection{Was ist nicht der Job eines Tutors?}230\begin{frame}231\frametitle{Was ist \underline{nicht} der Job eines Tutors?}232\begin{itemize}233\item Vorlesung wiederholen234\item Bespaßung im Tutorium235\item Jeden durch die Klausur bringen236\item \dots oder die Korrektur der Klausur237\end{itemize}238\end{frame}239240\subsection{Für was ist der Student verantwortlich?}241\begin{frame}242\frametitle{Für was ist der Student verantwortlich?}243Der Student ist für sich selbst verantwortlich, also \dots244\begin{itemize}245\item \dots die rechtzeitige Übungsblattabgabe246\item \dots die Vor- und Nachbereitung der Vorlesung247\item \dots das Lernen der Inhalte248\item \dots die rechtzeitige Klausuranmeldung249\item \dots das Finden relevanter Informationen250\end{itemize}251\end{frame}252253\subsection{Warnung!}254255\subsection{Erinnerungen}256\begin{frame}{Erinnerungen}257258\begin{block}{Praktomat-Anmeldung}259\url{https://praktomat.info.uni-karlsruhe.de/praktomat\_2012\_WS/}260\begin{itemize}261\item Deadline: \textbf{Freitag, 02. November 2012}262\end{itemize}263\end{block}264265\begin{block}{Disclaimer: \href{http://tinyurl.com/prog-disclaimer}{tinyurl.com/prog-disclaimer}}266\begin{itemize}267\item PDF im VAB268\item Abgabe in den Briefkasten der Vorlesung Programmieren\\(Gebäude 50.34, Keller)269\item Deadline: \textbf{Freitag, 02. November 2012}270\end{itemize}271\end{block}272273\begin{block}{Übungsschein \href{studium.kit.edu}{http://studium.kit.edu}}274\begin{itemize}275\item Anmeldung für den Übungsschein276\item Deadline: \textbf{Sonntag, 31. März 2013}277\end{itemize}278\end{block}279\end{frame}280281\subsection{Nicht abschreiben!}282\begin{frame}{Nicht abschreiben!}283\begin{alertblock}{Warnung!}284\begin{itemize}285\item \emph{\textbf{Nicht abschreiben!}}286\item Schon bei \textbf{einmaligem} Nachweis verwirkt man die Chance auf den \textbf{Übungsschein}287\item Ohne Schein darf man die \textbf{Abschlussaufgabe} nicht schreiben288\item Nur mit beidem besteht man das \textbf{Modul Programmieren}289\item Programmieren ist Teil der \textbf{Orientierungsprüfung}290\item Ohne bestandene Orientierungsprüfung bis zum 3. Semester \textbf{fällt man aus dem Studium} und darf bundesweit das Studienfach nicht mehr belegen!291\end{itemize}292\end{alertblock}293\end{frame}294295\subsection{Praktomat}296\begin{frame}{Praktomat}297\begin{itemize}298\item Ihr könnt beliebig häufig Lösungen hochladen!299\item Ladet Teillösungen hoch300\begin{itemize}301\item[$\Rightarrow$] Sicherungskopie für euch302\item[$\Rightarrow$] Eine vergessene Deadline ist nicht ganz so ärgerlich303\end{itemize}304\item Rechnet nicht mit der Erreichbarkeit des Praktomaten305kurz vor der Deadline306\item \textbf{Disclaimer nicht vergessen!}307\end{itemize}308\end{frame}309310\section{Was ist Programmieren?}311\subsection{Algorithmen}312\begin{frame}313\frametitle{Algorithmen}314\begin{block}{Allgemeines}315\begin{itemize}316\item Modul des 2. Semesters317\item 6 ECTS318\end{itemize}319\end{block}320\begin{block}{Themen}321\begin{itemize}322\item Sortieralgorithmen323\item Suchalgorithmen324\item Speicherplatz- und Laufzeitkomplexität325\item Weiterführende Datenstrukturen (Stack, Heap, B-Bäume, \dots)326\end{itemize}327\end{block}328\end{frame}329330\subsection{SWT - Softwaretechnik}331\begin{frame}332\frametitle{SWT - Softwaretechnik}333oder auch "`Programmieren im Großen"'334\begin{block}{Allgemeines}335\begin{itemize}336\item Modul des 2. Semesters337\item 6 ECTS338\end{itemize}339\end{block}340\begin{block}{Themen}341\begin{itemize}342\item Wie gehe ich die Entwicklung von Software an?343\item Wie strukturiere ich Programme?344\item Wie entwickle ich \emph{leicht} wartbare Software?345\item Entwurfsmuster346\item Wasserfallmodell, Scrum, V-Modell347\end{itemize}348\end{block}349\end{frame}350351\subsection{Programmieren}352\begin{frame}353\frametitle{Programmieren}354oder auch "`Programmieren im Kleinen"'355\begin{block}{Allgemeines}356\begin{itemize}357\item Modul des 1. Semesters358\item 5 ECTS359\item Teil der Orientierungsprüfung360\end{itemize}361\end{block}362\begin{block}{Themen}363\begin{itemize}364\item \textbf{Allgemeines}: Was ist eine if-Abfrage, was eine for- bzw. while-Schleife?365\item Wie mache ich meinen Code wartbar?366\item \textbf{Objektorientierung}: Was ist eine Klasse, was ein Objekt?367\item Modellierung von Problemen368\item \textbf{Elementare Datenstrukturen und -typen}: int, String, Array369\end{itemize}370\end{block}371\end{frame}372373\section{Java}374\subsection{Begriffe}375\begin{frame}{Begriffe}376\begin{block}{JDK}377Das Java Development Kit (JDK) ist eines der von378Java-Entwicklern meistgenutzten Java-SDKs.\\379$[\dots]$ Nun wird eine angepasste freie Version als ihr nunmehr380offizieller Nachfolger unter dem Namen OpenJDK weitergeführt.381\end{block}382383\begin{block}{JRE}384Die Java-Laufzeitumgebung (englisch: Java Runtime Environment, kurz JRE)385ist die Laufzeitumgebung der Java-Technik. Mit ihr werden386Programme (Java-Anwendungen) weitgehend unabhängig vom387darunter liegenden Betriebssystem ausgeführt.388\end{block}389390Quelle: Wikipedia391\end{frame}392393\subsection{Workflow}394\framedgraphic{Workflow}{schaubild-java-workflow.png}395396\section{System einrichten}397\subsection{Linux}398\begin{frame}{Java unter Linux}399\begin{itemize}400\item Ubuntu: \href{http://wiki.ubuntuusers.de/Java/Installation}{UbuntuUsers.de}\\401\myCode{\$ sudo apt-get install openjdk-7-jre openjdk-7-jdk}402\item Arch: \href{https://wiki.archlinux.de/title/Java}{archlinux.de}\\403\myCode{\$ pacman -S jre7-openjdk}404\end{itemize}405\end{frame}406407\subsection{Windows}408\begin{frame}{Windows}409\begin{itemize}410\item \href{http://java.com/de/download/index.jsp}{java.com/download}411\end{itemize}412\includegraphics[width=100mm]{java-download.png}413\end{frame}414415\begin{frame}{Windows - 32 oder 64 Bit Version?}416\menu{Start > Systemsteuerung} oder \keys{Windows + Pause}417\includegraphics{windows-systemsteuerung.png}418\end{frame}419420\begin{frame}{Windows - cmd}421\begin{itemize}422\item Ausführen: \myCode{cmd}423\item \myCode{> javac -version}424\item \myCode{javac 1.7.0\_09} $\rightarrow$ hat geklappt425\item Sonst: javac zu PATH hinzufügen426\begin{enumerate}427\item Wo liegt "`javac.exe"'?\\(z.B. \directory{C:/Program Files/Java/jdk1.7.0\_09/bin/javac.exe})428\item Systemsteuerung (\keys{Windows + Pause})\\429\menu{Systemsteuerung > Erweiterte Systemeinstellungen > Umgebungsvariablen}430\item Zu "`Path"' durch \myCode{;} getrennt hinzufügen431\end{enumerate}432\end{itemize}433\end{frame}434435\subsection{Java testen}436\begin{frame}{Java testen}437\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=HelloWorld.java]{java}{HelloWorld.java}438\inputminted[linenos=false]{console}{Bash.sh}439\end{frame}440441\subsection{Eclipse: Allgemeines}442\begin{frame}{Eclipse: Allgemeines}443\begin{itemize}444\item Sehr komfortable Java-IDE:445\begin{itemize}446\item Syntaxhighlighting und Code-Vervollständigung447\item Automatisch korrektes Einrücken mit \keys{\ctrl + \shift + F})448\end{itemize}449\item Sehr groß (RAM \& HDD)450\item Startet Langsam451\item Müsst ihr in SWT verwenden452\item Download: \href{http://www.eclipse.org/}{eclipse.org}453\end{itemize}454\end{frame}455456\subsection{Eclipse: Einrichten}457\begin{frame}{Eclipse: Einrichten}458\begin{itemize}459\item \menu{Window > Open Perspective > Java}460\item \menu{Window > Show Toolbar}461\item \menu{Window > Preferences > General > Editors > Text Editors}462\begin{itemize}463\item Show line numbers464\item Print margin column: 120465\end{itemize}466\end{itemize}467\end{frame}468469\framedgraphic{Zwischenstand}{eclipse-einrichten.png}470471\subsection{Eclipse: Erstes Projekt}472\begin{frame}{Eclipse: Erstes Projekt}473\begin{itemize}474\item \menu{File > New > Java}: Projektname: HelloWorld475\item \menu{File > New > Class}: Name: HelloWorld476\end{itemize}477\end{frame}478479\framedgraphic{Zwischenstand}{eclipse-projekt.png}480481\section{Wiederholung}482\subsection{Begriffe}483\begin{frame}{Begriffe}484Welche Begriffe habt ihr in der Vorlesung kennen gelernt?485\end{frame}486487\begin{frame}{Begriffe}488\begin{itemize}489\item \textbf{Objekt}: Exemplar eines bestimmten Datentyps490\item \textbf{Klasse}: abstraktes Modell für eine Reihe von ähnlichen Objekten491\item \textbf{Variable}: Behälter für Werte492\item \textbf{Konstante}: Wert, der sich während der Laufzeit des Programms nicht ändern kann493\item \textbf{Attribut}: Eigenschaft eines konkreten Objekts494\item \textbf{Funktion}: Programmkonstrukt mit Parametern und Rückgabewert495\item \textbf{Methode}: Funktion in einem Objekt496\item \textbf{Datentyp}: Zusammenfassung von Objektmengen mit den darauf definierten Operationen497\item int, Integer498\item String499\item \dots500\end{itemize}501\end{frame}502503\subsection{Beispiel für eine Klasse}504\begin{frame}{Beispiel für eine Klasse}505\begin{block}{Schal}506\begin{itemize}507\item hat eine Farbe508\item besteht aus einem Stoff509\item hat eine Länge510\item kann warm halten511\end{itemize}512\end{block}513\end{frame}514515\subsection{Java: Primitive Datentypen}516\begin{frame}{Java: Primitive Datentypen}517\begin{tabular}{l|l|l}518Datentyp & Werte & Länge\\519\hline520\hline521boolean & \texttt{true} oder \texttt{false} & 1 Byte\\522char & 16-Bit Unicode Zeichen & 2 Byte\\523\hline524byte & $-2^7 =-128 \dots 2^7-1$ & 1 Byte\\525short & $-2^{15}=-32\,768 \dots 2^{15}-1$ & 2 Byte\\526int & $-2^{31}\approx-2 \cdot 10^9 \dots 2^{31}-1$ & 4 Byte\\527long & $-2^{63}=-9\cdot 10^{18} \dots 2^{63}-1$ & 8 Byte\\528\hline529float & single-precision 32-bit IEEE 754 floating point & 4 Byte\\530double & double-precision 64-bit IEEE 754 floating point & 8 Byte\\531\end{tabular}532\\533Quelle: \href{http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html}{docs.oracle.com}534\end{frame}535536\subsection{Java: Enum}537\begin{frame}{Java: Enum}538\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=Day.java]{java}{Day.java}539Quelle: \href{http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html}{docs.oracle.com}540\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=SomeClass.java]{java}{SomeClass.java}541\end{frame}542543\subsection{Java: String}544\begin{frame}{Java: String}545\begin{itemize}546\item \textbf{Klasse} für Zeichenketten547\item UTF-16548\item max. $2^{31}-1 = 2\,147\,483\,647$ Zeichen (siehe \href{http://stackoverflow.com/a/816152/562769}{stackoverflow.com})549\begin{itemize}550\item King James Bible: $4\,397\,206$ Zeichen\\551(\href{http://printkjv.ifbweb.com/\#downloads}{Quelle} \& \myCode{wc -w file.txt})552\end{itemize}553\item weitere Informationen: \href{http://docs.oracle.com/javase/7/docs/api/java/lang/String.html}{docs.oracle.com}554\end{itemize}555\end{frame}556557\subsection{Java: Naming Conventions}558\begin{frame}{Java: Naming Conventions}559\begin{itemize}560\item \myCode{camelCase} für Variablen und Attribute561\item \myCode{BIG\_AND\_FAT} für Konstanten562\item Typische Variablen- und Methodennamen:563\begin{itemize}564\item isSomething: Meist für \texttt{boolean}565\item hasSomething: Meist Methode mit Rückgabewert \texttt{boolean}566\item getValue: Getter, Wrapper für Attribut "`value"'567\item setValue: Setter, Wrapper für Attribut "`value"'568\end{itemize}569\item Genauer: \href{http://www.oracle.com/technetwork/java/codeconventions-150003.pdf}{orcacle.com}, ab S. 15570\end{itemize}571\end{frame}572573\subsection{Aufgabenstellung}574\begin{frame}{Aufgabenstellung}575\begin{alertblock}{Bitte achtet auf folgendes:}576\begin{itemize}577\item Einsatz sinnvoller Datentypen578\item aussagekräftige Attributnamen579\item Einrückungen, Namenskonventionen, Dokumentation580\end{itemize}581\end{alertblock}582\end{frame}583584\section{Abspann}585\subsection{Hinweise zum Übungsblatt}586\begin{frame}{Hinweise zum Übungsblatt}587\begin{itemize}588\item Aufgaben online im \textbf{Praktomaten} oder im \textbf{VAB}589\item Abgabetermin: Montag, der \textbf{5. November 2012, 13 Uhr}590\item Abgabe online im Praktomaten\\591Uni-Netz oder VPN erforderlich!592\item min. \textbf{50 \% der Gesamtpunktzahl} zum Bestehen des Scheins\\593(ca. 60 Punkte)594\item \textbf{keine Bibliotheken} verwenden, die im Übungsblatt nicht explizit zugelassen wurden595\item keine ungewollte Funktionalität einbauen – es gilt die Devise:\\ \textbf{Einfache Fragen erfordern einfache Antworten!}596\end{itemize}597\end{frame}598599\subsection{Dropbox Space Race}600\begin{frame}{Dropbox Space Race}601\begin{itemize}602\item Hat nichts mit Programmieren zu tun603\item Bei \href{https://www.dropbox.com/spacerace}{dropbox.com} anmelden604\item KIT ist auf Platz 3, RWTH Aachen und TU München vor uns605\end{itemize}606\end{frame}607608\subsection{Comic}609\framedgraphic{Vielen Dank für eure Aufmerksamkeit!}{../images/Teach-yourself-C++-in-21-days.png}610611\end{document}612613614