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

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.

Cours de science des données

Cours de base standard

  • Ce cours propose un programme ciblé pour améliorer les compétences en programmation et en analyse dans cinq domaines: la résolution de problèmes, les structures de données, la programmation orientée objet, le langage de programmation Java et l'utilisation de la récursivité dans les programmes Java.

    Ces sujets revêtent une importance particulière en tant que condition préalable aux cours du programme d'études supérieures en informatique.

    Les sujets incluent: les éléments de programmation Java, la conception et la mise en œuvre orientées objet, les structures de données (y compris les listes, les piles, les files d'attente, les arbres de recherche binaires, les tables de hachage et les ensembles), la hiérarchie des exceptions, les entrées / sorties de fichiers et les flux, et JDBC. (4 crédits) Préalable: Pour les étudiants de premier cycle: CS 221; pour les étudiants diplômés: accord de la faculté du département (4 crédits)

  • 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)

  • 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.

  • 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.)

  • 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)

  • 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).

  • 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.

  • 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 des servlets Java et JSP pour le traitement côté serveur. Le cours présentera HTML et CSS. JavaScript est au centre du cours et est couvert en tant que langage de programmation fonctionnel comprenant les espaces de noms et modules jQuery, Ajax et JavaScript. Il s'agit d'une condition préalable à l'architecture d'application Web CS545. Il ne couvre pas AngularJS ou NodeJS, mais le JavaScript abordé ici vous préparera à apprendre ces technologies. (4 unités)
    Prérequis: CS 220 ou CS 401 ou consentement de la faculté du département.

  • Votre premier cours est spécifiquement conçu pour établir les bases de la façon dont vous pouvez devenir un professionnel de l'informatique performant. Le cours est enraciné dans la pratique de la méditation transcendantale qui mène à 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 par un fonctionnement mental supérieur améliorant la créativité et la pensée «hors des sentiers battus». Le cours se concentrera sur les principes qui sous-tendent les performances de pointe dans l'activité en développant un mélange optimal de repos et d'activité. Vous développerez et vivrez une routine quotidienne idéale qui favorise la réussite dans la vie. (2 unités)

  • 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 pour aider l'organisation à améliorer ses compétences en 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

  • 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.

  • 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.

  • Le Big Data est la nouvelle ressource naturelle : les données doublent tous les 12 à 18 mois. Ce nouveau cours Big Data Analytics couvre les concepts et outils fondamentaux pour l'exploration de grands ensembles de données diversifiés afin de générer de nouvelles informations. Vous maîtriserez l'utilisation du langage R pour créer Wordcloud, Pagerank, Data Visualization, Decision Trees, Regression, Clustering, Neural Networks, etc. Vous travaillerez avec de grands ensembles de données d'enregistrements de plusieurs millions et exploiterez également des flux Twitter. Vous apprendrez les concepts Hadoop/MapReduce et Streaming Data, et explorerez d'autres projets Apache Big Data tels que Spark, Flink, Kafka, Storm, Samza, NoSQL à travers des articles de recherche individuels. Vous travaillerez en groupe sur des projets ouverts de Kaggle.com pour concourir pour des prix en résolvant les meilleurs défis d'analyse de données. Vous apprendrez également à utiliser IBM SPSS Modeler, leader du secteur, et des plateformes d'exploration de données open source. Le cours utilisera également un large éventail de supports de formation vidéo du MIT, Coursera, Google et ailleurs. (4 crédits) Prérequis : Consentement du corps professoral du département

  • 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 des outils vraiment importants à votre arsenal pour vous aider à résoudre divers problèmes de Big Data. Nous commencerons par répondre à des questions telles que «Qu'est-ce que le Big Data? Pourquoi est-ce important ou utile? Comment stockez-vous ce big data? » Nous étudierons ensuite différents outils et modèles de programmation de la pile technologique Big Data qui nous aideront à analyser les données. Les sujets 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 à nœud unique de Cloudera. (4 unités) (Aucun prérequis)

  • 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.

  • L'apprentissage automatique est le domaine d'étude qui donne aux ordinateurs la capacité d'apprendre à partir des 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 des données est le sujet central de l'apprentissage automatique. Ce cours donne une introduction de niveau supérieur à l'apprentissage automatique et une couverture approfondie des méthodes nouvelles et avancées d'apprentissage automatique, ainsi que de leur théorie sous-jacente. Il met l'accent sur des approches ayant une pertinence pratique et examine un certain nombre d'applications récentes de l'apprentissage automatique, telles que l'exploration de données (en Big Data / Data Science, Data Analytics), Natural Language Processing, Computer Vision, Robotics, Bioinformatics and Text and Web data processing. 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, l'Internet et l'Internet des objets.

    Ce cours couvre une variété de paradigmes d'apprentissage, d'algorithmes, de résultats théoriques et d'applications. Il utilise des concepts de base 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 comprennent: l'apprentissage supervisé (apprentissage génératif / discriminatif, apprentissage paramétrique / non paramétrique, réseaux de neurones, machines vectorielles de support, arbre de décision, apprentissage bayésien et optimisation); apprentissage non supervisé (clustering, réduction de dimensionnalité, méthodes de noyau); théorie de l'apprentissage (compromis biais / variance; théorie de la CV; grandes marges); apprentissage par renforcement et contrôle adaptatif. D'autres sujets incluent HMM (modèle de Markov caché), l'informatique évolutive, l'apprentissage en profondeur (avec des réseaux neuronaux) et la conception d'algorithmes dont les performances peuvent être rigoureusement analysées pour des 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.

  • 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.

  • 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

  • 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 ++.

  • Dans ce cours de stage, les étudiants effectuent des tâches liées à l'informatique dans un poste professionnel technique. Les tâches exécutées peuvent concerner 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 des stages sont formulées par l'employeur et l'étudiant et doivent être approuvées à l'avance par l'une des facultés diplômées du département, en consultation avec le superviseur de stage où l'étudiant est placé. (Ce cours s'adresse principalement aux étudiants des programmes de stages ou coopératifs.) (0.5-1 unité par bloc - peut être répété.)

  • 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)

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