Skip to content

Commit

Permalink
Prog: VV Einleitung
Browse files Browse the repository at this point in the history
  • Loading branch information
behrends committed Jan 11, 2023
1 parent a09404e commit 3b1cd52
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 32 deletions.
12 changes: 9 additions & 3 deletions pages/prog/01-intro/ablauf.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@ Die Vorlesung besteht aus zwei Teilen:

Die Vorlesung setzt zwar keine Vorkenntnisse voraus, jedoch werden wir die aufeinander aufbauenden Themen in relativ kurzer Zeit behandelt.

Das eigentliche Ziel ist, Programmierprojekte im Team umsetzen zu können.
<br/>

<mark>Das eigentliche Ziel ist, Programmierprojekte im Team umsetzen zu können.</mark>

Es kann sehr demotivierend sein, wenn wir programmieren wollen und dabei mit nicht genügend gefestigten Grundlagen „kämpfen“ müssen.

Expand Down Expand Up @@ -82,12 +84,16 @@ zum Mitmachen mit anschließenden Aufgaben zur Übung:

**Wichtige Bemerkung:** Die Studierenden sollten jede Übung
eigenständig lösen können. Falls dies nicht der Fall sein sollte,
dann ist **unbedingt** Nacharbeiten im Selbststudium nötig.
dann ist <mark>**unbedingt** Nacharbeiten im Selbststudium nötig</mark>.
Fast jedes Thema baut auf den zuvor vermittelten Inhalten auf,
sodass diese möglichst vollständig beherrscht werden sollten, damit neue Inhalte verstanden werden (_mastery based learning_).

<Callout type="info">
&xrarr; Notizen und Links zum Nachschlagen finden sich auf dieser „Workshops“-Webseite
&xrarr; Notizen und Links zum Nachschlagen finden sich auf dieser „Workshops“-Webseite. Zu jedem Thema gibt es in Moodle passende Links auf diese Webseite.

Für die Vorlesung stellt diese Webseite ein „lebendes Skript“ dar, weil hier
im Verlauf der Veranstaltungen Anpassungen vorgenommen werden und
Ergänzungen hinzukommen können.
</Callout>

## Online Live Coding
Expand Down
26 changes: 16 additions & 10 deletions pages/prog/01-intro/hello_world.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { Callout } from 'nextra-theme-docs'
</Callout>

Die klassische Einführung in eine Programmiersprache
besteht darin, ein Programm zu schreiben, dass die Begrüßung
besteht darin, ein Programm zu schreiben, das die Begrüßung

```
Hello, World!
Expand All @@ -37,13 +37,14 @@ unbekannte Aspekte oder nützliche Tipps dabei.
<Callout type="warning" emoji="👨🏻‍💻">
&xrarr; Vorführung der Konsole in Chrome und/oder Firefox

&xrarr; Jeder kann mitmachen (`F12` im Chrome-Browser)
&xrarr; Jeder kann mitmachen (Taste `F12` im Chrome-Browser)
</Callout>

In fast allen Programmiersprachen wird beliebiger Text wie z.B.
`Hello, World!` als **String** (Zeichenkette) bezeichnet.

Strings werden in fast allen Programmiersprachen mit doppelten Anführungszeichen umgeben:
Strings werden in den meisten Programmiersprachen mit doppelten
Anführungszeichen umgeben:

```js
"Hello, World!"
Expand Down Expand Up @@ -74,12 +75,12 @@ Klammern einsetzen. Wir verwenden also den String
console.log("Hello, World!")
```

Oft sagen wir hierzu auch „der Funktion bzw. Methode beim Aufruf
ein Parameter oder ein Argument übergeben“.
Oft sagen wir hierzu auch, dass „_der Funktion bzw. Methode beim Aufruf
ein Parameter oder ein Argument übergeben wird_“.

Es gibt auch Funktionen/Methoden ohne Parameter und solche mit
mehreren Parametern. Ebenso können sie ein Ergebnis als
**Rückgabewert** liefern (hier bei `console.log()` nicht relevant).
**Rückgabewert** liefern (dies ist hier bei `console.log()` nicht relevant).

Nun haben wir eine korrekte **Anweisung** in JavaScript
programmiert.
Expand All @@ -97,14 +98,15 @@ Ein paar Bemerkungen dazu:
- Jeder Browser hat eine JavaScript-Konsole, in der JavaScript-Code ausprobiert werden kann. Dort funktioniert auch die Methode `console.log()`.
- Im Browser kann auch etwas in einem UI-Dialog mit `alert()` angezeigt werden.
- In dieser Vorlesung betrachten wir JavaScript weitestgehend ohne HTML und CSS (&xrarr; dies findet evtl. in der Vorlesung „Web-Engineering“ statt).
- Text bzw. Strings können in JavaScript entweder mit doppelten (`""`) oder einfachen (`''`) Anführungszeichen umgeben werden.

## Programmierumgebung

Für die Verwendung einer Programmiersprache werden zusätzliche
Werkzeuge wie Editoren, Interpreter/Compiler oder komplette
Entwicklungsumgebungen benötigt.

JavaScript hat den Vorteil, dass jeder Browser eine sogenannte
JavaScript ist leicht zugänglich, weil jeder Browser eine sogenannte
Konsole hat, in der mit JavaScript experimentiert werden kann
(außer auf dem Smartphone oder Tablet). Die Konsole
(_console_) ist Teil der Entwicklerwerkzeuge (_developer tools_)
Expand Down Expand Up @@ -155,6 +157,7 @@ einheitlich abläuft. Hierzu ist dann auch die Verwendung von
[git](https://git-scm.org) sinnvoll.
</Callout>

<Callout type="info">
Es gibt weitere Alternativen zu NodeJS für
JavaScript-Laufzeitumgebungen, die aber noch nicht ausgereift
oder etabliert sind:
Expand All @@ -164,12 +167,15 @@ oder etabliert sind:
- [Rome](https://rome.tools)
- weitere?

&xrarr; Eventuell könnte sich in Zukunft herausstellen, dass eine andere
Laufzeitumgebung besser geeignet ist als NodeJS.
</Callout>

## Inspiration

Es gibt einigende spannende Programmierungen für besondere
Einsatzbereiche wie Grafik oder Spiele, die direkt ohne etwas
installieren zu müssen online im Browser funktionieren.
In folgenden Beispiele wird mit
Einsatzbereiche wie Grafik oder Spiele, die online im Browser funktionieren
&mdash; ohne etwas installieren zu müssen. Ein paar Beispiele:

- Grafische Programmierung mit [p5js](https://p5js.org) &mdash; basiert auf [Processing](https://processing.org/)
- Spiele mit [MakeCode Arcade](https://arcade.makecode.com) &mdash; unterstützt Scratch, JavaScript und Python
Expand Down
4 changes: 2 additions & 2 deletions pages/prog/01-intro/intro.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ Ansätze:
- [GitHub](https://github.com) ist die wichtigste Plattform für den Code von Programmierprojekten und veröffentlicht jedes Jahr eine [Liste der beliebtesten Sprachen](https://octoverse.github.com/).
- Die wichtige Fragen-/Antworten-Plattform [stackoverflow](https://stackoverflow.com) organisiert eine jährliche Umfrage, bei der u.a. nach [den beliebtesten Programmiersprachen](https://insights.stackoverflow.com/survey/2021#most-popular-technologies-language) gefragt wird (hierbei gehören auch NodeJS und TypeScript zu JavaScript).

Diese verschiedenen Einstufungen (_rankings_) ergeben
unterschiedliche Ergebnisse, die sich jedes Jahr etwas ändern.
Diese Einstufungen (_rankings_) basieren auf verschiedenen Herangehensweisen
und ergeben unterschiedliche Ergebnisse, die sich jedes Jahr etwas ändern.
In den oberen Rängen sind oftmals die gleichen Sprachen zu finden.

<Callout type="info">
Expand Down
19 changes: 10 additions & 9 deletions pages/prog/01-intro/javascript.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@ import { Callout } from 'nextra-theme-docs'
**Ziel:** Hintergründe und Eigenschaften von JavaScript
</Callout>

## Geschichte
## Hintergrund

JavaScript wurde 1995 in nur zwei Wochen konzipiert und wurde
JavaScript wurde 1995 in nur zwei Wochen konzipiert und wird
seitdem ständig weiterentwickelt. Schon früh hat sich JavaScript
als die Programmiersprache der Browser durchgesetzt und kommt
(neben HTML und CSS) auf fast allen Webseiten zum Einsatz.

Inzwischen kommen jedes Jahr neue Spracheigenschaften hinzu.
Durch die Ergänzung mit [TypeScript](https://typescriptlang.org)
und Werkzeugen wie [ESLint](https://eslint.org/) (und vielen
anderen) bietet JavaScript eine moderne und robuste
Programmierumgebung mit vielen nützlichen Werkzeugen und Erweiterungen.
Durch die Ergänzung mit [TypeScript](https://typescriptlang.org),
Werkzeugen wie [ESLint](https://eslint.org/) und vielen weiteren
zusätzlichen Erweiterungen bietet JavaScript eine moderne und robuste
Programmierumgebung.

## Vergleich mit Java

Expand All @@ -37,7 +37,7 @@ recht ähnlich sind (u.a. Blöcke mit geschweifte Klammern,
## Linksammlung

- [javascript.info](https://javascript.info) ist ein sehr gut strukturiertes und übersichtliches Tutorial.
- [developer.mozilla.org — Mozilla Developer Network (MND)](https://developer.mozilla.org) ist die beste Referenz zum Nachschlagen oder für ausführliche Beschreibungen bestimmter Sprachkonzepte (nicht nur JavaScript!). Allerdings ist die deutsche Übersetzung nicht immer aktuell und vollständig &mdash; daher sollte MDN immer auf Englisch gelesen werden.
- [developer.mozilla.org — Mozilla Developer Network (MND)](https://developer.mozilla.org) ist die beste Referenz zum Nachschlagen und für ausführliche Beschreibungen bestimmter Sprachkonzepte (nicht nur für JavaScript!). Allerdings ist die deutsche Übersetzung teilweise unvollständig &mdash; daher sollte MDN stets auf Englisch gelesen werden.
- [wiki.selfhtml.org](https://wiki.selfhtml.org) — SelfHTML hat eine Einführung in JavaScript auf deutsch.
- [eloquentjavascript.net](https://eloquentjavascript.net) — Tutorial im Stil eines Lehrbuchs mit interaktiven Beispielen direkt im Browser.
- [workshops.progcontent.com](https://workshops.progcontent.com) — Notizen zu dieser Veranstaltung, d.h. diese Webseite 😀.
Expand All @@ -46,9 +46,10 @@ recht ähnlich sind (u.a. Blöcke mit geschweifte Klammern,
<Callout type="info">
Es gibt einige Online-Kurse zum Thema JavaScript, allerdings
sind diese meistens auf die Programmierung von Webseiten
ausgerichtet und beinhalten daher HTML und CSS.
ausgerichtet und beinhalten daher HTML und CSS, welche in dieser Vorlesung
nicht vorkommen.

Nützlich wäre ein Online-Kurs, der allgemein in die
Programmierung mit JavaScript einführt.
Programmierung mit JavaScript ohne HTML und CSS einführt.
</Callout>

19 changes: 13 additions & 6 deletions pages/prog/01-intro/motivation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,20 @@ Marc Andreesen (Entwickler des Netscape-Browsers in den 90er Jahren) sagte diese

## Programmieren: Fähigkeit der Zukunft

Der IT-Branchenverband bitkom berichtet immer
wieder über die Fachkräftelücke, z.B.
Anfang 2022 über [96000 offene IT-Jobs](https://www.bitkom.org/Presse/Presseinformation/IT-Fachkraefteluecke-wird-groesser). Daraus ein
Zitat:
Der IT-Branchenverband [bitkom](https://www.bitkom.org) berichtet immer
wieder über die Fachkräftelücke, z.B. Anfang 2022 über
[96000 offene IT-Jobs](https://www.bitkom.org/Presse/Presseinformation/IT-Fachkraefteluecke-wird-groesser).
Daraus ein Zitat:

> Software-Spezialistinnen und -Spezialisten sind mit Abstand am gefragtesten. Vier von zehn Unternehmen (41 Prozent) mit vakanten IT-Jobs suchen Software-Entwicklerinnen beziehungsweise Software-Architekten.
Anfang 2023 heißt es [von Seiten der bitkom](https://www.bitkom.org/Presse/Presseinformation/Beschaeftigungsaussichten-Digitalbranche-2023-positiv)
trotz kriselnder Weltwirtschaft:

> 30 Prozent der Unternehmen planen Neueinstellungen – nur 8 Prozent erwarten einen Rückgang bei der Beschäftigung
### Entwicklung von Software &mdash; nicht nur programmieren

Programmieren ist ein konkretes Beispiel für
die allgemeine Fähigkeit, komplexe Probleme
lösen zu können (_Complex Problem Solving_).
Expand All @@ -58,9 +65,9 @@ dass es sinnvoll sein kann

- Fähigkeiten zu erwerben, die sich nicht (leicht) automatisieren lassen.
- Diese Fähigkeiten richtig gut zu beherrschen,
- &xrarr; woraus sich das lebenslange Lernen ergibt (neue Programmiersprachen, Frameworks und APIs, Methoden, Werkzeuge, sich wandelnde Anwendungsdomänen usw.).
- &xrarr; woraus sich das lebenslange Lernen ergibt (neue Programmiersprachen, Frameworks und APIs, Methoden, Werkzeuge, sich wandelnde Anwendungsdomänen, usw.).

## Lernziele
## Lernziele dieser Vorlesung

Wir haben folgende Lernziele, die selbstverständlich
nach Ablauf der Veranstaltung nicht vollständig abgeschlossen sind
Expand Down
11 changes: 9 additions & 2 deletions pages/prog/01-intro/organisatorisches.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { Callout } from 'nextra-theme-docs'
- Im Moodle-Kursraum wird das Vorlesungsmaterial gesammelt.
- Das bereitgestellte Material stellt kein vollständiges Skript dar!
- **&xrarr; eigene Recherchen, das Nacharbeiten und Vertiefung sind im Studium notwendig**
- &xrarr; Im Web ist viel Lernmaterial zu finden &mdash; einiges wird an passender Stelle empfohlen.
- &xrarr; Im Web ist viel Lernmaterial zu finden &mdash; an passender Stelle wird nützliches empfohlen.
- Einiges wird auch am Rechner mit Live Coding oder am Whiteboard besprochen.
- Bitte Laptop mitbringen, da es immer wieder „Live-Coding“ zum Mitmachen gibt.
- Manche Termine finden evtl. online in BBB statt (wird zeitnah angekündigt).
Expand All @@ -26,5 +26,12 @@ Teams von 2-3 Personen wird ein Programmierprojekt umgesetzt.

Der Projektstart wird ungefähr 3 Wochen nach Vorlesungsbeginn sein.

**Mehr Details zum Projekt und zum Bewertungsschema gibt es an einem späteren Termin!**
<br/>

<mark>Mehr Details zum Projekt und zum Bewertungsschema gibt es an einem späteren Termin!</mark>

<Callout type="info">
Bevor das Projekt beginnt, werden wir wichtige Grundlagen der Programmierung
besprechen und mit praktischen Übungen festigen.
</Callout>

0 comments on commit 3b1cd52

Please sign in to comment.