Vorbereitung Studium



  • volkard schrieb:

    Xin schrieb:

    volkard schrieb:

    Xin schrieb:

    Wenn Du in 4-5 Monaten einen Taschenrechner mit GUI in C oder C++ programmiert hast, der folgende beiden Aufgaben korrekt ausrechnet geb ich Dir ein High-Five:
    a) 1+2*3
    b) (1+2)*3

    *lach*
    Da erwarte ich ein wenig mehr Fortschritt.

    Es verlangt ein grundlegendes Verständnis von Datenstrukturen,

    Ein rekursiver Abstiegsparser braucht genau 0 Datenstrukturen.

    Wenn er den alleine mit Pointern auf den Eingabetext hinbekommt, hat er eine Datenstruktur, die ein (char ) enthält und eine Funktion, die die Länge des Tokens bestimmt, auf das eben dieses (char) zeigt.

    Es ist eine einfache Datenstruktur, aber es ist eine. Und der darf man auch ruhig einen Namen geben und dafür ein struct drumrumschreiben. Und wenn er das Problem so lösen kann - als jemand, der Null Ahnung vom Programmierung hat - dann hat er in jedem Fall schon was gelernt.

    volkard schrieb:

    Xin schrieb:

    braucht die Anbindung von Libraries, um die GUI zu gestalten

    Nu sind wir auf dem Nivau, in Word den Drucken-Knopf zu finden. Zum Glück halte ich GUI zunächst für irrelevant.

    Du findest das Anbinden von Librarys irrelevant? Oder dürfen nur Libs angebunden werden, die das volkard-Relevanz-Siegel erhalten haben?
    Die GUI dient nicht dazu besonders relevant zu sein, sondern um sich mit Libraries zu beschäftigen und zwar in einer Form, wie es Anfänger in der Regel interessiert. Das sind gerne GUIs. Um GUIs irrelevant zu finden, muss man auch mal eine geschrieben haben, um zu erkennen, dass das, was man mit der GUI steuert, der relevante Code ist und man eine GUI bei Bedarf aus dem Ärmel schütteln kann.
    Trotzdem ist die erste GUI immer auch ein sichtbares Erfolgserlebnis, weil das Fenster nunmal für den Normalsterblichen das Zeichen für ein laufendes Programm ist.
    Spaß und Motivation sind vollkommen unabhängig davon, was Du oder ich als relevant empfinden.

    volkard schrieb:

    Xin schrieb:

    Es geht also auch schon in den Bereich von Software-Architektur.

    Nö, beim besten Willen nicht. Es geht ein wenig in die Richtung gamecoding und das macht mir Angst.

    Gamecoding? Ich verstehe die Aussage hier nicht. Ein Spiel ist eine stinknormale Anwendung?!

    volkard schrieb:

    Xin schrieb:

    Er muss sich in die IDE einarbeiten oder ein Make-Skript schreiben...

    Hoffentlich kann er schon Word, dann spart er siech viel Arbeit.

    Der Gedanke, dass jemand sich in irgendetwas Neues einarbeiten muss und dafür eine gewisse Zeit benötigt, um sich zu orientieren, liegt Dir nicht sonders, oder?

    volkard schrieb:

    Xin schrieb:

    Wenn man sich ausschließlich raussuchen lässt, was man für den Taschenrechner braucht, geht das schneller.

    Dann nimmt er den neuen Struppi als Erstbuch, sein Taschenrechner ist wie immer drin und neuerdings auch GUI.

    Wenn er das Buch soweit gelesen, verstanden und nachvollzogen bekommt spricht da absolut nichts gegen.

    volkard schrieb:

    Xin schrieb:

    Wenn er die Sachen raussucht, wird er auf dem Weg zum Taschenrechner mehr lernen.

    Wenn er als Ziel den Taschenrechner hat, verschwendet er seine Zeit.

    Was soll er denn Deiner Meinung nach in 4-5 Monaten erreichen? Ein eigenes Betriebsystem? Ohne GUI natürlich...

    Ein Taschenrechner ist für jemanden ohne Ahnung ein herausforderndes Ziel. Er wird bis zur Rente vermutlich noch ein paar weitere Ziele finden, aber auf dem Weg dahin einen Taschenrechner selbst entwickelt hat, ist das eine schöne Übungsaufgabe für den Einstieg.



  • Xin schrieb:

    Ein rekursiver Abstiegsparser braucht genau 0 Datenstrukturen.

    Wenn er den alleine mit Pointern auf den Eingabetext hinbekommt, hat er eine Datenstruktur, die ein (char ) enthält und eine Funktion, die die Länge des Tokens bestimmt, auf das eben dieses (char) zeigt.
    [/quote]

    struct (Struktur) mit Daten drin != Datenstruktur (zumindest im allgemeinen Informatik-Sprachgebrauch)



  • Jester schrieb:

    Xin schrieb:

    Wenn er den alleine mit Pointern auf den Eingabetext hinbekommt, hat er eine Datenstruktur, die ein (char ) enthält und eine Funktion, die die Länge des Tokens bestimmt, auf das eben dieses (char) zeigt.

    struct (Struktur) mit Daten drin != Datenstruktur (zumindest im allgemeinen Informatik-Sprachgebrauch)

    Kinners... wollen wir wirklich jeden Furz hier ausdiskutieren. Hilft es dem Threadstarter, wenn ihr versucht mich hier in so einem Sch... zu wiederlegen?

    Wikipedia schrieb:

    In der Informatik und Softwaretechnik ist eine Datenstruktur ein Objekt zur Speicherung und Organisation von Daten. Es handelt sich um eine Struktur, weil die Daten in einer bestimmten Art und Weise angeordnet und verknüpft werden, um den Zugriff auf sie und ihre Verwaltung effizient zu ermöglichen.

    Datenstrukturen sind nicht nur durch die enthaltenen Daten charakterisiert, sondern vor allem durch die Operationen auf diesen Daten, die Zugriff und Verwaltung ermöglichen und realisieren.

    Struct + Funktion. Die weitere Implementierung ist die Rekusion.
    Fertig ist die Laube oder wollen wir noch ausdiskutieren, ob und wo sich der Begriff Operation sich von Funktion unterscheidet?

    @Threadstarter: Informatiker sind auch immer irgendwo Korinthenkacker. Da gehöre ich auch zu. Das braucht man auch, um programmieren zu lernen. Was man zum Lernen nicht braucht sind Leute, die alles 1000%ig genau nehmen. 100% reichen auch. Und beim lernen muss auch nicht alles beim ersten Anlauf 100%ig sein.



  • Und es gibt auch Leute, die nennen sich Informatiker und wissen nicht was eine Datenstruktur ist. Und ja da drauf zu zeigen und zu sagen "nein, das ist keine erste Erfahrung mit Datenstrukturen" wenn man ein struct gebaut hat, ist hilfreich. In der Datenstrukturen-Vorlesung werden nämlich (oh wunder) keine structs gebaut. Sowas kann ich einfach nicht unwidersprochen stehen lassen, weil ich denke, dass es dem Threadersteller nicht hilft (im Gegenteil schädlich ist), wenn er glaubt dass Datenstrukturen structs sind.



  • ...



  • LaksanSan schrieb:

    Zum Wintersemester 2014 werde ich ein Informatikstudium an der TU Dortmund beginnen. Ich bin mir ziemlich sicher, dass diese Richtung genau das Richtige für mich ist, obwohl ich wenig bis keine Ahnung von Programmieren habe.
    Mit Mathematik hatte ich schon in der Oberstufe keine Probleme.

    Ich habe schon von vielen Informatikern gehört, dass der Wille zum Lernen genüge, sofern auch Interesse für das Fach vorhanden ist. Es soll also möglich sein bei 0 anzufangen.

    Da ich jetzt noch 4-5 Monate nichts zu tun habe, wollte ich die Zeit nicht bei LeagueofLegends abspielen, sondern wollte wissen, mit was ich mich beschäftigen kann um den Einstieg in das Studium zu erleichtern.
    Ich halte es jedoch für eine schlechte Idee, mich einfach blind an irgendeine Programmiersprache zu wenden, anzufangen Befehle auswendig zu lernen.
    Vielleicht kann mir jemand weiterhelfen... ich wäre natürlich bereit, mich mit c#, c++ java und co. zu beschäftigen, wenn mir das einer raten sollte.

    4-5 Monate Zeit - Was kann ich tun?

    Ich habe auch an der TU Dortmund studiert. Vorher habe ich mich auch verrückt gemacht. Mein Tipp: Entspanne dich. Nimm dir ganz fest vor zu jeder Vorlesung zu gehen, nicht mit den "Laptop-Zockern" in der letzten Reihe zu sitzen und wirklich die Inhalte zu lernen (Jede Stunde Vorlesung braucht mindestens 2 Stunden Nacharbeit).Versuche alles so gut zu verstehen, dass du es jemand anderem erläutern könntest. (Mir hat es viel geholfen von jedem Kapitel der Vorlesungen Zusammenfassungen zu schreiben, PER HAND!!! und nicht in die Tastatur hacken. Für eine Zusammenfassung muss man nachdenken, was wohl wichtig ist und wie die Zusammenhänge sind. Ich hatte am Ende von jeder Vorlesung einen Ordner mit handgeschriebenen Din-A4 Seiten.) Mach die Übungen. Geh wirklich zu jeder Übungsstunde hin. Mach die erste Prüfung die jeweils angeboten wird. Die Nachprüfung ist immer X-mal schwerer, auch wenn man mehr zeit zum lernen hatte. Konzentriere dich auf DAP1 (heißt das noch so?) und die Mathe Vorlesungen. Und mach keinen Stress vorher. Eventuell etwas Java lernen. Aber alles andere als "Super-Duper" Vorbereitung vor dem Studienbeginn ist nur Stress, der nichts bringt. Du kannst in etwa inclusive den Vorlesungsstunden mit einer 40-Stunden Woche an Arbeit rechnen (Lernen, Übungen etc.).
    Kein Computerspiel anfangen! Zwei Kollegen sind an WoW und einer an einem Spiel das Drulswars oder so in etwa hieß gescheitert.

    Möglicherweise bring es was, sich schon mal den Campus anzusehen. Mal in die Mensa zu gehen und sich auch "wohl zu fühlen". Und nein!!! Nicht zu viel Zeit im "Spunk" (Studentenkneipe im nahen Studentenwohnheim) verbringen.

    ...Und glaub nicht, dass du im Grundstudium viel mit einem Computer zu tun bekommen wirst, außer in den Praktika (Die als Quasi "Größere-Gruppenübung" an der Uni Stattfinden). Nahezu alles ist Stift und Papier bezogen. (Es könnte sein, dass ein Java-Anteil in die Veranstaltung "DAP 1" hinzugefügt wurde)

    Eventuell kannst Du mal darüber nachdenken welches "Nebenfach" dir Spaß macht. So weit ich weiß wählt man immer noch ein Nebenfach um kein "Fachidiot" in der Informatik zu werden. Und auch wenn viele sagen: "Ja es wird Informatik bezogen sein". NEIN! Es ist nahezu eigenständig ohne Berührungspunkte zur Informatik.

    Und keine Panik in den ersten Vorlesungen bekommen. Du wirst denken "Das ist unmöglich, so viel zu lernen". Doch es wird gehen! Wenn eine schriftliche Prüfung anliegt ist es wichtig die Übungen zu können. Natürlich auch abgewandelte Aufgaben erwarten. Hier muss man nicht unbedingt alles aus dem Skript bis ins Details erläutern können. Bei mündlichen Prüfungen ist das Skript wichtiger. Hier die Zusammenhänge erläutern können und nicht nur "ein paar Fakten auswendig lernen".



  • Zuerst mal danke an die ganzen Antworten. Ihr habt mir, auch wenn ihr es vielleicht nicht glaubt, sehr geholfen.
    @Andreas XXL du hast mir echt verdammt Mut gemacht 😃

    In 3-4 Monaten einen Taschenrechner programmieren zu können, wird vielleicht nicht möglich sein. Darauf werde ich es jetzt aber auch nicht anlegen. Ich denke mir nicht "Ich muss in 3-4 Monaten diese Aufgabe erfüllen können".

    Stattdessen denke ich, es ist gut mit einem Grundlagenbuch zu arbeiten.
    Ein Bekannter von mir hat noch ein Buch für die Grundlagen von Programmiersprachen (glaube in Bezug auf Java). Ich lese mich einfach mal in das Fach ein und sehe dann wie weit ich komme.
    Es kann ja sein, dass ich doch noch ein High-Five von Xin bekomme 🙂
    Viel Stress mache ich mir dadurch also nicht.


  • Mod

    LaksanSan schrieb:

    In 3-4 Monaten einen Taschenrechner programmieren zu können, wird vielleicht nicht möglich sein. Darauf werde ich es jetzt aber auch nicht anlegen. Ich denke mir nicht "Ich muss in 3-4 Monaten diese Aufgabe erfüllen können".

    Doch. Das kannst du jetzt nicht einschätzen, aber einen einfachen Taschenrechner kannst du nach ein paar Wochen, einen Taschenrechner wie hier im Thread diskutiert nach spätestens 2 Monaten. Daher war volkards erste Reaktion zu dem Vorschlag auch, dass er nach 4-5 Monaten mehr erwartet. Nach 4-5 Monaten solltest du über so eine Aufgabe nur müde lächeln. Wenn es nicht so ist, solltest du dir Sorgen machen. Nach 4-5 Monaten solltest du selbst eine schwere Sprache ziemlich gut beherrschen und - was noch viel wichtiger ist - allgemeine Kompetenz in Sachen Programmierung erworben haben. Das heißt, du hast sowohl ausgiebig Erfahrung mit den häufig vorkommenden Problemen und deren Lösung haben* (was es dir ermöglicht, solch ein Problem selber zu lösen) und solltest auch in der Lage sein, selbstständig Informationen zu bisher unbekannten Problemen zu finden (damit man nicht das Rad zum 32324ten Mal neu erfindet. Der Taschenrechner ist ein gutes Beispiel dafür). Wenn du hier im Forum aktiv bist, solltest du nach 4-5 Monaten zu den Personen zählen, deren Beiträgen man im jeweiligen Fachforum (positive) Beachtung schenkt.

    *: Beim Lösen einer neuen Problemstellung zerlegen viele Programmierer das Problem in Teile, die sie schon kennen und in Teile, die sie noch nicht kennen. Man glaubt es als Außenstehender kaum, aber geschätzt 95% der meisten Problemstellungen bestehen aus altbekannten Teilproblemen. Ein guter Programmierer hat dann seinen Baukasten im Kopf, mit ihm schon bekannten Lösungen für diese Teilprobleme. Somit kann er sich mehr auf die interessanten 5% konzentrieren. Diese Bausteine einer Problemlösungsstrategie reichen von scheinbar trivialen Sachen, die man nach einer Woche Programmieren kennt ("Um eine Kette vollständig abzuarbeiten, geht man von vorne nach hinten vor") bis hin zu Vorgehensweisen in Themengebieten, auf die man sich spezialisiert hat ("Eine einfache Möglichkeit zum Parsen einer LL(k)-Grammatik ist ein rekursiver Abstieg" - um das Taschenrechnerproblem mal hochgestochen zu formulieren).



  • Andreas XXL schrieb:

    Nimm dir ganz fest vor zu jeder Vorlesung zu gehen, nicht mit den "Laptop-Zockern" in der letzten Reihe zu sitzen und wirklich die Inhalte zu lernen

    Alleine durch Anwesenheit sicher zu sein, welche Überschriften in der Vorlesung genannt werden ist schon die halbe Miete. Das möchte ich so einfach nochmal unterschreiben.
    Auch wenn man einer Vorlesung fernbleiben darf - man kann den Stoff nie so gut nacharbeiten, als wäre man da gewesen.

    Andreas XXL schrieb:

    Und keine Panik in den ersten Vorlesungen bekommen. Du wirst denken "Das ist unmöglich, so viel zu lernen". Doch es wird gehen!

    Die Prüfungen haben sich meist als einfacher rausgestellt, als die Vorlesung vermuten ließe. Meistens. ^^

    Um aus dem Studium maximalen Nutzen für Dich zu ziehen, bleibt mein Rat jedoch, Dich mit C zu beschäftigen, um besser mit der Frage umgehen zu können, wie man abstrakte Konstrukte maschinengerecht ausdrücken kann.

    LaksanSan schrieb:

    In 3-4 Monaten einen Taschenrechner programmieren zu können, wird vielleicht nicht möglich sein.

    Ist es.

    LaksanSan schrieb:

    Viel Stress mache ich mir dadurch also nicht.

    Brauchst Du Dir auch nicht zu machen. Es ist trotzdem möglich. Ich empfehle mal einfach meine Seite (s.u.) und Dich dort in C einzulesen. Du lernst dort nicht perfekt C, aber hoffentlich ein Verständnis dafür, warum eine Maschine Dinge berechnet.
    Ich denke praktisch. Ich will wissen, warum man mir ein abstraktes Konstrukt präsentiert. Wenn ich das verstehe, verstehe ich das Konstrukt. Verstehe ich die Notwendigkeit für ein Konstrukt nicht, habe ich mehr Lernaufwand.


  • Mod

    Xin schrieb:

    LaksanSan schrieb:

    Viel Stress mache ich mir dadurch also nicht.

    Brauchst Du Dir auch nicht zu machen. Es ist trotzdem möglich. Ich empfehle mal einfach meine Seite (s.u.) und Dich dort in C einzulesen. Du lernst dort nicht perfekt C, aber hoffentlich ein Verständnis dafür, warum eine Maschine Dinge berechnet.

    Xin, deine Seite ist neulich mal als Quelle im C-Forum aufgetaucht, bei einem Fragesteller, in dem ich zunächst ein Jürgen-Wolf-Opfer™ vermutet hatte. Das Tutorial dort ist ... nicht so gut. Um das mal höflich auszudrücken. Ich würde das auf gar keinen Fall weiter empfehlen, bevor das nicht gründlich überarbeitet wurde von jemandem, der sich wirklich auskennt.

    Ich wollte den Autor eigentlich drauf ansprechen, war mir aber nicht sicher, wer der Autoren auf deiner Seite das C-Tutorial verfasst hat. Und irgendwie ist die Sache dann in Vergessenheit geraten. Aber jetzt, wo du es explizit empfiehlst, muss ich einschreiten.
    (Dies ist kein Gebashe ohne Grundlage. Ich habe mir das Tutorial angeguckt und viele konkrete Fehler gefunden. Aber es gehört nicht hierher und wäre auch viel zu umfangreich, die hier im Thread alle zu nennen.)



  • LaksanSan schrieb:

    Ein Bekannter von mir hat noch ein Buch…

    Bist Du bekloppt? Die allermeisten Programmierbücher sind schlecht.

    Ein schlechtes Buch am Anfang braucht 32 Bücher später, um die Schlechtigkeiten auszutreiben. Und Du verlierst Jahre. Deppenkind und so wirst Du genannt werden.

    Deine Eltern haben Dir ein gutes Buch gefälligst zu bezahlen. Fertig. Basta.

    Wenn sie jetzt dahingehend rumzicken, sollen sie sich sich mal Gedanken machen, OB sie Dein Studium bezahlen werden, das sind nämlich viele Monate mit viel mehr Ausgaben.



  • SeppJ schrieb:

    Xin, deine Seite ist neulich mal als Quelle im C-Forum aufgetaucht, bei einem Fragesteller, in dem ich zunächst ein Jürgen-Wolf-Opfer™ vermutet hatte. Das Tutorial dort ist ... nicht so gut. Um das mal höflich auszudrücken. Ich würde das auf gar keinen Fall weiter empfehlen, bevor das nicht gründlich überarbeitet wurde von jemandem, der sich wirklich auskennt.

    proggen.org ist eine Mitmachseite. Jede Seite steht jederzeit zur Diskussion und Kritik ist erwünscht, denn sie trägt zur Verbesserung der Tutorials bei. Die Seiten sind auch nicht statisch, sondern es ist ein Wiki, damit die Seiten überarbeitet werden.

    Das Tutorial ist alles andere als perfekt, allerdings erhalte ich vorrangig positives Feedback, auch von Leuten, die sich auskennen (sollten), wie auch von Anfängern, die schwierige Kapitel als verständlich beschrieben.
    Das ist sehr schön, trotzdem wird es weiter überarbeitet werden und dafür brauche ich eben auch negatives Feedback.

    Ich empfehle es, weil dort einige Dinge expliziter ausgearbeitet und beschrieben sind, als in den mir bekannten Fachbüchern und Tutorials und ich bei Tutorien gemerkt habe, dass das Verständnis häufig genau da streikt. Ohne Tutor sitzt man dann mit einem Buch oder Tutorial alleine da.
    Dafür fehlen allerdings auch Teile. Das Tutorial soll den Einstieg bringen, es soll den Leser nicht zum allwissenden C-Fachmann werden lassen, er soll lediglich in der Lage sein, damit in eigene Programme starten zu können.

    Für alle folgenden Fragen, haben wir ebenso ein Forum, das lange nicht so gut besucht ist, wie c++.de, aber trotzdem eher positiv hervorgehoben wird. Mit den dort gestellten Fragen passen wir das Tutorial dann ebenfalls weiter an.

    SeppJ schrieb:

    Ich wollte den Autor eigentlich drauf ansprechen, war mir aber nicht sicher, wer der Autoren auf deiner Seite das C-Tutorial verfasst hat. Und irgendwie ist die Sache dann in Vergessenheit geraten. Aber jetzt, wo du es explizit empfiehlst, muss ich einschreiten.

    Ich bin der Autor (zumindest der meisten Seiten). Ich bin offen für jegliche (konstruktive) Kritik und würde mich freuen, wenn Du mir per Mail oder auch öffentlich im Forum auf proggen.org mitteilst, was Dir konkret als Fehler aufgefallen ist. Da brauchst Du auch nicht höflich zu sein.

    Wir hatten kürzlich eine ähnliche Kritik, leider ohne dass derjenige irgendetwas konkret ansprach. Wenn Du da konkreter werden möchtest, werde ich da sicher drauf eingehen und die Seiten anpassen, bzw. begründen und zur Diskussion stellen, warum ich Dinge beschrieben habe, wie ich es getan habe.



  • ...



  • - Java lernen
    - Paar Basics anlesen wie eine CPU funktioniert und ein Rechner grob aufgebaut ist.
    - Ein bischen mit Logik vertraut machen. (Gut & Einfach: http://www.amazon.de/Logical-Reasoning-A-First-Course/dp/095430067X )
    - Grundlagen Lineare Algebra & Analysis
    - Linux installieren und etwas mit der Kommandozeile spielen

    Wobei die ersten 3 wichtiger sind aber ne Linux-Lehrveranstaltung hat man eigentlich immer in den ersten 2 Semestern.

    Unis sind deutlich mathelastiger, FHs deutlich programmierlastiger.


Anmelden zum Antworten