Ordinateurs et périphériques, système d'exploitation et principaux réglages. Gestion de fichiers. Internet, navigateur Web, téléchargement de fichiers, outils de recherche sur internet, courrier électronique, messagerie instantanée. Manipulation de fichiers compressés. Anti-virus et protection contre les logiciels espions, pare-feu. Utilisation de WebCT. Fonctionnalités de base d'un traitement de texte. Fonctionnalités de base d'un tableur et formules. Conception de présentations par ordinateur. Manipulation de format de documents portables. Création de pages WWW avec HTML. Concepts de programmation.

Classes et objets. Constructeurs et destructeurs. Allocation dynamique. Conversions de types. Surcharge d'opérateur. Classes et méthodes génériques. Héritage simple et héritage multiple. Classes abstraites. Polymorphisme. Algorithmes fondamentaux : recherches linéaire et dichotomique, tri simple. Bibliothèque de structures de données et algorithmes. Traitement des exceptions. Programmation par événements. Notions élémentaires de conception d'interfaces graphiques.
Composants d'un micro-ordinateur: microprocesseur, périphériques, mémoires et bus. Communication et synchronisation entre un microprocesseur et les autres composants: par scrutation et par interruption. Hiérarchie de mémoire: disque, mémoire vive, cache, registres. Boucle d'exécution sur un processeur simple. Représentation des instructions binaires et mnémoniques. Traduction d'expressions en assembleur. Adressage, alignement et représentation des données. Programmation en assembleur. Lien entre l'assembleur et un langage de haut niveau. Optimisation du microprocesseur: pipeline.
Construction d'un système matériel-logiciel exploitant les principes du travail en équipe et de la rédaction d'un rapport technique. Les concepts techniques abordés couvrent la familiarisation avec le matériel requis pour la construction d'un système embarqué, la programmation à différents niveaux, la gestion de configuration, les guides de programmation, les inspections de code, les tests du matériel et du logiciel ainsi que l'application du cycle de développement et des pratiques de base en programmation. Un rapport technique professionnel devra être rédigé et une présentation orale en équipe devra être effectuée. Notions de base théoriques et pratiques du travail en équipe. Connaissance et expérimentation de la dynamique et de l'organisation du travail en équipe ; normes, rôles, culture groupale, pouvoir et leadership, relations affectives et cohésion, tâches et objectifs, organisation, structuration, technique de résolution de problème et prise de décision. Styles de leadership et gestion des conflits dans une équipe.
Concepts, composants, fonctions, services et structures des systèmes d'exploitation. Gestion de processus : synchronisation, problèmes classiques de synchronisation, communication et ordonnancement. Processus légers (threads). Interblocage. Gestion de la mémoire. Introduction aux systèmes d'exploitation temps réel. Gestion de processus dans un contexte temps réel. Ordonnancement temps réel. Études de cas.
Introduction aux fichiers et bases de données. Analyse de besoins : modèle entité-association. Modèle relationnel : concepts de base et algèbre relationnelle. Norme SQL (Standard Query Language) : langages de définition, de manipulation et de contrôle de données. Langage SQL enchâssé dans un langage algorithmique de programmation. Notions de contrôle d'accès concurrents et de gestion de transactions. Conception d'un schéma de base de données relationnelle : dépendances fonctionnelles et formes normales. Modèles de stockage de relations et de fichiers. Structures auxiliaires facilitant l'accès aux données : indexage et adressage dispersé.
Introduction aux systèmes répartis et à l'infonuagique. Environnement de développement technologique et réseautique des systèmes répartis. Architectures client-serveur, pair-à-pair, orientées-services et totalement réparties. Infrastructure, plateforme et applications en tant que services. Concepts d'objets distants et d'intergiciels. Virtualisation des noeuds et du réseau. Notions de synchronisation du temps et de systèmes transactionnels répartis. Méthodes et techniques de conception de services performants, répartis, virtualisés, sécuritaires et tolérants aux défaillances. L'informatique et le développement durable dans le contexte d'applications réparties et de l'infonuagique