|
|
Allg. Infos |
Projektmotivationen: "niCE"Inhalt
Alle Lernwilligen und Interessierten oder auch User vorab WILLKOMMEN.
Sie sind hier auf der einführenden Seite des Projekts "new insignificant
COMPRESSION ENGINE" gelandet. Allgemein:Um zu erklären, warum dieses Projekt entstand, muss zuerst beschrieben werden, wer wir sind: alle Teammitglieder besuchen eine Fachhochschule für Elektronische Informationsdienste (eig. Informatik, nur klingt EID viel professioneller). Im Zuge dieser Ausbildung findet auch jedes Jahr der Gegenstand "IT-Projektmanagement" statt, in welchem sich die Studenten ein Projekt selbst wählen müssen und dies im Rahmen der Lehrveranstaltung betreuen müssen. Im Semester 2000/2003 riefen wir deshalb das Projekt niCE (new insignificant Compression Engine) ins Leben. Dieses Projekt verfolgt jedoch nicht das ehrgeizige Ziel, die Welt der Datenkomprimierung zu revolutionieren (wer auf dieser Seite etwas derartiges sucht, dem werden wohl andere Seiten mehr zu bieten haben), sondern sollte lediglich dazu dienen, die aus den Fächern Informatik (C-Programmierung), Projektmanagement und Telekommunikation (Komprimierung) vermittelten Grundlagen praktisch zu vertiefen. Dabei hoffen wir auch in späterer Folge anderen Studenten und Interessierten eine hilfreiche Referenz zu genannten Themen zur Verfügung zu stellen. Die graue Theorie soll so spielerisch leicht erlernbar und umsetzbar sein soll, und kein trockenes Lernen. Informatik (C-Programmieren):Da wir beim Entstehen des Projekts gerade das 2.Semester besuchten und im 1.Semester die C-Programmierung kennen lernen durften (?? mussten ???), war ein Kriterium für unser Projekt, dass es in C umgesetzt werden sollte und die Grenzen unseres bisherigen C Wissens erweitern sollte und vor allem auch wirklich umsetzbar sein. Außerdem war uns wichtig - da wir von Anfang an planten, den Quellcode zu veröffentlichen - besonders übersichtlichen, leicht zu lesenden Code zu produzieren (und deshalb auch einen "Styleguide" erstellten). Weiters sollte erwähnt werden, dass unser Programm keine graphische Oberfläche oder dergleichen besitzt, sondern ein reines Konsolenprogramm ist. Zu finden sind in unserem Code deshalb Beispiele zum Erstellen, Traversieren (Durchlaufen), Löschen von Bäumen (wir haben eigentlich relativ oft dynamische Datenstrukturen verwendet (nicht nur Bäume)), Bitmanipulation, Argumente aus der Eingabeaufforderung abarbeiten, und so weiter ... Das heißt, dass wir hier nicht ein weiteres Tutorial zur Verfügung stellen möchten, das C von Grund auf erklärt, sondern praktische Umsetzungen der Möglichkeiten in C aufzeigt. Links zu "Programmieren"
Projektmanagement:Jetzt wo Sie im vorangehenden Absatz gelesen haben "2.Semester", werden Sie wohl denken, was soll ich hier lernen - vor allem, wenn Sie selbst schon an einigen Projekten mitgearbeitet haben. Dieser Abschnitt ist auch NICHT gedacht für professionelle Projektmanager und versucht auch nicht das umfangreiche Thema des Projektmanagements von oben nach unten theoretisch aufzurollen. NEIN, wir haben uns lediglich bemühen zu beschreiben wie wir unser Projekt umgesetzt haben. Dies war in erster Linie dazu gedacht uns selbst bei kommenden Projekten, die Arbeit zu erleichtern, da wir somit schon die einzelnen Tätigkeiten des PM zusammengefasst hätten, um uns nicht erneut von vorne mit dieser Materie beschäftigen zu müssen. Aus dieser Motivation könnte das Projekt natürlich auch für andere interessant sein, die kleinere Projekte verwirklichen wollen/müssen und dabei noch nicht den Grad an Organisation erreicht haben, den sie sich eventuell wünschen oder sich einfach nur ansehen möchten wie gut/schlecht wir das Ganze aufgezogen haben. Dabei werden wir unsere einzelnen Projektschritte allgemein erläutern und unser Projekt manchmal als Beispiel heranziehen. Alle Schritte von Projektdefinition bzw. Voranalyse bzw. Machbarkeitsanalyse, Analyse des Projekts allgemein (was soll eig. erreicht werden?), Pflichtenheft, usw. werden dabei behandelt. Genaueres dazu finden Sie jedoch in der Projektmanagementdoku. Links zu "Projektmanagement"
Kompression:Kurz erklärt: ??? Was ist Kompression ??? Kompression beschreibt den Versuch Datenmengen zu verkleinern (für eine nähere Beschreibung siehe KompressionsBasics). Huffman-AlgorithmusIm Zusammenhang, damit dass wir vor unserem Projekt Baumstrukturen als Datentypen nur theoretisch gehört hatten, war für uns ziemlich schnell klar, welche Kompressionsverfahren wir umsetzen wollten: Huffman Codierung. Dabei wird versucht, den Umstand auszunutzen, dass z.B. in Texten manche Buchstaben öfters vorkommen als andere. Bei normaler Textkodierung wird aber für jeden Buchstaben gleich viel Speicherplatz verwendet, um das Hantieren mit den Buchstaben zu erleichtern, da man bei fixer Länge genau weiss, an welcher Speicherstelle ein Buchstabe aufhört und ein anderer beginnt. Für nähere Informationen möchte ich wieder auf die Progammdoku verweisen. LauflängenkodierungAußerdem verwenden wir bevor wir den Huffman-Algorithmus anwenden, auch noch die
Lauflängencodierung (engl. run-length-coding) - eine sehr
simple Kompressionsart. Dabei wird ausgenutzt, dass Buchstaben manchmal
mehrmals direkt hintereinander vorkommen. Kleines Verständnisbeispiel (ACHTUNG: ziemlich vereinfacht und lässt
einige Dinge außer Acht): Soviel zum Thema Kompression / Telekommunikationsteil als ersten Überblick und Hinweis was Sie an praktischer Umsetzung auf diesen Seiten erwartet. Links zu "Komprimierung"
Sonstiges:Da wir diesen Teil unserer Seite als auch Linksammlung verwenden wollen, müssen wir hier natürlich auch jene Links anbringen, die in keine der oben genannten Kategorien passt. Unter diesen Links befinden sich verweise, die uns während dem Projekt untergekommen sind und die wir als sehr hilfreich empfunden haben, bzw. einfach nur der Meinung waren, dass sich dahinter gute Seiten befinden. Links zu "Sonstiges"
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||