User Level Heap

Ein Programm, das sehr oft Speicheranfragen durch malloc tätigen muss kann sehr ineffizient sein, da diese Anfragen durch das Betriebssystem behandelt werden müssen. Als Lösung, kann sich ein Programm einmal einen sehr großen Speicherbereich anfordern, und diesen dann selbst verwalten. Du könntest eine Library schreiben, die genau dies implementiert

Ressourcen:

Malloc man page

Referenz Projekt auf Youtube

Interessante Diskussion auf Stack Overflow

Advent of Code

Du hast weniger Lust, an einem konkreten Projekt zu arbeiten, und willst lieber Knobelaufgaben Lösen? Advent of Code veröffentlicht jedes Jahr zur Adventszeit kleine Rätsel. Das lösen dieser macht Spaß und, obwohl C vielleicht nicht die geeignetste Sprache ist, lernt man viel dabei.

Projekt Umschreiben

C hat über anderen Programmiersprachen den Vorteil, dass durch eigener Speicherverwaltung eine bessere Leistung gewährleistet werden kann. Es bietet sich daher an, ein interessantes Projekt, was potenziell schlecht skaliert, in C umzuschreiben, und zu messen, ob es dadurch zu Verbesserungen kommt.

TODO mögliche Projekte?

SDL Projekt

Die SDL library ist Open Source und implementiert eine Schnittstelle für Grafik-, Sound- und Eingabegeräte. Dadurch ist diese wundervoll für das Entwickeln von Videospielen (oder Videospiel Engines) und anderen multimedialen Projekten geeignet.

Wikipedia

Offizielle Seite

Anfängerfreundliche Wrapper Library

Sehr gutes Tutorial für C++ (aber auch für C geeignet)

TUI Spiele / ncurses

Sonst können einfache 2D Spiele (z.B. Snake) auch mit ASCII im Terminal implementiert werden.

Möglicherweise möchtest du die ncurses Library verwenden.

Ncurses Wikipedia

Ncurses Tutorial

Typing Tutor

Ein sogenannter “typing Tutor” ist ein Programm, mit dem man das effizientere Tippen erlernen kann. Dabei werden Texte vom Programm ausgegeben und man muss diese Nachtippen. Das Programm kann dann beispielsweise auf Korrektheit und Geschwindigkeit prüfen.

So ein typing Tutor kann Shell-basiert sein, und benötigt keine speziellen Libraries.

Beispiel für die Funktionalität eine typing Tutors

String library

Ja ja, man sollte das Rad (oder string.h) nicht neuerfinden. Aber was, wenn es einem richtig Spaß macht Räder zu bauen?

Arduino

Falls du ein Interesse für Microcontroller hast, ist Arduino eine tolle Plattform, um Fuß zu fassen. Leider können wir keine Hardware zur Verfügung stellen.

Docs Projekte

Key Value Store / Datenbank

TODO