Êtes-vous prêt à Avancer votre carrière?

Notre programme est spécialisé dans les domaines des systèmes logiciels et du développement de logiciels utilisant la POO (Java), les applications Web et la science des données. Les principaux domaines d’étude comprennent: le développement de logiciels avancés, la programmation et l’architecture d’applications Web, l’analyse et les technologies du Big Data, l’apprentissage automatique et plusieurs autres domaines d’application importants.

Tous les cours sont conçus pour vous aider à avancer dans votre carrière et chaque cours contient des travaux pratiques. Vue conditions d'obtention du diplôme.

NOUVEAU! Primé Sciences des données

Cours de base standard

  • Pratiques de programmation modernes (programmation Java) (CS 401)

    Ce cours présente les principes fondamentaux de la programmation orientée objet. Les étudiants apprendront comment rédiger des logiciels réutilisables et mieux entretenus, et intégreront ces connaissances aux tâches et projets de laboratoire. Les sujets abordés comprennent: les principes fondamentaux et les modèles de programmation orientée objet, les diagrammes de classes UML et les principes de conception qui favorisent la réutilisation et la maintenabilité des logiciels. (Unités 4)

  • Développement logiciel avancé (CS 525)

    Ce cours examine les méthodes et pratiques actuelles pour bien concevoir les systèmes logiciels. Les sujets traités comprennent: les modèles de conception de logiciels, les cadres, les architectures et la conception de systèmes pour appliquer ces abstractions à plusieurs niveaux. (Crédits 2-4) Prérequis: CS 401 ou consentement de la faculté du département.

  • Algorithmes (CS 435)

    Ce cours présente les méthodes d'analyse de l'efficacité des algorithmes (y compris l'analyse des cas les plus défavorables et des cas moyens) et présente divers algorithmes connus et hautement efficaces. L’analyse, la conception et la mise en œuvre des algorithmes ont la même importance. Les sujets incluent la recherche et le tri, l'efficacité des opérations sur les structures de données (y compris les listes, les tables de hachage, les arbres de recherche binaires équilibrés, les files d'attente de priorité), les algorithmes de graphes, les algorithmes combinatoires, les relations de récurrence, la programmation dynamique, les problèmes NP-complets et certains sujets spécifiques comme le temps permet. (Les sujets spéciaux incluent la géométrie informatique, les algorithmes pour les cryptosystèmes, l'approximation, le Big Data et l'informatique parallèle.)

  • Réseaux informatiques (CS 450)

    L'objectif de ce cours est d'apprendre les concepts, les principes d'architecture et la terminologie des réseaux informatiques en explorant le fonctionnement des réseaux et en développant des applications réseau. Ce cours suit l'approche descendante consistant à comprendre les réseaux en utilisant l'architecture et les protocoles d'Internet comme exemple principal d'implémentation des principes de réseau. Nous commençons par la couche application et continuons par la couche de transport, la couche réseau, la couche liaison et la couche physique des réseaux informatiques. Les étudiants développent plusieurs applications réseau et effectuent plusieurs travaux de laboratoire conçus pour tracer et comprendre les protocoles réseau prédominants utilisés sur Internet. (Unités 4) Prérequis: CS 401 ou consentement de la faculté du département.

  • Systèmes de gestion de bases de données (CS 422)

    Les systèmes de base de données organisent et récupèrent les informations, ce qui permet à l'utilisateur d'accéder aux informations souhaitées facilement et efficacement. Les sujets comprennent: le modèle de données relationnel; SQL; Modélisation des urgences; algèbre relationnelle; normalisation des données; transactions; objets dans la base de données; sécurité et intégrité des données; entreposage de données, OLAP et exploration de données; bases de données distribuées; et étude d'un système de base de données commercial spécifique. (Unités 4) Prérequis: CS 401 ou consentement de la faculté du département.

  • Génie logiciel (CS 425)

    L'ingénierie logicielle est un cours qui introduit l'étudiant aux meilleures pratiques en développement logiciel à travers une méthodologie de développement logiciel. Les étudiants ont déjà acquis une expérience dans les cours précédents du paradigme orienté objet et ont utilisé certains des diagrammes UML de base à des fins de modélisation des relations entre des objets logiciels. En génie logiciel, l'étudiant développera les compétences nécessaires pour assembler ces outils afin de produire un logiciel robuste, facile à gérer. Une méthodologie de développement logiciel décrit quand et comment les concepts OO et les diagrammes UML doivent être utilisés pour atteindre l'objectif de création de logiciels de qualité. Le cours est centré sur un petit projet dans lequel les principes discutés dans le format de conférence peuvent être illustrés et appliqués. À la fin du cours, l'étudiant disposera d'une application en cours d'exécution, construite conformément aux normes élevées de la méthodologie de développement RUP (Rational Unified Process).

  • Architecture et cadres d'applications Web (CS 545)

    Ce cours met l'accent sur les applications Web dans un contexte d'entreprise. Une application d'entreprise est un grand logiciel conçu pour fonctionner dans une grande organisation telle qu'une entreprise ou un gouvernement. Les applications d'entreprise sont complexes, évolutives, basées sur des composants, distribuées et critiques. Ce cours, CS545, est consacré à la couche frontale ou de présentation d’une application Web d’entreprise. CS544 Enterprise Architecture est un cours complémentaire qui se concentre sur la couche d’arrière-plan ou la couche de gestion, y compris la logique d’entreprise, les transactions et la persistance. CS472, Programmation d'applications Web, est un cours préalable couvrant HTML, CSS, JavaScript, les servlets et JSP.

    Le cours enseigne des principes et des modèles généraux pour toutes les plateformes et tous les cadres. Le cours examinera et travaillera avec les deux infrastructures Web prédominantes, Java Server Faces (JSF) et SpringMVC. JSF est une infrastructure à base de composants. Il s'agit de la spécification officielle de l'infrastructure de présentation de la pile technologique Java Enterprise Edition. SpringMVC fait partie du framework Core Spring et est devenu le framework web Java le plus utilisé ces dernières années. (Unités 4) Prérequis: CS 472 ou consentement de la faculté du département.

  • Programmation d'applications Web (CS 472)

    Ce cours fournit une introduction systématique à la programmation d'applications Web interactives et dynamiques. Le cours est destiné aux personnes ayant peu ou pas d'expérience en programmation d'applications Web. Cette offre utilisera les servlets Java et JSP pour le traitement côté serveur. Le cours présentera HTML et CSS. Le JavaScript est l’une des priorités du cours. Il est traité en tant que langage de programmation fonctionnel, y compris les espaces de noms jQuery, Ajax et JavaScript. C'est une condition préalable à l'architecture d'application Web CS545. Il ne couvre pas AngularJS ou NodeJS, mais le JavaScript couvert ici vous préparera à apprendre ces technologies. (Unités 4)
    Prérequis: CS 220 ou CS 401 ou consentement de la faculté du département.

  • Science et technologie de la conscience pour les informaticiens (FOR 506)

    Votre premier cours est spécifiquement conçu pour établir la base sur laquelle vous pouvez devenir un professionnel de l'informatique très performant. Le cours est enraciné dans la pratique de la méditation transcendantale qui conduit à la réalisation de votre véritable potentiel. Vous découvrirez les avantages de la MT, notamment la capacité de résoudre des problèmes complexes grâce à un fonctionnement mental supérieur, à une créativité accrue et à une pensée "out of the box". Le cours se concentrera sur les principes qui sous-tendent la performance maximale en activité en développant une combinaison optimale de repos et d'activité. Vous développerez et expérimenterez une routine quotidienne idéale qui favorise la réussite dans la vie. (Unités 2)

  • Leadership pour les responsables techniques (FOR 506B)

    L'objectif de ce cours est de fournir aux étudiants des connaissances et des compétences en leadership, y compris des compétences en communication, afin de préparer leurs futurs rôles de leadership.

    À la fin de ce cours, les étudiants comprendront les réponses aux questions clés concernant l’efficacité du leadership, notamment:

    Existe-t-il des leaders «nés dans la nature»?

    Devez-vous avoir du charisme pour diriger efficacement?

    Quel atout est nécessaire pour être un leader?

    Quelle est la différence entre gérer et diriger?

    Quelles sont les nombreuses "intelligences" nécessaires pour diriger à cette époque?

    Qu'est-ce qu'une "faute professionnelle" et en quoi cela mène-t-il à l'auto-sabotage?

    Sachant que les commentaires sont essentiels au processus directeur, comment pouvons-nous surmonter la peur de donner et de recevoir?

    Quelle est la source de 80% des problèmes rencontrés sur le lieu de travail?

    Existe-t-il des recherches scientifiques disponibles pour aider l'organisation à améliorer ses compétences en matière de leadership individuel et d'équipe?

    Parmi les orateurs invités figureront des entrepreneurs éminents, des informaticiens, des philanthropes, des universitaires et d'autres personnalités éminentes de la société.

    (unités) 2

Cours supplémentaires MSCS

  • Langages de programmation avancés (CS 505)

    Ce cours aborde des sujets avancés dans la conception de langages de programmation en mettant l’accent sur les méthodes formelles et les mécanismes d’abstraction. Les sujets abordés comprennent l'abstraction des données et des contrôles, la spécification formelle de la syntaxe et de la sémantique, les preuves de l'exactitude des programmes, la programmation non déterministe, les structures de contrôle avancées et l'étude de langages spécifiques. (Unités 4) Prérequis: CS 401 ou consentement de la faculté du département.

  • Big Data (Data Science) (CS 522)

    Le traitement moderne de l'information est défini par de vastes référentiels de données qui ne peuvent pas être gérés par les systèmes de base de données traditionnels. Ce cours couvre les dernières technologies développées et utilisées par les leaders de l'industrie pour résoudre ce problème de la manière la plus efficace. Les sujets abordés incluent les algorithmes MapReduce, les modèles de conception d’algorithmes MapReduce, HDFS, l’architecture de cluster Hadoop, YARN, le calcul des fréquences relatives, le tri secondaire, l’exploration Web, les index inversés et la compression d’index, les algorithmes Spark et Scala. (Unités 4) Condition préalable: algorithmes CS 435.

  • Big Data Analytics (Data Science) (CS 488)

    Le Big Data est la nouvelle ressource naturelle: les données doublent tous les mois 12-18. Ce nouveau cours sur l'analyse de données volumineuses couvre les concepts et outils fondamentaux permettant d'exploiter de vastes ensembles de données pour générer de nouvelles informations. Vous maîtriserez l'utilisation du langage R pour créer Wordcloud, Pagerank, Visualisation de données, Arbres de décision, Régression, Clustering, Réseaux de neurones, etc. Vous travaillerez avec de gros ensembles de données d'enregistrements de plusieurs millions, ainsi que des flux Twitter. Vous apprendrez les concepts Hadoop / MapReduce et Streaming Data et explorerez d’autres projets Big Data d’Apache, tels que Spark, Flink, Kafka, Storm, Samza et NoSQL, au moyen de documents de recherche individuels. Vous travaillerez en groupes sur des projets ouverts de Kaggle.com afin de vous disputer des prix en résolvant les meilleurs défis de l'analyse de données. Vous apprendrez également à utiliser IBM SPSS Modeler, leader de l'industrie, et des plates-formes d'exploration de données à source ouverte. Le manuel du best-seller #1 utilisé dans ce cours est rédigé par l'instructeur lui-même. Le cours utilisera également un large éventail de supports de formation vidéo du MIT, de Coursera, de Google et d’autres sources. (Unités 4) Préalable: consentement du corps professoral du département

  • Technologies du Big Data (Data Science) (CS 523)

    En quelques années à peine, les technologies Big Data sont passées du battage médiatique à l’un des composants essentiels de la nouvelle ère numérique. Ces technologies sont très utiles pour transformer l’information en connaissance.

    Le but du cours est d’ajouter à votre arsenal des outils vraiment importants pour vous aider à résoudre divers problèmes liés au Big Data. Nous commencerons par donner des réponses à des questions telles que «Qu'est-ce que le Big Data? Pourquoi est-ce important ou utile? Comment stockez-vous ces données volumineuses? »Nous étudierons ensuite différents outils et modèles de programmation issus de la pile de technologies de données volumineuses, ce qui nous aidera à analyser les données. Les sujets traités incluent certains des projets de l'écosystème Hadoop tels que les projets d'écosystème MapReduce, Pig, Hive, Sqoop, Flume, HBase (NoSQL DB), Zookeeper et Apache Spark. Nous couvrirons également une introduction à AWS et EMR. Vous travaillerez principalement avec une distribution Hadoop à un seul nœud de Cloudera. (Unités 4) (pas de conditions préalables)

  • Sécurité informatique (CS 466)

    Ce cours approfondit les trois aspects de la sécurité informatique: confidentialité, intégrité et disponibilité. Plusieurs modèles de stratégies de sécurité confidentielle et d'intégrité sont étudiés. Le rôle de la cryptographie pour assurer la confidentialité et l'intégrité est examiné. Parmi les autres sujets abordés, citons l'authentification, l'audit, les tests d'intrusion, les vulnérabilités communes et la détection d'intrusion. Le cours se termine par l'étude de cas d'un système sécurisé réaliste. Les étudiants seront invités à lire des articles de la littérature sur la sécurité et à les appliquer aux documents présentés dans les exposés. (Crédits 4) Prérequis: CS 401 ou consentement de la faculté du département.

  • Architecture d'entreprise (CS 544)

    Ce cours met l'accent sur l'enseignement des principes et des pratiques utilisés lors du développement d'applications d'entreprise à grande échelle. Nous examinerons les différentes couches architecturales fréquemment utilisées et les différentes technologies associées à ces couches, notamment la cartographie relationnelle entre objets (ORM), l'injection de dépendances (DI), la programmation orientée aspect (AOP) et l'intégration à d'autres applications via des services Web et SOAP), messagerie et invocation de méthode à distance. Doit avoir une connaissance pratique des bases de données relationnelles et SQL. Si vous ne possédez pas de formation solide ni de bonne connaissance pratique de SQL, vous devez vous inscrire au SGBD CS422 avant de vous inscrire à EA. (Unités 4)

  • Apprentissage automatique (Science des données) (CS 582)

    L'apprentissage machine, le domaine qui donne aux ordinateurs la capacité d'apprendre à partir de données, est au cœur de presque toutes les disciplines scientifiques, et l'étude de la généralisation (c'est-à-dire la prédiction) à partir de données est le sujet central de l'apprentissage automatique. Ce cours offre une introduction de niveau machine à l'apprentissage automatique et une couverture en profondeur des méthodes nouvelles et avancées d'apprentissage automatique, ainsi que de leur théorie sous-jacente. Il met l'accent sur les approches présentant un intérêt pratique et aborde un certain nombre d'applications récentes de l'apprentissage automatique, telles que l'exploration de données (Big Data / Data Science, Data Analytics), le traitement du langage naturel, la vision par ordinateur, la robotique, la bioinformatique et le traitement de texte et de données Web. L'apprentissage automatique est utilisé dans divers secteurs, notamment les services financiers, le pétrole et le gaz, les soins de santé, le marketing et la publicité, le gouvernement, Internet et l'Internet des objets.

    Ce cours couvre divers paradigmes d’apprentissage, algorithmes, résultats théoriques et applications. Il utilise des concepts de base issus de l'intelligence artificielle, de la théorie de l'information, des statistiques et de la théorie du contrôle, dans la mesure où ils sont pertinents pour l'apprentissage automatique. Les sujets abordés sont les suivants: apprentissage supervisé (apprentissage génératif / discriminatif, apprentissage paramétrique / non paramétrique, réseaux de neurones, machines à vecteurs de support, arbre de décision, apprentissage bayésien et optimisation); apprentissage non supervisé (clustering, réduction de la dimensionnalité, méthodes du noyau); théorie de l'apprentissage (compromis entre les biais et la variance; théorie de la CV; grandes marges); apprentissage par renforcement et contrôle adaptatif. Parmi les autres sujets abordés, citons HMM (modèle de Markov caché), le calcul évolutif, l’apprentissage en profondeur (avec des réseaux de neurones) et la conception d’algorithmes dont les performances peuvent être analysées de manière rigoureuse pour résoudre les problèmes fondamentaux d’apprentissage automatique.

    Une partie importante du cours est un projet de groupe. Les principaux outils open source utilisés pour l'apprentissage automatique parallèle, distribué et évolutif seront brièvement abordés pour aider les étudiants à réaliser les projets. (Unités 4) Condition préalable: Aucune.

  • Programmation pour appareils mobiles (CS 473)

    L'importance de la programmation pour appareils mobiles a émergé au cours des dernières années en tant que nouveau domaine du développement de logiciels. Ce cours prépare les étudiants à développer des applications qui s'exécutent sur des appareils mobiles tels qu'un téléphone IPhone, IPad ou Android. C'est un marché en plein développement. Le cours porte sur l'installation, le développement, le test et la distribution d'applications mobiles. À la fin de ce cours, les étudiants sont en mesure de développer une application pour les plates-formes couvertes, de les simuler, de les tester sur le périphérique réel et enfin de les publier sur l’app store pour les rendre accessibles aux utilisateurs. (Unités 4) Condition préalable: CS472 ou consentement de la faculté du département.

  • Applications Web modernes (CS 572)

    Dans ce cours, vous apprendrez l’architecture de programmation réactive de SPA (applications Web à page unique) ainsi que toutes les compétences nécessaires pour créer une application Web moderne complète. Les technologies comprennent: les bases de données NodeJS, ExpressJS, TypeScript, AngularJS2, Firebase et NoSQL (MongoDB). Le cours couvrira:

    • Comment le moteur C ++ V8 et le code asynchrone fonctionnent-ils dans le noeud et la boucle d'événements du noeud?
    • Comment structurer votre code en vue de la réutilisation et de la construction d'une API reposante à l'aide de modules et d'ExpressJS.
    • Fonctionnement des bases de données NoSQL: shell Mongo, structure d'agrégation, jeux de réplicas, mise en cluster, fragments, ORM Mongoose.
    • Compréhension approfondie du fonctionnement angulaire (avec Google), détection de changement, programmation de RxJ réactifs avec observables et sujets, DOM Shadow, zones, modules et composants, directives et tuyaux personnalisés, services et injection de dépendances, compilateur angulaire, compilateur JIT et AOF , Formulaires (gérés par les modèles et pilotés par les données), liaison de données, routage, protection et protection de la route, client HTTP, authentification par jeton Web JWT JSON.

    (unités) 4

  • Systèmes d'exploitation (CS 465)

    Un système d'exploitation contrôle les ressources centrales du système informatique et les alloue à des utilisateurs individuels. Les sujets du cours comprennent les processus séquentiels et simultanés, exclusion mutuelle, partage de ressources, coopération de processus, impasse, allocation de ressources, planification de processeur, gestion de mémoire, algorithmes de segmentation et de pagination, systèmes de gestion du temps, algorithmes de planification et protection des ressources. (Unités 4) Prérequis: CS 401 ou consentement de la faculté du département.

  • Programmation parallèle (CS 471)

    Le processeur standard de tous les nouveaux ordinateurs est désormais un processeur multicœur, qui permet d’exécuter des programmes beaucoup plus rapidement. Cependant, pour utiliser ce potentiel, un programmeur doit avoir une connaissance des techniques de programmation parallèle. Pendant ce cours, les étudiants passeront le plus clair de leur temps à écrire et à déboguer des programmes parallèles. Le résultat attendu sera de développer un nouveau niveau de compétences pratiques en programmation. Cette compétence sera utile non seulement pour la programmation de processeurs multicœurs, mais également pour la programmation de systèmes d'exploitation et la programmation de bases de données distribuées. Les outils logiciels utilisés au cours de ce cours incluent Microsoft Visual C / C ++, la bibliothèque multithreading Java et le standard de thread OpenMP. (Unités 4) Prérequis: Connaissance de la programmation informatique avec Java, C ou C ++.

  • Architecture logicielle (CS 590)

    Dans ce cours, nous examinerons les techniques, les principes et les modèles permettant de concevoir des systèmes logiciels souples, évolutifs, testables et résilients à l'aide de microservices. Nous étudierons comment diviser les applications volumineuses en microservices plus petits, plus faciles à créer, ainsi que d’autres avantages par rapport aux applications monolithiques d’entreprise. Une architecture de microservice distribuée présente également de nombreux défis. Nous étudierons ces défis et la manière de les résoudre. Les sujets de ce cours sont les styles architecturaux, les techniques et modèles d'intégration, la conception pilotée par domaine, l'architecture pilotée par les événements et la programmation réactive. (Crédits 4). (Pas de prérequis)

  • Stage en développement logiciel (CS 575)

    Dans ce cours, les étudiants effectuent des tâches informatiques dans un poste professionnel technique. Les tâches effectuées peuvent être la conception et le développement de nouveaux systèmes ou l’application de systèmes existants à des fins spécifiques. Les descriptions de travail du stage sont formulées par l'employeur et l'étudiant et doivent être préalablement approuvées par l'un des professeurs diplômés du département, en consultation avec le superviseur du stage où l'étudiant est placé. (Ce cours est principalement destiné aux étudiants des programmes de stage ou coopératifs.) (Unité 0.5-1 par bloc - peut être répétée).

«La première fois que j'ai entendu parler du programme MSCS, j'en doutais. Je ne pouvais pas croire que quelque chose comme ça existe. Mais un jour, un de mes amis a rejoint le programme. C'était quand j'ai confirmé que c'est réel. Ensuite, j'ai repris mon processus de candidature. Bien! C'est vrai, je suis ici, j'ai terminé le programme et je suis tellement heureuse. ”

Edwin BwambaleOuganda