Je commence actuellement à l'université [informatique] et nous avons beaucoup d'occasions de commencer par la recherche. Avant de trouver ce site Web, je n'avais pas l'intention de continuer sur cette voie [je voulais travailler avec l'IA, probablement le développeur de jeu.], Mais maintenant je peux [ou j'ai besoin] de faire un choix.
Pouvez-vous me convaincre de rejoindre ce "monde"? Quels "segments" puis-je suivre? Existe-t-il des sujets sur lesquels un informaticien ou un chercheur travaille?
soft-question
career
JulioC
la source
la source
Réponses:
Je peux relater mes raisons en tant qu'étudiant préparant une licence aux programmes d'études supérieures du SDC cet hiver (il reste donc très peu de temps!).
la source
En effet, décider de faire de la recherche en informatique théorique est une question de choix. Mais même en parcourant les questions sur ce site (comme vous l'avez probablement déjà fait), j'espère vous donner une idée de l'ampleur, de la portée et de la beauté du domaine. Je ne sais même pas par où commencer pour vous diriger vers des sources que vous pouvez lire pour apprécier le type de travail des théoriciens, mais il y a une question sur ce même site qui pourrait vous intéresser, à mon avis.
La question est:
Il y a actuellement 64 réponses à cette question, couvrant des algorithmes pour les petits problèmes, les gros problèmes, les énigmes et les mathématiques profondes. Je crois fermement que si vous ne faisiez que parcourir cette liste et en savoir plus sur l'un des algorithmes qui attirent votre attention, vous en apprendreriez beaucoup sur ce que font les informaticiens théoriques et pourquoi nous le faisons.
Bonne chance !
la source
Si nombre d’entre nous sont allés à la recherche, c’est parce que nous repoussons les limites de ce qui est connu à la fois intellectuellement enrichissant et agréable. Faire de la recherche nous donne également une liberté presque sans précédent pour travailler sur des problèmes que nous trouvons significatifs et intéressants, et cela nous met constamment au défi (ce dont nous jouissons).
TCS (par opposition à d'autres domaines) est une étude mathématique de l'informatique. Vous pouvez travailler sur l'aspect théorique de nombreux domaines différents, des systèmes distribués à l'apprentissage automatique. Le choix entre TCS et d’autres domaines de l’informatique dépend de vos goûts et de vos capacités. Si vos intérêts et capacités naturels résident davantage dans la programmation ou la conception de systèmes que dans l'analyse mathématique, alors vous ne devriez peut-être pas vous lancer dans le TCS. D'autre part, si vos compétences et vos intérêts se situent davantage dans les aspects mathématiques, vous devriez alors envisager le SDC.
En outre, vous ne devez pas toujours choisir un domaine parmi tous les autres. Beaucoup de gens travaillent sur des problèmes à la fois théoriques et pratiques. Ceci est courant, par exemple, dans l’apprentissage automatique, où nous concevons et analysons d’abord des algorithmes (souvent de la théorie), puis nous les testons dans le monde réel (conception expérimentale, applications, etc.).
Un bon moyen de comprendre ce que vous voulez faire est de prendre des cours dans de nombreux domaines différents, et peut-être d'essayer à la fois l'industrie et la recherche pendant vos étés. À la fin de vos études, vous aurez probablement une bonne idée de ce que vous voulez faire.
la source
La théorie des langages de programmation est amusante pour les jeunes et les moins jeunes. C'est appliquer la logique au monde réel. Venez vous joindre à la parade !!
Plus sérieusement, pour moi, la théorie du langage de programmation est intéressante pour les raisons suivantes:
impact perçu sur le monde réel: les nombreux systèmes de types utilisés en Haskell et dans d'autres langages fonctionnels, issus d'idées purement logiques (System F), ont une influence considérable sur le développement de langages tels que Java (ses génériques horribles, fermetures) et Scala (le langage moderne). jour où théorie-rencontre-terrain de pratique).
beauté: de nombreux outils utilisés dans la théorie des langages de programmation sont basés sur la logique. Cela provient en grande partie de la correspondance de Curry-Howard, qui démontre un lien étroit entre les règles de preuve logiques et les règles de dactylographie pour les langages de programmation, et entre la suppression de la coupe en logique et l'évaluation dans un langage de programmation. Deux beaux exemples récents d'applications de la logique dans la recherche sur le langage de programmation sont les travaux approfondis sur la logique de séparation en vérification et l'application d'idées de preuve axées sur la compréhension de concepts de langage de programmation tels que l' ordre d'évaluation et l'appariement de modèles .
amusant: vous pouvez faire de la programmation et de la théorie en même temps, surtout si vous formalisez et vérifiez vos théories en utilisant un assistant de preuve tel que Coq.
et beaucoup plus.
la source
L'une des principales raisons pour lesquelles je trouve la théorie de l'informatique ("ma" branche de l'informatique théorique) fascinante et intéressante à étudier est la suivante: elle nous fournit un moyen d'enquêter sur des questions philosophiques profondes (et parfois déroutantes).
Alan Turing, l'un des fondateurs de la théorie du calcul, a tenté de préciser le sens de «calcul d'une fonction» pour un être humain équipé d'un morceau de papier, en donnant une description mathématique du processus. Je ne suis pas le seul à penser qu'il a eu un très grand succès et les machines de Turing se sont révélées être un modèle précis de nombreux autres processus informatiques.
Maintenant que nous possédons une classe d’objets mathématiques décrivant des calculs, nous pouvons réellement prouver des théorèmes à leur sujet, essayant ainsi de découvrir ce qui peut être calculé et comment il peut être calculé; Il s'est immédiatement avéré que de nombreuses fonctions parfaitement légitimes ne peuvent être calculées et qu'elles peuvent être classées selon un degré d'incompatibilité (certaines fonctions sont simplement «plus non calculables» que d'autres).
Certains autres, les premiers généralement identifiés par Juris Hartmanis et Richard E. Stearns, ont essayé de décrire mathématiquement ce que cela signifie pour une fonction (resp., Un problème) d'être difficile ou facile à calculer (resp., À résoudre). Il existe plusieurs mesures de complexité selon lesquelles la dureté des problèmes peut être décrite; le plus commun est combien de temps il nous faut pour les résoudre. Alan Cobham et Jack Edmonds ont assez bien réussi à identifier une notion raisonnable de «calcul efficace».
Dans le cadre de la complexité de calcul, nous pouvons maintenant prouver des résultats compatibles avec notre notion intuitive de calcul. Mon exemple préféré est le théorème de la hiérarchie temporelle: si on nous donne plus de temps pour calculer, nous pouvons résoudre des problèmes plus difficiles.
Le problème central non résolu de la théorie de la complexité, P vs NP , consiste simplement à formaliser une autre question importante du point de vue philosophique: est-il vraiment plus difficile de résoudre un problème que de vérifier si une solution alléguée est vraiment correcte? Je crois que cette question mérite d'être posée et de répondre, indépendamment de sa signification pratique.
la source
Nous ne pouvons pas vous "convaincre", car l'informatique n'est pas mathématiquement meilleure que l'IA ou tout autre domaine. Donc, nous ne pouvons pas réaliser une preuve de sa domination! OMI, c'est plus une question de goût qu'autre chose.
la source
Il est difficile de répondre à cette question avec certitude, mais il convient de garder quelques points à l’esprit.
Si vous faites carrière comme informaticien, votre travail consistera probablement non seulement à traiter et à structurer les données de manière à ce qu’elles soient utiles et efficaces, mais aussi à réfléchir à la manière et aux raisons de ce que vous faites, ainsi qu’au quelle limite il opère (ne serait-ce que pour le comprendre suffisamment pour le mettre en œuvre). C’est surtout le cas pour AI / NLP / IR, qui requiert TRÈS beaucoup de recherche, même si vous n’êtes pas dans le monde universitaire. En fait, le recours à l'IA garantit à peu près que vous ferez face à des problèmes "théoriques", et en fait, il peut être difficile de trouver un emploi sans cette expérience. Donc, cela pourrait être une raison impérieuse que vous envisageriez.
Non seulement cela, mais il serait probablement très difficile de passer la plus grande partie de votre vie dans n’importe quel domaine CS, où vous auriez à maintenir un tel contact intime avec des processus aussi délicats et capricieux (sans parler de la difficulté), sans intérêt que ce soit, même dans les bases du pourquoi les choses fonctionnent. En d’autres termes, je suppose que vous pourriez coller des bibliothèques pour le reste de votre vie, mais si cela ne vous ressemble pas, vous devrez au moins avoir une connaissance passagère des principes fondamentaux des problèmes que vous rencontrez.
Bien que participer activement à la recherche sur le SDC soit une question à laquelle vous seul pouvez probablement répondre, un bon point de départ (IMO) consiste à commencer par examiner les problèmes que vous souhaitez examiner et à partir de là. Vous n’avez peut-être même pas assez d’informations pour répondre à cette question. Une meilleure façon de procéder consiste donc simplement à voir où vos intérêts vous mènent.
la source
Ce qui m’intrigue le plus, c’est la capacité d’appliquer la théorie informatique à d’autres disciplines, notamment la biologie et la biologie cellulaire. Si cette notion vous intrigue également, je vous suggérerais de jeter un coup d'œil à ce qui suit: un essai de Jeannette Wing sur l'importance de la pensée numérique ; et un rapport de la NSF sur l'application de la lentille algorithmique à d'autres disciplines scientifiques.
la source