Ar esate pasiruošę Išankstinė karjera?

Mūsų programa specializuojasi programinės įrangos sistemų ir programinės įrangos kūrimo srityse, naudojant OOP (Java), žiniatinklio programas ir duomenų mokslą. Pagrindinės studijų sritys: pažangios programinės įrangos kūrimas, interneto programų programavimas ir architektūra, didelės duomenų analizės ir technologijos, mašinų mokymasis ir keletas svarbių taikymo sričių.

Visi kursai yra skirti padėti jums siekti karjeros ir kiekviename kurse yra praktinių užduočių. Žiūrėti gradacijos reikalavimai.

NAUJIENA! Apdovanojimai „Data Science Track“

Standartiniai pagrindiniai kursai

  • Šiuolaikinės programavimo praktikos („Java“ programavimas) (CS 401)

    Šiame kurse pateikiami pagrindiniai objekto programavimo principai. Studentai sužinos, kaip rašyti pakartotinai naudojamą ir geriau prižiūrimą programinę įrangą ir integruoti šias žinias laboratorijų užduotimis ir projektais. Temos: pagrindiniai objekto programavimo principai ir modeliai, UML klasės diagramos ir projektavimo principai, skatinantys programinės įrangos pakartotinį naudojimą ir priežiūrą. (4 vienetai)

  • Išplėstinė programinės įrangos plėtra (CS 525)

    Šiame kurse nagrinėjami dabartiniai metodai ir praktika geram programinės įrangos projektavimui. Temos apima: programinės įrangos projektavimo modelius, sistemas, architektūras ir projektavimo sistemas, skirtas taikyti šias daugiapakopes abstrakcijas. (2-4 kreditai) Būtina: CS 401 arba katedros fakulteto sutikimas.

  • Algoritmai (CS 435)

    Šiame kurse pateikiami algoritmų efektyvumo analizės metodai (įskaitant blogiausio ir vidutinio atvejo analizę) ir pristatomi įvairūs žinomi, labai efektyvūs algoritmai. Algoritmų analizei, projektavimui ir įgyvendinimui skiriamas vienodas dėmesys. Temos apima paiešką ir rūšiavimą, operacijų duomenų struktūrose efektyvumą (įskaitant sąrašus, hashtables, subalansuotas dvejetaines paieškos medžius, prioritetines eilutes), grafikų algoritmus, kombinatorinius algoritmus, pasikartojimo santykius, dinaminius programavimus, NP-užbaigtas problemas ir kai kurias specialias temas kaip laiką leidžia. (Ypatingos temos apima skaičiavimo geometriją, kriptosistemų algoritmus, aproksimaciją, didelius duomenis ir lygiagrečią kompiuteriją.)

  • Kompiuteriniai tinklai (CS 450)

    Šio kurso tikslas - išmokti kompiuterinių tinklų sąvokas, architektūros principus ir terminologiją, tiriant, kaip veikia tinklai ir plėtoja tinklų programas. Šis kursas atitinka „iš viršaus į apačią“ požiūrį į tinklų supratimą, naudojant interneto architektūrą ir protokolus kaip pagrindinį tinklo principų įgyvendinimo pavyzdį. Mes pradedame nuo taikomojo sluoksnio ir tęsiame per transporto sluoksnį, tinklo sluoksnį, nuorodų sluoksnį ir fizinį kompiuterinių tinklų sluoksnį. Studentai kuria keletą tinklo programų ir užbaigia kelias laboratorijas, skirtas stebėti ir suprasti dominuojančius interneto protokolus. (4 vienetai) Būtina sąlyga: CS 401 arba katedros fakulteto sutikimas.

  • Duomenų bazių valdymo sistemos (CS 422)

    Duomenų bazių sistemos tvarko ir gauna informaciją, leidžiančią vartotojui lengvai ir efektyviai pasiekti norimą informaciją. Temos: reliacinių duomenų modelis; SQL; ER modeliavimas; reliacinė algebra; duomenų normalizavimas; sandorius; duomenų bazėje esančių objektų; duomenų saugumas ir vientisumas; duomenų saugojimas, OLAP ir duomenų gavyba; paskirstytos duomenų bazės; ir konkrečios komercinės duomenų bazės sistemos tyrimas. (4 vienetai) Būtina sąlyga: CS 401 arba katedros fakulteto sutikimas.

  • Programinės įrangos inžinerija (CS 425)

    Programinės įrangos inžinerija - tai kursas, kuriame studentas supažindinamas su geriausia programinės įrangos kūrimo praktika naudojant programinės įrangos kūrimo metodiką. Studentai jau turi patirties ankstesnėse kursuose su Objektu orientuota paradigma ir naudojo kai kurias pagrindines UML diagramas, kad modeluotų ryšius tarp programinės įrangos objektų. Programinės įrangos inžinerijos srityje studentas ugdys įgūdžius, kaip kartu su šiomis priemonėmis sukurti tvirtą, lengvai prižiūrimą programinę įrangą. Programinės įrangos kūrimo metodika apibūdina, kada ir kaip turėtų būti naudojamos OO koncepcijos ir UML diagramos, skirtos kokybiškos programinės įrangos kūrimo tikslui pasiekti. Kursas susideda iš mažo projekto, kuriame galima iliustruoti ir pritaikyti paskaitų formoje aptartus principus. Kurso pabaigoje studentas turės veikiančią programą, parengtą pagal aukštus RUP (Rational Unified Process) plėtros metodikos standartus.

  • Interneto taikomųjų programų architektūra ir sistemos (CS 545)

    Šis kursas sutelkia žiniatinklio programas įmonės nustatymuose. Įmonės taikomoji programa yra didelė programinė įranga, sukurta veikti didelėje organizacijoje, pavyzdžiui, korporacijoje ar vyriausybėje. Įmonių programos yra sudėtingos, keičiamos, sudedamosios dalys, platinamos ir svarbios. Šis kursas, CS545, orientuojasi į įmonės žiniatinklio programos priekinio ar pateikimo sluoksnį. „CS544 Enterprise Architecture“ yra kompanionas, kuris orientuojasi į „back end“ ar verslo sluoksnį, įskaitant verslo logiką, sandorius ir atkaklumą. CS472, žiniatinklio taikomųjų programų programavimas, yra būtina sąlyga, apimanti HTML, CSS, JavaScript, servlets ir JSP.

    Kursas moko principus ir modelius, kurie yra bendri visose platformose ir sistemose. Kursas apžiūrės ir dirbs su dviem vyraujančiomis „Java“ žiniatinklio sistemomis, „Java Server Faces“ (JSF) ir „SpringMVC“. „JSF“ yra sudėtinė sistema, kuri yra „Java Enterprise Edition“ technologijos stekų oficialios pristatymo sistemos specifikacija. „SpringMVC“ yra „Core Spring“ sistemos dalis ir pastaraisiais metais tapo plačiausiai naudojama „Java“ tinklo sistema. (4 vienetai) Būtina sąlyga: CS 472 arba katedros fakulteto sutikimas.

  • Žiniatinklio programų programavimas (CS 472)

    Šis kursas supažindina su interaktyvių ir dinamiškų interneto programų programavimu. Kursas skirtas asmenims, turintiems mažai ar visai neturinčią interneto programų programavimo patirtį. Šiame pasiūlyme bus naudojami „Java“ servetai ir „JSP“ serverių pusėje. Kursas supažindins su HTML ir CSS. „JavaScript“ yra kurso dėmesys ir yra įtrauktas į funkcinę programavimo kalbą, įskaitant jQuery, Ajax ir „JavaScript“ vardų vietas ir modulius. Tai yra būtina CS545 žiniatinklio taikomųjų programų architektūros sąlyga. Ji neapima „AngularJS“ ar „NodeJS“, tačiau čia aptartas „JavaScript“ padės jums išmokti šias technologijas. (4 vienetai)
    Būtina sąlyga: CS 220 arba CS 401 arba departamento fakulteto sutikimas.

  • Sąmonės mokslas ir technologijos kompiuterių profesionalams (FOR 506)

    Jūsų pirmasis kursas yra specialiai sukurtas siekiant nustatyti, kaip galite tapti geriausiu kompiuterių mokslo specialistu. Kursas yra įsišaknijęs Transcendentinės meditacijos praktikoje, kuri veda prie jūsų tikro potencialo įvykdymo. Sužinosite apie TM privalumus, įskaitant gebėjimą išspręsti sudėtingas problemas pranašesniu protiniu veikimu, skatinant kūrybiškumą ir mąstymą „iš lauko“. Kursas bus sutelktas į principus, kuriais grindžiamas didžiausias veiklos efektyvumas, sukuriant optimalų poilsio ir veiklos derinį. Jūs sukursite ir patirsite idealią kasdienę kasdienybę, kuri palaiko sėkmę gyvenime. (2 vienetai)

  • Techninių vadovų lyderystė (FOR 506B)

    Šio kurso tikslas - suteikti studentams žinių ir įgūdžių vadovavimo srityje, įskaitant bendravimo įgūdžius kaip pasirengimą būsimiems vadovavimo vaidmenims.

    Šio kurso pabaigoje studentai supras atsakymus į pagrindinius klausimus, susijusius su veiksminga vadovavimu, įskaitant:

    Ar yra „natūraliai gimę“ lyderiai?

    Ar turite turėti charizmą, kad galėtumėte veiksmingai vadovauti?

    Koks privalomas turtas turi būti lyderis?

    Koks skirtumas tarp valdymo ir vadovavimo?

    Kokie yra „intelektai“, reikalingi šiai erai?

    Kas yra „valdymo pažeidimas“ ir kaip tai lemia savęs sabotažą?

    Žinant, kad grįžtamasis ryšys yra būtinas pirmaujančiam procesui, kaip mes pergyvename baimę suteikti ir gauti?

    Kokia yra 80% darbo vietoje atsiradusių problemų šaltinis?

    Ar yra mokslinių tyrimų, kurie padėtų organizacijai tobulinti savo individualius ir komandos vadovavimo įgūdžius?

    Svečių kalbėtojai bus žinomi verslininkai, kompiuterių mokslininkai, filantropai, akademikai ir kiti žinomi visuomenės lyderiai.

    (2 vienetai)

Papildomi MSCS kursai

  • Pažangios programavimo kalbos (CS 505)

    Šis kursas aptaria pažangias kalbų kūrimo temas, akcentuojant formalius metodus ir abstrakcijos mechanizmus. Temos apima duomenų ir kontrolės abstrakciją, oficialią sintaksės ir semantikos specifikaciją, programos teisingumo įrodymus, ne deterministinį programavimą, pažangias valdymo struktūras ir konkrečių kalbų studijas. (4 vienetai) Būtina sąlyga: CS 401 arba katedros fakulteto sutikimas.

  • Dideli duomenys („Data Science“ takelis) (CS 522)

    Šiuolaikinę informacijos apdorojimą apibrėžia dideli duomenų saugyklos, kurių negalima tvarkyti tradicinėmis duomenų bazių sistemomis. Šis kursas apima naujausias technologijas, sukurtas ir naudojamas pramonės lyderiams, kad ši problema būtų išspręsta kuo efektyviau. Konkrečios temos apima „MapReduce“ algoritmus, „MapReduce“ algoritmo modelius, HDFS, „Hadoop“ klasterio architektūrą, YARN, skaičiavimo santykinius dažnius, antrinį rūšiavimą, žiniatinklio nuskaitymą, invertuotus indeksus ir indeksų suspaudimą, „Spark“ algoritmus ir „Scala“. (4 vienetai) Būtina sąlyga: CS 435 algoritmai.

  • Didelių duomenų analizė (duomenų mokslo takelis) (CS 488)

    „Big Data“ - tai naujas gamtos šaltinis: duomenys kas dvigubai padidina kiekvieną 12-18 mėnesį. Šis naujasis „Big Data Analytics“ kursas apima pagrindines sąvokas ir įrankius, skirtus didelių skirtingų duomenų rinkinių gavybai, siekiant sukurti naujas įžvalgas. Jūs įvaldysite R kalbą, kad sukurtumėte „Wordcloud“, „Pagerank“, „Data Visualization“, „Sprendimo medžiai“, „Regresija“, „Klasterizacija“, „Neuriniai tinklai“ ir kt. Jūs dirbsite su keletu didelių kelių milijonų įrašų duomenų rinkinių ir mano „Twitter“ kanalų. Jūs išmoksite „Hadoop“ / „MapReduce“ ir „Streaming Data“ sąvokas ir išnagrinėsite kitus „Apache Big Data“ projektus, tokius kaip „Spark“, „Flink“, „Kafka“, „Storm“, „Samza“, „NoSQL“. Dirbsite grupėse atviruose Kaggle.com projektuose, kad galėtumėte konkuruoti dėl prizų pinigų sprendžiant geriausius duomenų analizės iššūkius. Taip pat išmoksite naudotis pirmaujančiais IBM SPSS Modeler ir atviro kodo duomenų gavybos platformomis. #1 bestselerio vadovėlis, naudojamas šiame kurse, yra parašytas pats instruktorius. Kursas taip pat bus naudojamas įvairiose vaizdo mokymo medžiagose iš MIT, Coursera, Google ir kitur. (4 vienetai) Būtina sąlyga: katedros fakulteto sutikimas

  • Didelės duomenų technologijos (duomenų mokslo takelis) (CS 523)

    Vos per kelis trumpus metus didelių duomenų technologijos pereina nuo hype srities į vieną iš pagrindinių naujosios skaitmeninio amžiaus sudedamųjų dalių. Šios technologijos yra labai naudingos transformuojant informaciją į žinias.

    Kurso tikslas - pridėti keletą labai svarbių įrankių savo arsenale, kad padėtų išspręsti įvairias dideles duomenų problemas. Pradėsime atsakyti į tokius klausimus kaip „Kas yra dideli duomenys? Kodėl tai svarbu ar naudinga? Kaip saugoti šiuos didelius duomenis? “Tada mes išnagrinėsime įvairius įrankius ir programavimo modelius iš didelių duomenų technologijų stekų, kurie padės mums analizuoti duomenis. Temos apima kai kuriuos „Hadoop“ ekosistemos projektus, pvz., „MapReduce“, „Pig“, „Hive“, „Sqoop“, „Flume“, „HBase“ („NoSQL DB“), „Zookeeper“ ir „Apache Spark“ ekosistemos projektus. Mes taip pat apimsime „AWS“ ir „EMR“. Daugiausia dirbate su vienu „Cloudera“ „Hadoop“ paskirstymo mazgu. (4 vienetai) (Nėra prielaidų)

  • Kompiuterio saugumas (CS 466)

    Šis kursas yra labai svarbus trims kompiuterio saugumo aspektams: konfidencialumui, vientisumui ir prieinamumui. Išnagrinėti keli konfidencialumo ir vientisumo saugumo politikos modeliai. Išnagrinėtas kriptografijos vaidmuo užtikrinant konfidencialumą ir vientisumą. Kitos temos yra autentifikavimas, auditas, skverbties testavimas, bendri pažeidžiamumai ir įsilaužimo aptikimas. Kursas baigiamas atlikus realistiškos saugios sistemos atvejį. Studentai bus paprašyti skaityti dokumentus iš saugumo literatūros ir pritaikyti juos paskaitose pateikiamai medžiagai. (4 kreditai) Būtina: CS 401 arba katedros fakulteto sutikimas.

  • Įmonių architektūra (CS 544)

    Šis kursas orientuotas į principų ir praktikos, naudojamos kuriant didesnės apimties įmonių programas, mokymą. Mes išnagrinėsime įvairius dažnai naudojamus architektūros sluoksnius ir įvairias technologijas, susijusias su šiais sluoksniais, įskaitant objekto reliacinį atvaizdavimą (ORM), priklausomybės įpurškimą (DI), orientuotą programavimą (AOP) ir integraciją su kitomis programomis per „Web Services“ (RESTfull ir SOAP), pranešimų ir nuotolinio metodo iškvietimas. Turi turėti žinių apie reliacines duomenų bazes ir SQL. Jei neturite stiprių SQL kursų ar gerų darbo žinių, prieš užsiregistruodami EA, turėtumėte užsiregistruoti CS422 DBVS. (4 vienetai)

  • Mašinų mokymasis (duomenų mokslo takelis) (CS 582)

    Mašinų mokymasis, studijų sritis, suteikianti kompiuteriams gebėjimą mokytis iš duomenų, yra beveik kiekvienos mokslo disciplinos pagrindas, o apibendrinimo (ty prognozavimo) iš duomenų tyrimas yra pagrindinė mašininio mokymosi tema. Šis kursas suteikia absolventų lygio įvadą į mašinų mokymąsi ir nuodugnų naujų ir pažangių metodų taikymą mašinų mokymuisi, taip pat jų pagrindinę teoriją. Jame akcentuojami praktinės svarbos metodai ir aptariama daugybė naujausių mašinų mokymosi programų, pvz., Duomenų gavyba (didelių duomenų / duomenų mokslų, duomenų analizės), natūralios kalbos apdorojimas, kompiuterinė vizija, robota, bioinformatika ir teksto bei žiniatinklio duomenų apdorojimas. Mašinų mokymasis naudojamas įvairiose pramonės šakose, įskaitant finansines paslaugas, naftą ir dujas, sveikatos priežiūrą, rinkodarą ir reklamą, vyriausybę, internetą ir daiktų internetą.

    Šis kursas apima įvairias mokymosi paradigmas, algoritmus, teorinius rezultatus ir programas. Ji naudoja pagrindines sąvokas iš dirbtinio intelekto, informacijos teorijos, statistikos ir kontrolės teorijos, jei jos yra svarbios mašinų mokymuisi. Temos yra: prižiūrimas mokymasis (generacinis / diskriminacinis mokymasis, parametrinis / neparametrinis mokymasis, neuroniniai tinklai, pagalbiniai vektoriniai įrenginiai, sprendimų medis, Bayeso mokymasis ir optimizavimas); nekontroliuojamas mokymasis (klasterizacija, matmenų mažinimas, branduolio metodai); mokymosi teorija (šališkumo / dispersijos kompromisai; VC teorija; didelės maržos); stiprinimo mokymasis ir prisitaikanti kontrolė. Kitos temos yra „HMM“ („Hidden Markov“ modelis), „Evolutionary Computing“, „Deep Learning“ (su neuroniniais tinklais) ir projektavimo algoritmai, kurių veikimą galima kruopščiai išanalizuoti atliekant pagrindines mašinų mokymosi problemas.

    Svarbi kurso dalis yra grupinis projektas. Trumpai apžvelgiami pagrindiniai atviro kodo įrankiai, naudojami lygiagrečiai, paskirstytam ir keičiamam mastelio mokymuisi, siekiant padėti studentams atlikti projektus. (4 vienetai) Būtina: Nėra.

  • Mobiliųjų įrenginių programavimas (CS 473)

    Mobiliųjų įrenginių programavimo svarba pastaraisiais metais tapo nauja programinės įrangos kūrimo sritis. Šis kursas ruošia studentams kurti programas, veikiančias mobiliuosiuose įrenginiuose, tokiuose kaip „iPhone“, „IPad“ arba „Android“ telefonas. Tai yra sparčiai besivystanti rinka. Kursas skirtas mobiliųjų programų diegimui, kūrimui, testavimui ir platinimui. Šio kurso pabaigoje studentai gali sukurti programą, skirtą aptariamoms platformoms, jas modeliuoti, išbandyti juos tikrame įrenginyje ir pagaliau paskelbti programinės įrangos parduotuvėje, kad naudotojai galėtų naudotis. (4 vienetai) Būtina sąlyga: CS472 arba departamento fakulteto sutikimas.

  • Šiuolaikinės žiniatinklio programos (CS 572)

    Šiame kurse jūs sužinosite „Reactive“ programavimo architektūrą („Single Page Web Applications“) kartu su visais būtinais įgūdžiais, kad galėtumėte sukurti pilną „Modern Web“ programą. Technologijos apima: „NodeJS“, „ExpressJS“, „TypeScript“, „AngularJS2“, „Firebase“ ir „NoSQL“ duomenų bazes (MongoDB). Kursas apims:

    • Kaip „C ++ V8“ variklis ir asinchroninis kodas veikia „Node“ ir „Node“ įvykių cikle.
    • Kaip struktūrizuoti savo kodą pakartotiniam naudojimui ir kurti ramus API naudojant modulius ir „ExpressJS“.
    • Kaip veikia „NoSQL“ duomenų bazės: „Mongo Shell“, „Aggregation Framework“, „Replica“ rinkiniai, klasterizavimas, „Shards“, „Mongoose ORM“.
    • Gilus supratimas apie tai, kaip veikia kampinis („Google“ palaikomas) darbas, keitimo aptikimas, reaktyvaus RxJ programavimas su stebimaisiais ir objektais, šešėlis DOM, zonos, moduliai ir komponentai, individualios direktyvos ir vamzdžiai, paslaugos ir priklausomybės įpurškimas, kampinis kompiliatorius, JIT ir AOF rinkimas , Formos (Šablonas ir Duomenų valdymas), Duomenų rišimas, Maršrutai, Apsaugai ir Maršruto apsauga, HTTP klientas, JWT JSON žiniatinklio raktų autentifikavimas.

    (4 vienetai)

  • Operacinės sistemos (CS 465)

    Operacinė sistema kontroliuoja centrinius kompiuterinės sistemos išteklius ir skiria juos atskiriems vartotojams. Kursų temos apima nuoseklius ir lygiagrečius procesus, abipusę atskirtį, išteklių pasidalijimą, procesų bendradarbiavimą, aklavietę, išteklių paskirstymą, procesoriaus planavimą, atminties valdymą, segmentavimo ir ieškos algoritmus, laiko paskirstymo sistemas, planavimo algoritmus ir išteklių apsaugą. (4 vienetai) Būtina sąlyga: CS 401 arba katedros fakulteto sutikimas.

  • Lygiagretus programavimas (CS 471)

    Visų naujų kompiuterių standartinis procesorius dabar yra kelių branduolių procesorius, galintis daug greičiau vykdyti programas. Tačiau, norint panaudoti šį potencialą, programuotojas turi turėti žinių apie lygiagrečias programavimo technologijas. Šio kurso metu studentai didžiąją laiko dalį išleidžia lygiagrečių programų rašymui ir derinimui. Tikimasi, kad bus sukurtas naujas praktinio programavimo įgūdžių lygis. Šis įgūdis bus naudingas ne tik programuojant daugiašalius procesorius, bet ir operacinių sistemų programavimą bei paskirstytų duomenų bazių programavimą. Šio kurso metu naudojamos programinės įrangos priemonės apima „Microsoft Visual C / C ++“, „Java“ daugiakalbės biblioteką ir „OpenMP“ sriegimo standartą. (4 vienetai) Būtinos sąlygos: žinios apie kompiuterių programavimą naudojant „Java“, „C“ arba „C ++“.

  • Programinės įrangos architektūra (CS 590)

    Šiame kurse apžvelgsime metodus, principus ir modelius, kaip kurti lanksčias, keičiamo dydžio, išbandomas ir atsparias programines sistemas, naudojant mikroservisas. Mes ištirsime, kaip galime suskaidyti dideles programas į mažesnes mikroservisas, kurias lengviau sukurti, ir kitus privalumus, palyginti su monolitinėmis verslo programomis. Išplėstinė mikroservice architektūra taip pat suteikia daug iššūkių. Ištirsime šiuos iššūkius ir kaip juos spręsti. Šio kurso temos yra architektūriniai stiliai, integracijos metodai ir modeliai, domenų kūrimas, renginių orientuota architektūra ir reaktyvus programavimas. (4 kreditai). (Nėra prielaidų)

  • Programinės įrangos kūrimo praktika (CS 575)

    Šiame praktikoje studentai atlieka su kompiuteriu susijusias užduotis techniniu profesiniu požiūriu. Atliktos užduotys gali būti naujų sistemų kūrimas ir plėtra arba esamų sistemų taikymas konkretiems tikslams. „Practicum“ pareigybių aprašymus suformuluoja darbdavys ir studentas, ir iš anksto juos turi patvirtinti vienas iš katedros absolventų, konsultuodamasis su praktikos vadovu, kuriam studentas yra skirtas. (Šis kursas pirmiausia skirtas studentams praktikos ar bendradarbiavimo programose.) (0.5-1 vienetas vienam blokui - gali būti pakartotas.)

„Pirmą kartą girdėjęs apie MSCS programą, aš tai abejojau. Aš negalėjau patikėti, kad kažkas panašaus egzistuoja. Bet vieną dieną prie mano programos prisijungė mano draugas. Tai buvo tada, kai patvirtinau, kad tai yra tikra. Tada vėl pradėjau savo paraiškų teikimo procesą. Na! Tiesa, aš esu čia, baigiau programą ir esu toks laimingas. “

Edwin BwambaleUganda