it-swarm-eu.dev

Schwierigstes Fach / Theorie in der Informatik?

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

17

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

37
Brian Carlton

Ehrlich gesagt, Compilerkonstruktion!

35
Pemdas

Design & Analyse von Algorithmen

Ich denke, diese Frage hängt von dem Lehrer ab, den Sie hatten, und wie dieses Fach in Ihrer Karriere organisiert war.

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, ist das perfekt. Aber was ist, wenn Sie es nicht tun? Sie können viel Zeit damit verbringen, zu demonstrieren, dass es NP-vollständig ist, oder eine polynomielle Zeitlösung zu finden, um es zu lösen.

Der Nachweis der NP-Vollständigkeit ist nicht einfach. Ja, viele Probleme sind bekannt, aber es geht darum, die Reduzierungen zu finden, um zu demonstrieren, dass es NP-vollständig 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 Fächer wie Compiler, Gruppentheorie und Primitive rekursive Funktionen, die so schwierig sein können, wie es der Fachplan oder der Lehrer wünscht; )

22
Oscar Mederos

Mustererkennung d. H. 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, basieren auf diesen Algorithmen, und wir haben jahrzehntelang versucht, sie zu perfektionieren, ohne großen Erfolg.

18
Malfist

Meine Wahl ist Berechenbarkeitstheorie

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

12
Maglob

In der Informatik gibt es nur zwei schwierige Probleme: die Ungültigmachung des Caches und die Benennung von Dingen. - Phil Karlton

10
Gareth

kategorietheorie (diskrete Mathematik), aber es lohnt sich

7
Steven A. Lowe

Kryptographie

Wenn Sie es nur leicht falsch machen, könnte es ein Unternehmen Millionen kosten.

6
davidhaskins

Betriebssysteme, insbesondere der Teil, der etwas 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 dafür ist, dass das Schreiben von Multithread-Code an und für sich für den menschlichen (zumindest männlichen - meiner Frau zufolge) Verstand schwierig und nicht unbedingt einfach zu berechnen ist.

4
Peter Turner

Numerische Analyse

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

3
Peter Taylor

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.

3
Martin York

Ich stimme auch fü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 so.

3
Yuva

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, die man haben muss.

2
Steven Striga

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 suchen, das nur existiert, wenn alles korrekt ist. Sie benötigen eine globale Systemeigenschaft, und dennoch führen praktisch alle verfügbaren Tools (und alle , die meiner Erfahrung nach auf echte Probleme skalieren) nur wirklich lokales Denken aus . 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 jedoch immer noch subtile Fehler gibt, weil die Komponenten falsch angeordnet sind. Die Fehler können unerwünschte emergente Eigenschaften sein ...

1
Donal Fellows

Compilerkonstruktionen. Schwer, aber muss die Konzepte dahinter verstehen

1
Nipuna

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

1
jokoon

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.

1
Kyle Rozendo

Design und Analyse von Algorithmen. Es ist nicht so sehr schwer zu verstehen und zu analysieren bekannte Algorithmen, es ist schwierig, neue Algorithmen für schwierige Probleme zu entwerfen und zu analysieren, und es erfordert ein umfassendes Verständnis vieler Bereiche und Praktiken bei der Anwendung vieler verschiedener Techniken.

0
philosodad

Ich mag Ihre Antworten (und ich habe nicht vergessen, sie zu bewerten), wie Compiler, Kernel usw., aber die meisten Programmierer sind diesen Problemen nie begegnet. 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.

Ich sage also, es ist nicht das schwierigste Problem beim Rechnen, aber weil es häufig verwendet wird, ist es ein gefährliches.

0
ern0

Die Optimierung des Algorithmus ist ein herausforderndes Thema.

0
Rachel

Z-Notation/formale Methoden, die verwendet wurden, 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.

0
Ian

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, Division und Conqure, Graphentheorie, bla bla .. argh!

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

0

Constraint Programming. behandelt kombinatorische Probleme, NP-vollständige Probleme.

0
Sorantis

Management Information Services Während meiner Studienzeit hatte ich jedes Semester ein Managementfach, was mich total verrückt machte.
Zäh! Nun, 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.

0
Ranger

Wenn Sie in C/C++ arbeiten, sind Zeiger das wichtigste zu wissende Konzept. Aber irgendwie habe ich es im College nie ganz verstanden.

0
Manoj R

Objektorientierte Programmierung

Das liegt wahrscheinlich daran, dass ich mir bei FORTRAN und APL die Zähne geschnitten habe, aber mit der Umstellung von streng prozeduralen Sprachen auf Objekte habe ich jahrelang zu kämpfen. Es hilft nicht, dass sogenannte "Experten" widersprüchliche Artikel und Tutorials darüber schreiben, was es bedeutet, objektorientiert zu sein und wie man objektorientierte Programme am besten/richtig konstruiert.

0
oosterwal