-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathvorkurs.tex
172 lines (142 loc) · 7.4 KB
/
vorkurs.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
\documentclass{vorkurs}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xspace}
\usepackage[pass]{geometry}
\usepackage{tikz}
\usetikzlibrary{arrows,decorations.pathmorphing,decorations.footprints,fadings,calc,trees,mindmap,shadows,decorations.text,patterns,positioning,shapes,matrix,fit}
\usepackage{enumitem}
\usepackage{url}
\usepackage{pdfpages}
\usepackage{amssymb}
\usepackage[
pdftex,
bookmarks=true,
bookmarksnumbered=true,
bookmarksopen=true,
colorlinks=true,
filecolor=black,
linkcolor=red,
urlcolor=blue,
plainpages=false,
pdfpagelabels,
citecolor=black,
pdftitle={Programmiervorkurs der Fachschaft MathPhysInfo},
setpagesize=false,pdfauthor={Fachschaft MathPhysInfo}
]{hyperref}
\newcommand{\swname}[1]{\texttt{#1}\xspace}
\newcommand{\Cpp}{\swname{C++}}
\newcommand{\file}[1]{\texttt{#1}\xspace}
\newcommand{\param}[1]{\texttt{#1}\xspace}
\begin{document}
% Titelseite
\includepdf{title.pdf}
% Präambel
\chapter*{Präambel}
\addcontentsline{toc}{chapter}{\textbf{Präambel}}
\thispagestyle{empty}
Um Lesbarkeit zu gewährleisten, nutzt dieses Schriftstück das generische
Femininum.
Soweit personenbezogene Bezeichnungen in weiblicher Form aufgeführt sind,
beziehen sie sich auf alle Geschlechter in gleicher Weise.
\clearpage
% Vorwort
\chapter*{Vorwort}
\addcontentsline{toc}{chapter}{\textbf{Vorwort}}
\thispagestyle{empty}
\pagestyle{empty}
Vorliegend ist der Programmier-Einführungskurs der Fachschaft MathPhysInfo.
Gedacht ist dieser für Menschen, die ihren Computer bisher eher zum Spielen,
als zum Arbeiten benutzt haben, die vielleicht noch nicht wissen, dass es
andere Betriebssysteme als DasBekannteVonDerRedmonderFirma™ oder
DasMitDemApfelDrauf (You probably never heard of it) gibt, geschweige denn,
dass sie mal eine Shell benutzt haben -- oder auch nur wissen, was zur Hölle das
sein soll. Die schon mal gehört haben, dass man „Programmieren“ kann, sich
darunter aber einen magischen Prozess vorstellen, der nur Eingeweihte
beherrschen und von dem man eigentlich lieber die Finger lässt, wenn man nicht
will, dass einem der Computer um die Ohren fliegt. Kurzum: Dieser Kurs richtet
sich an blutigste Anfängerinnen.
Wir wollen zeigen, dass Programmieren eigentlich gar nicht so schwer ist, dass
eine Shell ein mächtiges Werkzeug ist und dass einem der Computer eigentlich
viel mehr Spaß bringt, wenn man mit dem nötigen Spieltrieb herangeht. Am Ende
dieses Kurses sollte die Angst vor dem Computer verflogen sein. Ihr solltet
gesehen haben, dass es keinen Grund gibt, ewig zu rätseln, ob ein Algorithmus
nun korrekt ist und was die richtige Syntax für eine Operation ist, statt
einfach etwas hinzuschreiben und zu sehen, ob es kompiliert. Die wichtigste
Kompetenz, die wir euch vermitteln wollen ist, Programmieren zu lernen, also zu
wissen, wie man eine Fehlermeldung liest, wo man bei Wissenslücken nachschauen
kann und wen man fragen kann, wenn man mal nicht weiter weiß.
Um diese Ziele zu erreichen, haben wir den Kurs in kleine
Lektionen aufgeteilt. Jede Lektion stellt im Wesentlichen eine abgeschlossene Einheit dar,
die eigenständig (mit bedarfsorientierter Hilfestellung) bearbeitet werden
sollen. Primär geht es dabei nicht um den dargestellten Inhalt, sondern darum,
mit diesem herumzuspielen und selbst die Spezialfälle zu entdecken.
Insbesondere solltet ihr die Lektionen also \emph{nicht} unter künstlichem
Zeitdruck bearbeiten. Das Ziel ist nicht, jede Lektion bearbeitet zu haben,
sondern jede Lektion entdeckt zu haben. Selbstverantwortliches Lernen ist
tragender Gedanke dieses Kurses und sollte entsprechend ernst genommen werden.
Entscheidet selbst, wie viel Zeit ihr in welche Lektionen stecken wollt.
Jede Lektion gliedert sich in drei oder vier Teile:
\begin{enumerate}
\item Theorieteil: in dem ein Unterbau für die Lektion gegeben werden
soll. Ein tiefes Verständnis sollte für die Bearbeitung der Lektion
nicht notwendig sein. Es geht mehr darum, dass sich ein grober
Wiedererkennungseffekt einstellt, wenn die theoretischen Kenntnisse im
nächsten Teil vertieft werden.
Wenn du einen eher passiven Lernstil pflegst, kannst du dir hier auch
einen Tutor zur Seite stellen lassen, der dich kurz in das Thema
einführt.
\item Praxisteil:
Hier sollen selbstständig die im Theorieteil vermittelten Inhalte
in einer kurzen Fingerübung angewendet werden.
Bei Fragen kann man aber natürlich auch hier einen Tutor zu Rate
ziehen.
\item Spielteil: Hier kann das Gelernte vertieft werden.
Es werden tiefergehende Informationen vermittelt. Darüberhinaus weitere Möglichkeiten, mit
dem Code zu interagieren, aufgezeigt.
Von diesem Teil sollte man sich am Wenigsten aufhalten und auch nicht verunsichern lassen.
\item Quizteil: Am Ende der meisten Lektionen findet ihr ein paar Quizfragen, mit denen ihr testen könnt,
ob ihr den Inhalt auch verstanden habt. Beantwortet die Fragen und schaut dann in den Lösungen am Ende des
Skripts nach, ob eure Antworten richtig sind.
\end{enumerate}
Als Programmiersprache für den Kurs haben wir \Cpp gewählt. Diese Sprache stellt
vergleichsweise hohe Anforderungen an Anfänger, da sie relativ maschinennah
ist, nicht „garbage-collected“ ist (was auch immer das heißen mag) und
high-level Konstrukte wie Listen oder Hashtables keine Repräsentation in der
Syntax haben. Es muss also viel manuell gemacht werden und das Ganze in einer
verhältnismäßig strikten Syntax.
Der Grund, aus dem wir trotzdem \Cpp gewählt haben, ist, dass in den
Anfängervorlesungen der Universität Heidelberg \Cpp verwendet wird und wir euch
die Verwirrung ersparen wollen, direkt zu Beginn des Lernprozesses mit zwei
verschiedenen Sprachen konfrontiert zu werden. Außerdem gibt es uns
Gelegenheit, direkt wichtige Sprachidiome einzuführen, den Aufprall des ersten
Kontaktes abzufedern und durch Demonstration sprachspezifischer Hilfswerkzeuge
(wie zum Beispiel dem gdb) zu verhindern, dass ihr bei typischen Problemen der
Sprache im späteren Studienverlauf in Verzweifelung versinkt.
Der gesamte Kurs ist aufgeteilt in mehrere Kapitel. Dies dient dem Zweck,
verschiedenste Bedürfnisse und Lerntempi zu befriedigen. Wer sich ganz auf die
Grundlagen konzentrieren und sich mit diesen intensiv auseinandersetzen möchte,
findet in den ersten Kapiteln Material, spielerisch die Sprache zu entdecken.
Wer sich im ersten Kapitel relativ wohl fühlt, ist bereits bestens auf die
Einführung in die praktische Informatik vorbereitet. Wer schneller lernt, oder
einen tieferen Einblick wünscht, findet in späteren Kapiteln genug Material, um
sich trotzdem für zwei Wochen zu beschäftigen und voll in die Sprache
einzusteigen.
Insgesamt sollte noch einmal betont werden, dass der Selbstanspruch, den
gesamten Kurs in vorgegebener Zeit durchzuarbeiten, dem Lernprozess schadet.
Der Kurs wird nicht benotet, gibt keine Creditpoints und ihr könnt ihn auch
nicht auf eurer Bewerbung angeben - für wen hetzt ihr euch also ab?
\newpage
\textbf{Quiz 0}\\
\textit{Was könnt ihr vom Programmiervorkurs erwarten?}
\begin{enumerate}[label=\alph*)]
\item Viel Frontalunterricht
\item Eigenständiges Lernen
\item Spaß
\item Hilfe, wenn ihr sie benötigt
\end{enumerate}
\tableofcontents
\input{eigene_computer/intro.tex}
\input{basics/intro.tex}
\input{classes/intro.tex}
\end{document}