Oled sa valmis Edendada oma karjääri?

Meie programm on spetsialiseerunud tarkvarasüsteemide ja tarkvaraarenduse valdkondadele, kasutades OOP (Java), ja veebirakendustele koos mõnede andmeteaduslike kursustega. Põhiuuringute valdkonnad on: täiustatud tarkvaraarendus, veebirakenduste programmeerimine ja arhitektuur, mõned andmeteaduste kursused 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.

Andmeteaduse kursused

Standardne põhikursus

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

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

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

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

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

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

  • This course provides a systematic introduction to programming interactive and dynamic web applications. The course is intended for individuals with little or no prior web application programming experience. This offering will use Java servlets and JSP for server side processing. The course will introduce HTML and CSS. JavaScript is a focus of the course, and is covered as a functional programming language including jQuery, Ajax, and JavaScript namespaces and modules. It is a prerequisite for the CS545 Web Application Architecture. It does not cover AngularJS or NodeJS, but the JavaScript covered here will prepare you to learn those technologies. (4 units)
    Eeltingimus: CS 220 või CS 401 või osakonna teaduskonna nõusolek.

  • Your first course is specifically designed to establish the basis of how you can become a top performing computer science professional. The course is rooted in the practice of Transcendental Meditation which leads to fulfillment of your true potential. You will learn about the benefits of TM including the ability to solve complex problems by superior mental functioning enhancing creativity and “out of the box” thinking. The course will focus upon the principles which underpin peak performance in activity by developing an optimal mix of rest and activity. You will develop and experience an ideal daily routine which supports success in life. (2 units)

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

    Is there scientific research available to assist the organization in improving it’s individual and team leadership skills?

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

    (2 ühikut)

Täiendavad MSCSi kursused

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

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

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

    The aim of the course is to add some really important tools in your arsenal to help you solve various big data problems. We’ll start with giving answers to questions like “What is Big Data? Why is it important or useful? How do you store this big data?” We’ll then study different tools and programming models from the big data technology stack which will help us to analyze the data. Topics include some of the projects in the Hadoop ecosystem such as MapReduce, Pig, Hive, Sqoop, Flume, HBase (NoSQL DB), Zookeeper and Apache Spark ecosystem projects. We’ll also cover an introduction to AWS and EMR. You’ll be mainly working with a single node Hadoop distribution of Cloudera. (4 units) (No prerequisites)

  • The goal of this course is to learn the concepts, architecture principles, and terminology of computer networks by exploring how networks work and developing network applications. This course follows the top-down approach to understanding networks by using the Internet’s architecture and protocols as the primary example of an implementation of network principles. We start at the application layer and continue through the transport layer, network layer, link layer, and the physical layer of computer networks. Students develop several network applications and complete several labs designed to trace and understand the predominant network protocols in use in the Internet. (4 units) Prerequisite: CS 401 or consent of the department faculty.

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

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

  • Machine Learning, the field of study that gives computers the ability to learn from data, is at the heart of almost every scientific discipline, and the study of generalization (that is, prediction) from data is the central topic of machine learning. This course gives a graduate-level introduction to machine learning and in-depth coverage of new and advanced methods in machine learning, as well as their underlying theory. It emphasizes approaches with practical relevance and discusses a number of recent applications of machine learning, such as Data Mining (in Big Data / Data Science, Data Analytics), Natural Language Processing, Computer Vision, Robotics, Bioinformatics and Text and Web data processing. Machine Learning is used in various industries including Financial Services, Oil & Gas, Health Care, Marketing & Advertising, Government, Internet and Internet of Things.

    This course covers a variety of learning paradigms, algorithms, theoretical results and applications. It uses basic concepts from artificial intelligence, information theory, statistics, and control theory insofar as they are relevant to machine learning. Topics include: supervised learning (generative/discriminative learning, parametric/non-parametric learning, neural networks, support vector machines, decision tree, Bayesian learning & optimization); unsupervised learning (clustering, dimensionality reduction, kernel methods); learning theory (bias/variance tradeoffs; VC theory; large margins); reinforcement learning and adaptive control. Other topics include HMM (Hidden Markov Model), Evolutionary Computing, Deep Learning (With Neural Nets) and designing algorithms whose performance can be rigorously analyzed for fundamental machine learning problems.

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

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

  • An operating system controls the central resources of the computer system and allocates them to individual users. Course topics include sequential and concurrent processes, mutual exclusion, resource sharing, process cooperation, deadlock, resource allocation, processor scheduling, memory management, segmentation and paging algorithms, timesharing systems, scheduling algorithms, and resource protection. (4 units)  Prerequisite: CS 401 or consent of the department faculty.

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

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

  • In this practicum course, students perform computer-related tasks in a technical professional position. The tasks performed may be in the design and development of new systems or the application of existing systems for specific purposes. Practicum job descriptions are formulated by the employer and the student, and require approval in advance by one of the graduate faculty of the department, in consultation with the practicum supervisor where the student is placed. (This course is primarily for students in the internship or cooperative programs.) (0.5-1 unit per block – may be repeated.)

“The first time I heard about the MSCS program, I doubted it. I could not believe that something like this exists. But one day, a friend of mine joined the program. That was when I confirmed that it is real. Then I resumed my application process. Well! It is true, I am here, I have completed the program and I am so happy.”