web-dev-qa-db-fra.com

Sujet / théorie le plus difficile en informatique?

Quelle est la matière/théorie CS la plus difficile que vous ayez étudiée mais importante pour le domaine? Et la raison s'il vous plait?

17
Abimaran Kugathasan

"Il y a 2 problèmes difficiles en informatique: les erreurs de mise en cache, de nommage et off-by-1"

37
Brian Carlton

Honnêtement, la construction du compilateur!

35
Pemdas

Conception et analyse d'algorithmes

Je pense que cette question dépend de l'enseignant que vous avez eu et de la façon dont cette matière a été organisée dans votre carrière.

L'analyse d'algorithmes peut être aussi difficile que quelqu'un le souhaite. Prenez en compte qu'il y a des problèmes non résolus, et pas seulement: des problèmes qui ne peuvent pas être résolus.

Le fait est que vous pouvez avoir un problème, et si vous savez qu'il ne peut pas être résolu, c'est parfait. Et si vous ne le faites pas? Vous pouvez passer beaucoup de temps à essayer de démontrer qu'il est NP-Complete ou à trouver une solution temporelle polynomiale pour le résoudre.

Démontrer la complétude NP n'est pas facile. Oui, beaucoup de problèmes sont connus, mais le problème est de trouver les réductions pour démontrer que c'est NP-Complete. Et si vous passez beaucoup d'heures/jours/mois à essayer de le démontrer, et que cela peut être résolu en temps polynomial? :)

Il y a aussi d'autres sujets, comme Compilateurs, Théorie des groupes et Fonctions récursives primitives qui peuvent être aussi difficiles que le plan du sujet ou le professeur le veut; )

22
Oscar Mederos

Reconnaissance de formes c'est-à-dire l'intelligence artificielle. Cela fait référence à l'informatique intelligente ainsi qu'à d'autres outils de reconnaissance de formes tels que la reconnaissance optique de caractères, la voix au texte, l'identification faciale, etc.

Beaucoup des choses "sympas" que vous pouvez faire ou souhaiteriez faire avec les ordinateurs s'appuient sur ces algorithmes, et nous essayons de les perfectionner depuis des décennies sans grand succès.

18
Malfist

Mon choix est théorie de la calculabilité

(Hmm ... peut-être que ce n'est pas si important, mais c'était sûr difficile)

12
Maglob

Il n'y a que deux problèmes difficiles en informatique: l'invalidation du cache et le nommage. - Phil Karlton

10
Gareth

théorie des catégories (mathématiques discrètes), mais ça vaut le coup

7
Steven A. Lowe

Cryptographie

Si vous le faites un peu mal, cela pourrait coûter des millions à une entreprise.

6
davidhaskins

Systèmes d'exploitation, en particulier la partie qui a quelque chose à voir avec le filetage.

Et la raison n'est pas parce qu'il était si difficile de faire manger de la pizza à la fourchette par 5 philosophes. La raison en est que l'écriture de code multithread est en soi difficile et pas nécessairement facile à calculer pour l'esprit humain (au moins masculin - selon ma femme).

4
Peter Turner

Analyse numérique

Ce n'est pas trop difficile avec les problèmes de jouets qui vous sont donnés dans le cours, mais une fois que vous commencez à considérer de vrais problèmes, cela se transforme en corvée grave.

3
Peter Taylor

Théorie des files d'attente

Eh bien, techniquement, c'est une branche des mathématiques, mais elle est très pertinente en CS.

Presque tout dans CS est basé sur des files d'attente (visibles (évidentes) et invisibles (pas si évidentes ou implicites)).

Au début de CS, les files d'attente étaient évidentes.
Une file d'attente de programmes (chacun programme un jeu de cartes).

De nos jours, les files d'attente ne sont pas si évidentes. Internet par exemple: un réseau à commutation de paquets, mais les paquets forment des files d'attente et le routage des paquets est une forme de minimisation de la file d'attente.

3
Martin York

Moi aussi, je vote pour Compiler Design. Surtout là où la partie DFA et NFA entre en jeu. Je ne suis pas aussi clair sur les problèmes de NP et autres).

3
Yuva

Interpréter les exigences du client lorsque le client ne sait pas vraiment ce qu'il veut. Ce n'est pas enseigné au collège et c'est l'une des compétences les plus essentielles à posséder.

2
Steven Striga

Il existe de nombreux sujets délicats dans le domaine, mais mes choix pour la difficulté persistante sont ceux impliquant Global System Properties. Voici des exemples de ce sujet général:

  • Multi-threading sûr et sans blocage
  • Sécurité

Ce sont difficiles parce que vous recherchez quelque chose qui n'existe que lorsque tout est correct; vous avez besoin d'une propriété système globale et pourtant pratiquement tous les outils disponibles (et tous ceux qui s'adaptent aux problèmes réels de mon expérience) ne font vraiment que du raisonnement local . C'est le processus de passer du raisonnement sur les morceaux du programme à l'ensemble du Shebang qui est difficile, en particulier parce qu'il est tout à fait possible d'avoir des morceaux qui sont tous corrects en eux-mêmes mais où il y a encore des bogues subtils parce que les composants sont mal organisés; les bogues peuvent être des caractéristiques émergentes indésirables…

1
Donal Fellows

Constructions du compilateur. Difficile mais doit comprendre les concepts derrière

1
Nipuna

Kernel Design quelqu'un? Eh bien, je ne sais pas vraiment comment cela se fait et quelles sont les fonctionnalités ciblées pour un système d'exploitation, mais pour moi, penser à la conception d'un noyau doit être une tâche intimidante.

Je pense aussi à sécurité informatique; Je ne sais pas vraiment ce qui rend un système dangereux, sauf bien sûr, les débordements de tampon évidents, les injections XSS et SQL.

Je ne suis pas sûr, mais il semble que certains algorithmes soient également dangereux; regardez le projet MetaSploit, il répertorie tous les types et types de violations de sécurité: vous pouvez voir qu'il existe de nombreuses façons dont un programme peut être défectueux.

1
jokoon

Personnellement, le mien était Formal Logic. C'était difficile au départ, mais une fois que vous avez établi les règles et que vous avez réussi à jouer avec suffisamment, votre cerveau va Logic++;, ce qui en développement est une très bonne chose.

En guise de note complémentaire, je réponds directement à la question - ce n'était certainement pas le sujet le plus difficile lorsque j'ai obtenu mon diplôme, mais c'était probablement le sujet le plus difficile "applicable dans la vie réelle".

1
Kyle Rozendo

Conception et analyse d'algorithmes. Ce n'est pas tant qu'il est difficile de comprendre et d'analyser les algorithmes connus, c'est que la conception et l'analyse de nouveaux algorithmes pour les problèmes difficiles sont difficiles et nécessitent une large compréhension de nombreux domaines et une pratique dans l'application de nombreux différents techniques.

0
philosodad

J'aime vos réponses (et je n'ai pas oublié de les voter), comme le compilateur, le noyau, etc., mais la plupart des programmeurs n'ont jamais rencontré ces problèmes. Il y a un problème un peu plus simple mais plus courant: simultanéité - threads, verrouillage. Il est très facile d'écrire un programme qui produit des erreurs magiques, si nous faisons même un petit bogue dans l'architecture de concurrence.

Donc, je dis, ce n'est pas le problème le plus difficile en informatique, mais parce qu'il est couramment utilisé, il est dangereux.

0
ern0

L'optimisation de l'algorithme est un sujet difficile.

0
Rachel

Notation Z/méthodes formelles utilisées pour me faire mal au cerveau à l'université. Principalement parce que je détestais ça. Difficile est beaucoup plus facile lorsque vous aimez ce que vous faites et beaucoup plus difficile lorsque vous ne le faites pas.

0
Ian

Quelle est la matière/théorie CS la plus difficile que vous ayez étudiée mais importante pour le domaine?

Mathématiques discrètes.

C'était difficile car les théories sont très peu reliées entre elles mais elles sont utilisées dans CS. Trop de mémorisation je suppose ...

Preuve par induction, Big O, récursion, division et conquête, Théorie des graphes, bla bla .. argh!

Le compilateur a été facile pour moi, car nous avons dû prendre la théorie des automates. ^^

0
mythicalprogrammer

Programmation par contraintes. qui traite des problèmes combinatoires, des problèmes NP-complets.

0
Sorantis

Management Information Services Pendant ma période universitaire, j'avais un sujet de gestion par semestre, ce qui me rendait complètement fou.
Dure! des sujets comme Compiler Design, OS Design etc sont difficiles mais ils sont vraiment intéressants et stimulants. J'ai vraiment gâché des sujets comme le système/les services d'information de gestion, etc., car ils sont pleins d'ennui et vous devez passer par beaucoup de théorie.

0
Ranger

Si vous travaillez en C/C++, les pointeurs sont le concept le plus important à connaître. Mais d'une manière ou d'une autre, je ne l'ai jamais entièrement compris à l'université.

0
Manoj R

Programmation orientée objet

C'est probablement parce que j'ai coupé mes dents sur FORTRAN et APL, mais le passage des langages strictement procéduraux aux objets est quelque chose avec lequel je me bats depuis des années. Cela n'aide pas les soi-disant "experts" d'écrire des articles et des didacticiels contradictoires sur ce que signifie être orienté objet et les meilleures/bonnes façons de construire des programmes orientés objet.

0
oosterwal