Je programmais depuis de nombreuses années mais je voulais un diplôme pour me rendre plus employable. Ayant déjà étudié une fois à l'université, je n'ai pas choisi une majeure en informatique de 5 ans mais un programme d' ingénierie logicielle plus court et plus orienté vers la pratique .
Je m'attendais à ce qu'il se concentre davantage sur les compétences concrètes que sur la théorie, mais j'avais toujours cette idée que les universités et les professeurs aiment que les choses soient correctes, formelles, académiques. C'est toujours de la science, non? Faux - J'ai été surpris de voir combien de cours d'informatique étaient bâclés.
Dans un cours d'introduction au C ++, nous avons été testés sur des clichés comme "pourquoi les globaux sont-ils mauvais" et "pourquoi les constantes sont-ils bons", après avoir simplement écrit 1-2 programmes. Anecdotes aléatoires sans contexte approprié. Polycopiés contenaient system(pause/cls)
, getch
et en- têtes aiment conio.h
et iodos.h
. L'une des tâches consistait à imprimer des "caractères ASCII" de 32 à 255 , avec une capture d'écran montrant un tel tableau imprimé à l'aide de la page de codes Windows-1252, mais sans mentionner du tout l'encodage.
Question : quand une université / professeur semble utiliser des outils et des méthodes de qualité inférieure et / ou obsolètes, et le contenu enseigné est incorrect à la limite, comment gérez-vous de façon constructive et respectueuse, le cas échéant?
Certaines réponses soulignent que vous devez regarder au-delà de la programmation car il s'agit simplement d'un outil pour apprendre des sujets tels que les structures de données et les algorithmes. Je suis d'accord avec cette idée, mais dans ce cas, il n'y avait pas vraiment de tel plan derrière le style pauvre. La plupart des cours enseigneraient simplement un autre "outil" sans beaucoup de théorie de base ni aucune "vue d'ensemble". On a souvent l'impression qu'ils ont été rapidement mis en place juste pour offrir un tel cours.
Je suis resté avec et j'ai finalement obtenu mon diplôme. La qualité est restée assez faible tout au long (à quelques grandes exceptions près), et plusieurs autres étudiants s'en sont plaints. Comme prévu, j'ai appris beaucoup plus de projets personnels et d'emplois à temps partiel que de l'école, mais le processus de fin d'études et le label "étudiant en logiciel" semblent mystérieusement utiles en eux-mêmes!
Réponses:
Les mathématiques et la programmation sont des choses totalement différentes. Les mathématiques sont des sciences, la programmation est une technique. Dans le monde académique, la programmation est quelque chose que vous devez savoir pour pouvoir gérer les vraies choses, celles qui sont réellement intéressantes et importantes - les algorithmes.
Peu importe si le compilateur est ancien et que vous utilisez des
system
appels? Peu importe si vous avez Linux et non Windows? Eh bien, les professeurs ne le font pas, c'est sûr. Et ils ne devraient pas vraiment. Ne vous attendez pas à devenir un programmeur professionnel à partir de cours dans l'établissement universitaire. Ce n'est pas pour ça que vous allez.C'est vrai que le compilateur qu'il attend de vous que vous utilisiez est ancien, et l'hypothèse concernant le système d'exploitation est anachronique et problématique. Vous pouvez le soulever, et peut-être que ce sera réglé. Mais pas parce que le cours est incompatible avec l'industrie, mais plutôt parce qu'il cause une difficulté immédiate aux étudiants. Allez retrouver cet ancien compilateur maintenant et faites-le tourner sur votre MacBook ...
En général, les études universitaires ne devraient pas être gaspillées à apprendre le C ++ et Android, vous devriez y apprendre les trucs de l'informatique. Vous n'aurez pas d'autre chance pour ça. Android? Téléchargez Eclipse avec l'ADT et commencez à y travailler à la maison, comme je le fais. Pas besoin d'école pour ça.
Je pense que ce n'est pas correct d'attendre le développement de techniques des universités. Surtout pas les universités de recherche. Vous pouvez dire qu'un endroit qui n'offre que des bacheliers devrait être plus ciblé sur l'industrie, mais les universités de recherche - veulent des chercheurs. Les professeurs recherchent des étudiants diplômés et des doctorants potentiels, pas d'excellents programmeurs. Je pense donc que vous devez définir votre niveau d'attentes en conséquence.
la source
L'informatique consiste à programmer ce qu'est la physique à la menuiserie.
Si vous voulez devenir charpentier, étudier la physique ne va pas y arriver. Cela vous apprendra beaucoup de choses intéressantes, que vous pourriez appliquer à votre travail, mais cela ne vous apprendra pas à être un bon charpentier. Pour cela, vous devrez apprendre le métier de menuisier.
De même, si vous voulez devenir un bon programmeur, vous devrez apprendre l' art de la programmation . Malheureusement, il n'y a aucune institution pour délivrer une certification d'aucune sorte. Donc, fondamentalement, c'est quelque chose que vous devrez faire par vous-même, avec toute l'aide que vous pourriez trouver. Pour vous, cela signifie répétition et réflexion. Écrivez beaucoup de code, puis revenez le voir. Prenez également le temps de lire le code des autres. Envisagez de participer à des projets open source.
Les universités ne se soucient pas beaucoup de la programmation et encore moins des détails qui changeront au cours des prochaines années. Ce que vous voyez à votre école, c'est qu'ils ont choisi un environnement de programmation (mauvais, mais ce n'est pas si important) et vous le montrent maintenant, afin qu'ils aient un cadre de référence dans lequel ils peuvent vous enseigner diverses techniques de programmation. On peut dire que le cadre de référence est pauvre et que même la langue est un choix étrange. De leur point de vue, cela n'a probablement pas d'importance, car il est choisi arbitrairement.
la source
Il n'y a rien de mal à apprendre le «style DOS». Je suis sûr que la plupart des anciens ici ont commencé sous DOS, ou même avec des systèmes d'exploitation antérieurs, écrivant des programmes basés sur des lignes, et se sont ajustés très bien. Le monde informatique change si rapidement que je ne m'attarderais pas sur des détails tels que la bibliothèque utilisée pour quoi.
En fait, je soupçonne la raison pour laquelle nous avons un monde plein de programmeurs qui peuvent vous dire ce qu'est l' injection de dépendance , mais qui ont du mal à répondre à FizzBuzz , parce que beaucoup de programmeurs ne passent pas beaucoup de temps à ce niveau très basique.
Il semble que ce soit une introduction à la programmation, donc ne vous inquiétez pas. Apprenez les bases et vous ferez bien. Si vous êtes intéressé par d'autres plateformes, explorez-les par vous-même. C'est la grande chose au sujet de la programmation.
la source
Comment pouvez-vous y faire face? Téléchargez des livres électroniques de programmation ou des vidéos en streaming, essayez les exemples par vous-même. Ne comptez pas sur vos professeurs. La programmation est très apprise par vous-même.
la source
Bon nombre d'universités ont des professeurs de programmation pourris. Je suis allé dans l'une des meilleures écoles supérieures de mon pays et j'ai pratiquement appris le squat en programmation. Je suppose que la plupart des unis sont comme ça parce que les très bons programmeurs optent pour des emplois mieux rémunérés (pas d'enseignant). Vous devriez entreprendre un petit projet et essayer de le coder vous-même. Vous pouvez obtenir des conseils sur de nombreux forums comme celui-ci. Cela pourrait être une meilleure façon d'apprendre à long terme.
la source
Je pense que l'Université devrait enseigner les concepts abstraits des langages de programmation, des algorithmes, etc. et ne devrait pas être le lieu où vous apprenez la programmation: la programmation est une activité très pratique et vous ne pouvez l'apprendre qu'en faisant.
Pendant mon étude, j'ai appris les bases de la programmation en Pascal, puis j'ai eu un projet en C (nous avons dû apprendre le langage par nous-mêmes) puis j'ai suivi un cours sur les concepts du langage de programmation (procédural, orienté objet, fonctionnel, logique) . C'est du folklore que sur MSDOS vous avez des pointeurs conio.h ou far, que vous n'avez pas sur un système UNIX. C'était ce dont nous, les étudiants, discuterions autour d'une bière, ce n'était pas quelque chose dont vous discutiez pendant les cours parce que ce n'était pas si important. L'enseignement universitaire se concentre sur l'abstrait, les connaissances générales et évite d'entrer dans les détails: des exemples et des détails sont présentés juste pour illustrer les choses générales.
L'exemple que vous avez donné sur ASCII par rapport à Unicode et à la bibliothèque MSDOS conio.h signifie simplement que chaque environnement de programmation a sa façon particulière de faire et d'organiser des choses. Si vous programmez en C ++ sur Visual Studio, vous devrez utiliser d'autres bibliothèques, dont certaines sont introuvables, par exemple sous Linux. Donc, si le cours était sous Windows 7 / Visual Studio, certaines personnes pourraient se plaindre qu'il serait préférable de le faire sur Linux / GCC. Mais, l'OMI, ce n'est pas le point.
Donc, je pense que vous devriez essayer de ne pas vous laisser distraire par les détails et vous concentrer sur les concepts généraux qui sont couverts par le cours. Par exemple, dans la plupart des langages de programmation, vous aurez besoin d'une bibliothèque pour implémenter les E / S de la console et que, étant donné un environnement de programmation, vous devrez résoudre votre problème avec les outils dont vous disposez. Cela vous semble peut-être assez évident et vous avez l'impression de ne pas vraiment apprendre quelque chose parce que vous avez déjà des connaissances préalables (cela peut arriver) mais je n'ai pas l'impression que vous suivez un mauvais cours.
la source
Les universités donnent les bases. Une fois qu'il est solide, vous pouvez construire des gratte-ciel dessus.J'ai appris le BASIC, le C et le C ++ pendant mes jours de collège. Plus tard, quand j'ai fait un projet en Visual C ++, j'ai cru que c'était un monde complètement différent. Plus tard, j'ai réalisé la différence entre Framework et Languages.
Choisissez une bonne université où ils donnent le développement ciblé de votre domaine informatique souhaité. Ce qui peut vous aider plus tard dans votre carrière.
la source
Les impressions pleines
system("");
sont en fait une sacrément bonne chose! Je suis choqué que les gens ne connaissent rien de ces fonctions de nos jours.system("pause")
et vous vous débarrassez de tous les pièges des fonctions getX.system("cls")
et vous venez d'enregistrer une page de code.system("mkdir foo")
et vous venez d'enregistrer 2 pages d'allocations de mémoire tampon, les divisions de chemin, _makepath_ss, 256 limites de chemin, une tonne de sorties d'erreur et ainsi de suite.De plus, le code est si simple qu'un singe le comprendra.
L'école des perversions polymorphes est ce qui devrait être interdit par la loi.
PS: De plus, avec tout le respect que je vous dois, j'ai du mal à accepter que les gens apprennent le C ++ avec des exceptions et tout virtuel comme une BONNE CHOSE, car il a plus de pièges et de mines terrestres que vous ne pouvez l'imaginer, et même Bjarne Stroustrup évangélise les exceptions comme quelque chose de super facile et sûr, alors qu'en réalité, il s'agit d'une mine nucléaire.
Voir l'analyse sur Misra-C ++ et JSF-C ++. Et http://blogs.msdn.com/b/oldnewthing/archive/2005/01/14/352949.aspx . Je suis trop paresseux pour trouver tous les articles restants aujourd'hui.
Cela étant dit, je suis développeur c ++ et j'aime beaucoup de fonctionnalités et le langage dans son ensemble.
la source
Ma suggestion peut sembler là-bas, mais écoutez-moi ... Switch majors.
D'après mon expérience dans le milieu universitaire, la majeure en informatique était un examen de très bas niveau de ce qui fait tourner les ordinateurs. Vous avez commencé avec une introduction de base en C ++ pour vous assurer que vous savez ce qu'était un programme et les bases de la mémoire et du calcul derrière le programme, puis vous avez appris l'assemblage, les concepts de système d'exploitation, l'ingénierie électrique, la conception numérique, etc. ce degré et chercher du travail avec NVidia ou AMD, ou Lockheed; quelque part où ils fabriquent du nouveau matériel, qui a besoin de quelqu'un qui peut comprendre ce matériel à un niveau suffisamment bas pour écrire les pilotes et contrôler le logiciel.
Cela ressemble à ce que vous voulez, c'est un programme d'études qui, dans mon université, s'appelait Gestion des systèmes d'information. C'est le cours que j'ai suivi; il a enseigné la programmation en Java, VB.NET, C # et certains scripts PHP et autres scripts Web en cours de route. Cela exigeait également du calcul (mais pas au même degré que CS), de la comptabilité, des finances, des statistiques, de la communication commerciale, de l'OO A&D, de la conception de bases de données et de l'analyse de systèmes. J'ai obtenu un BBA au lieu d'un BS, et j'avais les outils de base pour commencer à travailler en tant que développeur de logiciels Windows ou Web.
Ce que la majeure "Informatique" vous prépare à faire dépend fortement de l'université qui l'offre. Il semble que vous soyez sur la bonne voie pour avoir un aperçu très anachronique et de bas niveau des ordinateurs qui ne ressemble pas à ce que vous recherchez après votre éducation. Je vous invite à regarder autour de vous à l'université et à trouver un programme d'études plus axé sur le type de travail informatique que vous voudrez entreprendre après l'école.
Quoi qu'il en soit, votre programme d'études commencera par une écriture de programme très basique au niveau de la console. La langue n'a pas d'importance; ce qu'ils vous enseignent est une programmation procédurale de base; comment penser en étapes suffisamment petites pour que l'ordinateur puisse vous suivre d'étape en étape (parce que l'ordinateur ne tient rien pour acquis et ne peut pas suivre la plupart des sauts d'un humain dans la logique). De là, vous passerez à la programmation orientée objet (au lieu d'avoir une longue fonction qui fait tout, il est beaucoup plus facile de maintenir plusieurs "objets" de code plus petits, qui représentent l'état et la logique des objets du monde réel), puis à programmation événementielle ("Ne nous appelez pas, nous vous appellerons"; votre programme démarre essentiellement, indique au système d'exploitation de configurer votre interface graphique initiale,
la source
Les cours d'informatique ne vous apprendront pas la programmation. C'est une promenade dans le parc par rapport à une partie de la programmation que j'ai faite sur mon cours CS.
Le problème fondamental, à mon expérience, est qu'il n'y a à peu près nulle part qui va vous enseigner la programmation à un niveau équivalent, vous avez donc pas que ce soit de choix.
la source
Je pense qu'il peut y avoir une certaine confusion sur quoi et pourquoi vous étudiez.
Il semble que vous étudiez un programme d'introduction à l'informatique. Ceci est destiné aux personnes ayant une expérience minimale qui apprennent les bases du fonctionnement des ordinateurs à un faible niveau.
Il semble également que vous soyez un programmeur semi-sérieux ou professionnel. Vous programmez depuis 10 ans et êtes à l'aise en 3 langues. Il semble que vous sachiez ce que vous faites au moins suffisamment pour travailler en équipe. Vous sentez-vous hors de propos dans ce cours? Les autres élèves ont-ils un niveau d'expérience ou de compétence similaire à vous?
Que comptez-vous retirer de ce cours?
Êtes-vous juste après ce «morceau de papier»? Si tel est le cas, n'arrêtez pas d'essayer d'obtenir un emploi pendant vos études. Postulez pour des emplois, dites-leur que vous êtes un programmeur compétent et que vous étudiez parce que vous avez besoin du papier pour obtenir un emploi. S'ils vous embauchent, envisagez d'abandonner - une fois que vous avez un emploi professionnel, vous n'avez plus vraiment besoin de ce morceau de papier. Acceptez un salaire inférieur à la normale, car il vaut mieux être payé pour apprendre (sur le tas) que pour apprendre à l'école - et vous apprendrez aussi plus vite. Après un an ou deux, vous serez généralement à la hauteur, puis vous pourrez demander une augmentation de salaire décente ou vous pouvez vous trouver un autre emploi parce que vous aurez de l'expérience.
Ou essayez-vous d'apprendre quelque chose? Alors arrêtez de juger votre professeur. Comme un professeur de lycée mémorable avait l'habitude de dire «ASSIS ET TENUE». Il est presque garanti que le professeur a infiniment plus d'expérience et de connaissances que vous et que vous pourriez en apprendre énormément de lui. S'il va trop lentement pour vous, essayez d'obtenir des crédits pour ces cours d'introduction en fonction de vos acquis et de votre expérience.
Mais êtes-vous sur la bonne voie? Vous pourriez également apprendre beaucoup du professeur de littérature ou d'un professeur d'histoire ... pas particulièrement pertinent. Peut-être que vous ne voulez pas de «science informatique», mais plutôt des compétences plus pratiques et «réelles». Essayez «génie logiciel». Regardez d'autres institutions pour un cours plus ciblé.
Tout comme lorsque vous commencez un nouvel emploi, une classe ou un programme d'études peut être très difficile à réviser de l'extérieur. Vous semblez suivre un cours qui ne vous donne pas ce que vous attendez. Reconsidérez vos options.
la source
J'ai pensé que beaucoup de réponses à cette question étaient décevantes. Ils sont revenus à la vieille argumentation fatiguée à propos de CS vs Programmation, etc. Cela peut être le cas, mais il me semble que le cours sur lequel l'OP n'est pas enseigné non plus.
J'étais dans la situation d'avoir déjà travaillé en tant que programmeur et étudié un peu par moi-même, avant d'étudier CS à temps partiel au collège. J'ai fait le tour avec soin, mais j'ai généralement trouvé que le programme était une perte de temps. De plus, ils ne me laissaient pas sauter de cours malgré une expérience professionnelle dans le domaine.
D'après mon expérience, une proportion importante de professeurs sont assez paresseux et utilisent un programme obsolète. Honnêtement, on dirait que vous perdez votre temps. Je me demande même si l'obtention du diplôme vous aidera à trouver un emploi.
Je doute que vous puissiez faire beaucoup pour changer les choses dans votre cours. Vous pouvez soit le compléter par l'étude par vous-même. Ou oubliez le tout, étudiez le CS de manière indépendante et faites également des certifications industrielles.
Je dois ajouter que je n'ai aucune idée de la valeur du diplôme sur le marché du travail de votre pays. Si le diplôme lui-même est valable malgré le contenu, vous devrez peut-être simplement accepter un programme qui fait quelque peu défaut.
la source
Ils doivent répondre aux étudiants. La plupart des étudiants ne peuvent pas programmer. Ils ne sont donc pas poussés à aller technique là-bas.
Ils ont aussi leurs propres domaines de recherche spécialisés, mais ils n'enseignent pas cela. Et de toute façon, de nombreux chercheurs ne sont pas de bons enseignants de toute façon, alors vous pourriez vous considérer chanceux s'ils enseignent des choses que vous connaissez déjà!
De toute façon, vous ne semblez pas savoir ce qu'est l'informatique. Il ne s'agit pas de ce qui est pratique pour l'industrie.
la source
Je demanderais (et insisterais ensuite) de retourner vos affectations en c ++ standard. Ceci est tout à fait raisonnable car vous ne pouvez pas terminer les affectations autrement.
Quant au mauvais style; il y aura inévitablement une partie de cela pour commencer. Apprendre à utiliser correctement la bibliothèque io standard nécessite quelques fonctionnalités avancées de c ++, en particulier des modèles et des itérateurs. Je peux voir pourquoi un conférencier vous amènerait à utiliser des fonctions io très simples pour commencer. Je n'aurais pas peur de poser des questions à ce sujet, cela montre de l'enthousiasme et un peu de lumière dans vos yeux. Votre conférencier devrait être en mesure de tisser votre question dans une future conférence où vous (espérons-le) corrigez vos premiers exercices.
Je n'en resterais pas là cependant. Même si c ++ peut être un langage indépendant de la plate-forme, ce n'est souvent pas le cas. Apprendre certaines fonctions du système Windows n'est pas une mauvaise chose, surtout si vous vous entraînez à le faire selon la norme. Vous rencontrerez à un moment donné en
conio.h
regardant le code d'autres peuples - et il est bon de savoir ce qu'il fait.la source