準備はいい あなたのキャリアを進めますか?
私たちのプログラムは、OOP(Java)を使用したソフトウェアシステムとソフトウェア開発の分野、およびいくつかのデータサイエンスコースに特化したWebアプリケーションを専門としています。 主要な研究分野には、高度なソフトウェア開発、ウェブアプリケーションプログラミングとアーキテクチャ、データサイエンスコース、重要なアプリケーション分野が含まれます。
すべてのコースはあなたがあなたのキャリアを向上させるのを助けるように設計されており、各コースは実用的な課題を含んでいます。 見る 卒業要件。
データサイエンスコース
標準コアコース
基本的なプログラミング手法(CS 390)
このコースでは、問題解決、データ構造、オブジェクト指向プログラミング、Javaプログラミング言語、およびJavaプログラムでの再帰の使用というXNUMXつの領域でプログラミングと分析のスキルを強化するための集中的なプログラムを提供します。
これらのトピックは、コンピュータサイエンスの大学院プログラムのコースの前提条件として特に重要です。
トピックには、Javaプログラミングの要素、オブジェクト指向の設計と実装、データ構造(リスト、スタック、キュー、バイナリ検索ツリー、ハッシュテーブル、セットを含む)、例外階層、ファイルI / Oとストリーム、およびJDBCが含まれます。 (4単位)前提条件:学部生の場合:CS 221; 大学院生の場合:学部教員の同意(4単位)
現代のプログラミング実践(Javaプログラミング)(CS 401)
このコースでは、オブジェクト指向プログラミングの基本原則について説明します。 学生は、再利用可能でよりよく維持されたソフトウェアを書く方法を学び、この知識を実験室の課題やプロジェクトと統合するでしょう。 トピックには、オブジェクト指向プログラミングの基本原則とモデル、UMLクラス図、およびソフトウェアの再利用性と保守容易性を促進する設計原則が含まれます。 (4ユニット)
高度なソフトウェア開発(CS 525)
このコースでは、ソフトウェアシステムの優れた設計のための現在の方法と慣行を検討します。 トピックには、ソフトウェア設計パターン、フレームワーク、アーキテクチャ、およびこれらのマルチレベル抽象化を適用するための設計システムが含まれます。 (2 - 4クレジット)前提条件:CS 401または部門の教員の同意。
アルゴリズム(CS 435)
このコースでは、アルゴリズムの効率を分析する方法(最悪ケースと平均ケースの分析を含む)を紹介し、さまざまな既知の非常に効率的なアルゴリズムを紹介します。 アルゴリズムの分析、設計、および実装にも同様に重点が置かれています。 トピックには、検索とソート、データ構造(リスト、ハッシュテーブル、バランスのとれた二分探索木、優先度キューを含む)に対する操作の効率化、グラフアルゴリズム、組み合わせアルゴリズム、再帰関係、動的計画法、NP完全問題、およびいくつかの特別トピックが含まれます。許可します。 (特別なトピックには、計算幾何学、暗号システムのアルゴリズム、近似、ビッグデータ、および並列計算が含まれます。)
エンタープライズアーキテクチャ(CS 544)
このコースでは、大規模エンタープライズアプリケーションを開発するときに使用される原則と実践を教えることに焦点を合わせます。 オブジェクトリレーショナルマッピング(ORM)、依存性注入(DI)、アスペクト指向プログラミング(AOP)、およびWebサービス(RESTfull)を介した他のアプリケーションとの統合など、頻繁に使用されるさまざまなアーキテクチャー層およびこれらの層に関連するさまざまなテクノロジを調べます。およびSOAP)、メッセージングおよびリモートメソッド呼び出し。 リレーショナルデータベースとSQLに関する実用的な知識が必要です。 あなたがSQLについての強力な講座または十分な実用的な知識を持っていないならば、EAに申し込む前にCS422 DBMSに申し込むべきです。 (4ユニット)
ソフトウェア工学(CS 425)
ソフトウェア工学は、ソフトウェア開発方法論を通じてソフトウェア開発におけるベストプラクティスを学生に紹介するコースです。 学生はすでにオブジェクト指向パラダイムで以前のコースでいくつかの経験を持っていて、ソフトウェアオブジェクト間の関係をモデル化する目的のためにいくつかの基本的なUML図を使いました。 ソフトウェア工学では、学生はこれらのツールを組み合わせて堅牢で保守が容易なソフトウェアを作成するスキルを磨きます。 ソフトウェア開発方法論では、高品質のソフトウェアを構築するという目的を達成するために、オブジェクト指向の概念とUML図をいつ、どのように使用するべきかについて説明します。 コースは講義形式で議論された原則が例証され適用されることができる小さなプロジェクトを中心とします。 コースの終わりまでに、学生はRUP(Rational Unified Process)開発方法論の高い標準に従って構築された実行中のアプリケーションを持つことになります。
Webアプリケーションのアーキテクチャとフレームワーク(CS 545)
このコースでは、Webアプリケーションをエンタープライズ環境に焦点を当てます。 エンタープライズアプリケーションは、企業や政府などの大規模な組織で動作するように設計された大規模なソフトウェアシステムです。 エンタープライズアプリケーションは、複雑でスケーラブル、コンポーネントベース、分散型、そしてミッションクリティカルです。 このコースCS545は、エンタープライズWebアプリケーションのフロントエンドまたはプレゼンテーション層に焦点を当てています。 CS544エンタープライズアーキテクチャは、ビジネスロジック、トランザクション、および永続性を含むバックエンドまたはビジネスレイヤに焦点を合わせたコースです。 WebアプリケーションプログラミングのCS472は、HTML、CSS、JavaScript、サーブレット、およびJSPを網羅した必須コースです。
このコースでは、プラットフォームやフレームワーク全体で一般的な原則とパターンを教えます。 このコースでは、2つの主要なJava WebフレームワークであるJava Server Faces(JSF)とSpringMVCを使用して検討します。 JSFはコンポーネントベースのフレームワークであり、Java Enterprise Editionテクノロジスタックの公式のプレゼンテーションフレームワーク仕様です。 SpringMVCはCore Springフレームワークの一部であり、近年最も広く使用されているJava Webフレームワークになりました。 (4単位)前提条件:CS 472または部門の教員の同意。
Webアプリケーションプログラミング(CS 472)
このコースでは、インタラクティブで動的なWebアプリケーションのプログラミングを体系的に紹介します。 このコースは、Webアプリケーションプログラミングの経験がほとんどまたはまったくない個人を対象としています。 このオファリングは、サーバー側の処理にJavaサーブレットとJSPを使用します。 このコースでは、HTMLとCSSを紹介します。 JavaScriptはコースの焦点であり、jQuery、Ajax、JavaScriptの名前空間とモジュールを含む関数型プログラミング言語としてカバーされています。 これは、CS545Webアプリケーションアーキテクチャの前提条件です。 AngularJSやNodeJSについては説明していませんが、ここで説明するJavaScriptは、これらのテクノロジーを学ぶ準備をします。 (4台)
前提条件:CS 220またはCS 401、または部門の教員の同意。コンピュータ専門家のための意識科学技術(FOR 506)
最初のコースは、コンピュータサイエンスの最高の専門家になる方法の基礎を確立するために特別に設計されています。 このコースは、あなたの本当の可能性の実現につながる超越瞑想の実践に根ざしています。 創造性を高める優れた精神機能と「箱から出してすぐに使える」思考によって複雑な問題を解決する能力など、TMの利点について学びます。 このコースでは、休息と活動の最適な組み合わせを開発することにより、活動のピークパフォーマンスを支える原則に焦点を当てます。 あなたは人生の成功をサポートする理想的な日常生活を発展させ、経験するでしょう。 (2台)
テクニカルマネージャのリーダーシップ(FOR 506B)
このコースの目的は、将来の指導的役割の準備としてのコミュニケーションスキルを含む、リーダーシップにおける知識とスキルを学生に提供することです。
このコースの終わりまでに、生徒は効果的なリーダーシップに関する重要な質問に対する答えを理解するでしょう。
「自然生まれの」リーダーはいますか?
効果的に導くためにはカリスマ性が必要ですか?
リーダーになるために必要な資産はどれですか。
経営と指導の違いは何ですか?
この時代をリードするために必要な多くの「情報」とは何ですか?
「管理過誤」とは何ですか?またそれはどのようにして自己破壊行為につながりますか?
フィードバックが主要なプロセスに不可欠であることを知っているので、それを授受することへの恐怖をどのように乗り越えますか?
職場で見つかった問題の80%の原因は何ですか?
組織が個人およびチームのリーダーシップスキルを向上させるのを支援するために利用できる科学的研究はありますか?
ゲストスピーカーは著名な起業家、コンピューター科学者、慈善家、学者そして社会の他の著名なリーダーを含みます。
(2ユニット)
追加のMSCSコース
高度なプログラミング言語(CS 505)
このコースでは、形式的手法と抽象化メカニズムに重点を置いて、プログラミング言語設計の高度なトピックについて考察します。 トピックには、データと制御の抽象化、構文とセマンティクスの正式な仕様、プログラムの正確さの証明、非決定論的プログラミング、高度な制御構造、および特定の言語の研究が含まれます。 (4単位)前提条件:CS 401または部門の教員の同意。
ビッグデータ(データサイエンス)(CS 522)
現代の情報処理は、従来のデータベースシステムでは処理できない膨大なデータのリポジトリによって定義されています。 このコースでは、この問題を最も効率的に解決するために業界のリーダーによって開発および使用されている最新の技術について説明します。 具体的なトピックとしては、MapReduceアルゴリズム、MapReduceアルゴリズム設計パターン、HDFS、Hadoopクラスタアーキテクチャ、YARN、相対頻度の計算、2次ソート、Webクロール、逆索引と索引圧縮、SparkアルゴリズムとScalaがあります。 (4ユニット)前提条件:CS 435アルゴリズム。
ビッグデータ分析(データサイエンス)(CS 488)
ビッグデータは新しい天然資源です。データは12〜18か月ごとに倍増しています。 この新しいビッグデータ分析コースでは、大規模で多様なデータセットをマイニングして新しい洞察を生成するための基本的な概念とツールについて説明します。 R言語を使用して、Wordcloud、Pagerank、データの視覚化、ディシジョンツリー、回帰、クラスタリング、ニューラルネットワークなどを作成する方法を習得します。 数百万の大規模なレコードデータセットを操作し、Twitterフィードもマイニングします。 Hadoop / MapReduceとストリーミングデータの概念を学び、個々の研究論文を通じて、Spark、Flink、Kafka、Storm、Samza、NoSQLなどの他のApacheビッグデータプロジェクトを探索します。 Kaggle.comのオープンプロジェクトでグループで作業し、最高のデータ分析の課題を解決して賞金を競います。 また、業界をリードするIBM SPSSModelerとオープンソースのデータマイニングプラットフォームの使用方法についても学びます。 このコースでは、MIT、Coursera、Googleなどのさまざまなビデオトレーニング資料も使用します。 (4単位)前提条件:学部教員の同意
ビッグデータテクノロジ(データサイエンス)(CS 523)
ほんの数年で、ビッグデータ技術は誇大広告の世界から新しいデジタル時代のコアコンポーネントの1つになりました。 これらのテクノロジは、情報を知識に変換するのに非常に役立ちます。
このコースの目的は、さまざまなビッグデータの問題を解決するのに役立つ、非常に重要なツールを武器庫に追加することです。 まず、「ビッグデータとは何ですか?」などの質問に答えることから始めます。 なぜそれが重要または有用なのですか? このビッグデータをどのように保存しますか?」 次に、データの分析に役立つビッグデータテクノロジースタックのさまざまなツールとプログラミングモデルについて学習します。 トピックには、MapReduce、Pig、Hive、Sqoop、Flume、HBase(NoSQL DB)、Zookeeper、Apache Sparkエコシステムプロジェクトなど、Hadoopエコシステムのいくつかのプロジェクトが含まれます。 AWSとEMRの概要についても説明します。 主にClouderaの単一ノードのHadoopディストリビューションで作業します。 (4ユニット)(前提条件なし)
データベース管理システム(CS 422)
データベースシステムは情報を組織化し検索し、ユーザが所望の情報に容易かつ効率的にアクセスすることを可能にする。 トピックは次のとおりです。リレーショナルデータモデル。 SQL; ERモデリング 関係代数; データの正規化 トランザクション データベース内のオブジェクト。 データのセキュリティと整合性 データウェアハウス、OLAP、およびデータマイニング。 分散データベース 特定の商用データベースシステムの研究。 (4単位)前提条件:CS 401または部門の教員の同意。
機械学習(データサイエンス)(CS 582)
機械学習は、コンピューターにデータから学習する能力を与える研究分野であり、ほぼすべての科学分野の中心であり、データからの一般化(つまり予測)の研究は機械学習の中心的なトピックです。 このコースでは、大学院レベルで機械学習を紹介し、機械学習の新しい高度な方法とその基礎となる理論について詳しく説明します。 実用的な関連性のあるアプローチを強調し、データマイニング(ビッグデータ/データサイエンス、データ分析)、自然言語処理、コンピュータービジョン、ロボティクス、バイオインフォマティクス、テキストおよびWebデータ処理などの機械学習の最近のアプリケーションについて説明します。 機械学習は、金融サービス、石油とガス、ヘルスケア、マーケティングと広告、政府、インターネット、モノのインターネットなど、さまざまな業界で使用されています。
このコースでは、さまざまな学習パラダイム、アルゴリズム、理論結果、およびアプリケーションについて説明します。 機械学習に関連する限り、人工知能、情報理論、統計、および制御理論の基本概念を使用します。 トピックは次のとおりです。教師あり学習(生成/識別学習、パラメトリック/ノンパラメトリック学習、ニューラルネットワーク、サポートベクターマシン、決定木、ベイジアン学習と最適化)。 教師なし学習(クラスタリング、次元削減、カーネル法); 学習理論(バイアス/分散のトレードオフ; VC理論;大きなマージン); 強化学習と適応制御。 その他のトピックには、HMM(隠れマルコフモデル)、進化的計算、深層学習(ニューラルネットを使用)、および基本的な機械学習の問題についてパフォーマンスを厳密に分析できるアルゴリズムの設計が含まれます。
コースの重要な部分はグループプロジェクトです。 並列、分散、およびスケーラブルな機械学習に使用される主要なオープンソースツールについて、プロジェクトを行う学生を支援するために簡単に説明します。 (4単位)前提条件:なし。
モバイルデバイスプログラミング(CS 473)
Androidプログラムの開発は、刺激的で潜在的に儲かる経験です。 Androidの開発は、プログラマーに創造性の世界を開きます。 ボタンをXNUMX回クリックするだけで製品を作成し、何十億ものユーザーが利用できるようにするデジタル世界では、夢にも思わなかった方法で自分自身を表現できます。 このコースでは、Kotlinプログラミング言語を使用してAndroidアプリケーションを開発する方法を学びます。
トピックは次のとおりです。Androidプログラミング用のコンピューターのセットアップ。 マニフェストの基本; レイアウト、アクティビティ、ビュー、およびUIコンポーネント。 インテント、フラグメント、および共有設定の操作。 WebビューとHTML; マルチメディアでの作業; Android Jetpackコンポーネント、ルームデータベース、およびJSON。 控えめなセンサー; ローカリゼーション; アプリをGooglePlayストアに公開しています。 (4ユニット)前提条件は必要ありません。
最新のWebアプリケーション(CS 572)
このコースでは、SPAのReactive Programming Architecture(シングルページWebアプリケーション)と、フルモダンWebアプリケーションを構築するために必要なすべてのスキルを学びます。 テクノロジには、NodeJS、ExpressJS、TypeScript、AngularJS2、Firebase、およびNoSQLデータベース(MongoDB)があります。 コースはカバーします:
- C ++ V8エンジンと非同期コードがノードおよびノードイベントループでどのように機能するか。
- モジュールとExpressJSを使用してRestful APIを再利用および構築するためのコードの構築方法。
- NoSQLデータベースのしくみ:Mongo Shell、集計フレームワーク、レプリカセット、クラスタリング、シャード、Mongoose ORM。
- Angular(Googleに支援されている)のしくみ、変更検出、ObservablesとSubjectを使ったReactive RxJプログラミング、Shadow DOM、ゾーン、モジュールとコンポーネント、カスタムディレクティブとパイプ、サービスと依存性の注入、Angular Compiler、JITとAOF Compilation 、フォーム(テンプレート駆動型およびデータ駆動型)、データバインディング、ルーティング、ガードとルート保護、HTTPクライアント、JWT JSON Webトークン認証。
(4ユニット)
並列プログラミング(CS 471)
すべての新しいコンピュータの標準プロセッサは、マルチコアプロセッサになりました。これにより、プログラムをより迅速に実行できる可能性があります。 しかし、この可能性を利用するためには、プログラマーは並列プログラミング技法についてある程度の知識が必要です。 このコースでは、学生はほとんどの時間を並列プログラムの作成とデバッグに費やします。 期待される成果は、新しいレベルの実用的なプログラミングスキルを身に付けることです。 このスキルは、マルチコアプロセッサのプログラミングだけでなく、オペレーティングシステムプログラミングや分散データベースプログラミングにも役立ちます。 このコースで使用されるソフトウェアツールには、Microsoft Visual C / C ++、Javaマルチスレッドライブラリ、およびOpenMPスレッド規格があります。 (4単位)前提条件:Java、C、またはC ++を使用したコンピュータープログラミングの知識。
ソフトウェア開発の実習(CS 575)
この実習コースでは、学生は技術専門家の立場でコンピューター関連のタスクを実行します。 実行されるタスクは、新しいシステムの設計と開発、または特定の目的のための既存のシステムのアプリケーションである可能性があります。 実習の職務記述書は、雇用主と学生によって作成され、学生が配置されている実習の監督者と相談して、学部の大学院教員の0.5人による事前の承認が必要です。 (このコースは、主にインターンシップまたは協力プログラムの学生を対象としています。)(ブロックあたり1〜XNUMXユニット–繰り返すことができます。)
ソフトウェアアーキテクチャ(CS 590)
このコースでは、マイクロサービスを使用して柔軟で、スケーラブルで、テスト可能で、回復力のあるソフトウェアシステムを設計するための手法、原則、およびパターンについて説明します。 大規模なアプリケーションを、モノリシックなエンタープライズアプリケーションと比較して、構築が容易な他の利点など、より小さなマイクロサービスに分割する方法を検討します。 分散マイクロサービスアーキテクチャにも多くの課題があります。 これらの課題とその対処方法を検討します。 このコースのトピックは、アーキテクチャスタイル、統合手法とパターン、ドメイン駆動設計、イベント駆動アーキテクチャとリアクティブプログラミングです。 (4クレジット) (前提条件なし)
クラウドコンピューティング(CS 516)
クラウドコンピューティングコースでは、クラウドサービスとテクノロジーを包括的に理解します。 学生は、クラウドで安全で堅牢なソリューションを構築する能力を獲得し、適切に設計された分散システムがどのように詳細に開発されているかを理解します。
学生は、ロードバランサー、仮想マシンなどのさまざまなWebサービスの操作を練習し、サーバーレス機能とNoSQLデータベースを使用してクラウドでAPIを構築します。 (4クレジット)。 (前提条件なし)
TechTalks-クレジット以外の講義
50年間のMIU教育に敬意を表して、コンピュータサイエンス部門は新しいゴールデンジュビリーComPro TechTalksシリーズを開始できることを嬉しく思います。
この月刊シリーズは、RenukaMohanraj教授によって組織およびモデレートされています。
講演はで利用可能です https://www.youtube.com/playlist?list=PLoBuI1C_-EtrAMdD45sldMnd8HXNhmyBQ.
23月XNUMX日土曜日からの最新の録音されたTechTalkをご覧ください。
MIUComProの学生であるQuocVinhPhamとJialeiZhangは、テクニカルウェビナー「GANとディープラーニングを使用した画像とビデオの合成」を発表しました。
生成的敵対的ネットワーク(GAN)は、XNUMXつのニューラルネットワークを使用するアルゴリズムアーキテクチャであり、実際のデータに渡すことができるデータの新しい合成インスタンスを生成するために、一方を他方に対してピットインします(したがって「敵対的」)。 これらは、画像生成、ビデオ生成、および音声生成で広く使用されています。