* Verständnis für die organisatorischen Aspekte des Fachs gewinnen
* Aufbau der Lernveranstaltung verstehen
* Identität eines Informatikers
* Eigenschaften eines Informatikers
* Erwartungen an einen Informatiker
- Verständnis für die organisatorischen Aspekte des Fachs gewinnen
- Aufbau der Lernveranstaltung verstehen
- Identität eines Informatikers
- Eigenschaften eines Informatikers
- Erwartungen an einen Informatiker
### Erkenntnis
* Da in der Vorlesung dieser Woche besonders die Anforderungen an einen Informatiker besprochen wurden, lassen sich aus jener Vorlesung Verhaltensweisen ziehen, welche wir im Gruppenprojekt anwenden sollten.
* Hier steht besonders die Teamfähigkeit im Vordergrund, welche für solch ein Projekt unermässlich wichtig ist.
* Zudem ist es allgemein wichtig, sich geduldig und konzentriert an Problemstellungen zu versuchen und schlussendlich zu lösen, wobei nicht alles auf anhieb klappen wird.
- Da in der Vorlesung dieser Woche besonders die Anforderungen an einen Informatiker besprochen wurden, lassen sich aus jener Vorlesung Verhaltensweisen ziehen, welche wir im Gruppenprojekt anwenden sollten.
- Hier steht besonders die Teamfähigkeit im Vordergrund, welche für solch ein Projekt unermässlich wichtig ist.
- Zudem ist es allgemein wichtig, sich geduldig und konzentriert an Problemstellungen zu versuchen und schlussendlich zu lösen, wobei nicht alles auf anhieb klappen wird.
### Wiederholung
* Die Frage, ob Informatiker eher als Handwerker oder als Künstler einzuordnen sind:
* Künstler möchten in erster Linie mit ihrem Schaffen die Gefühle des Betrachters bzw. des Konsumenten ansprechen.
* Ihm ist dabei nicht wichtig, wie pragmatisch sein Werk ist, sondern welche Emotionen es hervorrufen kann.
* Der Informatiker auf der anderen Seite verfolgt das Ziel, pragmatische und praktische Lösungen für Probleme zu finden, sodass durch sein Schaffen Probleme oder Komplikationen so gut wie möglich minnimiert werden, ähnlich wie bei einem Handwerker.
* Demnach lässt sich der Informatiker eher zu den Handwerkern, als zu Künstlern, zuordnen.
- Die Frage, ob Informatiker eher als Handwerker oder als Künstler einzuordnen sind:
- Künstler möchten in erster Linie mit ihrem Schaffen die Gefühle des Betrachters bzw. des Konsumenten ansprechen.
- Ihm ist dabei nicht wichtig, wie pragmatisch sein Werk ist, sondern welche Emotionen es hervorrufen kann.
- Der Informatiker auf der anderen Seite verfolgt das Ziel, pragmatische und praktische Lösungen für Probleme zu finden, sodass durch sein Schaffen Probleme oder Komplikationen so gut wie möglich minnimiert werden, ähnlich wie bei einem Handwerker.
- Demnach lässt sich der Informatiker eher zu den Handwerkern, als zu Künstlern, zuordnen.
### Kritik
@ -32,63 +32,62 @@
## SU 02 (03.11.2023)
### Lernziel
* Übersicht über Paradigmatische Programmierung
* Erkentnis über die Unterschiede von imperativer und declarativer Programmierung
* Überblick über die drei Hauptprogrammierparadigmen prozedurale, objektorientierte und funktionale Programmierung
* Differenzen und Grundlagen von typisierten und typenlosen Programmiersprachen
* Grundlegender Überblick über Prinzipien der Programmierung
* Erläuterung des SOLID vs. STUPID Prinzips sowie weiterreichender Prinzipien
- Übersicht über Paradigmatische Programmierung
- Erkentnis über die Unterschiede von imperativer und declarativer Programmierung
- Überblick über die drei Hauptprogrammierparadigmen prozedurale, objektorientierte und funktionale Programmierung
- Differenzen und Grundlagen von typisierten und typenlosen Programmiersprachen
- Grundlegender Überblick über Prinzipien der Programmierung
- Erläuterung des SOLID vs. STUPID Prinzips sowie weiterreichender Prinzipien
### Erkenntnis
* SOLID vs STUPID Prinzip:
* SOLID ist ein Akronym und steht für fünf Programmierprinzipien.
* Diese Prinzipien sollen die Gestaltung von Softwarekomponenten flexibler, wartbarer und auch erweiterbarer machen.
* STUPID steht im Gegensatz dazu und ist ein Akronym, das besonders schlechte Praktiken in der Softwareentwicklung hervorhebt.
* Die mit dem Akronym beschriebenen Praktiken sollten in der Regel vermieden werden, um sauberen und wartbaren Code zu gewährleisten.
* Die Prinzipien und Inhalte des SOLID vs STUPID Prinzips lassen sich sehr gut auf das Gruppenprojekt anwenden, da sie das schreibens eines "guten Codes" begünstigen.
* Es liegen also viele nützliche Informationen vor, die sich für die Zukunft meiner Informatikkarriere anwenden lassen.
- SOLID vs STUPID Prinzip:
- SOLID ist ein Akronym und steht für fünf Programmierprinzipien.
- Diese Prinzipien sollen die Gestaltung von Softwarekomponenten flexibler, wartbarer und auch erweiterbarer machen.
- STUPID steht im Gegensatz dazu und ist ein Akronym, das besonders schlechte Praktiken in der Softwareentwicklung hervorhebt.
- Die mit dem Akronym beschriebenen Praktiken sollten in der Regel vermieden werden, um sauberen und wartbaren Code zu gewährleisten.
- Die Prinzipien und Inhalte des SOLID vs STUPID Prinzips lassen sich sehr gut auf das Gruppenprojekt anwenden, da sie das schreibens eines "guten Codes" begünstigen.
- Es liegen also viele nützliche Informationen vor, die sich für die Zukunft meiner Informatikkarriere anwenden lassen.
### Wiederholung
* Erläuterung der imperativen Programmierung:
* Die imperative Programmierung ist ein Ansatz der Softwareentwicklung, wobei der Fokus auf genauen Anweisungen liegt.
* Diese Anweisungen beschreiben, wie eine auftretende Aufgabe/ein Problem Schritt für Schritt ausgeführt oder gelöst werden muss.
* Die imperative Programmierung beinhaltet Kontrollstrukturen wie Schleifen oder bedingten Anweisungen, um den Fluss des Programms zu steuern.
* Es liegt eine große Betonung der Details von Implementierungen und den Abfolgen von Anweisungen vor.
- Erläuterung der imperativen Programmierung:
- Die imperative Programmierung ist ein Ansatz der Softwareentwicklung, wobei der Fokus auf genauen Anweisungen liegt.
- Diese Anweisungen beschreiben, wie eine auftretende Aufgabe/ein Problem Schritt für Schritt ausgeführt oder gelöst werden muss.
- Die imperative Programmierung beinhaltet Kontrollstrukturen wie Schleifen oder bedingten Anweisungen, um den Fluss des Programms zu steuern.
- Es liegt eine große Betonung der Details von Implementierungen und den Abfolgen von Anweisungen vor.
### Kritik
* Etwas mehr Praxisnähe wären in der Vorlesung von Vorteil (eventuell Erläuterung von neu Erlerntem an einem Code oder ähnlichem)
- Etwas mehr Praxisnähe wären in der Vorlesung von Vorteil (eventuell Erläuterung von neu Erlerntem an einem Code oder ähnlichem)
---
## SU 03 (07.11.2023)
### Lernziel
* Überblick zu Entwurfsmustern
* Literatur über Entwurfsmuster
* kurze Begriffserklärung und Definition
* Vor- und Nachteile von Entwurfsmustern
* Blick auf Anwendungsgebiete
* Überblick über sämmtliche Entwurfsmuster
* Einteilung in Erzeuguns- Struktur- und Verhaltensmuster)
* Geschichte der Programmierwerkzeuge
* vom Bohrer über Bleistift, Radiergummi, Zeileneditor bis hin zu IDEs
* Vorteile der IDEs im Bezug auf veraltete Programmierwerkzeuge
* Einteilung der IDEs sowie einige Beispiele solcher
* Überblick über die Automatisierungsvorteile und das Debugging der IDEs
- Überblick zu Entwurfsmustern
- Literatur über Entwurfsmuster
- kurze Begriffserklärung und Definition
- Vor- und Nachteile von Entwurfsmustern
- Blick auf Anwendungsgebiete
- Überblick über sämmtliche Entwurfsmuster
- Einteilung in Erzeuguns- Struktur- und Verhaltensmuster)
- Geschichte der Programmierwerkzeuge
- vom Bohrer über Bleistift, Radiergummi, Zeileneditor bis hin zu IDEs
- Vorteile der IDEs im Bezug auf veraltete Programmierwerkzeuge
- Einteilung der IDEs sowie einige Beispiele solcher
- Überblick über die Automatisierungsvorteile und das Debugging der IDEs
### Erkenntnis
* IDEs als nützliches Programmierwerkzeug:
* Ich persönlich habe bis dato mit Ubuntu C-Programm geschrieben, was teils sehr mühselig gewesen ist.
* Mit der Hilfe einer IDE (ich habe mich für CLion entschieden) fällt das Programmieren ohne Zweifel viel leichter.
* Die Vorteile der IDE wie das Syntax-Highlighting und die -Verfollständigung, der eingabeute Compiler und die Fehler-Lokalisierung helfen dabei, einen einfacheren Umgang mit Code zu bekommen.
* Zudem lassen sich durch IDEs, wie mit VSC, Gruppenprojekte durch verbesserte Kommunikation viel einfacher umsetzen, was auch bei unserem zukünftigem Projekt von Vorteil sein wird.
- IDEs als nützliches Programmierwerkzeug:
- Ich persönlich habe bis dato mit Ubuntu C-Programm geschrieben, was teils sehr mühselig gewesen ist.
- Mit der Hilfe einer IDE (ich habe mich für CLion entschieden) fällt das Programmieren ohne Zweifel viel leichter.
- Die Vorteile der IDE wie das Syntax-Highlighting und die -Verfollständigung, der eingabeute Compiler und die Fehler-Lokalisierung helfen dabei, einen einfacheren Umgang mit Code zu bekommen.
- Zudem lassen sich durch IDEs, wie mit VSC, Gruppenprojekte durch verbesserte Kommunikation viel einfacher umsetzen, was auch bei unserem zukünftigem Projekt von Vorteil sein wird.
### Wiederholung
* Erläuterung zu Entwurfsmustern:
* Entwurfsmuster, auf Englisch "design patterns" genannt, sind etablierte Lösungsvorlangen für wiederkehrende Deignherausforderungen in der Architektur wie auch in der Softwareentwicklung.
* Für Problemlösungen werden sie als wiederverwenbare Rahmenbedingungen eingesetzt, indem sie eine standardisierte Vorgehensweise beinhalten, die in gewissen Kontexten angewendet werden kann.
* Diese Muster fördern zudem die Effizienz bei Entwicklungen und ermöglichen eine konsistente Strukturierung von Code, was im Endeffekt auch noch die Wartbarkeit maßgeblich verbessert
- Erläuterung zu Entwurfsmustern:
- Entwurfsmuster, auf Englisch "design patterns" genannt, sind etablierte Lösungsvorlangen für wiederkehrende Deignherausforderungen in der Architektur wie auch in der Softwareentwicklung.
- Für Problemlösungen werden sie als wiederverwenbare Rahmenbedingungen eingesetzt, indem sie eine standardisierte Vorgehensweise beinhalten, die in gewissen Kontexten angewendet werden kann.
- Diese Muster fördern zudem die Effizienz bei Entwicklungen und ermöglichen eine konsistente Strukturierung von Code, was im Endeffekt auch noch die Wartbarkeit maßgeblich verbessert
### Kritik
@ -96,32 +95,32 @@
## SU 04 (14.11.2023)
### Lernziel
* Überblick über Source-Code-Management-Systeme
* Warum sollte man git benutzen?
* Konzept von git
* Dementsprechend Vorteile, welche git zur Verfügung stellt
* Der Unterschied zwischen zentralisierten und verteilten SCM-Systemen
* Prinzipien und Tipps zu commits
* "keep it small and clean"
* Einführung ins Branching inklusive Schaubild
* Blick auf die Branches master, develop, release, hotfix und feature
* Überblick übers merging und rebasing und die Frage, wann was von Vorteil ist
- Überblick über Source-Code-Management-Systeme
- Warum sollte man git benutzen?
- Konzept von git
- Dementsprechend Vorteile, welche git zur Verfügung stellt
- Der Unterschied zwischen zentralisierten und verteilten SCM-Systemen
- Prinzipien und Tipps zu commits
- "keep it small and clean"
- Einführung ins Branching inklusive Schaubild
- Blick auf die Branches master, develop, release, hotfix und feature
- Überblick übers merging und rebasing und die Frage, wann was von Vorteil ist
### Erkenntnis
* Source-Code-Management-Systeme bieten große Vorteile im Bereich von Gruppenprogrammierung:
* Mehrere Entwickler können gleichzeitig an einem Softwareprojekt arbeiten, ohne sich gegenseitig zu behindern oder den Code zu überschreieben.
* Wenn Änderungen am Code gemacht werden, können diese leichter nachverfolgt, überprüft und getestet werden, bevor diese in die Hauptversion integriert werden.
* Qualität, Sicherheit und Zuverlässiglkeit einer Software können verbessert werden, indem Fehler schneller erkannt und behoben werden können.
* Die Zusammenarbeit und Kommunikation von Entwicklern kann maßgeblich durch das Einhalten von Standards, Richtlinien und Workflows verbessert werden.
- Source-Code-Management-Systeme bieten große Vorteile im Bereich von Gruppenprogrammierung:
- Mehrere Entwickler können gleichzeitig an einem Softwareprojekt arbeiten, ohne sich gegenseitig zu behindern oder den Code zu überschreieben.
- Wenn Änderungen am Code gemacht werden, können diese leichter nachverfolgt, überprüft und getestet werden, bevor diese in die Hauptversion integriert werden.
- Qualität, Sicherheit und Zuverlässiglkeit einer Software können verbessert werden, indem Fehler schneller erkannt und behoben werden können.
- Die Zusammenarbeit und Kommunikation von Entwicklern kann maßgeblich durch das Einhalten von Standards, Richtlinien und Workflows verbessert werden.
### Wiederholung
* Erkläuterung von Branches:
* Branches bieten in git die Möglichkeit, verschiedene Versionen eines Codes zu erstellen und zu verwalten.
* Sie ermöglichen den Entwicklern an beispielsweise Fehlern oder Verbesserungen zu arbeiten, ohne den Hauptcode zu beeinträchtigen.
* Branches können ähnlich wie Zeiger gesehen werden, welche den Zustand des Codes zu einem bestimmten Zeitpunkt darstellen.
* Zudem können sie leicht gelöscht, umbenannt, zusammengeführt oder geteilt werden.
- Erkläuterung von Branches:
- Branches bieten in git die Möglichkeit, verschiedene Versionen eines Codes zu erstellen und zu verwalten.
- Sie ermöglichen den Entwicklern an beispielsweise Fehlern oder Verbesserungen zu arbeiten, ohne den Hauptcode zu beeinträchtigen.
- Branches können ähnlich wie Zeiger gesehen werden, welche den Zustand des Codes zu einem bestimmten Zeitpunkt darstellen.
- Zudem können sie leicht gelöscht, umbenannt, zusammengeführt oder geteilt werden.
###Kritik
@ -131,35 +130,35 @@
## SU 05 (28.11.2023)
### Lernziel
* Literaturvorschläge zu Continuous Integration und Continuous Delivery sowie zu Programmierethiken
* Überblick über die Kooperation in und während einem Softwareentwicklungsprozess
* mit steigender Größe von Projekten steigen auch die Komplexität und die Anzahl von Beteiligten
* es müssen Einzelleistungen erbracht werden
* aufwändigeres Arbeiten
* technische und persönliche Konflikte werden auftreten
* Der Softwareentwicklungsprozess als solcher
* Bestandteile wie Code schreiben, veröffentlichen oder Integrationen
* Die Abhängigkeitsveraltung sowie Semantische Versionierung und deren Regeln
* beliebte building-Tools
* Automatisierte Tests als Hilfsmittel zur Code-Überprüfung
* Allgemeine Vorgehensmodelle
- Literaturvorschläge zu Continuous Integration und Continuous Delivery sowie zu Programmierethiken
- Überblick über die Kooperation in und während einem Softwareentwicklungsprozess
- mit steigender Größe von Projekten steigen auch die Komplexität und die Anzahl von Beteiligten
- es müssen Einzelleistungen erbracht werden
- aufwändigeres Arbeiten
- technische und persönliche Konflikte werden auftreten
- Der Softwareentwicklungsprozess als solcher
- Bestandteile wie Code schreiben, veröffentlichen oder Integrationen
- Die Abhängigkeitsveraltung sowie Semantische Versionierung und deren Regeln
- beliebte building-Tools
- Automatisierte Tests als Hilfsmittel zur Code-Überprüfung
- Allgemeine Vorgehensmodelle
### Erkenntnis
* Vorteile durch automatisierte Tests in der Softwareentwicklung:
* automatisierte Tests ermöglichen es, sich wiederholende Tests schneller und häufiger auszuführen.
* Deren Erkenntnisse fließen umgehend in die Entwicklung mit ein.
* Große Zeitersparnisse für Programmierer, welche sich nicht auf die Tests konzentrieren müssen.
* Auch Programmierer können mal Fehler beim Testen machen, was durch autmatisierte Tests ausgeschlossen wird.
* Automatisierte Tests sind demnach maßgebliche Faktoren im Punkto Qualitätsverbesserung eines Codes.
- Vorteile durch automatisierte Tests in der Softwareentwicklung:
- automatisierte Tests ermöglichen es, sich wiederholende Tests schneller und häufiger auszuführen.
- Deren Erkenntnisse fließen umgehend in die Entwicklung mit ein.
- Große Zeitersparnisse für Programmierer, welche sich nicht auf die Tests konzentrieren müssen.
- Auch Programmierer können mal Fehler beim Testen machen, was durch autmatisierte Tests ausgeschlossen wird.
- Automatisierte Tests sind demnach maßgebliche Faktoren im Punkto Qualitätsverbesserung eines Codes.
### Wiederholung
* Erläuterung der Semantischen Versionierung:
* Die Semantische Versionierung ist ein Konzept im Bereich der Versionsverwaltung einer Software.
* Der Fokus liegt auf der Bedeutung von Änderungen in einer Software.
* Bei dieser Methode werden für jede Softwareversion drei Nummern in der Reihenfolge Major.Minor.Patch verwendet.
* Bei dem jeweiligen Major-, Minor- oder Patch-Update wird dann die dementschprechende Zahl erhöht.
- Erläuterung der Semantischen Versionierung:
- Die Semantische Versionierung ist ein Konzept im Bereich der Versionsverwaltung einer Software.
- Der Fokus liegt auf der Bedeutung von Änderungen in einer Software.
- Bei dieser Methode werden für jede Softwareversion drei Nummern in der Reihenfolge Major.Minor.Patch verwendet.
- Bei dem jeweiligen Major-, Minor- oder Patch-Update wird dann die dementschprechende Zahl erhöht.
xxxxxxxxxx