An der Uni habe ich mich nie für Theorie interessiert. Ich habe es nie gelesen. Egal wie viel ich versuchte, ich konnte nichts lesen und wusste nicht, was in der Praxis tatsächlich geschah. Wie zum Beispiel in meinem Kurs über Automatentheorie erzählte mir mein Professor alles, was möglicherweise mit dem mathematischen Aspekt zu tun hatte, aber er erwähnte nicht ein einziges Mal, wo es praktisch angewendet werden würde. Dies ist nur ein Beispiel.
Ich habe mein College erfolgreich abgeschlossen und auch ein Praktikum bei einer Firma absolviert, bei der ich ein Projekt durchgeführt habe. Zum Glück haben sie sich nicht um meine Noten gekümmert, da sie überdurchschnittlich gut waren.
Jetzt bin ich daran interessiert, welche Fächer ein CS-Student unbedingt und positiv kennen muss. Themen, die in der Branche relevant sein können. Das liegt daran, dass ich etwas Freizeit habe und es mir helfen würde, sie besser zu verstehen.
Was sind deine Vorschläge? Algorithmen sind ein Thema.
Antworten:
Ob Sie es glauben oder nicht, eines der Dinge, die sich im späteren Leben als von entscheidender Bedeutung für mich herausstellten, war Compiler Construction. Nicht die moderne Namby-Pamby-Version mit Lex und Yacc, das ist für Dummies.
ECHTE Compilerkonstruktion, in der Sie Ihren eigenen Symbolscanner und Parser von Grund auf schreiben.
Dies ist etwas, von dem ich dachte, dass ich es nie wieder verwenden würde. Aber in den letzten 20 Jahren hat dieser Kurs sein Gewicht in Gold viermal bewiesen. Jeder Kommandoprozessor, den ich schreiben musste, jeder Incoming-Message-Scanner, jeder User-Dispatcher, jeder Script-Interpreter, hat die Prinzipien dieses Kurses verwendet. Tun Sie es so und das Leben ist süß, klar und einfach. UND ich gab sogar einem Kollegen, der es nicht getan hatte, alle Informationen - er musste tatsächlich einen Compiler für eine abstrakte Maschine schreiben. Was ich hinzufügen möchte, hat sich als sehr kommerziell erfolgreich erwiesen.
Wenn ich mich bei einem Universitätsdozenten für ein Fach bedanken müsste, wäre es das. Ohne das wäre ich durchgekommen, aber meine Lösungen wären viel viel hässlicher gewesen.
(Und bevor jemand aufspringt und sagt "Nun, du hättest Lex und Yacc verwenden können ...", lautet die Antwort vielleicht - es hängt sehr vom System ab. In einigen Fällen waren die Programmiersprachen nicht C (z. B. PL / M und Ada), in einigen Fällen waren weder Lex noch Yacc für die Plattform verfügbar. Wenn Sie die Grundlagen kennen, haben Sie eine Lösung parat, anstatt die Hände zu wringen und herauszufinden, wie Sie ein Werkzeug biegen können, um das Problem zu lösen.)
quelle
Datenstrukturen / Algorithmen, insbesondere Graphen. Die Menge der Situationen in der realen Welt, in denen ich grafische Algorithmen einsetzen konnte, hat mich überrascht. Konzentrieren Sie sich darauf, die Merkmale zu kennen, wann eine Datenstruktur oder ein Algorithmus geeignet ist. Es ist wichtig, ein Problem zu erkennen und zu wissen, wie man einen dynamischen Programmier- / Gier-Algorithmus verwendet, und Sie können viel Zeit sparen.
Kenntnisse über die Komplexität von Berechnungen. Sie müssen nicht genau wissen, was die Untergrenze der Radix-Sortierung ist, aber es ist wichtig zu wissen, wie Sie die Worst-Case-Laufzeit von etwas, das Sie schreiben, ermitteln können, insbesondere für leistungskritische Projekte.
OS-Konzepte. Speicherverwaltung, Scheduler usw. Jeder Entwickler sollte wirklich ein solides Verständnis der Betriebssysteme haben, da der von Ihnen geschriebene Code ständig damit interagiert.
NetSec. Ich habe nur sehr wenige Entwickler getroffen, die ein solides Verständnis für grundlegende Sicherheitsbedenken bei der Entwicklung haben (Pufferüberläufe, xss, SQLI usw.). Dies ist wirklich ein Muss, wenn Sie in der Industrie erfolgreich sein wollen. Es ist großartig, wenn Sie das nächste große Ding schreiben können, aber Sie werden nicht lange viele Benutzer haben, wenn Sie ihre Daten nicht sichern.
Programmierparadigmen. Kennen Sie die Eigenschaften und Unterschiede zwischen OO / Functional / Procedural Programming. Eine der besten Grundschulklassen, die ich jemals hatte, war das Schreiben von einfachen 20 Instruktionsdolmetschern für Fortan, Schema, Prolog usw. in den Sprachen selbst. Schon die Belichtung selbst kann Ihnen dabei helfen, die grundlegenden Konzepte der Softwareentwicklung zu verstehen.
quelle
Die Erfüllung der Abschlussanforderungen ist nicht unbedingt ausreichend, um der beste Informatiker zu sein, den Sie sein können. Für einen typischen College-Lehrplan sind hier die zehn wichtigsten Dinge, die Sie unbedingt lernen sollten:
Grundlagen der Volkswirtschaftslehre - Ein Einführungskurs zu Themen wie Ergänzungen und Substitutionen ist von entscheidender Bedeutung, um in der Gesamtwirtschaft zu arbeiten oder sie einfach nur zu verstehen. Das Konzept eines Giffen-Gutes wird Ihnen zwar nicht unbedingt helfen, aber das Wissen um Äußerlichkeiten wird Ihnen helfen . Es kann Ihnen auch dabei helfen zu verstehen, dass mehr Situationen eine Win-Win-Situation sind, als Sie vielleicht bemerkt haben.
So schreiben Sie einen Proof - Alle Informatik-Hauptfächer sollten wissen, wie man einen Proof schreibt. Und diskrete Mathematik zählt nicht, obwohl sie Teil eines ausgewogenen Frühstücks ist. [Induktion ist nur eine Beweismethode, und Sie können damit auskommen, ohne wirklich viel über Beweise zu wissen.] Ein Kurs in Algebra oder echter Analyse ist erforderlich, um Beweise wirklich zu schreiben. Und mit Algebra meine ich Gruppentheorie oder abstrakte Algebra, nicht den Kurs, den Sie an der High School besucht haben. Nehmen Sie für den vollen Nutzen Algebra und reale Analyse im gleichen Begriff.
Warum ist Proof Writing so wichtig? Weil es programmiert! Überlegen Sie, wann Sie das Programmieren zum ersten Mal gelernt haben: Wenn für eine Aufgabe eine
if
und eine Schleife, Sie könnten keine Ahnung gehabt haben, wo sie in Beziehung zueinander zu setzen. Aber jetzt würde sich dieselbe Aufgabe ganz natürlich anfühlen. Einen Beweis zu schreiben ist sehr ähnlich. Es gibt eine Reihe von Tricks, die Sie lernen, und sobald Sie sie gelernt haben, sehen die Dinge ganz anders aus.Schreiben - Schriftliche Kommunikationsfähigkeiten sind unerlässlich, egal ob Sie in der Industrie oder im akademischen Bereich arbeiten. Am besten finden Sie einen Mechanikkurs und keinen Schreibkurs, der sich effektiv mit einem anderen Thema befasst. Das heißt, viele Schulen werden versuchen, die Schreibkurse relevanter oder interessanter zu machen, indem sie dafür sorgen, dass es sich um ein spezielles Thema handelt. Versuchen Sie, die "langweilige" Version des Kurses zu wählen.
Wahrscheinlichkeit und Statistik - Es gibt einige Dinge, die Sie nur durch einen Kurs richtig lernen können. Zusammen mit den Hauptanforderungen für CS (die Ihnen diskrete Mathematik, Einzelvariablen- und Mehrfachvariablenrechnung sowie lineare Algebra bieten sollten) und Algebra und / oder reelle Analyse erhalten Sie durch das Aufnehmen von Statistiken wahrscheinlich einen Nebeneffekt in Mathematik. Mithilfe von Lernstatistiken können Sie mit anderen Wissenschaftlern an ihren Projekten arbeiten.
Aktuelles aktuelles Thema - In den vergangenen Jahrzehnten waren es möglicherweise Datenbanken oder objektorientierte Programmierung. Heute könnte es sich um Webprogrammierung oder serviceorientierte Architektur handeln. Was auch immer die aktuelle Modeerscheinung ist, stellen Sie sicher, dass Sie einen Kurs darin belegen. Wenn nur zu sehen, worum es in der Mode geht.
Das Problem des Anhaltens - Die meisten Probleme können nicht von Maschinen gelöst werden. Dies ist eine ziemlich tiefe Idee, die unsere Kultur so gut aufgenommen hat, dass es nicht mehr schockierend klingt. Dasselbe gilt für Radio, Goedel und die Atombombe. Erst mit der postmodernen Kunst und dem Kalten Krieg konnten wir uns wieder mit diesen Konzepten auseinandersetzen. Ein Kurs in Berechenbarkeitstheorie kann Sie jedoch erneut für diesen erstaunlichen Beweis sensibilisieren.
Reine funktionale Programmierung - Sie werden höchstwahrscheinlich nicht in die reine funktionale Programmierung einsteigen, es sei denn, Sie recherchieren darin oder arbeiten für einige ausgewählte Unternehmen, aber wenn Sie wissen, dass dies Ihnen hilft, ein besserer Programmierer zu sein. Der Grund dafür ist, dass Sie viele neue Formen der Abstraktion und Konzepte wie Kirchenzahlen und -fortsetzungen sowie Monaden und, ja, Rekursionen kennenlernen werden. Diese Tools können auch auf Ihr nächstes Java-Programm angewendet werden.
P und NP - OK, dieser befindet sich bereits auf Ihrem kritischen Pfad, aber achten Sie trotzdem darauf. Sie möchten sichergehen, dass Sie jemanden korrigieren können, der NP fälschlicherweise als „nicht polynomiell“ bezeichnet. Als ob!
Die Themen aus dem Kurs, die Sie mit Sicherheit hassen werden - Dies kann ein CS-Kurs sein, den Sie für zu niedrig, zu theoretisch oder für einen Nicht-CS-Kurs halten, den Sie als zu anstößig, zu schwierig oder zu langweilig empfinden . Wenn ein Kurs wie dieser ein Problem für Sie darstellt und Sie anderen erklären, warum Sie so froh sind, dass Sie nicht so und so teilnehmen müssen, sollten Sie feststellen, dass Sie viel lernen werden durch den Kurs! Vielleicht lernst du die Materialien des Kurses nicht, aber du lernst deine eigenen Grenzen und vielleicht mehr über die Rechtfertigungen, die du dir selbst machst. [Hinweis: Sie sind normalerweise schwach.]
Der Nicht-CS-Kurs, den Sie sicher lieben werden - Am Ende sollten Sie Spaß haben. Dies ist der Kurs, aus dem Sie wahrscheinlich am wenigsten herausholen werden, aber nehmen Sie ihn trotzdem. Mach es einmal. Wenn Sie zufällig viele Kurse lieben, ist das gut für Sie, aber stellen Sie sicher, dass dies nicht die restlichen Kurse auf dieser Liste beeinträchtigt.
Mein Ansatz hier war praktisch, basierend auf Kursen, die Sie tatsächlich belegen können. Und ich habe mich auf Lernziele konzentriert, die wahrscheinlich gelernt werden. Anmerkung: Diese Antwort stammt aus einem Blog-Beitrag über zehn Dinge, die jeder Major der Informatik lernen sollte .
quelle
Nach einem Gespräch mit ein paar Unternehmensvertretern und Freunden, die viele Interviews hatten:
Neigen dazu, ein "Muss" für Neueinstellungen zu sein (oder, wie gesagt, "sehr empfehlenswerte" Kurse).
Andere Kurse, die nützlich sein können, sind Computersicherheit, Zusammenbau und Maschinenarchitektur. Viele meiner Professoren haben mir auch einen Compilerkurs empfohlen. Wenn Sie Zeit haben, würde ich Ihnen auch sehr empfehlen, Mathematikkurse wie Graphentheorie, Diskrete Mathematik und Kombinatorik zu besuchen. In den Klassen, die in den meisten CS-Kursen übergangen werden, lernt man eine Menge Denkfähigkeiten, die jedoch beim Schreiben sehr komplexer Programme von großem Nutzen sind.
Hoffentlich hilft das!
quelle
Es hängt weitgehend davon ab, was Sie mit dem Abschluss vorhaben. Es sieht so aus, als ob die meisten CS-Majors Software-Ingenieure sind. Vor diesem Hintergrund bin ich mir nicht sicher, warum mehr Leute nicht nur im Bereich Software-Engineering tätig sind. Ich vermute, dass es nicht genug Software-Engineering-Programme gibt, insbesondere an öffentlichen Institutionen.
Ich komme aus einem eingebetteten Hintergrund. Jede einzelne Person, mit der ich zusammenarbeite, hatte entweder einen EE-Abschluss oder einen CE-Abschluss, und das liegt zum Teil daran, dass als die "Alten" am College nicht so viele CE-Programme zur Verfügung standen. Es ist also ziemlich offensichtlich, dass ein Hardware-Hintergrund wünschenswert ist, wenn Sie im eingebetteten Bereich arbeiten möchten.
Unabhängig davon, in welchem Bereich Sie arbeiten möchten, glaube ich, dass jeder Programmierer einen Kurs in Assembler-Programmierung belegen sollte. Sie werden es vielleicht nie benutzen, aber es zeigt genau, was auf Prozessorebene während eines Funktionsaufrufs passiert, wie Interrupts behandelt werden, wie der Speicher strukturiert ist oder wie die verschiedenen Adressierungsmodi verwendet werden. Ich glaube, all diese Dinge werden Sie zu einem besseren Programmierer machen.
Auch wenn dies möglicherweise nicht ersichtlich ist, sind dies einige wichtige Themen, wenn Datenstrukturen und Algorithmen für eine bestimmte Plattform betrachtet werden.
quelle
Es gibt zwei Möglichkeiten, Ihre Frage zu beantworten. Lass mich beides versuchen. Der erste Weg besteht darin, die Dinge unter dem Gesichtspunkt eines potenziellen Arbeitsmarktes, Codierfähigkeiten usw. zu betrachten. Also hier ist meine Liste:
Der zweite Weg ist, die Dinge aus einer etwas abstrakten Perspektive zu betrachten, und wer weiß, kann auch ein bisschen philosophisch sein. Die folgende Liste hat möglicherweise nicht die besten Fähigkeiten, die der Arbeitsmarkt verlangt, aber ich bin mir ziemlich sicher, dass Sie, wenn Sie diese Kurse beenden, die Kunst der Softwareentwicklung besser verstehen werden.
quelle
Ich würde auch Software Engineering oder Design Practices zur Liste hinzufügen, obwohl deren Inhalt normalerweise von Studenten der Branche aufgegriffen wird.
Meiner Meinung nach (allerdings nicht durch viel Erfahrung gestützt) möchten Unternehmen nicht wirklich, dass die meisten theoretischen Dinge in Kursen wie Datenbanken usw. vermittelt werden. Sie möchten, dass die Leute diese Dinge verstehen und anwenden können .
EDIT: Aufgrund der Ablehnung möchte ich meine Antwort erklären. Ich bin ein Informatikstudent im letzten Jahr und meine Erfahrung basiert auf meinen Praktika und Vorstellungsgesprächen mit führenden Unternehmen auf diesem Gebiet. Nach meiner Erfahrung müssen Personen selten komplizierte Algorithmen verwenden oder sehr komplizierte Datenstrukturen in Interviews oder Jobs codieren.
Nützlicher, wenn Sie Datenbanken erstellen und verwenden, die Quellcodeverwaltung verwenden, das Debuggen und das Verwenden von Entwurfsmustern usw. können. Wie ich bereits sagte, werden diese Fähigkeiten in der Regel in der Branche erlernt und nicht in Kursen behandelt. Software Engineering / Design Practices beinhalten in der Regel die Erstellung eines mittelgroßen Projekts, das zum Erlernen aller dieser Fähigkeiten sehr nützlich ist.
quelle
Dinge, die ich im College gelernt habe und die ich jeden Tag benutze:
Ich wünschte, ich hätte einen Datenbankkurs gemacht. (Ich habe seit meinem Abschluss genug gelernt, um damit klarzukommen, aber ich wünschte, ich wüsste mehr.) Ich wünschte auch, die Versionskontrolle würde unterrichtet - sie ist allgegenwärtig, äußerst nützlich und wurde im Lehrplan meiner Schule völlig ignoriert.
Ich musste mehrere Mathekurse belegen. Ich habe keinen Kalkül mehr benutzt, seit ich meinen Abschluss gemacht habe. Ich wünschte, ich hätte einen Statistikkurs gemacht. (Wieder habe ich seit meinem Abschluss genug zu tun, aber ich wünschte, ich wüsste mehr.)
Nehmen Sie über die CS-Abteilung hinaus an einem Schreibkurs teil. Gute schriftliche Kommunikationsfähigkeiten sind für den Erfolg unerlässlich.
quelle
Es gibt viele wichtige Kurse, je nachdem, in welche Richtung Sie gehen möchten. Vorausgesetzt, Sie können überhaupt programmieren, muss der wichtigste Kurs jedoch sein:
Datenstrukturen und Algorithmen
Praktisch alles in der Datenverarbeitung funktioniert wieder mit Algorithmen. Achten Sie besonders auf Arrays und Hashtables, da sie bei weitem die nützlichsten Datenstrukturen sind, die häufig verwendet werden, aber Listen und Bäume und Diagramme (nun, Listen sind eingeschränkte Baumtypen und Bäume sind eingeschränkte Diagrammtypen) wichtig sein. Darüber hinaus ist das Verstehen von Algorithmen von entscheidender Bedeutung, um Code zu erstellen, der nicht schrecklich ist. (Andernfalls werden Sie Dinge tun, die einfach schrecklich sind, wie die Verwendung eines O ( n 3 ) -Algorithmus, für den ein O ( n log n ) -Algorithmus verwendet wird.) Wenn Ihr CS-Abschluss keinen obligatorischen DS + A-Kurs enthält, Es ist nicht CS. Oder Softwareentwicklung. Oder einfach nur programmieren.
Abgesehen davon war der Kurs, den ich im Laufe der Jahre in verschiedenen Bereichen am nützlichsten fand,:
Parallelität
Parallelität hat viele Aspekte, aber ich würde ein Verständnis für den Unterschied zwischen Shared Memory und Message-Passing erwarten. Ich möchte auch, dass Sperrstrategien (Mutexe, Semaphoren usw.) und Transaktionen umfassend abgedeckt werden.
Dies ist natürlich von entscheidender Bedeutung für das Verständnis der Parallelisierung, aber es ist auch wichtig für alles, was verteilt wird (z. B. das Schreiben eines Dienstes, der dem Internet ausgesetzt ist, auch wenn er Single-Threaded ist, da die Clients sowieso asynchron sind). Ich verstehe, dass es auch nützlich ist, um Spiele zu schreiben (die normalerweise Multithread-fähig sind) und mit eingebetteten Geräten zu arbeiten.
Abgesehen davon halte ich es für das beste Interesse der meisten Studenten, möglichst vielen unterschiedlichen Ideen ausgesetzt zu sein. Viele Programmiersprachen und Paradigmen. Viele verschiedene Einsatzgebiete. Ein angemessenes Maß an Mathematik (wieder, weil es so oft nützlich ist) und auch ein gewisses Maß an Kontakt mit menschlichen Faktoren und Psychologie (weil jede Software, die mit Benutzern interagiert, mit Menschen zu tun hat). Schließlich wissen Sie nie genau, was Sie in Zukunft tun werden. Die Planung von Flexibilität ist daher eine großartige Lebensstrategie.
quelle
Als ich am College war, gab es eine ganze Reihe von Themen, für die ich in meinem wirklichen Leben keine Verwendung finden konnte, und manchmal hat sich die Intuition als richtig erwiesen (formale Methoden sind in den meisten Fällen nur für triviale Probleme geeignet) war völlig falsch (die Big-O-Notation ist sehr nützlich), also war mein jüngeres Ich im Großen und Ganzen teilweise richtig.
Wenn Sie sich auf die reale Welt vorbereiten möchten, empfehle ich zusätzlich zu den Empfehlungen von @ K-Ran, Code Complete zu lesen und dies als Grundlage für eine eingehendere Untersuchung von Themen zu verwenden, die Sie als schwierig empfinden oder die Sie nicht haben ausreichend abgedeckt.
quelle
Ich denke, Sie sollten Folgendes studieren:
Betriebssystem: - Auch wenn Sie es möglicherweise nicht benötigen, um als Programmierer zu arbeiten, sollten Sie wissen, wie ein Betriebssystem funktioniert und wie es von einem CS-Absolventen erwartet wird. Jedes gute Buch kann helfen.
OOP: - Das ist Brot und Butter. Ein Muss. Bücher, wenn Sie fragen möchten: Ihr erstes Buch sollte sein: - Kopf voran OOAD, dann können Sie sich für Grady Booch und Ivar Jacobsons Buch entscheiden
Datenstrukturen und Algorithmen: - Sehr wichtig für die Entwicklung des logischen Denkens und Denkens.
Für mich ist das genug. Es ist niemals zu spät. :)
quelle
Als jemand, der regelmäßig Bewerber für Programmierjobs interviewt und sich nach mehr als 12 Jahren in der Branche einigermaßen erfolgreich fühlt, würde ich Folgendes vorschlagen
Dann lesen Sie einige außerschulische Arbeiten:
quelle
ES IST ABHÄNGIG , es gibt keine gute Antwort auf diese Frage.
Programmierer ist eine allgemeine Welt, um jemanden zu identifizieren, der Computersoftware schreibt.
Jetzt gibt es Software aller Art. Wenn wir zum Beispiel Wikipedia als Quelle für Verallgemeinerungen verwenden, können wir drei großartige Verallgemeinerungen treffen :
Im ersten Feld Systemprogrammierung entwickeln Sie Gerätetreiber, Betriebssysteme, Server, damit Sie beispielsweise einem Betriebssystemkurs folgen können.
aber was ist mit Programmiersoftware ? Wie Wikipedia schrieb, können Sie hier Compiler, Debugger, Interpreter, Linker und Texteditoren codieren. Daher kann ein Kurs in Automatisierungstheorie, Sprachtheorie, Sprache und Compilern hilfreich sein.
Können wir nicht über Anwendungssoftware jeglicher Art sprechen:
- Videospiele: Algebra, Physik, objektorientierte Kurse?
- Mathematik-Software: Mathematikkurse?
- Bildbearbeitung: Mathematik, Physik, Algorithmuskurse?
- Industrielle Automatisierung: Mathematik, Physik, Algorithmus, Robotikkurse?
- Medizinische Software: Biologie, Medizin, was sonst noch?
- viele Sachen hier: viele Kurse hier.
Wie Sie sehen, gibt es natürlich eine Menge, denen Sie folgen können und die für Ihre Arbeit nützlich sein werden.
Nach meiner Erfahrung bin ich ein System-Software-Entwickler und Anwendungs-Software-Entwickler im Bereich Sicherheit (Sie möchten einen Sicherheitskurs absolvieren?). Ausgehend von ein wenig Erfahrung in der Programmierung werde ich immer interessanter für Algorithmen und verteilte Systeme und wieder fühle ich mich unangenehm in der Einfachheit der Allzweckanwendung, die ich geschrieben habe (Schnüffler, Netzwerk-Intrusion-Detection-System, Protokoll-Dissektor und -Detektor usw.).
Wie Sie in der theoretischen Informatik sauer gelernt haben! Hast du diese Kurse geflogen? : P
Sie haben zum Beispiel gelernt, dass alle Computersprachen in eine Reihe berechenbarer mathematischer Funktionen eingepasst werden können, und wenn Ihre Erfahrung beispielsweise denselben Weg einschlägt, werden Sie sich in diesem kleinen Kalkülsatz bald unwohl fühlen und wie ich können Sie anfangen zu sehen, wie sich das entwickelt Software ist nicht so ansprechend und verblüffend, weil das gleiche DESIGN-MUSTER immer wieder auftaucht (haben Sie Design-Muster-Kurse besucht?) und Sie zum Beispiel mehr Interesse dafür bekommen, warum und wie eine Sprache in mathematische Funktionen übersetzt werden kann und beginnt lerne, dass die Computersprache nicht so komplex ist! Sie können zum Beispiel bald mehr über die Person und die Psychologie überrascht sein, und Sie können mehr Interesse dafür bekommen und ein guter Projektmanager werden! Haben Sie die Kurse über den Software-Lebenszyklus verfolgt?
Also, was ist der MUST-HAVE-Kurs in Ihrer CS-Karriere?
Ich schlage vor, so viel wie möglich in allen Bereichen zu lernen, insbesondere im theoretischen Bereich, da Sie sich im allgemeinen Arbeitsbereich schnell über die geringe Komplexität um Sie herum langweilen und zu einem Vollzeitbeschäftigten werden, für den Sie weniger Zeit zum Lernen haben wie die Dinge wirklich funktionieren und viel mehr Zeit, um zu sehen, wie Leute mit starkem theoretischem Wissen die Dinge für die Arbeit projiziert haben, und um Ihnen die Möglichkeit zu geben, Code zu erstellen, um Essen zu Hause zu bekommen.
In der Informatik gibt es einen falschen Realitätssinn. Informatiker zum Beispiel sind manchmal wirklich weit weg von Softwareentwicklern.
Schauen Sie sich die Wikipedia-Erklärung an.
viel spaß mit dem leben :)
meine 2 Cent.
Entschuldigung für mein wirklich schlechtes Englisch.
quelle
Zweifellos ist Englisch das Wichtigste, in dem CS-Studenten fließend sprechen sollten.
Ohne ein Verständnis von gesprochenem und geschriebenem Englisch sind Sie für immer im Nachteil.
Schauen Sie sich die Vielzahl der Fragen an, die auf den Stack-Sites eingehen. Viel zu viele von ihnen sind schwer zu entziffern. Einige Leute verwenden eine Mischung aus Texting (nicht sicher, ob der richtige Begriff verwendet wird). Andere geben eine Erklärung ab und hängen einfach ein Fragezeichen an, während wichtige Gedanken wie Verben oder Adjektive fehlen.
Wenn Sie nicht kommunizieren können, werden Sie sich nicht verständlich machen können, geschweige denn verstehen, was andere sagen.
Alles andere sind nur Details. Wenn Sie kommunizieren können, mindestens durchschnittlich intelligent sind und verstehen, was Sie lesen, können auch Sie eine erfolgreiche Karriereplanung haben.
quelle
Ich komme aus einer etwas anderen Perspektive, da ich keinen Abschluss in CS hatte, sondern einen Abschluss in Elektrotechnik (mit einem Nebenfach in Business).
Darauf aufbauend denke ich dir eine Liste von Dingen verstehen müssen , relativ kurz ist, da ich (und viele andere CS-Absolventen) glücklich überleben, ohne etwas über Compiler-Design oder ähnliches zu wissen.
Was ich sagen würde, habe ich aufgegriffen und finde es nützlich:
Und wenn Sie die Möglichkeit haben, etwas über Projektmanagement zu lernen, dann würde das nicht wirklich schaden, aber das wird an der Universität in vielen Fällen ziemlich schlecht gelehrt, und Sie werden ein bisschen mehr über diesen Job lernen, wenn Sie nur an Projekten arbeiten.
quelle
Ich würde der Liste auch einige grundlegende Kurse in Human Resources / Psychologie hinzufügen.
Dies mag seltsam erscheinen, aber ein Teil der beruflichen Arbeit besteht darin, zu lernen, wie man sich selbst verkauft und verhandelt. Das erste richtige Interview zu führen, ohne die Motivation der HR-Drohne genau zu kennen, ist ein Rezept für eine Katastrophe und endet wahrscheinlich damit, dass der Student in ein niedriges Gehalt verwickelt wird.
Kennen Sie Ihren Feind, damit Sie sich schützen können.
quelle
1. Jahr:
2. Jahr:
3. Jahr:
4. Jahr:
Diese Kurse sollten reichlich Theorie und Codierungspraxis bieten.
quelle
Es ist seltsam, dass niemand die Computerarchitektur erwähnt hat.
quelle