Sei pronto per Anticipa la tua carriera?

Il nostro programma è specializzato nelle aree dei sistemi software e dello sviluppo software che utilizzano OOP (Java), applicazioni web e scienza dei dati. Le principali aree di studio includono: sviluppo software avanzato, programmazione e architettura di applicazioni Web, analisi e tecnologie di big data, apprendimento automatico e diverse importanti aree di applicazione.

Tutti i corsi sono progettati per aiutarti ad avanzare nella tua carriera e ogni corso contiene compiti pratici. vista requisiti di laurea.

NUOVO! Premiato Science Data

Corsi standard di base

  • Modern Programming Practices (programmazione Java) (CS 401)

    Questo corso presenta i principi fondamentali della programmazione orientata agli oggetti. Gli studenti impareranno come scrivere software riutilizzabile e meglio conservato e integrare questa conoscenza con compiti e progetti di laboratorio. Gli argomenti includono: principi fondamentali e modelli di programmazione orientata agli oggetti, diagrammi di classe UML e principi di progettazione che promuovono la riutilizzabilità e la manutenibilità del software. (Unità 4)

  • Sviluppo software avanzato (CS 525)

    Questo corso considera i metodi e le pratiche attuali per una buona progettazione di sistemi software. Gli argomenti includono: modelli di progettazione del software, strutture, architetture e sistemi di progettazione per applicare queste astrazioni multilivello. (Crediti 2-4) Prerequisito: CS 401 o consenso del dipartimento facoltà.

  • Algoritmi (CS 435)

    Questo corso presenta metodi per analizzare l'efficienza degli algoritmi (comprese le analisi caso peggiore e caso medio) e introduce una varietà di algoritmi noti e altamente efficienti. L'analisi, la progettazione e l'implementazione degli algoritmi hanno la stessa importanza. Gli argomenti includono la ricerca e l'ordinamento, l'efficienza delle operazioni sulle strutture dati (inclusi elenchi, hashtables, alberi binari di ricerca bilanciati, code di priorità), algoritmi grafici, algoritmi combinatori, relazioni di ricorrenza, programmazione dinamica, problemi NP-completi e alcuni argomenti speciali come tempo permette. (Argomenti speciali includono geometria computazionale, algoritmi per crittosistemi, approssimazione, Big Data e calcolo parallelo).

  • Reti di computer (CS 450)

    L'obiettivo di questo corso è quello di apprendere i concetti, i principi di architettura e la terminologia delle reti di computer esplorando il modo in cui le reti funzionano e lo sviluppo di applicazioni di rete. Questo corso segue l'approccio top-down alla comprensione delle reti utilizzando l'architettura e i protocolli di Internet come l'esempio principale di un'implementazione dei principi di rete. Iniziamo dal livello dell'applicazione e proseguiamo attraverso il livello di trasporto, il livello di rete, il livello di collegamento e il livello fisico delle reti di computer. Gli studenti sviluppano diverse applicazioni di rete e completano diversi laboratori progettati per tracciare e comprendere i protocolli di rete predominanti in uso in Internet. (Unità 4) Prerequisito: CS 401 o consenso del dipartimento facoltà.

  • Sistemi di gestione dei database (CS 422)

    I sistemi di database organizzano e recuperano le informazioni, consentendo all'utente di accedere alle informazioni desiderate in modo semplice ed efficiente. Gli argomenti includono: modello di dati relazionali; SQL; Modellazione ER; algebra relazionale; normalizzazione dei dati; transazioni; oggetti nel database; sicurezza e integrità dei dati; data warehousing, OLAP e data mining; database distribuiti; e studio di un sistema di database commerciale specifico. (Unità 4) Prerequisito: CS 401 o consenso del dipartimento facoltà.

  • Ingegneria del software (CS 425)

    Ingegneria del software è un corso che introduce lo studente alle migliori pratiche nello sviluppo del software attraverso una metodologia di sviluppo del software. Gli studenti hanno già avuto una certa esperienza in corsi precedenti con il paradigma Object Oriented e hanno usato alcuni dei diagrammi UML di base allo scopo di modellare le relazioni tra oggetti software. In Ingegneria del software, lo studente svilupperà competenze nel mettere insieme questi strumenti per produrre un software robusto e facilmente gestibile. Una metodologia di sviluppo del software descrive quando e come i concetti OO e i diagrammi UML dovrebbero essere usati per raggiungere l'obiettivo di costruire software di qualità. Il corso si concentra su un piccolo progetto in cui i principi discussi nel formato della lezione possono essere illustrati e applicati. Alla fine del corso, lo studente avrà un'applicazione in esecuzione, costruita in accordo con gli standard elevati della metodologia di sviluppo RUP (Rational Unified Process).

  • Architettura e framework per applicazioni Web (CS 545)

    Questo corso focalizza le applicazioni web in un ambiente aziendale. Un'applicazione aziendale è un grande sistema software progettato per operare in una grande organizzazione come una società o un governo. Le applicazioni aziendali sono complesse, scalabili, basate su componenti, distribuite e mission critical. Questo corso, CS545, si concentra sul front-end o sul livello di presentazione di un'applicazione Web aziendale. CS544 Enterprise Architecture è un corso complementare incentrato sul back-end o sul livello aziendale, tra cui business logic, transazioni e persistenza. CS472, Web Application Programming, è un corso prerequisito che copre HTML, CSS, JavaScript, servlet e JSP.

    Il corso insegna principi e modelli generali su piattaforme e framework. Il corso esaminerà e lavorerà con i due framework web Java predominanti, Java Server Faces (JSF) e SpringMVC. JSF è un framework basato su componenti ed è la specifica del framework di presentazione ufficiale per lo stack tecnologico Java Enterprise Edition. SpringMVC fa parte del framework Core Spring ed è diventato il framework web Java più utilizzato negli ultimi anni. (Unità 4) Prerequisito: CS 472 o consenso del dipartimento facoltà.

  • Programmazione di applicazioni Web (CS 472)

    Questo corso fornisce un'introduzione sistematica alla programmazione di applicazioni web interattive e dinamiche. Il corso è destinato a persone con esperienza di programmazione di applicazioni web precedenti o scarse. Questa offerta utilizzerà servlet Java e JSP per l'elaborazione lato server. Il corso introdurrà HTML e CSS. JavaScript è uno degli argomenti principali del corso ed è coperto da un linguaggio di programmazione funzionale che include jQuery, Ajax e JavaScript spazi dei nomi e moduli. È un prerequisito per l'architettura delle applicazioni Web CS545. Non copre AngularJS o NodeJS, ma il JavaScript qui trattato ti preparerà ad apprendere queste tecnologie. (Unità 4)
    Prerequisito: CS 220 o CS 401 o consenso del dipartimento facoltà.

  • Scienza e tecnologia della coscienza per i professionisti del computer (PER 506)

    Il tuo primo corso è specificamente progettato per stabilire le basi su come diventare un esperto in informatica. Il corso è radicato nella pratica della Meditazione Trascendentale che porta alla realizzazione del tuo vero potenziale. Imparerai a conoscere i vantaggi della TM inclusa la capacità di risolvere problemi complessi grazie a un funzionamento mentale superiore che aumenta la creatività e il pensiero "fuori dagli schemi". Il corso si focalizzerà sui principi che sostengono il picco delle prestazioni in attività sviluppando un mix ottimale di riposo e attività. Svilupperai e vivrai una routine quotidiana ideale che supporta il successo nella vita. (Unità 2)

  • Leadership per i Technical Manager (PER 506B)

    L'obiettivo di questo corso è fornire agli studenti conoscenze e abilità nella leadership, comprese le abilità comunicative come preparazione per i futuri ruoli di leadership.

    Alla fine di questo corso, gli studenti capiranno le risposte a domande chiave riguardanti una leadership efficace, tra cui:

    Ci sono leader "di origine naturale"?

    Devi avere carisma per guidare in modo efficace?

    Quale asset è necessario per essere un leader?

    Qual è la differenza tra la gestione e la guida?

    Quali sono le molte "intelligenze" richieste per guidare in questa era?

    Che cosa è "malasanità da parte del management" e come conduce all'autosabotaggio?

    Sapendo che il feedback è essenziale per il processo guida, come possiamo superare la paura di dare e riceverlo?

    Qual è la fonte di 80% dei problemi riscontrati sul posto di lavoro?

    È disponibile una ricerca scientifica per aiutare l'organizzazione a migliorare le sue capacità di leadership individuale e di squadra?

    Tra i relatori ospiti figurano eminenti imprenditori, informatici, filantropi, accademici e altri leader di spicco della società.

    (unità 2)

Corsi MSCS aggiuntivi

  • Linguaggi di programmazione avanzati (CS 505)

    Questo corso considera argomenti avanzati nella programmazione del linguaggio di programmazione con enfasi su metodi formali e meccanismi di astrazione. Gli argomenti includono dati e astrazione di controllo, specifiche formali di sintassi e semantica, prove di correttezza del programma, programmazione non deterministica, strutture di controllo avanzate e studio di linguaggi specifici. (Unità 4) Prerequisito: CS 401 o consenso del dipartimento facoltà.

  • Big Data (Data Science) (CS 522)

    L'elaborazione moderna delle informazioni è definita da vasti archivi di dati che non possono essere gestiti dai sistemi di database tradizionali. Questo corso copre l'ultima tecnologia sviluppata e utilizzata dai leader del settore per risolvere questo problema nel modo più efficiente. Argomenti specifici trattati includono algoritmi MapReduce, schemi di progettazione algoritmo MapReduce, HDFS, architettura cluster Hadoop, YARN, calcolo delle frequenze relative, ordinamento secondario, web crawling, indici invertiti e compressione indice, algoritmi Spark e Scala. (Unità 4) Prerequisito: CS 435 Algorithms.

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

    Big Data è la nuova risorsa naturale: i dati raddoppiano ogni mese 12-18. Questo nuovo corso di Big Data Analytics copre i concetti e gli strumenti fondamentali per estrarre grandi set di dati diversi per generare nuovi approfondimenti. Potrai padroneggiare l'uso del linguaggio R per creare Wordcloud, Pagerank, Visualizzazione dati, Alberi decisionali, Regressione, Clustering, Reti neurali e altro ancora. Lavorerai con alcuni grandi insiemi di record multi-milioni e anche i miei feed Twitter. Imparerai i concetti di Hadoop / MapReduce e Streaming Data e esplorerai altri progetti di Big Data di Apache come Spark, Flink, Kafka, Storm, Samza, NoSQL attraverso documenti di ricerca individuali. Lavorerai in gruppo su progetti aperti di Kaggle.com per competere per i premi in denaro risolvendo le sfide best-of-breed di analisi dei dati. Imparerai anche a utilizzare IBM SPSS Modeler leader del settore e piattaforme di data mining open source. Il libro di bestseller #1 utilizzato in questo corso è stato scritto dall'istruttore stesso. Il corso utilizzerà anche una vasta gamma di materiali per la formazione video di MIT, Coursera, Google e altrove. (Unità 4) Prerequisito: consenso del dipartimento facoltà

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

    In pochi anni, le tecnologie dei big data sono passate dal regno dell'hype a uno dei componenti principali della nuova era digitale. Queste tecnologie sono molto utili per trasformare l'informazione in conoscenza.

    L'obiettivo del corso è aggiungere alcuni strumenti veramente importanti nel tuo arsenale per aiutarti a risolvere i vari problemi dei big data. Inizieremo dando risposte a domande come "Che cosa sono i Big Data? Perché è importante o utile? Come immagazzini questi grandi dati? "Studieremo quindi diversi strumenti e modelli di programmazione dal grande stack tecnologico dei dati che ci aiuterà ad analizzare i dati. Gli argomenti includono alcuni progetti nell'ecosistema Hadoop come MapReduce, Pig, Hive, Sqoop, Flume, HBase (NoSQL DB), Zookeeper e Apache Spark. Copriremo anche un'introduzione a AWS e EMR. Lavorerai principalmente con una distribuzione Hadoop a nodo singolo di Cloudera. (Unità 4) (Nessun prerequisito)

  • Computer Security (CS 466)

    Questo corso approfondisce i tre aspetti della sicurezza informatica: riservatezza, integrità e disponibilità. Vengono studiati diversi modelli per le politiche di riservatezza e integrità. Viene esaminato il ruolo della crittografia nell'assicurare la riservatezza e l'integrità. Altri argomenti includono autenticazione, auditing, test di penetrazione, vulnerabilità comuni e rilevamento delle intrusioni. Il corso si conclude con il caso di studio di un sistema sicuro realistico. Agli studenti verrà chiesto di leggere i documenti della letteratura sulla sicurezza e applicarli al materiale fornito nelle lezioni. (Crediti 4) Prerequisito: CS 401 o consenso del dipartimento facoltà.

  • Architettura aziendale (CS 544)

    Il corso si focalizza sull'insegnamento dei principi e delle pratiche utilizzate nello sviluppo di applicazioni aziendali su vasta scala. Esamineremo i diversi livelli architettonici che vengono frequentemente utilizzati e le diverse tecnologie associate a questi livelli, tra cui Object Relational Mapping (ORM), Dependency Injection (DI), Aspect Oriented Programming (AOP) e integrazione con altre applicazioni tramite Web Services (RESTfull e SOAP), messaggistica e invocazione del metodo remoto. Deve avere una conoscenza operativa di database relazionali e SQL. Se non si dispone di un corso approfondito o di una buona conoscenza pratica di SQL, è necessario iscriversi a CS422 DBMS prima di registrarsi per EA. (Unità 4)

  • Apprendimento automatico (data science) (CS 582)

    Machine Learning, il campo di studio che dà ai computer la possibilità di apprendere dai dati, è il cuore di quasi tutte le discipline scientifiche e lo studio della generalizzazione (ovvero della previsione) dai dati è il tema centrale dell'apprendimento automatico. Questo corso fornisce un'introduzione a livello di laurea all'apprendimento automatico e alla copertura approfondita di metodi nuovi e avanzati nell'apprendimento automatico, nonché alla loro teoria di base. Sottolinea gli approcci con rilevanza pratica e discute una serie di recenti applicazioni di machine learning, come Data Mining (in Big Data / Data Science, Analisi dei dati), Natural Language Processing, Computer Vision, Robotica, Bioinformatica e Elaborazione di dati di testi e Web. L'apprendimento automatico viene utilizzato in vari settori, tra cui servizi finanziari, petrolio e gas, assistenza sanitaria, marketing e pubblicità, governo, Internet e Internet delle cose.

    Questo corso copre una varietà di paradigmi di apprendimento, algoritmi, risultati teorici e applicazioni. Utilizza i concetti di base dell'intelligenza artificiale, teoria dell'informazione, statistica e teoria del controllo nella misura in cui sono rilevanti per l'apprendimento automatico. Gli argomenti includono: apprendimento supervisionato (apprendimento generativo / discriminatorio, apprendimento parametrico / non parametrico, reti neurali, macchine di supporto vettoriale, albero delle decisioni, apprendimento e ottimizzazione bayesiani); apprendimento non supervisionato (clustering, riduzione della dimensionalità, metodi del kernel); teoria dell'apprendimento (distorsioni / compromessi, teoria dei VC, ampi margini); apprendimento di rinforzo e controllo adattativo. Altri argomenti includono HMM (Hidden Markov Model), Evolutionary Computing, Deep Learning (With Neural Nets) e la progettazione di algoritmi le cui prestazioni possono essere rigorosamente analizzate per problemi fondamentali di apprendimento automatico.

    Una parte importante del corso è un progetto di gruppo. I principali strumenti open source utilizzati per l'apprendimento automatico parallelo, distribuito e scalabile verranno brevemente trattati per aiutare gli studenti a realizzare i progetti. (Unità 4) Prerequisito: nessuno.

  • Programmazione dispositivi mobili (CS 473)

    L'importanza della programmazione dei dispositivi mobili è emersa negli ultimi anni come un nuovo dominio nello sviluppo del software. Questo corso prepara gli studenti a sviluppare applicazioni che girano su dispositivi mobili come un telefono IPhone, IPad o Android. Questo è un mercato in rapido sviluppo. Il corso si concentra sull'installazione, lo sviluppo, il test e la distribuzione di applicazioni mobili. Alla fine di questo corso gli studenti sono in grado di sviluppare un'app per le piattaforme coperte, simularle, testarle sul dispositivo reale e infine pubblicare sull'app store per rendere la disponibilità agli utenti. (Unità 4) Prerequisito: CS472 o consenso del dipartimento facoltà.

  • Applicazioni Web moderne (CS 572)

    In questo corso imparerai l'architettura di programmazione reattiva di SPA (applicazioni Web a pagina singola) insieme a tutte le competenze necessarie per creare un'applicazione Web moderna completa. Le tecnologie includono: database NodeJS, ExpressJS, TypeScript, AngularJS2, Firebase e NoSQL (MongoDB). Il corso riguarderà:

    • Come il motore V8 C ++ e il codice asincrono funzionano nel nodo degli eventi Nodo e Nodo.
    • Come strutturare il codice per riutilizzarlo e creare API restful usando i moduli e ExpressJS.
    • Come funzionano i database NoSQL: Mongo Shell, Aggregation framework, Replica Sets, Clustering, Shards, Mongoose ORM.
    • Comprensione approfondita di come funziona Angular (supportato da Google), Rilevamento modifiche, RxJ reattivo programmazione con oggetti osservabili e soggetti, DOM ombra, Zone, moduli e componenti, Direttive e tubi personalizzati, Servizi e Iniezione delle dipendenze, Compilatore angolare, Compilazione JIT e AOF , Forms (Template Driven e Data Driven), Data Binding, Routing, Guard e Route Protection, client HTTP, JWT JSON Web Token Authentication.

    (unità 4)

  • Sistemi operativi (CS 465)

    Un sistema operativo controlla le risorse centrali del sistema informatico e le assegna ai singoli utenti. Gli argomenti del corso includono processi sequenziali e simultanei, esclusione reciproca, condivisione delle risorse, cooperazione ai processi, deadlock, allocazione delle risorse, schedulazione del processore, gestione della memoria, algoritmi di segmentazione e paging, sistemi di timesharing, algoritmi di schedulazione e protezione delle risorse. (Unità 4) Prerequisito: CS 401 o consenso del dipartimento facoltà.

  • Programmazione parallela (CS 471)

    Il processore standard per tutti i nuovi computer è ora un processore multi-core, che ha il potenziale per eseguire programmi molto più rapidamente. Tuttavia, per utilizzare questo potenziale, un programmatore deve avere una certa conoscenza delle tecniche di programmazione parallela. Durante questo corso, gli studenti trascorreranno la maggior parte del loro tempo a scrivere e mettere a punto programmi paralleli. Il risultato atteso sarà quello di sviluppare un nuovo livello di abilità di programmazione pratica. Questa competenza non sarà utile solo per la programmazione di processori multi-core, ma anche per la programmazione di sistemi operativi e per la programmazione di database distribuiti. Gli strumenti software utilizzati durante questo corso includono Microsoft Visual C / C ++, libreria di multithreading Java e standard di threading OpenMP. (Unità 4) Prerequisito: Conoscenza della programmazione del computer tramite Java, C o C ++.

  • Architettura software (CS 590)

    In questo corso esamineremo tecniche, principi e modelli su come progettare sistemi software flessibili, scalabili, testabili e resilienti utilizzando microservizi. Studieremo come possiamo suddividere le applicazioni di grandi dimensioni in microservizi più piccoli che sono più facili da costruire e altri vantaggi rispetto alle applicazioni aziendali monolitiche. Un'architettura di microservizi distribuiti offre anche molte sfide. Studieremo queste sfide e come affrontarle. Gli argomenti di questo corso sono gli stili architettonici, le tecniche e i modelli di integrazione, la progettazione basata sul dominio, l'architettura basata su eventi e la programmazione reattiva. (Crediti 4). (Nessun prerequisito)

  • Practicum in Software Development (CS 575)

    In questo corso pratico, gli studenti eseguono compiti informatici in una posizione professionale tecnica. Le attività svolte possono riguardare la progettazione e lo sviluppo di nuovi sistemi o l'applicazione di sistemi esistenti per scopi specifici. Le descrizioni del lavoro pratico sono formulate dal datore di lavoro e dallo studente e richiedono l'approvazione preventiva da parte di una delle facoltà laureate del dipartimento, in consultazione con il supervisore del praticantato presso il quale lo studente è inserito. (Questo corso è principalmente per studenti in stage o programmi di cooperazione.) (0.5-1 unità per blocco - può essere ripetuto.)

"La prima volta che ho sentito parlare del programma MSCS, ne ho dubitato. Non potevo credere che esistesse qualcosa di simile. Ma un giorno, un mio amico ha aderito al programma. Fu allora che confermai che è reale. Quindi ho ripreso il mio processo di candidatura. Bene! È vero, sono qui, ho completato il programma e sono così felice. "

Edwin BwambaleUganda