Loading.....

me

Philippe Riegert

Montréal
show map
🎓 UQÀM my university
📕 my classes see my classes

you can follow me on these social networks :

follow me on twitter see my profile on facebook see my profile on linkedIn see my backed on kickstarter see my pictures on instagram see my likes on dribbble see my likes on 9gag see my fancy on theFancy

Management Sciences and Economy

📰 Économie des technologies de l'information
eco-1081
Introduction aux concepts de base de l'analyse microéconomique et de l'économie de gestion, avec applications au marché des technologies de l'information (TI). Concepts qui seront couverts : offre, demande et équilibre du marché. Rendements, coûts de production, économies d’échelle et coûts irrécupérables. Structures de l’industrie : concurrence, oligopole, monopole. Alliances stratégiques. Croissance, productivité, emploi et commerce international. Éléments de mathématiques financières et valeur présente. Coûts du capital, taux de rendements et mesures de risque. Introduction aux études de marché et à l'évaluation des projets d’investissement, avec applications aux technologies de l’information.
📰 La gestion et les systèmes d’information
met-1105
📰 Comportement organisationnel
orh-1163
La plupart des enquêtes portant sur l'analyse des besoins de formation du gestionnaire moderne révèlent la nécessité de comprendre les comportements humains dans les organisations. Ce cours vise précisément à fournir des capacités d'analyse et d'action à tous ceux et celles qui ont compris ou veulent comprendre l'importance du capital humain, première ressource de l'entreprise. Quoiqu'il soit superficiel de les séparer, l'individu, le groupe et l'organisation constituent les unités d'analyse de ce cours.

Mathematics

📰 Mathématiques pour informaticien
inf-1130
Connaître les notions de base de la logique et les notions mathématiques qui sous-tendent la programmation, en particulier celles qui sont utilisées dans la vérification de programmes et l'analyse de la complexité des algorithmes. Rappel des notions suivantes: théorie naïve des ensembles, opérations sur les ensembles, cardinalité d'un ensemble, ensembles dénombrables, relations (fonctions, relations d'ordre, relations d'équivalence et partitions). Algèbre relationnelle et applications aux bases de données. Introduction à la logique propositionnelle et au calcul des prédicats. Preuves par induction. Sémantique d'un petit langage de programmation. Écriture de boucles simples à partir d'invariants. Introduction à la vérification de programmes. Preuves de boucles à l'aide d'invariants. Notions élémentaires sur la complexité temporelle et spatiale des algorithmes. Notation asymptotique. Algorithmes de fouille et de tri. Analyse de la complexité d'algorithmes récursifs. Équations de récurrence. Graphes orientés, graphes non orientés, arbres, arborescences. Chemins dans un graphe, hauteur d'une arborescence et exemples d'applications à l'analyse d'algorithmes. Parcours de graphes.
📰 Algèbre matricielle
mat-1600
📰 Statistiques pour les sciences
mat-4681
Ce cours est une introduction aux probabilités et statistiques appliquées. On accord l’importance à la compréhension des techniques statistiques et à leurs applications aux problèmes pratiques. Après avoir complété ce cours, l’étudiant sera en mesure d’analyser des données d’une façon critique, de sélectionner et d'employer des sommaires de données graphiques et numériques, d’appliquer des procédures standard d’inférence statistique et d’en tirer des conclusions

Computer Science

📰 Programation I
inf-1120
Java
Acquérir une méthode de développement de solutions logicielles dans le cadre du paradigme orienté-objet: analyse du problème, conception simplifiée, codage et test d'une solution. Sensibiliser au développement de programmes de qualité: fiables, faciles à utiliser, à comprendre et à modifier. Introduction à un environnement de développement logiciel. Introduction aux algorithmes. Éléments de programmation de base: vocabulaire, syntaxe et sémantique, constantes, variables, types simples et composés (tableaux à une et deux dimensions), conversions de type, affectation, opérateurs et expressions, instructions, structures de contrôle (séquence, sélection, itération), instructions simples d'entrées-sorties, fichier texte. Introduction aux éléments de la programmation orientée-objet: classes, objets, méthodes et paramètres, variables de classe, d'instance et locale, portée et durée de vie des variables, constructeurs. Notion d'encapsulation. Introduction à l'utilisation de classes et de paquetages prédéfinis.
📰 Programation II
inf-2120
Java
Approfondir les concepts de la programmation orientée-objet. Approfondir les concepts de mise au point et de test de composants logiciels. Identification et définition des classes d'une solution logicielle. Relations entre les classes: composition et héritage. Classes abstraites et polymorphisme. Introduction à la notation UML. Algorithmes récursifs simples. Structures de données classiques: piles, files, listes et arbres binaires de recherche. Techniques classiques de recherche (séquentielle et binaire) et de tri. Introduction à la programmation des interfaces graphiques (GUI). Gestion des événements et des exceptions. Conception de paquetages. Introduction aux outils automatisés de validation.
📰 Paradigmes de programmation
inf-2160
Haskell Prolog
Présenter les concepts fondamentaux de langages de programmation modernes. Comprendre les possibilités et limites des divers types de langages. Familiariser l'étudiant avec différents paradigmes de programmation et favoriser l'acquisition de nouvelles techniques et stratégies de programmation. Étude des paradigmes de programmation fonctionnel et logique. Revue des principes de programmation fonctionnelle. Stratégies d'évaluation des arguments. Polymorphisme et deéduction des types. Fonctions d'ordre supérieur. Efficacité et optimisation. Revue des principes de programmation logique. Forme clausale de la logique du premier ordre et clauses de Horn. Unification et résolution. Le problème de la négation. Applications. Ce cours initie à des approches de programmation originales et différentes de la programmation impérative ou objet. Il met en évidence les caractéristiques, le potentiel de chacun de ces paradigmes au moyen d'une introduction à des langages spécifiques et d'applications typiques de ces langages. Haskell permet de donner un exemple de langage fonctionnel puissant et moderne où les aspects liés aux types de données (vérification, polymorphisme, encapsulation) sont particulièrement développés. Prolog sert à illustrer le concept de programmation logique et les apports liés aux processus d'unification et de résolution.
📰 Organisation des ordinateurs et assembleur
inf-2170
Assembly language
Familiariser l'étudiant avec le fonctionnement de l'ordinateur. écouvrir l'ordinateur à partir des niveaux de l'assembleur, du langage machine et des circuits logiques. Classification des ordinateurs. Description de la machine en couches: circuits logiques, microprogrammation, langage machine, langage d'assemblage. Description des unités de l'ordinateur. Description d'un processeur et de la mémoire au niveau du langage machine. Description du processeur à partir des circuits logiques. Description du processeur à partir du langage d'assemblage. Le cours INF2170 permettra à l'étudiant d'acquérir une formation théorique et pratique sur les principes de fonctionnement des ordinateurs et des microprocesseurs. On examinera les concepts fondamentaux au niveau du matériel et du logiciel, à partir de la programmation en langage assembleur. On étudiera particulièrement le processeur Pep8, en mettant l'accent sur l'organisation architecturale et la programmation.
📰 Structures de données et algorithmes
inf-3105
C++
Approfondir les connaissances des structures de données et des algorithmes et les appliquer à la résolution de problèmes. Connaître et savoir utiliser des bibliothèques publiques ou normalisées. Rappels sur les types abstraits de données et sur la complexité des algorithmes. Abstractions de données et de contrôle. Collections et les structures de données nécessaires à leurs réalisations. Arbres, tables, graphes. Utilisation de bibliothèques publiques ou normalisées. Introduction aux notions de la programmation orientée objet ; utilisation de celles-ci, telles qu'exprimées au moyen du langage C++, pour l'étude et la réalisation de structures de données avancées et des algorithmes associés. Comprendre et maîtriser les structures de données mentionnées dans la description du cours. Atteinte d'un niveau de compréhension permettant de choisir la représentation appropriée pour la solution d'un problème. Être en mesure de comparer l'efficacité des diverses structures d'information pouvant être utilisées dans une application donnée.
📰 Construction et maintenance de logiciels
inf-3135
C
Initier les étudiants à la programmation à l'aide d'un langage impératif et procédural. Familiariser les étudiants à la construction professionnelle de logiciels et à leur maintenance. Notions de base de la programmation procédurale et impérative en langage C sous environnement Unix/Linux (définition et déclaration, portée et durée de vie, fichier d'interface, stuctures de contrôle, unités de programme et passage des paramètres, macros, compilation conditionnelle). Décomposition en modules et caractéristiques facilitant les modifications (cohésion et couplage, encapsulation et dissimulation de l'information, décomposition fonctionnelle). Style de programmation (conventions, documentation interne, gabarits). Déboggage de programmes (erreurs typiques, traces, outils, par ex., gdb). Assertions et conception par contrats. Tests (unitaires, intégration, d'acceptation, boîte noire vs. boîte blanche, mesures de couverture, outils d'exécution automatique des tests, par exemple, xUnit, scripts). Évaluation et amélioration des performances (profils d'exécution, améliorations asymptotiques vs. optimisations, outils). Techniques et outils de base pour la gestion de la configuration (par exemple, make, cvs). Introduction à la maintenance de logiciels (types de maintenance, techniques de base, par exemple, remodelage, automatisation des tests de régression).
📰 Modélisation et spécification formelles de logiciels
inf-3143
UML OCL Regex
Le cours vise à initier les étudiants aux méthodes formelles de spécification et à leur rôle dans le cycle de développement des logiciels. Entres autres, il vise à familiariser les étudiants avec le mode descriptif de spécifications plutôt qu'avec le mode opérationnel (algorithme) auquel ils sont habitués. Il vise aussi à familiariser les étudiants avec les notions d'assertions, de contraintes et de contrats avec leur utilisation pour le développement de logiciels. Rôle des spécifications et méthodes formelles. Introduction à certaines notions formelles pour décrire des systèmes et composantes logiciels : diagrammes de classes et contraintes, automates et systèmes de transitions, contrats. Approfondissement d'une approche basée sur les contraintes et contrats; logique : propositions et prédicats, quantificateurs, modélisation conceptuelle et description de propriétés; types abstraits : ensemble et multi-ensembles, séquences, spécifications comportementales, modélisation de composants divers (fonctions, types muables, types immuables), invariants, pré/post conditions. Utilisation des assertions et contrats à l'étape de construction de logiciels : test unitaires, vérification dynamique de contrats.
📰 Principes des systèmes d’exploitation
inf-3172
C
Maîtriser et appliquer les concepts fondamentaux des systèmes d'exploitation. Structure générale d'un système d'exploitation. Langage de programmation des systèmes d'exploitation: C. Processus séquentiels et parallèles, coopération, gestion des processus, communication entre processus. Exclusion mutuelle, échanges de messages, gestion des événements. Gestion des ressources: mémoire, processeurs, périphériques. Ordonnancement des tâches. Fiabilité du système de seécurité de l'information; méthodes de protection. Exemple d'un système contemporain: UNIX. Présenter les concepts fondamentaux des systèmes d'exploitation (processus, threads, E/S, systèmes de fichiers, gestion de la mémoire, concurrence, élisme, communication, sécurité, ...). Illustrer les concepts présentés à travers l'utilisation du système Unix: programmation en C d'applications multiprocessus, synchronisation, communication, ...
📰 Fichiers et bases de données
inf-3180
SQL
Familiariser l'étudiant avec les structures de données utilisées dans les systèmes de gestion de bases de données. Introduire les concepts fondamentaux des bases de données en insistant sur le modèle relationnel. Structures de données pour les bases de données. Représentation des enregistrements. Gestion de l'espace. Organisations de base: sériel, séquentiel, indexé, adressage dispersé. Complexité des différents modes d'accès. Structures inter-enregistrements: contiguïté physique, chaînage, indirection, groupage physique. Système de gestion de bases de données. Architecture hiérarchique ANSI/SPARC. Introduction aux principaux modèles de données. Systèmes relationnels: structures de données, contraintes de clé et d'intégrité référentielle, algèbre relationnelle, calcul des prédicats, SQL. Concept de transaction. Mécanismes de contrôle de concurrence. Mécanismes de récupération.
📰 Téléinformatique
inf-3270
TCP/IP
Introduire les notions de base en matière de télécommunication et de téléinformatique indispensables à l'étude des réseaux actuels et des réseaux de nouvelle génération. Terminologie et concepts de base des réseaux téléinformatiques. Les différentes couches du modèle OSI et exemples tirés du modèle TCP/IP. Normes et protocoles associés aux diverses couches du modèle OSI, de la couche physique à la couche application. Transmission de données, correction d'erreurs, codage, multiplexage, équipements d'interconnexion. Protocoles de liaison de données, de routage et de transport. Adressage IP. Applications sur Internet (HTTP, FTP, SNMP).
📰 Architecture des ordinateurs
inf-4170
Assembly language
Familiariser l'étudiant avec la structure des ordinateurs modernes. Initier au fonctionnement interne, à l'agencement des organes. Classification des architectures. Structure des ordinateurs parallèles, pipelines, matriciels et à multiprocesseurs. Fonctionnement d'un processeur. Unité de traitement: étude comparative des catégories d'instructions, unité de contrôle, U.A.L. Mémoires: architecture, fonctionnement, types. Entrée/sortie: adressage des composants, synchronisation, interfaces, canaux. Pipelining: principe, arithmétique et instructions, fonctionnement. Traitement vectorisé: caractéristiques et exemples. Multiprocesseurs: structures fonctionnelles, réseaux d'interconnexion, organisation de la mémoire parallèle, logiciels d'exploitation. Comprendre les principes de base du fonctionnement interne des ordinateurs et comprendre comment cette organisation interne affecte les performances. Étudier les méthodes et techniques utilisées dans les architectures modernes pour améliorer les performances. Comprendre les interrelations entre logiciel et matériel, particulièrement dans les machines modernes telles les machines Pentium, PowerPC, Itanium et les machines parallèles. Avoir un aperçu des directions futures vers lesquelles les architectures vont se développer.
📰 Paradigmes des échanges Internet
inf-4375
SOAP REST XML XSD JSON Java JavaScript XML-RPC
Familiariser l'étudiant avec les concepts et paradigmes de structuration des données et des échanges des applications de l'Internet. Concepts de structuration des données et mécanismes d'échange permettant l'interopérabilité des applications de l'Internet. Concepts de structuration des échanges, langages de description des échanges, principes de nommage des espaces: XML, RDF, Schéma, XSL, etc. Concepts d'échanges entre applications: SOAP, RPC, BEEP, WSDL, LDAP. Applications de ces concepts aux Services Web.
📰 Génie logiciel I: analyse et modélisation
inf-5151
UML
Explorer les fondements et l'évolution des méthodes d'analyse. Procéder à l'étude détaillée et à l'application d'une méthode. Situer le rôle de l'utilisateur à chaque étape du processus. Notion de système et d'approche systémique. Modèles du cycle de vie du logiciel. Les processus de base. Artefacts principaux: principes d'opération et spécification des exigences. Modélisation conceptuelle, fonctionnelle et dynamique. Outils d'aide à la définition des exigences. Regard critique sur les méthodes en application dans l'industrie et rôle de l'utilisateur dans l'analyse. Donner aux étudiants un aperçu théorique du cycle de vie du logiciel. Sensibiliser les étudiants à l'importance des normes en génie logiciel et leur faire connaître les principales références dans le domaine. Familiariser les étudiants avec les activités antérieures au développement. Initier les étudiants aux principes de base de l'approche orientée objet. Apprendre aux étudiants la notation UML. Rendre les étudiants aptes à réaliser des modèles orienté-objet simples en utilisant un logiciel de modélisation. Familiariser les étudiants à l'approche des cas d'utilisation. Faire apprécier aux étudiants l'importance des interfaces utilisateur et l'ergonomie du logiciel. Rendre les étudiants aptes à réaliser un document simple de spécification des exigences utilisateur. Sensibiliser les étudiants aux activités postérieures à la définition des exigences. Initier les étudiants aux nouvelles approches dans le domaine.
📰 Génie logiciel II: conception
inf-5153
UML Design-pattern
Sensibiliser l'étudiant aux difficultés de la conception et lui permettre d'élaborer des solutions réutilisables, maintenables et extensibles. Problématique du processus de conception. Critères et architecture. Conception comme activité créatrice. Outils d'aide à la conception. Intégration et essais système. Conception orientée objet. Cadres d'application et patrons de conception. Documentation de conception. Rétro ingénierie.
📰 Conception et exploitation d’une base de données
inf-5180
SQL
Étudier les principales méthodes de conception d'une base de données. Étudier les mécanismes d'évaluation de requêtes. Aborder les problèmes d'intégrité sémantique de sécurité et de gestion d'une base de données. Modélisation conceptuelle: modélisation sémantique, contraintes d'intégrité, normalisation. Conception des schémas. Traduction entre modèles. Analyse des transactions. Mécanismes d'évaluation de requêtes. Intégrité sémantique. Sécurité. Systèmes non relationnels. Administration d'une base de données.
📰 Génie logiciel III: conduite de projets informatiques
inf-6150
Java
Étudier les approches et les outils spécifiques à la conduite de projets informatiques. Permettre à l'étudiant d'avoir un regard critique par rapport aux méthodes en application dans l'industrie, le sensibiliser à l'interaction entre les parties technique et gestion des projets. Gestion de projets et méthodologies de développement. Équipes et styles de gestion. Analyse des risques des projets informatiques. Métriques: objet, processus, produit. Estimation et échéanciers. Outils de mesure de productivité. Suivi et revues formelles. Interaction entre projet et assurance de qualité. Contrôle de la configuration. Réflexion critique sur le processus de développement des systèmes et sur les outils de gestion de projets.
📰 Développement de logiciel dans un environnement Agile
inf-2015
Java XML Git
Initier les étudiants au développement de logiciel dans un contexte et un environnement de développement Agile. Faire connaître aux étudiants les principaux outils utilisés pour le développement professionnel de logiciel. Présentation des modèles de développement traditionnel vs les processus de développement Agile. Principes et pratiques des approches Agile : micro-cycle de développement, tests automatisés, programmation en équipe, intégration continue et gestion de versions, réutilisation. Développement de logiciel dans un contexte de logiciel libre (open source). Étude de cas. Utilisation d'outils contemporains pour le développement Agile : cadre de test (JUnit, Fit), gestion de la configuration (CVS, Subversion), construction automatisée (Maven, Ant), environnement intégré de développement (NetBeans, Eclipse), outils de pistage et de revue de code.
📰 Programmation Web
inf-2005
HTML CSS JavaScript JSON
Introduire les étudiants à la problématique de la programmation d'applications web. Les fondements du web : navigateur, serveur, protocole. Les principales normes et les principaux outils fonctionnant dans le navigateur sont couverts : HTML, XHTML, JavaScript, Applet, Flash, CSS, DOM et XML. Conception de formulaires. Introduction à la problématique des traitements sur serveur dans un environnement web : script serveur, notion de persistance. Présentation des nouvelles approches et techniques en émergence.
📰 Intelligence artificielle
inf-4230
C++ Java
Connaître les paradigmes de l'intelligence artificielle. Être capable de formuler des hypothèses pour la recherche, de les tester, les interpréter et les présenter. Être capable d'évaluer les idées reçues à propos de l'intelligence artificielle. Historique de l'intelligence artificielle. Identification descriptive et réduction de buts. Résolution de problèmes par analogie. Exploitation de contraintes naturelles. Propagation de contraintes. Recherche et exploration de solutions de rechange. Décision et contrôle. Paradigmes de résolution de problèmes. Logique mathématique et démonstration de théorèmes. Représentation des connaissances. Traitement des langues naturelles.