Universität lehrt DOS-Stil C ++, wie man damit umgeht

19

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), getchund Header wie conio.hund 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!

Toerndev
quelle
2
Aufgrund meiner eigenen Erfahrung lernst du besser, schneller und billiger, indem du selbst Programmierkenntnisse erlernst und Hilfe von Foren erhältst. Es ist nicht ungewöhnlich, dass der Lehrplan der Universität veraltet ist. In Russland wird Pascal immer noch an einigen Universitäten unterrichtet (obwohl ich die Sprache mag und das nicht als ganz schlecht betrachte).
WKS
@WKS: Ich denke, Pascal ist eine sehr gute Unterrichtssprache zum Erlernen von Prinzipien (der prozeduralen Programmierung), die überhaupt nicht veraltet sind. Universitätskurse sollten keine Zeit mit dem Unterrichten einer bestimmten Programmiersprache verschwenden, sondern Paradigmen vermitteln (prozedural, objektorientiert, funktional, logisch usw.).
Giorgio
Ja, natürlich @Giorgio, die als Lehrmittel gewählte Programmiersprache spielt keine Rolle, es muss jedoch erwartet werden, dass die vorgestellten Programmierpraktiken solide und aktuell sind.
Glampert
Die meisten Universitäten unterrichten Studenten mit dem Ziel, einen Master-Abschluss zu erreichen. Die meisten Masterstudiengänge unterrichten Masterstudierende mit dem Ziel, eine erfolgreiche Promotion zu ermöglichen. Die meisten Promotionsprogramme sollen Ihnen dabei helfen, ein erfolgreicher Forscher zu werden.
Rob P.
@glampert: Die prozedurale Programmierung hat sich nach Einführung von Pascal nicht geändert. Noch besser ist, dass Pascal als Unterrichtssprache konzipiert wurde, sodass es nicht viele Hacks gibt, die in der Praxis nützlich sein können, aber beim Erlernen neuer Dinge eine große Ablenkung darstellen. Pascal ist also auf dem neuesten Stand, was das Unterrichten von Imperativprogrammen angeht. Natürlich möchte man vielleicht andere Paradigmen wie objektorientierte, funktionale Logik lehren: Dann muss man nach anderen Sprachen suchen, z. B. Python, Java, Haskell, Schema, Prolog, ...
Giorgio

Antworten:

34

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 systemAufrufe 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.

littleadv
quelle
3
Ich habe ein Problem mit Ihrer Antwort: "Im Allgemeinen sollten akademische Studien nicht zum Erlernen von C ++ und Android verschwendet werden, sondern Sie sollten das eigentliche Informatik-Zeug dort erlernen." - Ohne mindestens die Grundlagen einer Programmiersprache zu kennen, ergibt das CS-Zeug keinen Sinn und ist viel zu einfach, um es falsch anzuwenden.
Izkata
4
@Martin und izkata - Programmieren unter DOS in C ++ mit dem Compiler aus dem vorigen Jahrhundert bedeutet nicht, dass Sie keine Programmierkenntnisse haben. Es bedeutet nur, dass Sie veraltete Tools verwenden - aber wenn Sie RB-Bäume implementieren müssen - wen interessiert das? Es ist für die Branche veraltet, aber die Programme laufen und tun, was sie tun sollen - das ist gut genug.
Littleadv
3
@littleadv - das OP schrieb "das scheint uralt zu sein nach dem, was ich gelesen habe." was mir nahelegt, dass er anderswo als in den entsprechenden Handouts nachsehen musste, um herauszufinden, dass dies veraltet und nicht mehr tragbar ist. Sicher, viele, wenn nicht alle Compiler über zusätzliche Nicht-Standard-Bibliotheken verfügen, aber wenn Ihnen beigebracht wird, dass sie nicht dem Standard entsprechen, finde ich das schlecht - und das gilt sowohl für neue als auch für alte und sogar für C ++ 11 Sachen, da C ++ 03 momentan der neueste weit verbreitete und vollständig unterstützte Standard ist.
Steve314
3
@littleadv - Vielleicht müssen wir uns darauf einigen, dass wir nicht einverstanden sind. Obwohl ich gedacht hätte, dass ein Informatiker ein Pedant in Bezug auf die Details sein muss, und die wenigen Sekunden, die benötigt werden, um darauf hinzuweisen, dass etwas nicht dem Standard entspricht, stimmen damit überein und sind in keiner Weise eine große Härte. Wie würden Sie sich fühlen, wenn ein CS-Professor seine eigenen Ad-hoc-Notationen mit der Mathematik vermischt und nicht darauf hingewiesen hätte? Es ist immerhin ein weiterer Aspekt des gleichen Themas - ob andere Informatiker Sie verstehen können. Code wird sowohl von Menschen als auch von Compilern gelesen.
Steve314
4
@littleadv - Ich habe nie behauptet, dass dem OP gesagt wurde, dass conio.h Standard ist. - Ich schlug vor, dass ihm nicht gesagt wurde, dass es nicht Standard ist OKAY.". Die Art und Weise war ich auch die Grundlagenforschung gelehrt ist , dass man Standardbedingungen verwenden, oder wenn Sie müssen nicht marktüblichen Konditionen nutzen zu können, zu definieren , was sie bedeuten. Im naturwissenschaftlichen Unterricht verstieß sogar die Verwendung von Zentimetern gegen die Regeln - es handelt sich nicht um SI-Einheiten. Die Verwendung von Nicht-Standard-Bibliotheken scheint mir nicht anders zu sein. Die Bedeutung von Code in der Informatik sollte eindeutig sein.
Steve314
19

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.

back2dos
quelle
2
Wie steht es mit Physik im Ingenieurwesen? Programmierer sollten die CS-Prinzipien verstehen, um sie beim Entwerfen von Programmen anzuwenden, die ein Ingenieur zum Verstehen der Physik zum Entwerfen von Gebäuden, Flugzeugen und chemischen Prozessen benötigt.
Jay Elston
3
@JayElston: Physik ist Ingenieurwesen, was Informatik für Software-Engineering bedeutet, das Analyse, Design, Planung, Implementierung, Qualitätssicherung usw. umfasst. Während das Engineering damit beginnt, herauszufinden, was Sie eigentlich tun möchten.
back2dos
Ich mag immer noch eines der Zitate meiner Professoren "Ingenieurwesen ist die Kunst, Wissenschaft anzuwenden, um Probleme zu lösen".
Chris O
1
@ Chris: Vielleicht ist Wissenschaft die Kunst, neue Probleme zu schaffen.
JasonTrue
@JasonTrue: Nun, man könnte argumentieren, dass Wissenschaft die Kunst ist, bessere Probleme zu schaffen;)
back2dos
9

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.

GroßmeisterB
quelle
5

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.

LEMUEL ADANE
quelle
1
Programmieren ist wie Klavierspielen. Sie brauchen einen Meister, der Ihnen beibringt, wie man Dinge macht, und viel Übung, um sie gut zu machen. Ich glaube, es gibt nur sehr wenige weltberühmte Autodidakt-Pianisten.
7
Was für eine seltsame Analogie, es gibt sicherlich viele hochqualifizierte Autodidakt-Programmierer.
ocodo
@ Slomojo Stimmt, und ich habe ein paar von ihnen getroffen. Sie sind eine seltsame Rasse, ausgezeichnet in dem, was sie wissen. Das Schwierige liegt in der Breite der Probleme, auf die sie stoßen. Gelegentlich hat ein Problem einen viel kürzeren Weg zur Lösung, wenn Sie eine Ecke der Informatik kennen, und dennoch neigen diese talentierten Leute dazu, auf die einzige (n) Weise (n) zu hämmern, die sie kennen, was schließlich wie rohe Gewalt aussieht. Ein Beispiel, ein Problem, das für einen Autodidakten "schwer zu lösen" war, wurde von einem DFA in zwei Tagen mit Test (in TCL / TK zum Booten!) Gelöst. Zwei Wochen später verstanden sie es immer noch nicht, mit Erklärung.
Edwin Buck
4

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.

Jan S
quelle
Guter Rat natürlich, da stimme ich voll und ganz zu. Es ist nur das Diplom ... :)
Toerndev
@gaidal: Ja! das ist, was ich aus der grad school herausbekommen habe - der Markenname: P (obwohl ich mir bei meinem Beitritt viel mehr erhofft hatte)
Jan S
2
An der Universität geht es nicht darum, Programmieren zu lernen, sondern um das Erlernen der Konzepte von Programmiersprachen und allgemeiner der Informatik. Als ich mein Projekt für Betriebssysteme an der Universität machen musste, wurde mir gesagt: Es wird in C sein, das Buch ist in der Bibliothek, hol das Buch und lerne es. Beim Programmieren geht es um Übung, und es ist nicht die Aufgabe der Universität, Ihnen das beizubringen.
Giorgio
1
Über besser bezahlte Jobs ist das wahr. Ein Freund von mir, der an der Universität unterrichtet, beklagte sich einmal: "Wir bringen ihnen das Programmieren bei und dann verdienen sie mehr als wir, es sollte umgekehrt sein!"
Giorgio
3

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.

Giorgio
quelle
Vielen Dank, ich werde dann daran denken, dass Sie nicht denken, dass es genug ist, um zu sagen, dass es ein schlechter Kurs ist. Nebenbei bemerkt, ich meinte nicht, dass es unter Linux sein sollte, nur dass er sich bemühen könnte, die Schüler über die Unterschiede zu informieren und dass es einen Standard gibt.
Toerndev
Ich stimme Ihnen zu, dass es eine gute Idee wäre, über andere Systeme zu informieren. Dies hängt auch von der Erfahrung des Lehrers ab: Sie fühlen sich möglicherweise unwohl, wenn sie über eine Umgebung sprechen, mit der sie nicht vertraut sind. ZB bin ich mit Windows und Linux zuhause, aber ich würde MacOS meiden, weil ich es noch nie benutzt habe, auch wenn es ein sehr cooles Betriebssystem sein mag. Vielleicht können Sie versuchen, einen kurzen Vergleich zwischen verschiedenen C ++ - Umgebungen anzustellen: Nur ein paar Beispiele, um ein Gefühl dafür zu bekommen, was anders sein kann und was gleich bleibt. Du könntest zB mit sizeof unter MSDOS und Linux spielen.
Giorgio
2

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.

sarat
quelle
2

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.

 if(!system("mkdir foo"))
     //booo and exit`

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.

Coder
quelle
1
Nicht sicher , würde ich die implizit ermutigend unerfahrenen Entwickler zustimmen gerade ohne wirkliche Vorstellung von dem gotchas zu System springen ist eine gute Idee ...
deworde
@deworde: Es ist dasselbe, was Sie in einer Konsole schreiben. Ich glaube nicht, dass Sie Dinge weniger fehleranfällig und sicher machen können.
Coder
Ja, aber wenn Sie es in eine Konsole schreiben, wissen Sie (zum Beispiel), wo Sie sich befinden, als wen Sie ausführen, auf welcher Art von Maschine Sie sich befinden und was am wichtigsten ist, WARUM SIE ES TUN. Das Programm ist sich dieser Dinge nicht unbedingt bewusst, und jemand, der die ausführbare Datei ausführt, wird nicht wissen, dass er sie überprüfen muss, bevor er sie ausführt.
Deworde
@deworde: Nicht genau, Befehl EraseFile erbt immer noch die Prozessberechtigungen, daher ist es genauso einfach, beide Befehle durcheinander zu bringen.
Coder
1

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.

KeithS
quelle
Danke, ja das überlege ich mir. Wenn ich das Gefühl habe, dass es in die falsche Richtung geht, kann ich es später ändern. Grundkurse sollten universenübergreifend kompatibel sein.
Toerndev
Vorsichtig mit dieser Annahme; Ich habe die Hauptfächer von CS zu MIS gewechselt und keine der Mathematikfächer, die ich bereits belegt hatte, wurde übertragen, weil die Business School einen völlig separaten Mathematikkurs hatte. Englisch, Naturwissenschaften, Geisteswissenschaften, ja, das hat sich übertragen.
KeithS
1

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.

DeadMG
quelle
0

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.

Kirk Broadhurst
quelle
Vielen Dank, ich habe darüber nachgedacht und denke, dass Sie mit diesen beiden Optionen sehr richtig liegen. Ersteres trifft eher auf mich zu, und ich werde nach Jobs suchen, während ich darauf warte, ob die Kurse interessanter werden. Es ist eigentlich eine Software - Engineering - Ausbildung, dass ich über Informatik gewählt , da ich früher Geschwindigkeit aufstehen will und lerne durch Arbeiten. Vielleicht erklärt das, warum ich ein bisschen mehr "echte Fähigkeiten" erwartet habe. :)
Toerndev
Nur ein paar Anmerkungen aus meiner Universitätsvergangenheit: Ich habe einen Kurs studiert, in dem die "Programmierung 101" auf dem Stundenplan stand, dieser Teil war für mich ärgerlich langweilig. Aber andere Kurse waren interessant (Physik, Mechanik, ...). Selbst wenn eine Vorlesung langweilig ist, die möglicherweise nicht für das gesamte Programm gilt, und für die anderen Teile kann es sich lohnen, den Schmerz durchzuarbeiten. Aber ich bin ausgestiegen. In der Zwischenzeit habe ich gelernt, dass Papier manchmal von Vorteil gewesen wäre, obwohl das Papier nicht bedeutet, dass ich in meinem Job besser wäre (ich habe einen guten Job, gutes Gehalt, ... also ist es nicht schlecht ;-))
Johannes
0

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.

Antonio2011a
quelle
Hab das vorher nicht gesehen. Ich bin froh zu sehen, dass jemand genau sagt, was ich über einige Antworten empfunden habe (Ihr erster Absatz)! Ja, der Unterricht ist ziemlich nutzlos. Ich gehe nicht mehr zum Unterricht, sondern gebe nur die Programme ab, die ich schreiben muss. Ich mache es auf meine eigene Art (was normalerweise ziemlich schlecht ist, wenn ich von CL nach C ++ komme), stoße auf viele Dinge, die nicht im Lehrplan stehen, und frage Programmiererfreunde und nicht den Professor um Rat. Auf diese Weise macht es tatsächlich Spaß. Trotzdem hoffe ich, dass ich einen Job finde, bevor ich meinen Abschluss mache.
Toerndev
0

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.

barlop
quelle
-6

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.hCode anderer Leute stoßen - und es ist gut zu wissen, was er tut.

Tom
quelle
10
Nein, Sie erhalten Werkzeuge, um die Arbeit zu erledigen, und es ist Ihre Aufgabe, diese Werkzeuge zu verwenden. Wenn Sie einen Job haben, bei dem Sie nur einen 15-jährigen XT mit CP / M haben, und Sie fordern, dass Ihr 64-Bit-Windows 7-Code nicht funktioniert, sollten Sie sich so früh wie möglich daran gewöhnen.
3.
2
@Ramhound Eine Universität sollte es ermöglichen, den Kurs zu absolvieren, ohne teure Ausrüstung (wie Windows-Betriebssystem) kaufen zu müssen. Es ist nachteilig.
Tom
3
@Tom, Wenn ich Photoshop unterrichten würde, würde ich erwarten, dass Sie Photoshop kaufen (was sehr teuer ist), und ich würde erwarten, dass Sie teure Lehrbücher kaufen. Ich verstehe nicht, wo dies anders ist. Und ich wette, es gibt viele Computer auf dem Campus, die er für die Aufgabe nutzen könnte, ohne Windows zu kaufen (was, ehrlich gesagt, jeder, der CS studiert, wahrscheinlich sowieso beides haben sollte, man weiß nie, wo man landet, Leute, die das im Microsoft-Stack programmieren von Produkten neigen nicht dazu, Linux zu verwenden.)
HLGEM
3
@Ramhound Auch wenn der Professor nicht ausdrücklich erklärt hat, warum er vereinfachte, dos-basierte E / A-Routinen verwendet, können wir wahrscheinlich eine korrekte Vermutung anstellen. Wie Tom bereits erwähnte, sind die io-Routinen von C ++ relativ komplex, so dass das Verbergen von Details in einem Einführungskurs nicht unangemessen ist. Die Entscheidung, eine Windows-basierte plattformspezifische Bibliothek anstelle einer * nix-basierten zu verwenden, beruht mit ziemlicher Sicherheit auf der Annahme, dass die meisten Studenten Windows nicht * nix verwenden und mehr Windows-Benutzer Schwierigkeiten haben, mit * nix zu beginnen, als umgekehrt.
Dan Neely
5
@gaidal - Regeln gibt es aus einem Grund. Wenn Sie irgendwo anfangen zu arbeiten und statt einer proprietären Bibliothek Standard verwenden, weil "Standards aus einem bestimmten Grund vorhanden sind", werden Sie sehr schnell arbeitslos. Nehmen Sie an diesem Kurs als Übung zur Einhaltung von Kodierungsstandards teil. Sie werden diese nicht immer mögen.
Littleadv