ヒント
このコースは、最初のプログラムから機械学習に至る典型的なコンピュータサイエンス学位に準拠している。プログラミング基礎と離散数学から始まり、オブジェクト指向設計、データ構造とアルゴリズム、コンピュータアーキテクチャ、オペレーティングシステム、データベースとネットワークへと発展する。後半ではアルゴリズム設計、計算理論とコンパイラ、ソフトウェアエンジニアリング、AIと機械学習を扱う。
どの言語よりも重要な2つの習慣がある。第一に、毎週コードを書き実行する:解答を読むことは作成することとは異なる。第二に、コストについて考察する。大学の回答では、入力の増加に伴う実行時間の増大をBig-Oで記述し、単に一つのテストで動作しただけでなく、なぜアルゴリズムが正しいのかを説明しなければならない。
離散数学はプログラミングとは無関係に感じるかもしれない。そうではない。帰納法による証明は再帰関数が正しいことを示す方法であり、グラフは地図、ネットワーク、コンパイラの背後にある。
-
1
プログラミング基礎
- 1.1 このコースとは何か、および使い方は
- 1.1 値、型、入出力
- 1.2 選択: パス間の選定
- 1.3 反復:再度行う
- 1.4 関数:タスクを一度だけ名付けること
- 1.5 コレクション:リスト、辞書、タプル、セット
- 1.6 ファイルとエラー
- 1.7 分解、テスト、デバッグ
読み込み中…
-
3
コンピュータシステム基礎
- 3.1 バイナリとデータ符号化
- 3.2 論理ゲートとデジタル構成要素
- 3.3 プロセッサとメモリ概要
- 3.4 機械命令
- 3.5 オペレーティングシステムのインターフェース
- 3.6 コンパイルと実行パス
読み込み中…
-
4
オブジェクト指向プログラミング
- 4.1 オブジェクトとクラス
- 4.2 カプセル化
- 4.3 合成と継承
- 4.4 インタフェースと多様性
- 4.5 例外処理とエラーハンドリング
- 4.6 テストと設計品質
読み込み中…
-
5
データ構造とアルゴリズム
- 5.1 漸近解析
- 5.2 リスト、スタック、キュー
- 5.3 ハッシング
- 5.4 木とヒープ
- 5.5 グラフと走査
- 5.6 ソート
- 5.7 検索
読み込み中…
-
6
コンピュータアーキテクチャ
- 6.1 命令セットアーキテクチャ
- 6.2 データパスと制御
- 6.3 パイプライン
- 6.4 メモリ階層
- 6.5 入力出力
- 6.6 並列性と性能
読み込み中…
-
7
オペレーティングシステム
- 7.1 プロセスとスレッド
- 7.2 スケジューリング
- 7.3 同期
- 7.4 仮想メモリ
- 7.5 ファイルシステム
- 7.6 保護とセキュリティ
読み込み中…
-
8
データベース
- 8.1 リレーショナルモデリング
- 8.2 リレーショナル代数とSQL
- 8.3 正規化
- 8.4 インデックスとクエリプラン
- 8.5 トランザクションと同時性
- 8.6 セキュリティとデータガバナンス
読み込み中…
-
9
コンピュータネットワーク
- 9.1 レイヤ化とアーキテクチャ
- 9.2 リンク層とIP
- 9.3 ルーティング
- 9.4 トランスポート層(TCP/UDP)
- 9.5 アプリケーションプロトコル
- 9.6 ネットワークセキュリティ
- 9.7 分散システム基礎
読み込み中…
-
10
アルゴリズム設計と解析
- 10.1 再帰式と解析手法
- 10.2 分割統治法
- 10.3 Greedyアルゴリズム
- 10.4 動的計画法
- 10.5 グラフ最適化
- 10.6 問題変換とNP完全性
読み込み中…
-
11
計算理論とコンパイラ
- 11.1 自動機と正規言語
- 11.2 文脈自由言語と構文解析理論
- 11.3 計算可能性
- 11.4 Lexical分析
- 11.5 構文解析
- 11.6 意味解析とコード生成
読み込み中…
-
12
ソフトウェアエンジニアリング
- 12.1 要件定義
- 12.2 アーキテクチャと設計
- 12.3 HCIとアクセシビリティ
- 12.4 バージョン管理とチームワーク
- 12.5 テストと継続的統合
- 12.6 セキュリティとプロフェッショナルエティクス
- 12.7 チームプロジェクト
読み込み中…
-
13
人工知能と機械学習
- 13.1 検索
- 13.2 知識と推論
- 13.3 確率モデル
- 13.4 回帰と分類
- 13.5 最適化と学習
- 13.6 評価とリーケージ
- 13.7 公平性と限界
読み込み中…