Ben je klaar om Ga je carrière vooruit?

Ons programma is gespecialiseerd op het gebied van softwaresystemen en softwareontwikkeling met OOP (Java), webtoepassingen en data science. De belangrijkste onderzoeksgebieden zijn: geavanceerde softwareontwikkeling, webapplicatieprogrammering en -architectuur, big data-analyse en -technologieën, machine learning en verschillende belangrijke toepassingsgebieden.

Alle cursussen zijn bedoeld om je carrière vooruit te helpen en elke cursus bevat praktische opdrachten. Uitzicht afstudeereisen.

NIEUWE! Award winnen data Science

Standaard kerncursussen

  • Moderne programmeermethoden (Java-programmering) (CS 401)

    Deze cursus presenteert de basisprincipes van objectgeoriënteerd programmeren. Studenten leren herbruikbare en beter onderhouden software te schrijven en integreren deze kennis met laboratoriumopdrachten en projecten. Onderwerpen zijn onder meer: ​​fundamentele principes en modellen van objectgeoriënteerd programmeren, UML-klassendiagrammen en ontwerpprincipes die herbruikbaarheid en onderhoudbaarheid van software bevorderen. (4-eenheden)

  • Geavanceerde softwareontwikkeling (CS 525)

    Deze cursus behandelt de huidige methoden en werkwijzen voor een goed ontwerp van softwaresystemen. Onderwerpen zijn onder meer: ​​ontwerppatronen van software, frameworks, architecturen en ontwerpsystemen om deze multi-level abstracties toe te passen. (2-4 credits) Voorwaarde: CS 401 of toestemming van de faculteit van de faculteit.

  • Algoritmen (CS 435)

    Deze cursus presenteert methoden voor het analyseren van de efficiëntie van algoritmen (inclusief worst-case en gemiddelde-case analyse) en introduceert een verscheidenheid aan bekende, zeer efficiënte algoritmen. Analyse, ontwerp en implementatie van algoritmen krijgen dezelfde nadruk. Onderwerpen zijn onder meer zoeken en sorteren, efficiëntie van bewerkingen op datastructuren (inclusief lijsten, hash-tabellen, gebalanceerde binaire zoekbomen, prioriteitswachtrijen), grafische algoritmen, combinatorische algoritmen, herhalingsrelaties, dynamische programmering, NP-complete problemen en enkele speciale onderwerpen in de tijd toelaat. (Speciale onderwerpen zijn computationele geometrie, algoritmen voor cryptosystemen, approximatie, Big Data en parallel computing.)

  • Computernetwerken (CS 450)

    Het doel van deze cursus is om de concepten, architectuurprincipes en terminologie van computernetwerken te leren door te onderzoeken hoe netwerken werken en netwerktoepassingen te ontwikkelen. Deze cursus volgt de top-down benadering van het begrijpen van netwerken door gebruik te maken van de architectuur en protocollen van het internet als het primaire voorbeeld van een implementatie van netwerkprincipes. We beginnen bij de applicatielaag en gaan verder door de transportlaag, netwerklaag, linklaag en de fysieke laag computernetwerken. Studenten ontwikkelen verschillende netwerktoepassingen en voltooien verschillende laboratoria die zijn ontworpen om de belangrijkste netwerkprotocollen die op internet worden gebruikt, te traceren en te begrijpen. (4-eenheden) Voorwaarde: CS 401 of toestemming van de faculteitsafdeling.

  • Databasebeheersystemen (CS 422)

    Databasesystemen organiseren en halen informatie op, waardoor de gebruiker eenvoudig en efficiënt toegang heeft tot de gewenste informatie. Onderwerpen zijn onder meer: ​​relationeel gegevensmodel; SQL; ER-modellering; relationele algebra; gegevensnormalisatie; transacties; objecten in de database; gegevensbeveiliging en integriteit; datawarehousing, OLAP en datamining; gedistribueerde databases; en studie van een specifiek commercieel database systeem. (4-eenheden) Voorwaarde: CS 401 of toestemming van de faculteitsafdeling.

  • Software Engineering (CS 425)

    Software Engineering is een cursus die de student laat kennismaken met de best practices in softwareontwikkeling via een software-ontwikkelingsmethode. Studenten hebben al wat ervaring opgedaan in eerdere cursussen met het objectgeoriënteerde paradigma en hebben enkele van de elementaire UML-diagrammen gebruikt voor het modelleren van relaties tussen softwareobjecten. In Software Engineering zal de student vaardigheden ontwikkelen om deze tools samen te brengen om robuuste, gemakkelijk te onderhouden software te produceren. Een softwareontwikkelingsmethode beschrijft wanneer en hoe OO-concepten en UML-diagrammen moeten worden gebruikt om het doel van het bouwen van kwaliteitssoftware te bereiken. De cursus concentreert zich rond een klein project waarin de principes besproken in het lesformaat kunnen worden geïllustreerd en toegepast. Tegen het einde van de cursus heeft de student een lopende aanvraag, gebouwd in overeenstemming met de hoge normen van de RUP (Rational Unified Process) ontwikkelingsmethodologie.

  • Web Application Architecture en Frameworks (CS 545)

    Deze cursus richt zich op webapplicaties in een zakelijke omgeving. Een bedrijfsapplicatie is een groot softwaresysteem dat is ontworpen om te werken in een grote organisatie, zoals een bedrijf of een overheid. Enterprise-applicaties zijn complex, schaalbaar, component-gebaseerd, gedistribueerd en bedrijfskritisch. Deze cursus, CS545, richt zich op de frontend of presentatielaag van een zakelijke webtoepassing. CS544 Enterprise Architecture is een begeleidende cursus die zich richt op de back-end of bedrijfslaag, inclusief bedrijfslogica, transacties en persistentie. CS472, Web Application Programming, is een vereiste cursus die betrekking heeft op HTML, CSS, JavaScript, servlets en JSP.

    De cursus leert principes en patronen die algemeen zijn over platforms en frameworks. De cursus onderzoekt en werkt met de twee overheersende Java-webraamwerken, Java Server Faces (JSF) en SpringMVC. JSF is een op componenten gebaseerd raamwerk en is de officiële specificatie van het presentatieraamwerk voor de Java Enterprise Edition-technologiestack. SpringMVC maakt deel uit van het Core Spring-framework en is de afgelopen jaren het meest gebruikte Java-webraamwerk geworden. (4-eenheden) Voorwaarde: CS 472 of toestemming van de faculteitsafdeling.

  • Web Application Programming (CS 472)

    Deze cursus biedt een systematische introductie tot het programmeren van interactieve en dynamische webapplicaties. De cursus is bedoeld voor personen met weinig of geen ervaring met het programmeren van webtoepassingen. Dit aanbod gebruikt Java-servlets en JSP voor verwerking aan de serverzijde. De cursus introduceert HTML en CSS. JavaScript is een focus van de cursus en wordt behandeld als een functionele programmeertaal inclusief jQuery-, Ajax- en JavaScript-naamruimten en -modules. Het is een vereiste voor de CS545-webapplicatiearchitectuur. Het heeft geen betrekking op AngularJS of NodeJS, maar het JavaScript dat hier wordt behandeld, bereidt u voor op het leren van die technologieën. (4-eenheden)
    Voorwaarde: CS 220 of CS 401 of toestemming van de faculteit van de faculteit.

  • Wetenschap en technologie van bewustzijn voor computerprofessionals (VOOR 506)

    Je eerste cursus is specifiek ontworpen om de basis te leggen voor hoe je een best presterende computerwetenschapper kunt worden. De cursus is geworteld in de beoefening van Transcendente Meditatie die leidt tot vervulling van je ware potentieel. Je leert over de voordelen van TM, waaronder het vermogen om complexe problemen op te lossen door superieur mentaal functioneren, waardoor creativiteit en "out of the box" -denken wordt verbeterd. De cursus zal zich richten op de principes die de topprestaties van de activiteit ondersteunen door een optimale mix van rust en activiteit te ontwikkelen. Je zult een ideale dagelijkse routine ontwikkelen en ervaren die succes in het leven ondersteunt. (2-eenheden)

  • Leiderschap voor technische managers (VOOR 506B)

    Het doel van deze cursus is om studenten kennis en vaardigheden op het gebied van leiderschap te bieden, inclusief communicatieve vaardigheden als voorbereiding op toekomstige leiderschapsrollen.

    Aan het einde van deze cursus begrijpen de studenten de antwoorden op belangrijke vragen over effectief leiderschap, waaronder de volgende:

    Zijn er 'van nature geboren' leiders?

    Moet je charisma hebben om effectief te kunnen leiden?

    Welke troef is vereist om een ​​leider te zijn?

    Wat is het verschil tussen beheren en leiden?

    Wat zijn de vele 'intelligenties' die nodig zijn om te leiden in dit tijdperk?

    Wat is 'management malpractice' en hoe leidt dit tot zelf-sabotage?

    Wetende dat feedback essentieel is voor het leidende proces, hoe komen we dan over de angst om het te geven en te ontvangen?

    Wat is de bron van 80% van de problemen op de werkplek?

    Is er wetenschappelijk onderzoek beschikbaar om de organisatie te helpen bij het verbeteren van de individuele en teamleiderschapsvaardigheden?

    Gastsprekers zijn vooraanstaande ondernemers, computerwetenschappers, filantropen, academici en andere prominente leiders in de samenleving.

    (2-eenheden)

Aanvullende MSCS-cursussen

  • Geavanceerde programmeertalen (CS 505)

    Deze cursus behandelt geavanceerde onderwerpen in het ontwerpen van programmeertaal met de nadruk op formele methoden en abstractiemechanismen. Onderwerpen omvatten data- en controle-abstractie, formele specificatie van syntaxis en semantiek, bewijzen van programmacorrectheid, niet-deterministische programmering, geavanceerde controlestructuren en studie van specifieke talen. (4-eenheden) Voorwaarde: CS 401 of toestemming van de faculteitsafdeling.

  • Big Data (Data Science) (CS 522)

    Moderne informatieverwerking wordt gedefinieerd door grote databestanden die niet kunnen worden verwerkt door traditionele databasesystemen. Deze cursus behandelt de nieuwste technologie die is ontwikkeld en gebruikt door marktleiders om dit probleem op de meest efficiënte manier op te lossen. Specifieke onderwerpen die aan de orde komen zijn MapReduce-algoritmen, algoritmen voor MapReduce-algoritmen, HDFS, Hadoop-clusterarchitectuur, YARN, berekening van relatieve frequenties, secundaire sortering, webcrawl, geïnverteerde indexen en indexcompressie, Spark-algoritmen en Scala. (4-eenheden) Voorwaarde: CS 435-algoritmen.

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

    Big Data is de nieuwe natuurlijke hulpbron: gegevens verdubbelen elke 12-18 maanden. Deze nieuwe Big Data Analytics-cursus behandelt de fundamentele concepten en hulpmiddelen voor het ontginnen van grote uiteenlopende datasets om nieuwe inzichten te genereren. Je beheerst het gebruik van R-taal om Wordcloud, Pagerank, Datavisualisatie, Beslissingsbomen, Regressie, Clustering, Neurale netwerken en meer te creëren. Je zult werken met een aantal grote multi-miljoen record datasets, en ook mijn Twitter feeds. Je leert Hadoop / MapReduce en Streaming Data-concepten en zult andere Apache Big Data-projecten zoals Spark, Flink, Kafka, Storm, Samza, NoSQL verkennen via individuele onderzoekspapers. Je werkt in groepen aan open projecten van Kaggle.com om te strijden om prijzengeld door de beste data-analytische uitdagingen op te lossen. Je leert ook om de toonaangevende IBM SPSS Modeler en open-source datamining-platforms te gebruiken. Het bestsellerhandboek #1 dat in deze cursus wordt gebruikt, is geschreven door de docent zelf. De cursus zal ook een breed scala aan video-trainingsmateriaal gebruiken van MIT, Coursera, Google en elders. (4-eenheden) Voorwaarde: Toestemming van de faculteitsafdeling

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

    In slechts enkele jaren tijd zijn big data-technologieën van het rijk van de hype uitgegroeid tot een van de kerncomponenten van het nieuwe digitale tijdperk. Deze technologieën zijn zeer nuttig voor het omzetten van informatie in kennis.

    Het doel van de cursus is om enkele echt belangrijke tools toe te voegen aan je arsenaal om je te helpen bij het oplossen van verschillende big data-problemen. We beginnen met het geven van antwoorden op vragen als 'Wat zijn big data? Waarom is het belangrijk of nuttig? Hoe bewaar je deze big data? "Vervolgens bestuderen we verschillende tools en programmeermodellen uit de big data-technologiestack die ons zullen helpen de data te analyseren. Tot de onderwerpen behoren enkele van de projecten in het Hadoop-ecosysteem, zoals MapReduce, Pig, Hive, Sqoop, Flume, HBase (NoSQL DB), Zookeeper en Apache Spark-ecosysteemprojecten. We bespreken ook een inleiding tot AWS en EMR. Je zult voornamelijk werken met de Hadoop-distributie van Cloudera. (4-eenheden) (geen voorwaarden)

  • Computerbeveiliging (CS 466)

    Deze cursus gaat dieper in op de drie aspecten van computerbeveiliging: vertrouwelijkheid, integriteit en beschikbaarheid. Verschillende modellen voor vertrouwelijk en integriteitsbeleid worden bestudeerd. De rol van cryptografie bij het waarborgen van vertrouwelijkheid en integriteit wordt onderzocht. Andere onderwerpen zijn onder meer authenticatie, auditing, penetratietesten, gemeenschappelijke kwetsbaarheden en inbraakdetectie. De cursus wordt afgesloten met de case study van een realistisch beveiligd systeem. Studenten zullen worden gevraagd om artikelen uit de veiligheidsliteratuur te lezen en deze toe te passen op materiaal dat in de hoorcolleges wordt gegeven. (4 credits) Voorwaarde: CS 401 of toestemming van de faculteit van de faculteit.

  • Enterprise-architectuur (CS 544)

    Deze cursus richt zich op het onderwijzen van de principes en werkwijzen die worden gebruikt bij het ontwikkelen van grootschalige bedrijfsapplicaties. We zullen de verschillende architecturale lagen die vaak worden gebruikt en verschillende technologieën die verband houden met deze lagen onderzoeken, waaronder Object Relational Mapping (ORM), Dependency Injection (DI), Aspect-Oriented Programming (AOP) en integratie met andere applicaties via webservices (RESTfull en SOAP), Berichten en externe methode aanroep. Moet een praktische kennis hebben van relationele databases en SQL. Als u geen goede koers of goede kennis van SQL heeft, moet u zich aanmelden voor CS422 DBMS voordat u zich aanmeldt voor EA. (4-eenheden)

  • Machine Learning (Data Science) (CS 582)

    Machinaal leren, het vakgebied dat computers de mogelijkheid biedt om van gegevens te leren, vormt de kern van bijna elke wetenschappelijke discipline en de studie van generalisatie (dat wil zeggen, voorspelling) van gegevens is het centrale onderwerp van machine learning. Deze cursus geeft een introductie op graduate niveau over machine learning en diepgaande verslaggeving van nieuwe en geavanceerde methoden voor machine learning, evenals hun onderliggende theorie. Het benadrukt benaderingen met praktische relevantie en bespreekt een aantal recente toepassingen van machine learning, zoals datamining (in big data / data science, data-analyse), natuurlijke taalverwerking, computervisie, robotica, bio-informatica en tekst- en webgegevensverwerking. Machine Learning wordt gebruikt in verschillende sectoren, waaronder financiële dienstverlening, olie en gas, gezondheidszorg, marketing en reclame, overheid, internet en internet der dingen.

    Deze cursus behandelt een verscheidenheid aan leerparadigma's, algoritmen, theoretische resultaten en toepassingen. Het maakt gebruik van basisbegrippen uit kunstmatige intelligentie, informatietheorie, statistiek en besturingstheorie, voor zover deze relevant zijn voor machine learning. Onderwerpen zijn onder meer: ​​gesuperviseerd leren (generatief / onderscheidend leren, parametrisch / niet-parametrisch leren, neurale netwerken, ondersteuningsvectormachines, beslissingsboom, Bayesiaans leren en optimalisatie); onbewaakt leren (clustering, reductie van dimensies, kernelmethoden); leertheorie (bias / variantie-uitwisselingen, VC-theorie, grote marges); versterkingsleren en adaptieve controle. Andere onderwerpen zijn HMM (Hidden Markov Model), Evolutionary Computing, Deep Learning (With Neural Nets) en ontwerpalgoritmen waarvan de prestaties rigoureus kunnen worden geanalyseerd op fundamentele machine-leerproblemen.

    Een belangrijk onderdeel van de cursus is een groepsproject. Grote opensourcehulpmiddelen die worden gebruikt voor parallel, gedistribueerd en schaalbaar machine learning zullen kort worden behandeld om studenten te helpen bij het doen van de projecten. (4-eenheden) Voorwaarde: Geen.

  • Programmeren van mobiele apparaten (CS 473)

    Het belang van het programmeren van mobiele apparaten is de laatste jaren naar voren gekomen als een nieuw domein in softwareontwikkeling. Deze cursus bereidt de studenten voor op het ontwikkelen van applicaties die worden uitgevoerd op mobiele apparaten zoals een IPhone, IPad of Android-telefoon. Dit is een zich snel ontwikkelende markt. De cursus richt zich op het installeren, ontwikkelen, testen en distribueren van mobiele applicaties. Aan het einde van deze cursus kunnen studenten een app ontwikkelen voor de afgedekte platforms, deze simuleren, testen op het echte apparaat en uiteindelijk publiceren in de app store om de beschikbaarheid voor de gebruikers beschikbaar te maken. (4-eenheden) Voorwaarde: CS472 of toestemming van de faculteitsafdeling.

  • Moderne webapplicaties (CS 572)

    In deze cursus leer je de Reactive Programming Architecture van SPA (Single Page Web Applications) samen met alle nodige vaardigheden om een ​​volledige moderne webapplicatie te bouwen. Technologieën omvatten: NodeJS, ExpressJS, TypeScript, AngularJS2, Firebase en NoSQL-databases (MongoDB). De cursus behandelt:

    • Hoe de C ++ V8-engine en asynchrone code werken in Node en de gebeurtenislus Node.
    • Hoe u uw code kunt structureren voor hergebruik en Restful API kunt bouwen met behulp van modules en ExpressJS.
    • Hoe NoSQL-databases werken: Mongo-shell, aggregatieraamwerk, replicasets, clustering, scherven, Mongoose-ORM.
    • Diep inzicht in hoe Angular (ondersteund door Google) werkt, Change Detection, Reactive RxJs programmering met Observables and Subjects, The Shadow DOM, Zones, Modules en Componenten, Aangepaste richtlijnen en pipes, Services en afhankelijkheidsinjectie, Angular Compiler, JIT en AOF Compilation , Formulieren (Sjabloongestuurd en Gegevensgestuurd), Databinding, Routing, Guards en Routebescherming, HTTP-client, JWT JSON Webtoken-verificatie.

    (4-eenheden)

  • Besturingssystemen (CS 465)

    Een besturingssysteem beheert de centrale bronnen van het computersysteem en wijst deze toe aan individuele gebruikers. Cursusonderwerpen omvatten sequentiële en gelijktijdige processen, wederzijdse uitsluiting, resource sharing, processamenwerking, deadlock, resourcetoewijzing, processorplanning, geheugenbeheer, segmentatie en pagingalgoritmen, timesharing-systemen, planningsalgoritmen en resourcebescherming. (4-eenheden) Voorwaarde: CS 401 of toestemming van de faculteitsafdeling.

  • Parallel programmeren (CS 471)

    De standaardprocessor voor alle nieuwe computers is nu een multi-coreprocessor, die het potentieel heeft om programma's veel sneller uit te voeren. Om dit potentieel te benutten, moet een programmeur echter enige kennis hebben van parallelle programmeertechnieken. Tijdens deze cursus zullen studenten het grootste deel van hun tijd besteden aan het schrijven en debuggen van parallelle programma's. Het verwachte resultaat zal zijn om een ​​nieuw niveau van praktische programmeervaardigheid te ontwikkelen. Deze vaardigheid zal niet alleen nuttig zijn voor het programmeren van multi-coreprocessors, maar ook voor het programmeren van besturingssystemen en gedistribueerde databaseprogrammering. De softwaretools die tijdens deze cursus worden gebruikt, zijn Microsoft Visual C / C ++, Java multithreading-bibliotheek en OpenMP-threading-standaard. (4-eenheden) Voorwaarde: kennis van computerprogrammering met behulp van Java, C of C ++.

  • Software-architectuur (CS 590)

    In deze cursus zullen we kijken naar de technieken, principes en patronen van het ontwerpen van flexibele, schaalbare, testbare en veerkrachtige softwaresystemen met behulp van microservices. We zullen bestuderen hoe we grote applicaties kunnen opdelen in kleinere microservices die eenvoudiger te bouwen zijn en andere voordelen in vergelijking met monolithische bedrijfsapplicaties. Een gedistribueerde microservice-architectuur biedt ook veel uitdagingen. We zullen deze uitdagingen bestuderen en aanpakken. Onderwerpen van deze cursus zijn architectuurstijlen, integratietechnieken en patronen, domeingestuurd ontwerp, door gebeurtenissen gestuurde architectuur en reactieve programmering. (4 credits). (Geen vereisten)

  • Practicum in softwareontwikkeling (CS 575)

    In dit practicum oefenen studenten computergerelateerde taken uit in een technische professionele positie. De uitgevoerde taken kunnen zijn in het ontwerp en de ontwikkeling van nieuwe systemen of de toepassing van bestaande systemen voor specifieke doeleinden. Practicum functieomschrijvingen zijn geformuleerd door de werkgever en de student en moeten vooraf worden goedgekeurd door een van de afgestudeerde faculteit van de afdeling, in overleg met de practicumbegeleider waar de student is geplaatst. (Deze cursus is voornamelijk bedoeld voor studenten in de stage- of samenwerkingsprogramma's.) (0.5-1-eenheid per blok - kan worden herhaald.)

"De eerste keer dat ik over het MSCS-programma hoorde, betwijfelde ik het. Ik kon niet geloven dat zoiets bestaat. Maar op een dag trad een vriend van mij toe tot het programma. Dat was toen ik bevestigde dat het echt is. Daarna hervatte ik mijn sollicitatieproces. Goed! Het is waar, ik ben hier, ik heb het programma voltooid en ik ben zo blij. "

Edwin BwambaleOeganda