Pour les profs...

Quelques raccourcis :

Cette section porte sur des ressources et des documents destinés plus spécifiquement à mes collègues et ami(e)s du département d' informatique du Collège Lionel-Groulx.

Documents d' ordre général

En réponse à une question portant sur la révision de la cohérence de la branche Web, soulevée par notre équipe de coordination 2016-2017, j' ai essayé d' exprimer mes idées sous forme tabulaire. J' espère que ce sera utile : Web-octobre-2016.html

Questions « ProfQuiz »

Pour s' amuser, je propose à l' occasion des questions sur des pratiques de programmation (en C++, C#, Java, JavaScript, C, pseudocode, etc.) de même que des solutions possibles, analysées dans une optique d'enseignement. Vos commentaires et critiques (constructives) sont les bienvenus, évidemment.

Principes

Quelques principes sous-jacents à cette démarche :

Exemple de question

Un exemple de question (source : Nicolas Chourot) serait : « Comment écrire un programme concaténant des entiers et des chaînes de caractères, par exemple l'entier 15, le texte "mai" et l'entier 2013?

Avec C# :

int jour = 15;
string mois = "mai";
int année = 2013;
string dateString = jour + " " + mois + " " + année;

Ceci fonctionne parce que System.Object (en C#, l'alias object est souvent utilisé) a une méthode virtuelle ToString() que tous les types peuvent surcharger. Le type int est en fait un alias en C# pour le type System.Int32 du Framework de .NET, un struct, et spécialise cette méthode.

Avec Java :

int jour = 15;
String mois = "mai";
int année = 2013;
String dateString = jour + " " + mois + " " + année;

Ceci fonctionne parce que Java offre un support spécial au type String. Il s'agit d'une classe pour laquelle des opérateurs de concaténation sont offerts, alors que le langage ne permet pas d'exprimer des opérateurs pour les autres classes. Comme C#, Java offre à même Object une méthode toString() qui peut étre spécialisée pour nos propres classes, et la concaténation de primitifs avec des String est supportée par le langage.

Avec C++ :

int jour = 25;
string mois = "mai";
int annee = 2013;
string dateString = to_string(jour) + " " + mois + " " + to_string(annee);

Ceci fonctionne depuis C++ 11 parce que le type string est en fait une application du type générique basic_string<C> pour le cas où C est char. En visant la généricité, C++ offre moins de méthodes à même la classe mais supporte autant de sortes de caractères que souhaité – par exemple, wstring est en fait basic_string appliqué à wchar_t, et permet d'interfacer avec Java ou C#. Ainsi, les conversions de types en string sont réalisées par des fonctions standards plutôt que par un support du langage ou par polymorphisme.

La question la plus récente à ce jour est la question 04,  proposée le 10 septembre 2013.

Suivi des questions précédentes (et des pistes de réponses) :

Question 04

Cette question fut proposée le 10 septembre 2013.

Il est typique d'un premier cours de structures de données de présenter les listes chaînées. La version naïve de ce problème est souvent une liste chaînée d'entiers (une version générique, bien que plus pertinente, est aussi plus subtile).

Vous souhaitez présenter aux étudiant(e)s une implémentation « maison » simple, mais correcte et utilisable en pratique d'une liste simplement chaînée d'entiers, dans le langage de votre choix. Évidemment, vous souhaitez accompagner cette implémentation d'un programme de test, montrant entre autres comment il est possible :

Il va sans dire qu'il doit être possible de dupliquer une liste au besoin, par exemple avant d'en inverser les éléments.

Ce problème est amusant parce qu'il met en valeur des enjeux et des difficultés différentes d'un langage à l'autre, tout en ayant une base conceptuelle et historique riche. Pensez à l'interface de votre liste (prise au sens large de fonction ou méthodes y étant applicables) : qu'est-ce qui devrait en être visible au code client et qu'est-ce qui devrait demeurer du ressort de la gestion interne?


Valid XHTML 1.0 Transitional

CSS Valide !