Ich hatte viele Jahre programmiert, wollte aber ein Diplom, um mich beschäftigungsfähiger zu machen. Nachdem ich bereits einmal die Universität besucht hatte, habe ich mich nicht für ein 5-jähriges Informatik-Hauptfach entschieden, sondern für ein kürzeres, praxisorientierteres Software-Engineering- Programm.
Ich hatte erwartet, dass es mehr um konkrete Fähigkeiten als um Theorie geht, aber ich hatte trotzdem die Idee, dass Universitäten und Professoren es für richtig, formal und akademisch halten. Es ist immer noch Wissenschaft, richtig? Falsch - ich war überrascht, wie schlampig viele IT-Kurse waren.
In einem Einführungskurs in C ++ wurden wir auf Klischees wie "Warum sind Globals schlecht" und "Warum sind Konstanten gut" getestet, nachdem wir nur 1-2 Programme geschrieben hatten. Zufällige Anekdoten ohne richtigen Kontext. Handout enthalten system(pause/cls)
, getch
und Header wie conio.h
und iodos.h
. Eine der Aufgaben bestand darin, "ASCII-Zeichen" von 32 bis 255 zu drucken , wobei ein Screenshot eine solche Tabelle zeigt, die mit der Windows-1252-Codepage gedruckt wurde, ohne jedoch die Codierung zu erwähnen.
Frage : Wenn eine Universität / ein Professor minderwertige und / oder veraltete Werkzeuge und Methoden zu verwenden scheint und die gelehrten Inhalte grenzenlos falsch sind, wie gehen Sie, wenn überhaupt, konstruktiv und respektvoll damit um?
In einigen Antworten wird darauf hingewiesen, dass Sie über die Programmierung hinausblicken sollten, da dies nur ein Werkzeug zum Erlernen von Themen wie Datenstrukturen und Algorithmen ist. Ich stimme dieser Idee zu, aber in diesem Fall steckte kein wirklicher Plan dahinter. Die meisten Kurse würden einfach ein anderes "Werkzeug" ohne viel Hintergrundtheorie oder irgendein "Gesamtbild" unterrichten. Es fühlte sich oft so an, als wären sie schnell zusammengestellt worden, nur um einen solchen Kurs anbieten zu können.
Ich blieb dabei und schloss schließlich ab. Die Qualität blieb durchweg ziemlich niedrig (mit ein paar großen Ausnahmen), und mehrere andere Studenten haben sich darüber beschwert. Wie erwartet habe ich aus persönlichen Projekten und Teilzeitjobs viel mehr gelernt als aus der Schule, aber der Prozess des Schulabschlusses und das Label "Softwareschüler" scheinen auf mysteriöse Weise für sich selbst nützlich zu sein!
Antworten:
Mathematik und Programmierung sind völlig verschiedene Dinge. Mathematik ist Wissenschaft, Programmierung ist Technik. In der akademischen Welt muss man das Programmieren kennen, damit man sich mit den realen Dingen befassen kann, die eigentlich interessant und wichtig sind - Algorithmen.
Wen kümmert es, wenn der Compiler uralt ist und Sie
system
Aufrufe verwenden? Wen interessiert es, wenn Sie Linux und nicht Windows haben? Nun, die Professoren nicht, das ist sicher. Und das sollten sie eigentlich nicht. Erwarten Sie nicht, ein professioneller Programmierer von Kursen in der akademischen Institution zu werden. Dafür gehst du nicht hin.Es ist wahr, dass der Compiler, den er erwartet, dass Sie ihn verwenden, uralt ist, und die Annahme über das Betriebssystem ist anachronistisch und problematisch. Sie können es erhöhen, und vielleicht wird es behandelt. Aber nicht, weil der Kurs nicht mit der Branche vereinbar ist, sondern weil er den Studenten sofort Schwierigkeiten bereitet. Suchen Sie jetzt nach dem alten Compiler und lassen Sie ihn auf Ihrem MacBook laufen ...
Im Allgemeinen sollten akademische Studien nicht mit dem Erlernen von C ++ und Android verschwendet werden, sondern Sie sollten das eigentliche Informatik-Zeug dort erlernen. Dafür bekommst du keine Chance mehr. Android? Laden Sie Eclipse mit dem ADT herunter und beginnen Sie, wie ich, zu Hause, daran zu arbeiten. Ich brauche keine Schule dafür.
Ich denke, dass es nicht in Ordnung ist, von den Universitäten eine technologische Entwicklung zu erwarten. Vor allem nicht die Forschungsuniversitäten. Man kann sagen, dass ein Ort, der nur Junggesellen anbietet, stärker auf die Branche ausgerichtet sein sollte, aber Forschungsuniversitäten - Forscher wollen. Die Professoren suchen angehende Doktoranden und Doktoranden, keine hervorragenden Programmierer. Ich denke, Sie sollten Ihr Erwartungsniveau entsprechend einstellen.
quelle
In der Informatik wird programmiert, was in der Physik für die Tischlerei gilt.
Wenn Sie Schreiner werden möchten, wird ein Physikstudium dies nicht ermöglichen. Es wird Ihnen viele interessante Dinge beibringen, die Sie vielleicht für Ihre Arbeit anwenden können, aber es wird Ihnen nicht beibringen, wie man ein guter Tischler ist. Dazu müssen Sie das Tischlerhandwerk erlernen.
Wenn Sie ein guter Programmierer werden möchten, müssen Sie das Handwerk des Programmierens erlernen . Leider gibt es keine Institution, die irgendeine Art von Zertifizierung ausstellt. Im Grunde genommen müssen Sie dies alleine tun, mit allen Hilfsmitteln, die Sie möglicherweise finden. Für Sie bedeutet dies Wiederholung und Reflexion. Schreiben Sie viel Code und schauen Sie ihn sich dann noch einmal an. Nehmen Sie sich auch Zeit, um den Code anderer Leute zu lesen. Erwägen Sie die Teilnahme an Open Source-Projekten.
Universitäten interessieren sich nicht viel für Programmierung und noch weniger für Details, die sich in den nächsten Jahren ändern werden. Was Sie an Ihrer Schule sehen, ist, dass sie eine Programmierumgebung ausgewählt haben (eine schlechte, aber die ist nicht so wichtig) und sie Ihnen jetzt zeigen, damit sie einen Referenzrahmen haben, in dem sie Ihnen verschiedene Programmiertechniken beibringen können. Man kann argumentieren, dass der Bezugsrahmen schlecht ist und dass sogar die Sprache eine seltsame Wahl ist. Aus ihrer Sicht spielt es wahrscheinlich keine Rolle, weil es ganz willkürlich gewählt wird.
quelle
Es ist nichts Falsches daran, im DOS-Stil zu lernen. Ich bin sicher, dass viele der Oldtimer hier mit DOS oder sogar mit früheren Betriebssystemen, die zeilenbasierte Programme schreiben, angefangen haben und sich gut angepasst haben. Die Computerwelt ändert sich so schnell, dass ich mich nicht an Details wie die verwendete Bibliothek für was aufhängen würde.
Eigentlich vermute ich, dass wir eine Welt voller Programmierer haben, die Ihnen sagen können, was Abhängigkeitsinjektion ist, aber Schwierigkeiten haben , FizzBuzz zu beantworten , weil viele Programmierer nicht viel Zeit auf dieser sehr grundlegenden Ebene verbringen.
Es hört sich so an, als wäre dies eine Einführung in die Programmierung. Machen Sie sich also im Grunde keine Sorgen. Lerne die Grundlagen und du wirst es schaffen. Wenn Sie an anderen Plattformen interessiert sind, erkunden Sie diese auf eigene Faust. Das ist das Tolle an der Programmierung.
quelle
Wie können Sie damit umgehen? Laden Sie Programmier-E-Books oder Streaming-Videos herunter und probieren Sie die Beispiele selbst aus. Verlassen Sie sich nicht auf Ihre Professoren. Das Programmieren selbst ist sehr erlernt.
quelle
Nun, viele Universitäten haben beschissene Programmierprofessoren. Ich besuchte eine der besten Schulen in meinem Land und lernte ziemlich viel im Programmieren. Ich denke, die meisten Unis sind so, weil die wirklich guten Programmierer sich für besser bezahlte Jobs entscheiden (nicht für den Unterricht). Sie sollten ein kleines Projekt aufgreifen und versuchen, es selbst zu codieren. Sie können Tipps aus vielen Foren wie diesem erhalten. Das könnte auf lange Sicht ein besserer Weg sein, um zu lernen.
quelle
Ich denke, dass die Universität abstrakte Konzepte von Programmiersprachen, Algorithmen usw. unterrichten sollte und nicht der Ort sein sollte, an dem Sie Programmieren lernen: Programmieren ist eine sehr praktische Aktivität und Sie können es nur lernen, indem Sie es tun.
Während meines Studiums lernte ich die Grundlagen der Programmierung in Pascal, dann hatte ich ein Projekt in C (wir mussten die Sprache selbst lernen) und dann hatte ich einen Kurs über Programmiersprachenkonzepte (prozedural, objektorientiert, funktional, Logik) . Folklore war, dass Sie unter MSDOS conio.h- oder far-Zeiger haben, die Sie auf einem UNIX-System nicht haben. Dies war das Zeug, über das wir Schüler bei einem Bier diskutierten. Es war nicht etwas, worüber Sie während des Unterrichts diskutierten, weil es nicht so wichtig war. Die universitäre Lehre konzentriert sich auf das Abstrakte, das Allgemeinwissen und vermeidet es, ins Detail zu gehen: Beispiele und Details werden nur zur Veranschaulichung des Allgemeinen vorgestellt.
Das Beispiel, das Sie zu ASCII im Vergleich zu Unicode und der MSDOS-Bibliothek conio.h gegeben haben, bedeutet, dass jede Programmierumgebung ihre eigene Art hat, Dinge zu erledigen und zu organisieren. Wenn Sie in C ++ unter Visual Studio programmieren, müssen Sie andere Bibliotheken verwenden, von denen einige nicht gefunden werden, z. B. unter Linux. Wenn der Kurs in Windows 7 / Visual Studio wäre, könnten sich einige Leute beschweren, dass es besser wäre, dies unter Linux / GCC zu tun. Aber, IMO, das ist nicht der Punkt.
Ich denke also, Sie sollten versuchen, sich nicht von den Details ablenken zu lassen und sich auf die allgemeinen Konzepte zu konzentrieren, die im Kurs behandelt werden. In den meisten Programmiersprachen benötigen Sie beispielsweise eine Bibliothek, um die Konsolen-E / A zu implementieren, und in einer bestimmten Programmierumgebung müssen Sie Ihr Problem mit den verfügbaren Tools lösen. Vielleicht klingt das für Sie ganz offensichtlich und Sie haben den Eindruck, dass Sie nicht wirklich etwas lernen, weil Sie bereits Vorkenntnisse haben (dies kann passieren), aber ich hatte nicht den Eindruck, dass Sie einen schlechten Kurs besuchen.
quelle
Die Universitäten geben die Grundlagen. Sobald es stark ist, können Sie Wolkenkratzer darauf bauen. Ich habe BASIC, C und C ++ während meiner College-Tage gelernt. Als ich später in Visual C ++ projektierte, glaubte ich, dass es eine ganz andere Welt ist. Später erkannte ich den Unterschied zwischen Framework und Languages.
Wählen Sie eine geeignete Universität, an der Sie Ihr gewünschtes Computerfeld gezielt entwickeln können. Welches Ihnen später in Ihrer Karriere helfen kann.
quelle
Ausdrucke voller
system("");
ist eigentlich eine verdammt gute Sache! Ich bin schockiert, dass die Leute heutzutage nichts über diese Funktionen wissen.system("pause")
, und Sie werden alle Fallstricke von getX-Funktionen los.system("cls")
, und Sie haben nur eine Codeseite gespeichert.system("mkdir foo")
und Sie haben gerade 2 Seiten Pufferzuordnungen, Pfadaufteilungen, _makepath_ss, 256 Pfadbegrenzungen, Tonnen von Fehlerausgängen usw. gespeichert.Außerdem ist der Code so einfach, dass ein Affe ihn versteht.
Die Schule der polymorphen Perversionen sollte gesetzlich verboten werden.
PS: Außerdem fällt es mir schwer, bei allem Respekt zu akzeptieren, dass den Leuten C ++ mit Ausnahmen und virtuellem Allem GUT beigebracht wird, weil es mehr Fallstricke und Landminen gibt, als Sie sich vorstellen können, und sogar Bjarne Stroustrup evangelisiert Ausnahmen als etwas super Leichtes und Sicheres, während es sich in Wirklichkeit um eine Atommine handelt.
Siehe Analyse zu Misra-C ++ und JSF-C ++. Und http://blogs.msdn.com/b/oldnewthing/archive/2005/01/14/352949.aspx . Ich bin zu faul, um heute noch alle Artikel zu finden.
Trotzdem bin ich C ++ - Entwickler und ich genieße viele Funktionen und die Sprache als Ganzes.
quelle
Mein Vorschlag mag dort draußen klingen, aber höre mich an ... Wechsle die Majors.
Nach meiner akademischen Erfahrung war der Schwerpunkt Informatik ein sehr tiefer Einblick in das, was Computer zum Ticken bringt. Sie haben mit einer grundlegenden Einführung in C ++ begonnen, um sicherzustellen, dass Sie wissen, was ein Programm ist, und die Grundlagen des Speichers und der Berechnungen hinter dem Programm. Dann haben Sie Baugruppen, Betriebssystemkonzepte, Elektrotechnik, digitales Design usw. usw. gelernt diesen Abschluss und suchen Sie nach Arbeit mit NVidia oder AMD oder Lockheed; An einem Ort, an dem neue Hardware hergestellt wird, braucht es jemanden, der diese Hardware auf einem Niveau versteht, das nicht ausreicht, um die Treiber und die Steuerungssoftware zu schreiben.
Es hört sich so an, als ob Sie einen Studiengang wünschen, der an meiner Universität als Management von Informationssystemen bezeichnet wurde. Das ist der Kurs, dem ich gefolgt bin; Es brachte Programmieren in Java, VB.NET, C # und einigen PHP- und anderen Web-Skripten bei. Es erforderte auch Kalkül (aber nicht in gleichem Maße wie CS), Buchhaltung, Finanzen, Statistiken, Geschäftskommunikation, OO A & D, Datenbankdesign und Systemanalyse. Ich habe einen BBA anstelle eines BS erhalten und hatte die grundlegenden Werkzeuge, um als Windows- oder Web-Software-Entwickler zu arbeiten.
Worauf der Studiengang "Informatik" Sie vorbereitet, hängt stark davon ab, an welcher Universität er angeboten wird. Es hört sich so an, als wären Sie auf einem frühen Weg, einen sehr anachronistischen, einfachen Blick auf Computer zu werfen, der nicht so klingt, wie Sie es von Ihrer Ausbildung erwarten. Ich fordere Sie auf, sich an der Universität umzusehen und einen Studiengang zu finden, der sich mehr auf die Art von Computerarbeit konzentriert, die Sie nach der Schule machen möchten.
Egal was passiert, Ihr Studiengang beginnt mit dem Schreiben eines sehr einfachen Programms auf "Konsolenebene". Die Sprache spielt keine Rolle; Was sie Ihnen beibringen, ist grundlegende prozedurale Programmierung. Wie man in kleinen Schritten denkt, dass der Computer Ihnen von Schritt zu Schritt folgen kann (weil der Computer nichts für selbstverständlich hält und die meisten logischen Sprünge eines Menschen nicht befolgen kann). Von dort aus werden Sie zur objektorientierten Programmierung übergehen (anstatt einer langen Funktion, die alles erledigt, ist es viel einfacher, mehrere kleinere Code- "Objekte" zu haben, die den Zustand und die Logik von Objekten der realen Welt darstellen) ereignisgesteuerte Programmierung ("Rufen Sie uns nicht an, wir rufen Sie an"); Ihr Programm wird im Grunde genommen gestartet und weist das Betriebssystem an, Ihre anfängliche grafische Benutzeroberfläche einzurichten.
quelle
In Informatikkursen lernen Sie nicht das Programmieren. Dies ist ein Spaziergang im Park im Vergleich zu einigen Programmen, die ich in meinem CS-Kurs gemacht habe.
Das grundlegende Problem dabei ist meiner Erfahrung nach, dass es so gut wie keinen Ort gibt , an dem Sie das Programmieren auf gleichem Niveau erlernen können. Sie haben also überhaupt keine Wahl.
quelle
Ich denke, es kann einige Verwirrung darüber geben, was und warum Sie studieren.
Es scheint, als würden Sie ein einführendes Informatikprogramm studieren. Dies richtet sich an Personen mit minimaler Erfahrung, die die Grundlagen für die Arbeitsweise von Computern auf niedrigem Niveau erlernen.
Es scheint auch, dass Sie ein semi-seriöser oder professioneller Programmierer sind. Sie programmieren seit 10 Jahren und beherrschen 3 Sprachen. Es hört sich so an, als ob Sie wissen, was Sie tun, um als Teil eines Teams zu arbeiten. Fühlen Sie sich in diesem Kurs fehl am Platz? Haben die anderen Schüler eine ähnliche Erfahrung oder Fertigkeit wie Sie?
Was haben Sie vor, um aus diesem Kurs herauszukommen?
Bist du gerade hinter diesem Stück Papier her? Wenn dies der Fall ist, hören Sie nicht auf, einen Job zu suchen, während Sie studieren. Bewerben Sie sich, sagen Sie ihnen, dass Sie ein kompetenter Programmierer sind und Sie studieren, weil Sie das Blatt Papier brauchen, um einen Job zu bekommen. Wenn sie dich einstellen, dann denk darüber nach, auszusteigen - wenn du einen professionellen Job hast, brauchst du dieses Stück Papier wirklich nicht mehr. Akzeptieren Sie einen niedrigeren als den normalen Lohn, weil es besser ist, für das Lernen (am Arbeitsplatz) bezahlt zu werden als für das Lernen in der Schule - und Sie werden auch schneller lernen. Nach ein oder zwei Jahren sind Sie meistens auf dem neuesten Stand. Dann können Sie eine angemessene Gehaltserhöhung verlangen oder sich einen anderen Job suchen, weil Sie Erfahrung haben.
Oder versuchst du etwas zu lernen? Dann hören Sie auf, Ihren Professor zu beurteilen. Wie ein denkwürdiger Gymnasiallehrer, der sagte: "SETZEN SIE SICH UND SCHLIESSEN SIE." Es ist fast garantiert, dass der Professor unermesslich mehr Erfahrung und Wissen hat als Sie, und Sie könnten eine Menge von ihm lernen. Wenn er zu langsam für Sie ist, versuchen Sie, diese Einführungskurse auf der Grundlage Ihrer bisherigen Kenntnisse und Erfahrungen zu würdigen.
Aber bist du auf dem richtigen Weg? Sie könnten auch viel von einem Literaturprofessor oder einem Geschichtsprofessor lernen ... nicht besonders relevant. Vielleicht möchten Sie nicht "Informatik", sondern mehr praktische, "reale" Fähigkeiten. Probieren Sie 'Software Engineering'. Schauen Sie sich andere Institutionen für einen fokussierteren Kurs an.
Genau wie bei einem neuen Job kann es sehr schwierig sein, eine Klasse oder einen Studiengang von außen zu überprüfen. Sie scheinen sich in einem Kurs zu befinden, der Ihnen nicht das bietet, was Sie erwarten. Überdenken Sie Ihre Optionen.
quelle
Ich fand viele Antworten auf diese Frage enttäuschend. Sie gingen zurück auf die müde alte Auseinandersetzung über CS vs. Programmierung usw. Das mag sein, aber es klingt für mich so, als würde der Kurs, den das OP anbietet, auch nicht unterrichten.
Ich war in der Situation, bereits als Programmierer gearbeitet zu haben, und habe ziemlich viel allein studiert, bevor ich CS in Teilzeit am College studierte. Ich habe mich sorgfältig umgesehen, aber im Allgemeinen empfand ich den Lehrplan als Zeitverschwendung. Außerdem ließen sie mich keine Kurse auslassen, obwohl ich bereits Berufserfahrung in der Gegend habe.
Nach meiner Erfahrung ist ein erheblicher Teil der Professoren ziemlich faul und verwendet einen veralteten Lehrplan. Ehrlich gesagt klingt es so, als würden Sie Ihre Zeit verschwenden. Ich frage mich sogar, ob der Abschluss des Diploms Ihnen bei der Arbeitssuche hilft.
Ich bezweifle, dass Sie viel tun können, um etwas an Ihrem Kurs zu ändern. Sie können es entweder mit dem Studium selbst ergänzen. Oder vergessen Sie einfach das Ganze und lernen Sie selbständig CS und machen Sie auch einige Branchenzertifizierungen.
Ich möchte hinzufügen, dass ich keine Ahnung habe, welchen Stellenwert das Diplom auf dem Arbeitsmarkt Ihres Landes hat. Wenn das Diplom selbst trotz des Inhalts wertvoll ist, müssen Sie sich möglicherweise nur mit einem etwas fehlenden Lehrplan abfinden.
quelle
Sie müssen sich um die Schüler kümmern. Die meisten Schüler können nicht programmieren. Sie sind also nicht gezwungen, sich dort technisch zu betätigen.
Sie haben auch ihre eigenen Forschungsgebiete, aber das lehren sie nicht. Und trotzdem sind viele Forscher keine guten Lehrer, also können Sie sich glücklich schätzen, wenn sie Dinge unterrichten, die Sie bereits kennen!
Wie auch immer, Sie scheinen nicht zu wissen, was Informatik ist. Es geht nicht darum, was für die Industrie praktisch ist.
quelle
Ich würde Sie bitten (und darauf bestehen), Ihre Aufgaben in Standard-C ++ zurückzugeben. Dies ist völlig zumutbar, da Sie die Aufträge sonst nicht ausführen können.
Was den schlechten Stil betrifft; es wird unvermeidlich etwas davon geben, um damit anzufangen. Das Erlernen der ordnungsgemäßen Verwendung der io-Standardbibliothek erfordert einige erweiterte c ++ - Funktionen, insbesondere Vorlagen und Iteratoren. Ich kann verstehen, warum Sie ein Dozent dazu bringen würde, zunächst sehr einfache io-Funktionen zu verwenden. Ich hätte keine Angst, danach zu fragen, es zeigt Begeisterung und ein bisschen Licht in Ihren Augen. Ihr Dozent sollte in der Lage sein, Ihre Frage in eine zukünftige Vorlesung zu integrieren, in der Sie (hoffentlich) Ihre ersten Übungen korrigieren.
Ich würde es dabei belassen. Obwohl c ++ eine plattformunabhängige Sprache sein kann, ist dies häufig nicht der Fall. Das Erlernen einiger Windows-Systemfunktionen ist keine schlechte Sache, insbesondere, wenn Sie sich dann anhand des Standards darin üben. Sie werden irgendwann auf den
conio.h
Code anderer Leute stoßen - und es ist gut zu wissen, was er tut.quelle