Kommentare

  • Ich denke, dies hängt weitgehend von der Person ab, die das Fach lernt, und von der Person, die es unterrichtet

Antwort

„In der Informatik gibt es zwei schwierige Probleme: Caching, Benennung und Off-by-1-Fehler“

Kommentare

  • I

d Threading hinzufügen …

Antwort

Ehrlich gesagt, Compilerkonstruktion!

Kommentare

  • +1 Compiler waren die schwierigsten und lohnendsten.
  • Es war dort oben mit Das Beste ist die Arbeit und eine gute Vorbereitung für das Grunzen, aber ich glaube nicht, dass es so schwierig war. ' Vielleicht schwieriger ohne die Verwendung von YACC oder der von uns verwendeten Tools, weiß ich nicht.
  • Compiler sind wirklich nur schwierig, weil die meisten Theorien auf Zeiten wahnsinnig strenger Hardwareeinschränkungen zurückgehen und ein Großteil der formalen Anweisungen nicht ' ist nicht zu weit darüber hinausgegangen. Schauen Sie sich an. Lassen Sie ' einen Compiler erstellen , um zu sehen, wie einfach das Schreiben von Compilern sein kann, wenn Sie sich ihm nähern aus einem anderen Blickwinkel.
  • @Martin York, als Compiler-Autor denke ich, dass die Komplexität der Implementierung von Compilern stark überschätzt wird. Im Allgemeinen ist ein Compiler viel einfacher als ein Interpreter. Ich vermute, dass ' ein Drachenbuch und seine Art schuld sind. Sie ' schlagen die kompliziertesten Methoden vor, um einfache Dinge zu tun und zu bezahlen Zu viel Aufmerksamkeit für den am wenigsten wichtigen Schritt, nämlich das Parsen.
  • @Martin York, es gibt Techniken, um einen AST so einfach und wartbar wie möglich zu halten, egal wie kompliziert die Ausgangssprache ist. Es gibt auch eine Reihe sehr einfacher, aber leistungsstarker Techniken, um jede Phase der Kompilierung trivial und isoliert zu halten.

Antwort

Design & Analyse von Algorithmen

Ich denke, diese Frage hängt von Ihrem Lehrer ab und davon, wie dieses Fach organisiert war Deine Karriere.

Das Analysieren von Algorithmen kann so schwierig sein, wie es jemand möchte. Berücksichtigen Sie, dass es ungelöste Probleme gibt, und nicht nur das: Probleme, die nicht gelöst werden können.

Die Sache ist, dass Sie ein Problem haben können, und wenn Sie wissen, dass es nicht gelöst werden kann, das ist perfekt. Aber was ist, wenn du es nicht tust? Sie können viel Zeit damit verbringen, zu versuchen, die NP-Vollständigkeit zu demonstrieren oder eine polynomielle Zeitlösung zu finden, um sie zu lösen.

Die Demonstration der NP-Vollständigkeit ist nicht einfach. Ja, es gibt viele Probleme bekannt, aber die Sache ist, die Reduzierungen zu finden, um zu zeigen, dass es NP-Complete ist. Und was ist, wenn Sie viele Stunden / Tage / Monate damit verbringen, es zu demonstrieren, und es in Polynomzeit gelöst werden kann? 🙂

Es gibt auch andere Themen wie Compiler , Gruppentheorie und Primitive rekursive Funktionen die sein können als schwer wie der Fachplan oder der Lehrer es wünscht;)

Kommentare

  • s / Analisis / Analyse … sonst genau das, was ich denke … primitive rekursive Funktionen, uargh !!
  • Einverstanden, ich habe meinen Bachelor-Abschluss durcheinander gebracht, ohne sicher zu sein, dass ich jemals erfolgreich ' ' alles (obwohl meine Algorithmusklasse aufgrund des Professors viel zu einfach war)
  • Ich werde Ihnen in diesen Tagen zeigen, wie schwer Algorithmen sein können 🙂

Antwort

Mustererkennung dh Künstliche Intelligenz. Dies bezieht sich auf Smart Computing zusammen mit anderen Mustererkennungswerkzeugen wie optischer Zeichenerkennung, Voice-to-Text, Gesichtserkennung usw.

Viele der „coolen“ Dinge, die Sie mit Computern tun können oder möchten Verlassen Sie sich auf diese Algorithmen, und wir haben jahrzehntelang versucht, sie zu perfektionieren, ohne großen Erfolg.

Kommentare

  • ' ist schwierig, weil es ' ist nicht etwas, das ' deterministisch ist. Die Entwicklung einer guten KI-Mustererkennung erfordert Experimente für jede Anwendung, für die Sie sie verwenden möchten, um sicherzustellen, dass Sie den richtigen Algorithmus, die richtigen Funktionen usw. auswählen.
  • Ich fange gerade erst an, diesen bestimmten Berg zu besteigen (Mustererkennung). Es ist ' schwierig. Viel Mathe. Großartige, riesige, einschüchternde Mathe-Stapel, die mich anstarren und mich zum Betreten wagen.
  • Nun … Mustererkennung kann auch als angewandte Statistik angesehen werden, ' ist nicht nur ein Problem im Bereich von CS

Antwort

Meine Auswahl ist Berechenbarkeitstheorie

(Hmm … vielleicht ist es nicht so wichtig, aber es war sicher schwierig)

Kommentare

  • Ich stimme zu und würde es persönlich als en.wikipedia.org/wiki/Theory_of_computation verallgemeinern.
  • Ich ' stimme zu, dass die Berechnungstheorie schwierig war, aber sie war auch eines meiner Lieblingsfächer. Zugegeben, ich hatte ein Doppelstudium in Mathematik. ..
  • +1 Ich habe auch ein Doppelstudium absolviert. Ich konnte ein Intro zu diesem Zeug machen, aber die Absolventenversion … ich bin froh, dass ich es fallen gelassen habe!
  • es war schwer, Wir wissen nicht so viel darüber, dass es ' nicht wichtig ist viel.

Antwort

Es gibt nur zwei schwierige Probleme in der Informatik: Cache-Ungültigmachung und Benennung von Dingen. – Phil Karlton

Antwort

Kategorietheorie (diskrete Mathematik), aber es lohnt sich

Kommentare

  • Welche spezifischen Vorteile hat Ihnen das Lernen der Kategorie gebracht? Theorie?
  • @zvrba: Ein tieferes Verständnis der Abstraktionstechniken und der Problemzuordnung
  • Woher haben Sie es gelernt?
  • @zvrba: Ich habe keine ' Ich sehe das Buch nicht in meinem Bücherregal. ' befindet sich wahrscheinlich noch im Speicher (Umbau), aber ich denke, es war dieses Buch amazon.com/Category-Computer-Scientists-Foundations-Computing/…

Antwort

Kryptographie

Wenn Sie es nur leicht falsch machen, kann es ein Unternehmen Millionen kosten.

Kommentare

  • Obwohl Cryp immer beliebter wird ' ist nicht einzigartig für Software.
  • Krypto ist ' nicht so schwer. Das Problem ist, dass die Sicherheit ' nicht einfach getestet werden kann, sodass Sie Ihre Fehler nur bemerken, wenn Sie jemand hackt. Die mangelnde Testbarkeit gilt jedoch für die meisten Formen der IT-Sicherheit, nicht nur für Krypto.

Antwort

Betriebssysteme, besonders der Teil, der irgendetwas mit Threading zu tun hat.

Und der Grund ist nicht, dass es so schwer war, 5 Philosophen dazu zu bringen, Pizza mit einer Gabel zu essen. Der Grund ist, dass das Schreiben von Multithread-Code in und aus ist selbst schwierig und nicht unbedingt leicht für den menschlichen (zumindest männlichen – meiner Frau zufolge) Verstand zu berechnen.

Kommentare

  • Lassen Sie Ihre Frau schreiben der Multithread-Code dann 🙂
  • Denken Sie daran, wenn es um Multithreading mit gemeinsamem Speicher geht, ist der Computer ein hinterhältiges Schwein, das Sie erreichen soll. Doppelt so, wenn es sich um einen Multicore-Prozessor handelt, kann ein Kern sein Sie werden vor Ihren Augen abgelenkt, wo Sie ' zuschauen, und der andere kann dann hinter Sie gehen und Ihnen in den Rücken stechen.

Antwort

Auch ich stimme dafür Compiler-Design. Besonders dort, wo der DFA- und NFA-Teil ins Spiel kommt. Ich bin mir auch nicht so klar über NP-Probleme und ähnliches.

Kommentare

  • Ja, ich ' Ich hätte es mit Compilern schwerer gehabt, wenn ich ' nicht zuerst die Berechnungstheorie genommen hätte.
  • DFAs und NFAs sind Hühnerfutter. Warten Sie, bis Sie LALR (1) analysieren müssen.

Antwort

Warteschlangentheorie

Technisch gesehen ist dies ein Zweig der Mathematik, der jedoch in CS von hoher Relevanz ist.

Fast alles in CS basiert auf Warteschlangen (sichtbar (offensichtlich) und unsichtbar (nicht so offensichtlich oder impliziert)).

In den frühen Tagen von CS waren die Warteschlangen offensichtlich.
Eine Warteschlange von Programmen (jedes Programm ein Kartenspiel).

Heutzutage sind die Warteschlangen nicht so offensichtlich. Das Internet zum Beispiel: ein paketvermitteltes Netzwerk, aber die Pakete bilden Warteschlangen, und das Weiterleiten der Pakete ist eine Form der Warteschlangenminimierung.

Kommentare

  • Hey ! (?Sind Sie ein (Lisp-Programmierer)
  • Nicht (so viel wie (man könnte (sehen), aber (es ist (bekannt)). Um zu geschehen)).

Antwort

Numerische Analyse

Es ist nicht allzu schwer für die Spielzeugprobleme, die Sie im Kurs erhalten, aber Sobald Sie anfangen, über echte Probleme nachzudenken, wird dies zu einer ernsthaften Plackerei.

Antwort

Interpretieren der Kundenanforderungen , wenn der Kunde nicht wirklich weiß, was er will. Dies wird nicht im College gelehrt und ist eine der wichtigsten Fähigkeiten.

Kommentare

  • Ich ' bin mir nicht sicher, ob ich diesem Konzept als Informatikkonzept zustimme ' sieht nicht, wie es mit der wissenschaftlichen Methode gelöst werden kann.
  • @ jmort253 – Dies ist wahr, aber die Informatik versucht es (meiner Meinung nach erfolglos) Untersuchen Sie dieses Gebiet mit formalen Desig-Methoden n und Validierung.
  • Ich stimme zu, ist kein " Informatik " -Konzept – sondern als ich meine Karriere begann Ich war mir der Tatsache nicht bewusst, dass Kunden ' nicht wissen, was sie wollen. Ich dachte, dass ALLE Softwareprojekte mit einer Art formalem Anforderungsdokument geliefert wurden. Vielleicht ein Vortragsthema für einen Software-Engineering-Kurs (vielleicht hat mein College ' es nicht behandelt)?

Antwort

Persönlich war meine formale Logik. Am Anfang war es schwierig, aber sobald Sie die Regeln festgelegt und es geschafft haben, genug damit zu spielen, geht Ihr Gehirn Logic++;, was in der Entwicklung eine sehr gute Sache ist.

Als Randnotiz beantworte ich die Frage direkt – dies war definitiv nicht das schwierigste Fach, als ich mein Studium absolvierte, aber es war wahrscheinlich das schwierigste „im wirklichen Leben anwendbare“ Fach.

Kommentare

  • Formale Logik ist etwas, mit dem ich eine Hassliebe hatte. Ich dachte gern über die Konzepte nach, aber ich konnte nie verstehen, wie es mir half, bis ich später auf reale Probleme stieß, die logisches Denken erforderten.
  • @ jmort253 – Es war wirklich dasselbe für mich. Ich kämpfte sogar bis zu dem Punkt zu denken, dass ich ' es nicht schaffen würde, studierte so lange und intensiv, bis es schließlich in meinem Kopf klickte . Danach waren die Vorteile erstaunlich.

Antwort

Compilerkonstruktionen. Schwer, aber muss die Konzepte hinter

Kommentaren

  • verstehen. Sie sollten für dieselbe Antwort, die vor Ihnen gegeben wurde, eine Gegenstimme abgeben, anstatt Geben Sie dieselbe Antwort erneut.

Antwort

Kernel Design jemand? Nun, ich weiß nicht wirklich, wie es gemacht wird und was die Zielfunktionen für ein Betriebssystem sind, aber für mich muss das Nachdenken über das Entwerfen eines Kernels eine entmutigende Aufgabe sein.

Ich denke auch an Computersicherheit ; Ich weiß nicht wirklich, was ein System unsicher macht, außer natürlich offensichtlichen Pufferüberläufen, XSS- und SQL-Injektionen.

Ich bin mir nicht sicher, aber es scheint, dass einige Algorithmen auch unsicher sind. Schauen Sie sich das MetaSploit-Projekt an, es listet alle Arten und Arten von Sicherheitsverletzungen auf: Sie können sehen, dass es viele Möglichkeiten gibt, wie ein Programm fehlerhaft sein kann.

Antwort

Es gibt viele unangenehme Themen auf dem Gebiet, aber meine Auswahl für die anhaltenden Schwierigkeiten betrifft Globale Systemeigenschaften . Beispiele für dieses allgemeine Thema sind:

  • Sicheres und Deadlock-freies Multithreading
  • Sicherheit

Diese sind schwierig, weil Sie “ Nach etwas, das nur existiert, wenn alles korrekt ist, benötigen Sie eine globale Systemeigenschaft, und dennoch führen praktisch alle verfügbaren Tools (und alle diejenigen, die meiner Erfahrung nach auf echte Probleme skaliert werden) nur wirklich lokales Denken Es ist der Prozess, von der Überlegung über die Teile des Programms zum gesamten Shebang überzugehen, der schwierig ist, insbesondere weil es durchaus möglich ist, Teile zu haben, die alle an sich korrekt sind, bei denen es aber immer noch subtile Fehler gibt, weil die Komponenten sind falsch angeordnet; Die Fehler können unerwünschte Merkmale sein …

Antwort

Management Information Services Während meiner Studienzeit hatte ich jedes Semester ein Managementfach, was mich total verrückt machte.
Hart! gut Themen wie Compiler-Design , OS-Design usw. sind hart, aber sie sind wirklich interessant und herausfordernd.Ich habe mich wirklich mit Themen wie Management Information System / Services usw. beschäftigt, da sie voller Langeweile sind und man viel Theorie durchgehen muss.

Kommentare

  • Voller Langeweile, weil sie ' über die konzeptionellen Feinheiten jedes Systems sprechen. während die Hälfte der Leute selbst nie ein System geschrieben hat (aber sie haben sicherlich eine Vielzahl von verwendet). Außerdem verwenden die Seminare so viele geladene Wörter, bieten jedoch kein reales Beispiel im Klartext. Wie bei Entscheidungsunterstützungssystemen … könnten Sie ' nicht einfach ein paar Screenshots von Google Analytics-Berichten (FML) ablegen, um die Schüler auf die gleiche Seite zu bringen, bevor Sie einen Intellektuellen haben Orgasmus vor dem Publikum.

Antwort

Wenn Sie in C / C ++ arbeiten, sind Zeiger die meisten wichtiges Konzept zu wissen. Aber irgendwie habe ich es im College nie ganz verstanden.

Kommentare

  • wirklich? Ich meine, jede Person ist anders, aber ich denke, es gibt viele (ich meine viele ) Themen, die schwieriger sind als nur Zeiger . Beispiel: Computer ' s Architektur , Assambler , die in irgendeiner Weise mit Zeigern zusammenhängen; )
  • Richtig, aber Sie ' werden es einfacher finden, die Speicherreferenzierung durch Assembler zu verstehen, da Sie tatsächlich mit raw Zeigern arbeiten, während In C / C ++ arbeiten Sie mit Verweisen auf Zeiger, was die Leute nur verwirrt, weil über die Abstraktion nie ausgesprochen wird.
  • Ah Assambler, der beste Programmierer ' s tea
  • Der Typ fragte nach den Themen, die schwierig, aber wichtig sind, daher Hinweise.
  • @Matt: Du hast gerade meinen Tag gemacht: D @Manoj R: Zeiger sind trivial wenn Sie sie nur als Array-Zugriff betrachten. Oder ist der Array-Zugriff schwierig?

Antwort

Entwurf und Analyse von Algorithmen. Es ist nicht so sehr, dass es schwierig ist, bekannte Algorithmen zu verstehen und zu analysieren, sondern dass das Entwerfen und Analysieren neuer Algorithmen für schwierige Probleme schwierig ist und ein umfassendes Verständnis vieler Bereiche und Praktiken erfordert bei der Anwendung vieler verschiedener Techniken.

Antwort

Constraint-Programmierung. , das sich mit kombinatorischen Problemen und NP-vollständigen Problemen befasst.

Antwort

Optimierung von Algorithmus ist ein herausforderndes Thema.

Antwort

Welches ist das schwierigste CS-Fach / die schwierigste CS-Theorie, die Sie studiert haben, aber für das Fach wichtig?

Diskrete Mathematik.

Es war schwierig, weil die Theorien sehr lose miteinander verwandt sind, aber sie werden in CS verwendet. Zu viel Auswendiglernen, denke ich …

Beweis durch Induktion, Big O, Rekursion, Teilen und Beschaffen, Graphentheorie, bla bla .. argh!

Der Compiler war für mich einfach, weil wir die Theorie der Automaten anwenden mussten. ^^

Antwort

Z-Notation / formale Methoden, die verwendet werden, um mein Gehirn am College zu verletzen. Hauptsächlich, weil ich es hasste. Schwer ist viel einfacher, wenn Sie Spaß daran haben, was Sie tun, und viel schwieriger, wenn Sie es nicht tun.

Antwort

Ich mag Ihre Antworten (und ich habe nicht vergessen, sie zu verbessern), wie Compiler, Kernel usw. Die meisten Programmierer haben diese Probleme jedoch nie gelöst. Es gibt ein etwas einfacheres, aber häufigeres Problem: Parallelität – Threads, Sperren. Es ist sehr einfach, ein Programm zu schreiben, das magische Fehler erzeugt, wenn wir auch nur einen kleinen Fehler in der Parallelitätsarchitektur machen.

Also, ich sage, es ist nicht das schwierigste Problem beim Rechnen, aber weil es wird häufig verwendet, es ist gefährlich.

Antwort

Objektorientierte Programmierung

Es liegt wahrscheinlich daran, dass ich FORTRAN und APL die Zähne geschnitten habe, aber die Umstellung von streng prozeduralen Sprachen auf Objekte war etwas, das ich war Ich habe jahrelang damit gekämpft. Es hilft nicht, dass sogenannte „Experten“ widersprüchliche Artikel und Tutorials darüber schreiben, was es bedeutet, objektorientiert zu sein und die besten / richtigen Methoden zum Erstellen objektorientierter Programme.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.