Oled sa valmis Edendada oma karjääri?

Meie programm on spetsialiseerunud tarkvarasüsteemide ja tarkvaraarenduse valdkondadele, kasutades OOP (Java), veebirakendusi ja andmesidet. Uuringu põhivaldkonnad on: arenenud tarkvaraarendus, veebirakenduste programmeerimine ja arhitektuur, suurte andmete analüüsid ja tehnoloogiad, masinaõpe ja mitmed olulised rakendusalad.

Kõik kursused on mõeldud selleks, et aidata teil oma karjääri edasi arendada ja iga kursus sisaldab praktilisi ülesandeid. Vaade lõpetamise nõuded.

UUS! Auhinnatud Data Science Track

Standardne põhikursus

  • Kaasaegsed programmeerimistavad (Java programmeerimine) (CS 401)

    See kursus tutvustab objektorienteeritud programmeerimise aluspõhimõtteid. Õpilased õpivad, kuidas kirjutada korduvkasutatavat ja paremini hooldatud tarkvara ning integreerida need teadmised laboratoorsete ülesannete ja projektidega. Teemadeks on: põhipõhimõtted ja objektorienteeritud programmeerimise mudelid, UML-klassi diagrammid ja disaini põhimõtted, mis soodustavad tarkvara taaskasutatavust ja hooldatavust. (4-üksused)

  • Täpsem tarkvaraarendus (CS 525)

    See kursus võtab arvesse tarkvara süsteemide hea disaini praegusi meetodeid ja tavasid. Teemadeks on: tarkvara kavandamise mustrid, raamistikud, arhitektuurid ja projekteerimissüsteemid nende mitmetasandiliste abstraktsioonide rakendamiseks. (2-4 krediit) Eeltingimus: CS 401 või osakonna teaduskonna nõusolek.

  • Algoritmid (CS 435)

    See kursus tutvustab algoritmide efektiivsuse analüüsimise meetodeid (sealhulgas halvima ja keskmise juhtumi analüüsi) ning tutvustab erinevaid tuntud, väga tõhusaid algoritme. Algoritmide analüüs, disain ja rakendamine on võrdselt rõhutatud. Teemadeks on otsimine ja sorteerimine, toimingute tõhusus andmestruktuurides (sh nimekirjad, hashtabid, tasakaalustatud binaarotsingupuud, prioriteetsed järjekorrad), graafikualgoritmid, kombinatoorsed algoritmid, kordumissuhted, dünaamiline programmeerimine, NP-täielikud probleemid ja mõned erilised teemad kui aeg lubab. (Erilisteks teemadeks on arvutusgeomeetria, krüptosüsteemide algoritmid, ühtlustamine, suurandmed ja paralleelarvutus.)

  • Arvutivõrgud (CS 450)

    Kursuse eesmärk on õppida arvutivõrkude kontseptsioone, arhitektuuri põhimõtteid ja terminoloogiat, uurides, kuidas võrgud töötavad ja arendavad võrgurakendusi. See kursus järgib ülalt-alla lähenemist võrkude mõistmiseks, kasutades Interneti-arhitektuuri ja -protokolle kui peamisi näiteid võrgupõhimõtete rakendamisest. Alustame rakenduste kihist ja jätkame transpordikihi, võrgukihi, lingi ja arvutivõrkude füüsilise kihi kaudu. Õpilased arendavad mitmeid võrgurakendusi ja täidavad mitmeid laboratooriume, mis on loodud internetis kasutatavate ülekaalukate võrguprotokollide jälgimiseks ja mõistmiseks. (4 ühikud) Eeltingimus: CS 401 või osakonna teaduskonna nõusolek.

  • Andmebaaside haldussüsteemid (CS 422)

    Andmebaasisüsteemid korraldavad ja hankivad informatsiooni, võimaldades kasutajal saada soovitud teavet lihtsalt ja tõhusalt. Teemad hõlmavad: relatsiooniandmete mudelit; SQL; ER modelleerimine; relatsiooniline algebra; andmete normaliseerimine; tehingud; andmebaasi objektid; andmete turvalisus ja terviklikkus; andmete ladustamine, OLAP ja andmete kaevandamine; hajutatud andmebaasid; konkreetse kaubandusliku andmebaasi süsteemi uurimine. (4 ühikud) Eeltingimus: CS 401 või osakonna teaduskonna nõusolek.

  • Tarkvaratehnika (CS 425)

    Tarkvaratehnika on kursus, mis tutvustab üliõpilastele tarkvaraarenduse parimaid tavasid tarkvaraarenduse metoodika abil. Üliõpilastel on juba olnud kogemusi eelmiste kursustega objektorienteeritud paradigmaga ning nad on kasutanud mõningaid UML-i põhilisi diagramme tarkvaraobjektide vaheliste suhete modelleerimiseks. Tarkvaraehituses arendab üliõpilane oskusi nende tööriistade koondamiseks, et toota tugevat ja kergesti hooldatavat tarkvara. Tarkvaraarenduse metoodika kirjeldab, millal ja kuidas tuleks OO kontseptsioone ja UMLi diagramme kasutada kvaliteetse tarkvara ehitamise eesmärgi saavutamiseks. Kursus keskendub väikesele projektile, kus on võimalik illustreerida ja rakendada loengu vormis käsitletud põhimõtteid. Kursuse lõpuks on üliõpilasel jooksev rakendus, mis on ehitatud kooskõlas RUP (Rational Unified Process) arendusmetoodika kõrgetele standarditele.

  • Veebirakenduste arhitektuur ja raamistikud (CS 545)

    See kursus keskendub veebirakendustele ettevõtte seadetes. Ettevõtlusrakendus on suur tarkvarasüsteem, mis on loodud toimima suures organisatsioonis, näiteks ettevõtte või valitsuse poolt. Ettevõtlusrakendused on keerulised, skaleeritavad, komponendipõhised, jaotatud ja missioonikriitilised. See kursus, CS545, keskendub ettevõtte veebirakenduse esi- või esitluskihile. CS544 Enterprise Architecture on kaaslane, mis keskendub tagasi- või ärikihile, sealhulgas äriloogikale, tehingutele ja püsivusele. CS472, veebirakenduste programmeerimine, on eeltingimus, mis hõlmab HTML-i, CSS-i, JavaScripti, servette ja JSP-d.

    Kursus õpetab põhimõtteid ja mudeleid, mis on üldised platvormide ja raamistike lõikes. Kursus uurib ja töötab kahe domineeriva Java veebiraamistiku, Java Server Faces'i (JSF) ja SpringMVC abil. JSF on komponendipõhine raamistik ja see on Java Enterprise Editioni tehnoloogiastipi ametlik esitlusraamistiku spetsifikatsioon. SpringMVC on osa Core Spring'i raamistikust ja sellest on viimastel aastatel saanud kõige levinum Java veebiraamistik. (4 ühikud) Eeltingimus: CS 472 või osakonna teaduskonna nõusolek.

  • Veebirakenduste programmeerimine (CS 472)

    See kursus tutvustab süstemaatiliselt interaktiivsete ja dünaamiliste veebirakenduste programmeerimist. Kursus on mõeldud üksikisikutele, kellel on eelneva veebirakenduse programmeerimise kogemus vähe või üldse mitte. See pakkumine kasutab Java servlets ja JSP serveri pooleks töötlemiseks. Kursus tutvustab HTML-i ja CSS-i. JavaScript on kursuse fookus ja on kaetud funktsionaalse programmeerimiskeelena, sealhulgas jQuery, Ajax ja JavaScript nimeruumid ja moodulid. See on CS545i veebirakenduste arhitektuuri eeltingimus. See ei hõlma AngularJS-i ega NodeJS-i, kuid siin käsitletav JavaScript valmistab teid neid tehnoloogiaid õppima. (4-üksused)
    Eeltingimus: CS 220 või CS 401 või osakonna teaduskonna nõusolek.

  • Teadvuse ja teaduse tehnoloogia arvutiprofessionaalidele (FOR 506)

    Teie esimene kursus on spetsiaalselt loodud selleks, et luua alus, kuidas saada tipptasemel arvutiteaduse professionaaliks. Kursus on juurdunud Transsendentse Meditatsiooni praktikas, mis viib teie tõelise potentsiaali täitmisele. Saate teada, millised on TM eelised, sealhulgas võime lahendada keerulisi probleeme kõrgema vaimse funktsioneerimisega, suurendades loovust ja mõeldes "kastist välja". Kursus keskendub põhimõtetele, mis toetavad tegevuse tipptulemust, luues optimaalse puhkuse ja tegevuse kombinatsiooni. Te arendate ja kogete ideaalset igapäevast rutiini, mis toetab edu elus. (2-üksused)

  • Tehniliste juhtide juhtimine (FOR 506B)

    Kursuse eesmärk on anda üliõpilastele juhtimisoskused ja oskused, kaasa arvatud suhtlemisoskused, mis on ette nähtud tulevaste juhtrollide ettevalmistamiseks.

    Kursuse lõppedes mõistavad õpilased vastuseid tõhusa juhtimise põhiküsimustele, sealhulgas järgmist:

    Kas on olemas loomulikult sündinud liidrid?

    Kas teil peab olema karisma, et tõhusalt juhtida?

    Milline üks vara peab olema liider?

    Mis vahe on juhtimise ja juhtimise vahel?

    Millised on paljud "intelligentsed", mida on vaja selle ajastu juhtimiseks?

    Mis on „juhtimisviga” ja kuidas see toob endaga kaasa sabotaaži?

    Teades, et tagasiside on juhtiva protsessi jaoks hädavajalik, kuidas saame selle hirmu anda ja vastu võtta?

    Milline on 80i% töökohtade probleemidest?

    Kas on olemas teaduslikke uuringuid, mis aitavad organisatsiooni oma individuaalsete ja meeskonna juhtimisoskuste parandamisel?

    Külaliste sõnavõtjad on tuntud ettevõtjad, arvutiteadlased, filantroopid, akadeemikud ja teised ühiskonna silmapaistvad juhid.

    (2 ühikut)

Täiendavad MSCSi kursused

  • Täiustatud programmeerimiskeeled (CS 505)

    See kursus võtab arvesse programmeerimiskeeli kavandamise teemasid, rõhuasetusega formaalsetele meetoditele ja abstraktsioonimeetoditele. Teemadeks on andmete ja kontrolli abstraktsioon, süntaksi ja semantika ametlik spetsifikatsioon, tõendusmaterjal programmide õigsuse kohta, mitte deterministlik programmeerimine, täiustatud juhtimisstruktuurid ja konkreetsete keelte õppimine. (4 ühikud) Eeltingimus: CS 401 või osakonna teaduskonna nõusolek.

  • Suured andmed (Data Science track) (CS 522)

    Kaasaegset infotöötlust määravad suured andmehoidlad, mida ei saa tavapäraste andmebaasisüsteemidega käsitseda. See kursus hõlmab uusimaid tehnoloogiaid, mida tööstuse juhid kasutavad ja kasutavad selle probleemi lahendamiseks kõige tõhusamal viisil. Konkreetsed teemad hõlmavad MapReduce'i algoritme, MapReduce'i algoritmi projekteerimismustreid, HDFS-i, Hadoopi klastrite arhitektuuri, YARN-i, suhtelisi arvutussagedusi, sekundaarset sorteerimist, veebi indekseerimist, inverteeritud indekseid ja indeksi kokkusurumist, Spark algoritme ja Scala. (4 ühikud) Eeltingimus: CS 435 algoritmid.

  • Big Data Analytics (andmete teaduse rada) (CS 488)

    Big Data on uus loodusressurss: andmed kahekordistavad iga 12-18 kuu aega. See uus Big Data Analytics kursus hõlmab põhilisi mõisteid ja vahendeid suurte erinevate andmekogumite kaevandamiseks uute arusaamade loomiseks. Sa hakkad kasutama R keelt, et luua Wordcloud, Pagerank, Andmete visualiseerimine, Otsustuspuud, Regressioon, Klastrid, Neural Networks ja palju muud. Te töötate koos mõnede suurte mitme miljoni salvestusandmebaasiga ja ka minu Twitteri voogudega. Saate õppida Hadoop / MapReduce ja Streaming Data kontseptsioone ning uurima teisi Apache Big Data Projecte, nagu Spark, Flink, Kafka, Storm, Samza, NoSQL, läbi individuaalsete teadustööde. Te töötate Kaggle.com avatud projektide gruppides, et võistelda auhinnaraha eest, lahendades parimat sorti andmeanalüütilisi probleeme. Samuti saate õppida kasutama tööstusharu juhtivaid IBM SPSS Modelerit ja avatud lähtekoodiga andmete kaevandamise platvorme. Selles kursuses kasutatud #1i bestsellerikirja kirjutab juhendaja ise. Kursus kasutab ka laia valikut videomaterjale MIT, Coursera, Google ja mujal. (4 üksused) Eeltingimus: osakonna teaduskonna nõusolek

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

    Mõne lühikese aasta jooksul on suurte andmesidetehnoloogiate kasutamine hüpoteegi piirkonnast uue digitaalse ajastu üks põhikomponente. Need tehnoloogiad on väga olulised teabe muutmiseks teadmisteks.

    Kursuse eesmärk on lisada oma arsenalis mõned väga olulised vahendid, mis aitavad teil lahendada erinevaid suuri andmeprobleeme. Alustame vastustega küsimustele nagu “Mis on Big Data? Miks on see oluline või kasulik? Kuidas neid suuri andmeid salvestada? ”Seejärel uurime erinevaid andmevahetusvahendeid ja programmeerimismudeleid, mis aitavad meil andmeid analüüsida. Teemad hõlmavad mõningaid Hadoopi ökosüsteemi projekte, nagu MapReduce, Pig, Hive, Sqoop, Flume, HBase (NoSQL DB), Zookeeper ja Apache Spark ökosüsteemi projekte. Samuti käsitleme tutvustust AWS ja EMR. Te töötate peamiselt Cloudera ühe Hadoop-jaotusega. (4 ühikud) (eeltingimusi ei ole)

  • Arvuti turvalisus (CS 466)

    See kursus läheb sügavalt arvesse arvuti turvalisuse kolme aspekti: konfidentsiaalsust, terviklikkust ja kättesaadavust. Uuritakse mitmeid konfidentsiaalse ja tervikliku turvalisuse poliitika mudeleid. Analüüsitakse krüptograafia rolli konfidentsiaalsuse ja terviklikkuse tagamisel. Teiste teemade hulka kuuluvad autentimine, auditeerimine, leviku testimine, levinud haavatavused ja sissetungimise avastamine. Kursus lõpeb realistliku turvalise süsteemi juhtumiuuringuga. Üliõpilasi palutakse lugeda ettekandeid turvakirjandusest ja rakendada neid loengus esitatud materjalidele. (4i krediit) Eeltingimus: CS 401 või osakonna teaduskonna nõusolek.

  • Ettevõtlusarhitektuur (CS 544)

    See kursus keskendub suurte ettevõtete rakenduste väljatöötamisel kasutatud põhimõtete ja tavade õpetamisele. Uurime erinevaid tihti kasutatavaid arhitektuurikihi ja nende kihtidega seotud erinevaid tehnoloogiaid, sealhulgas objektide suhtelist kaardistamist (ORM), sõltuvust sissepritse (DI), asendi orienteeritud programmeerimist (AOP) ja teiste rakendustega integreerimist veebiteenuste kaudu (RESTfull ja SOAP), Messaging ja Remote Method Invocation. Peab olema suhtelised andmebaasid ja SQL. Kui teil ei ole SQL-i tugevat kursust või häid tööalaseid teadmisi, peate enne EA-le registreerumist registreeruma CS422i DBMS-i jaoks. (4-üksused)

  • Masinõpe (Data Science track) (CS 582)

    Masinõppimine, õppevaldkond, mis annab arvutitele võimaluse õppida andmetest, on peaaegu iga teadusharu keskmes ja üldistamise (st prognoosi) uuring andmetest on masinaõppe keskne teema. See kursus annab kraadiõppe taseme sissejuhatuse masinõppele ja uute ja täiustatud meetodite põhjalikule hõlmamisele masinõppes, samuti nende aluseks olevate teooriate kohta. Selles rõhutatakse praktilist tähtsust omavaid lähenemisviise ja arutatakse mitmeid hiljutisi masinaõppe rakendusi, nagu näiteks andmete kaevandamine (suurandmete / andmete teaduse, andmeanalüüsi), looduskeele töötlemine, arvutivisioon, robootika, bioinformaatika ning teksti ja veebi andmetöötlus. Masinõpet kasutatakse erinevates tööstusharudes, sealhulgas finantsteenuste, nafta ja gaasi, tervishoiu, turunduse ja reklaami, valitsuse, Interneti ja asjade internetis.

    See kursus hõlmab erinevaid õpiparadigme, algoritme, teoreetilisi tulemusi ja rakendusi. Ta kasutab tehisintellekti põhiteadmisi, informatsiooni teooriat, statistikat ja kontrolliteooriat, kuivõrd need on masinõppe seisukohalt asjakohased. Teemad hõlmavad: juhendatud õppimist (generatiivne / diskrimineeriv õppimine, parameetriline / mitteparameetriline õppimine, närvivõrgud, tugivektori masinad, otsustuspuu, Bayesi õppimine ja optimeerimine); järelevalveta õppimine (klastrite moodustamine, dimensiooni vähendamine, tuuma meetodid); õppe teooria (eelarvamuste / variatsioonide kompromissid; VC teooria; suured marginaalid); tugevdamise õppimine ja adaptiivne kontroll. Teiste teemade hulka kuuluvad HMM (varjatud Markovi mudel), evolutsioonilised arvutid, sügav õppimine (närvivõrkudega) ja projekteerimisalgoritmid, mille jõudlust saab põhjalikult analüüsida masina põhiliste õppeprobleemide puhul.

    Kursuse oluline osa on grupiprojekt. Lühidalt, jagatud ja skaalautuvia masinaõppeks kasutatavaid olulisi avatud lähtekoodiga tööriistu käsitletakse lühidalt, et aidata projektide läbiviijatel. (4 ühikud) Eeltingimus: Puudub.

  • Mobiilseadmete programmeerimine (CS 473)

    Mobiilseadmete programmeerimise tähtsus on viimastel aastatel kujunenud uue domeenina tarkvaraarenduses. See kursus valmistab õpilasi ette selliste rakenduste arendamiseks, mis töötavad mobiilseadmetes, näiteks IPhone, IPad või Android-telefonis. See on kiiresti arenev turg. Kursus keskendub mobiilsete rakenduste paigaldamisele, arendamisele, testimisele ja levitamisele. Kursuse lõpus saavad õpilased välja töötada platvormidele mõeldud rakenduse, simuleerida neid, testida neid reaalses seadmes ja avaldada lõpuks rakenduste poes, et muuta kasutajad kättesaadavaks. (4 ühikud) Eeltingimus: CS472 või osakonna teaduskonna nõusolek.

  • Kaasaegsed veebirakendused (CS 572)

    Selle kursuse käigus saate õppida SPA reaktiivset programmeerimisarhitektuuri (ühe lehekülje veebirakendused) koos kõigi vajalike oskustega täieliku kaasaegse veebirakenduse loomiseks. Tehnoloogiad hõlmavad järgmist: NodeJS, ExpressJS, TypeScript, AngularJS2, Firebase ja NoSQL andmebaasid (MongoDB). Kursus hõlmab:

    • Kuidas C ++ V8 mootor ja asünkroonne kood töötavad sõlmes ja sõlme sündmuskohas.
    • Kuidas struktureerida oma koodi korduvkasutamiseks ja ehitada Restful API moodulite ja ExpressJSi abil.
    • Kuidas NoSQL andmebaasid toimivad: Mongo Shell, Aggregation Framework, Replica Sets, Clustering, Shards, Mongoose ORM.
    • Sügav mõistmine selle kohta, kuidas nurk (Google'i toetatud) toimib, muutuste avastamine, reaktiivne RxJ-de programmeerimine vaatluste ja objektidega, vari DOM, tsoonid, moodulid ja komponendid, kohandatud direktiivid ja torud, teenused ja sõltuv sissepritse, nurgakompilaator, JIT ja AOF koostamine , Vormid (Template Driven ja Data Driven), andmete sidumine, marsruutimine, valvurid ja marsruutide kaitse, HTTP klient, JWT JSONi veebimärgistuse autentimine.

    (4 ühikut)

  • Operatsioonisüsteemid (CS 465)

    Operatsioonisüsteem kontrollib arvutisüsteemi keskseid ressursse ja jaotab need üksikutele kasutajatele. Kursuse teemadeks on järjestikused ja samaaegsed protsessid, vastastikune tõrjutus, ressursside jagamine, protsessi koostöö, ummikseis, ressursside jaotus, protsessori ajastamine, mälu haldamine, segmenteerimine ja otsingu algoritmid, ajajagamise süsteemid, ajakava koostamise algoritmid ja ressursside kaitse. (4 ühikud) Eeltingimus: CS 401 või osakonna teaduskonna nõusolek.

  • Paralleelne programmeerimine (CS 471)

    Kõigi uute arvutite standardprotsessor on nüüd mitmetuumaline protsessor, mis võib programme palju kiiremini täita. Kuid selle potentsiaali kasutamiseks peab programmeerijal olema teadmised paralleelsete programmeerimistehnikate kohta. Selle käigus kulutavad õpilased suurema osa ajast paralleelsete programmide kirjutamise ja silumise kohta. Oodatav tulemus on praktilise programmeerimisoskuse uue taseme arendamine. See oskus ei ole kasulik ainult mitmetuumaliste protsessorite programmeerimiseks, vaid ka operatsioonisüsteemide programmeerimiseks ja hajutatud andmebaasi programmeerimiseks. Selle kursuse käigus kasutatavad tarkvaratööriistad hõlmavad Microsoft Visual C / C ++, Java mitmetähenduse raamatukogu ja OpenMP keermestamise standardit. (4 ühikud) Eeltingimus: teadmised arvutiprogrammidest, kasutades Java, C või C ++.

  • Tarkvaraarhitektuur (CS 590)

    Selles kursuses vaatleme tehnikaid, põhimõtteid ja mudeleid, kuidas kavandada mikroserverite abil paindlikke, skaleeritavaid, testitavaid ja paindlikke tarkvarasüsteeme. Uurime, kuidas saaksime suuri rakendusi jagada väiksemateks mikroserveriteks, mida on lihtsam ehitada, ja muid eeliseid võrreldes monoliitsete ettevõtte rakendustega. Jaotatud mikroserveri arhitektuur annab ka palju väljakutseid. Uurime neid väljakutseid ja nende käsitlemist. Selle kursuse teemadeks on arhitektuuri stiilid, integratsioonitehnikad ja -mustrid, domeenipõhine disain, sündmuste juhitud arhitektuur ja reaktiivne programmeerimine. (4i krediit). (Eeltingimused puuduvad)

  • Tarkvaraarenduse praktika (CS 575)

    Selles praktikas täidavad õpilased arvutiga seotud ülesandeid tehnilises ametikohal. Tehtud ülesanded võivad olla uute süsteemide kavandamisel ja arendamisel või olemasolevate süsteemide rakendamisel konkreetsetel eesmärkidel. Praktika ametijuhendid on koostatud tööandja ja üliõpilase poolt ning nõuavad eelnevalt ühe osakonna lõpetaja teadust, konsulteerides praktikumi juhendajaga, kuhu üliõpilane paigutatakse. (See kursus on mõeldud peamiselt praktika või koostööprogrammide üliõpilastele.) (0.5-1 üksus ploki kohta - võib korrata.)

„Kui ma esimest korda MSCS-programmi kohta kuulsin, kahtlesin ma sellest. Ma ei suutnud uskuda, et midagi sellist on olemas. Aga ühel päeval liitus programmiga üks mu sõber. See oli siis, kui ma kinnitasin, et see on reaalne. Siis hakkasin uuesti oma taotlusprotsessi. Noh! See on tõsi, ma olen siin, olen lõpetanud programmi ja ma olen nii õnnelik. ”

Edwin Bwambaleuganda