🎓 programming-concepts-universal
Interaktiver Programmierkurs: Von C zu universellen Konzepten
📋 Übersicht
Dieses Repository enthält einen kompletten Kurs für Programmieranfänger mit C-Grundlagen, der sich auf sprachunabhängige Konzepte konzentriert.
Zielgruppe: Student mit C-Erfahrung, geplantem C++-Umstieg
Kursdauer: 8 Wochen
Lernziel: Konzepte verstehen, die auf jede Programmiersprache übertragbar sind
📁 Repository-Struktur
.
├── README.md # Diese Datei
├── docs/
│ ├── programming-concepts-universal.md # Hauptkurs-Dokument
│ └── quiz-fragen.md # Interaktive Quizfragen
├── src/
│ └── c_examples/ # C Code-Beispiele
│ ├── module1_memory.c
│ ├── module2_datatypes.c
│ ├── module3_controlflow.c
│ ├── module4_functions.c
│ ├── module5_datastructures.c
│ ├── module6_pointers.c
│ ├── module7_oop_in_c.c
│ ├── module8_modularization.c
│ ├── Makefile
│ └── README.md
└── exercises/
├── checkpoint_a.c # Memory & Typen
├── checkpoint_b.c # Taschenrechner
├── checkpoint_c.c # Dynamische Liste
└── final_project/ # Todo-App
├── todo_c/
└── todo_cpp/
🗺️ Kurs-Module
| Modul | Thema | C-Beispiel | C++-Gegenstück |
|---|---|---|---|
| 1 | Memory-Modell | malloc/free |
new/delete, Smart Pointer |
| 2 | Datentypen | int32_t, Overflow |
auto, constexpr |
| 3 | Flusskontrolle | if/for/while |
Gleich |
| 4 | Funktionen | Call-by-Value | References, & |
| 5 | Datenstrukturen | LinkedList, Stack | STL: vector, stack |
| 6 | Pointer | *, &, Arithmetik |
References, Smart Ptr |
| 7 | OOP | Structs + Fct Ptrs | class, virtual |
| 8 | Modularisierung | MVC-Pattern | Namespaces, Templates |
🚀 Schnellstart
Voraussetzungen
# C-Compiler (gcc oder clang)
gcc --version
# C++-Compiler (optional für Vergleich)
g++ --version
# Make (optional)
make --version
Kompilieren
# Alle C-Beispiele kompilieren
cd src/c_examples
make all
# Einzelnes Modul
make module1
./module1
# Mit Debugging
make CFLAGS="-g -O0" module1
gdb ./module1
📖 Kursverwendung
Empfohlener Lernpfad
Woche 1-2:
- Lese
docs/programming-concepts-universal.mdModul 1-2 - Bearbeite
docs/quiz-fragen.mdFragen 1.1-2.3 - Kompiliere und teste
module1_memory.c&module2_datatypes.c - ✅ Checkpoint A bestehen
Woche 3-4:
- Modul 3-4 lesen
- Quizfragen 3.1-4.3
- Code-Beispiele:
module3_controlflow.c,module4_functions.c - 📝 Checkpoint B: Taschenrechner implementieren
Woche 5-6:
- Modul 5-6 lesen
- Quizfragen 5.1-6.3
- Code:
module5_datastructures.c,module6_pointers.c - 🔧 Checkpoint C: Eigene LinkedList implementieren
Woche 7-8:
- Modul 7-8 lesen
- Quizfragen 7.1-8.3 + Final
- Code:
module7_oop_in_c.c+ C++ Vergleich - 🎓 Final-Projekt: Todo-App in C, dann C++
🧪 Quiz-System
Das Kursmaterial enthält 28 Quizfragen mit:
- ✅ Multiple Choice
- 📝 Code-Analyse
- 🔍 Konzept-Fragen
- 🎯 Score-Tabelle (0-28 Punkte)
Bewertung:
| Punkte | Bewertung |
|---|---|
| 26-28 | 🏆 Meister |
| 22-25 | ⭐ Experte |
| 18-21 | ✅ Gut |
| < 18 | 📚 Nacharbeiten |
💡 Kernkonzepte
1. Memory-Modell (Universell)
┌─────────────────┐
│ Stack │ ← Automatisch, schnell, begrenzt
│ (short-term) │
├─────────────────┤
│ Heap │ ← Manuell/verwaltet, flexibel
│ (long-term) │
└─────────────────┘
In jeder Sprache: Stack/Heap existieren, Management variiert
2. Typen als Konzepte
// Nicht lernen: "int ist 4 Bytes"
// Lernen: "int ist ein ganzzahliger Typ mit begrenztem Bereich"
3. OOP-Prinzipien (Sprachunabhängig)
- Kapselung: Daten schützen
- Abstraktion: Wie ist egal
- Vererbung: "IS-A" Beziehung
- Polymorphie: Gleiche Schnittstelle
🔧 C vs C++ Vergleich
| Feature | C | C++ |
|---|---|---|
| Memory | malloc/free |
new/delete, RAII |
| Strings | char[] |
std::string |
| Arrays | Fixed/dynamisch | std::vector |
| OOP | Simuliert | Nativ (class) |
| Generics | void* |
template<T> |
| Module | Header | Namespaces |
📝 Checkpoints
Checkpoint A (nach Modul 2)
// Frage: Was ist der Output?
void test() {
int x = 42;
int *p = &x;
// Was ist p nach Ende von test()?
}
Checkpoint B (nach Modul 4)
Erstelle einen Taschenrechner mit:
- Menü-System (if/switch)
- Mathematische Funktionen
- Rekursive Fakultät
- Fehlerbehandlung
Checkpoint C (nach Modul 6)
Implementiere eine dynamische Liste:
typedef struct {
int* data;
int size;
int capacity;
} Vector;
void vector_push(Vector* v, int value);
int vector_get(Vector* v, int index);
Final-Projekt
Todo-App mit:
- CRUD-Operationen
- File-Speicherung
- CLI-Interface
- Modularer Architektur
📚 Ressourcen
Bücher
- "The C Programming Language" (K&R) - Klassiker
- "C++ Primer" (Lippman) - Umfassend
- "Clean Code" (Robert C. Martin) - Sprachunabhängig!
- "Design Patterns" (Gang of Four) - Das Original
Online
- exercism.org - Sprachübergreifende Übungen
- leetcode.com - Algorithmen
- codewars.com - Katas
Dokumentation
🤝 Mitwirken
Dieser Kurs ist für Bildungszwecke gedacht. Verbesserungsvorschläge willkommen!
📄 Lizenz
MIT License - Für Bildungszwecke frei nutzbar.
Viel Erfolg beim Lernen! 🚀
Remember: Programmieren ist nicht Syntax lernen – es sind Konzepte, die in jeder Sprache wiederkehren, nur mit anderem Akzent.