Je suis dans un cours de CS. Sur quel sujet de programmation devrais-je me concentrer? [fermé]

StackOverflow https://stackoverflow.com/questions/641553

  •  22-07-2019
  •  | 
  •  

Question

Quel est le plus important en ce moment? Je sais que je peux acquérir de l'expérience en programmation plus tard. Parmi les propositions suivantes, lesquelles devrais-je étudier pour devenir un bon programmeur ou analyste une fois mon diplôme obtenu?

  • structures de données
  • algorithmes
  • ingénierie logicielle
  • aspects de bas niveau
  • modèles de conception et analyse d'objets orientés

[Modifier]

Merci pour les réponses. J'aimerais inclure d'autres sujets importants pour servir de référence à d'autres étudiants:

  • programmation paysanne
  • systèmes d'exploitation

[/ Edit]

Remarque: je pense que le premier élément de la liste devrait être apprendre l'anglais

.
Était-ce utile?

La solution

Tous. Tout dans votre liste est important.

Autres conseils

J'étudierais personnellement les éléments suivants:

  • Un langage de type C (C / C / C ++ / C # / Java)
  • Un langage de script
  • Un langage de programmation fonctionnel
    • D'autant plus que nous évoluons dans un monde à plusieurs noyaux, cela nous sera utile car cela permettra une parallélisation au-delà de ce que d'autres langues peuvent actuellement faire. Des infrastructures de télécommunication entières sont exécutées sur Erlang par exemple.
  • structures de données
    • Vous les utiliserez partout. Ils sont agnostiques en langage de programmation, vous en aurez besoin tout au long de votre carrière
  • Algorithmes
    • Ceux-ci iront probablement avec l'élément mentionné ci-dessus. Certaines structures de données ont certains algorithmes pour y accéder.
  • Modèles de conception
    • Oui, bien sûr, apprenez les différents modèles de conception, mais sachez en même temps qu'ils ne sont pas la fin, qu'ils soient tous dans l'ingénierie logicielle.

Tout le reste de votre liste est également très important. Par conséquent, bien que je suggère les éléments ci-dessus, ils ne sont pas plus importants que ceux que vous avez énumérés. Ce sont là les éléments que je souhaiterais avoir de ma scolarité et je suis triste de dire que je ne les ai pas offerts en tant que cours, mais que je devais les apprendre moi-même en parallèle de tous mes autres cours.

Je pense que vous êtes déjà sur la bonne voie étant donné que vous n'avez mentionné aucune langue spécifique dans votre liste. Je pense que c’est l’erreur numéro un commise par les étudiants en CS: se concentrer sur une langue ou un paradigme.

Toute votre liste est très importante. la seule chose que j'ajouterais, c'est une étude assez approfondie du multithreading. Cela deviendra de plus en plus important à l'avenir: ( Article d'Ars-Technica )

Il semble approprié de brancher Joel ici ;-)

http://www.joelonsoftware.com/articles/CollegeAdvice.html

Tous sont obligatoires !!

À quoi penses-tu? Je m'attendais à ce que vous choisissiez entre concentration (par exemple, conception de jeu vs sécurité et cryptographie).

Vous ne pouvez pas choisir entre "algorithmes, opération, infrastructures de données, ingénierie logicielle, etc.". Ce sont les bases! Vous devez tous les apprendre.

Je commencerais par les structures de données et les algorithmes, pas de concours. La conception OO est utile. Un peu de bas niveau, oui. L'ingénierie S / W peut être ignorée (convient avec un grain de sel).

De plus, voici quelques idées:

  • Les bases de la base de données relationnelle (pas seulement "comment utiliser oracle", mais l'algèbre relationnelle réelle)
  • systèmes d'exploitation
  • compilateurs + interprètes
  • quelque chose en IR (/ algorithmes génétiques / réseaux de neurones)

Oui, je suis biaisé en faveur de "noyau dur". Trucs CS. Les travaux surchargés, les processus très lourds et autres conneries de particules que l’on apprend assez tôt dans l’industrie, nul besoin de gaspiller vos ressources pédagogiques. : -)

Voyons voir

Vous devez comprendre la complexité, les structures de données et les algorithmes pour pouvoir effectuer les choix importants. Malheureusement, vous devrez VRAIMENT comprendre ces sujets et résoudre des problèmes complexes, car ils jouent un rôle beaucoup plus important dans les entretiens d'embauche que dans votre travail réel ultérieurement. Ce sont donc les points les plus importants sur lesquels il faut se concentrer pour des raisons pratiques.

L'ingénierie logicielle, les modèles de conception et l'analyse sont très importants (même si je suis partial). Malheureusement, à l'exception des modèles de conception, vous ne pouvez pas vraiment apprendre ces sujets sans vous exercer activement sur des projets majeurs. Concentrez-vous sur la compréhension des notions de programmation orientée objet et de notions de fonction virtuelle / liaison dynamique, car elles sont très importantes et que beaucoup de gens ne les comprennent pas correctement. Faites de votre mieux pour obtenir un bon stage.

Tous les éléments que vous avez énumérés sont des éléments de base d’une éducation informatique correcte, bien que vous deviez vraiment ajouter ce qui suit:

  • Systèmes d'exploitation
  • Mise en réseau
  • Mathématiques (Cours d'introduction au discret, au calcul, à l'algèbre, aux épreuves, aux statistiques)
  • Bases de données
  • Fondations (automates finis, expressions régulières, machines de Turing, etc.)

Ces deux listes ensemble vous donneront une bonne compréhension de base de la science informatique, après quoi vous devrez choisir d'autres sujets spécialisés (ceux qui vous intéressent le plus).

  • Intelligence artificielle
  • Crypto / Sécurité
  • Traitement de l'image / du signal / reconnaissance
  • Compilateurs
  • Graphiques
  • Conception du jeu
  • etc.

Vous constaterez qu'une fois que vous aurez commencé à approfondir un sujet, tous ces cours de base, y compris les mathématiques, commenceront à jouer! Par exemple, je suis en train d’étudier la reconnaissance d’image et j’ai dû utiliser et comprendre des éléments de statistiques, d’IA, de calcul, de preuves, d’algèbre, d’algorithmes, de structures de données, de POO, etc.

Tout sur votre liste est important, mais vous devez également adopter la bonne attitude. Vous devez définir suffisamment de détails sur la manière dont chaque étude que vous étudiez fonctionnent et sur la raison pour laquelle cela a été fait, sans vous limiter à l'assignation de classe. C’est ce qui vous donnera vraiment un avantage en tant que futur spécialiste.

  1. Systèmes multi-threading et distribués.
  2. Comment créer des applications conviviales avec une interface graphique conviviale.

Tout cela est très bon mais les algorithmes sont un bon point de départ. Vous devriez peut-être même commencer par étudier un cours de mathématiques discret pour la théorie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top