01 / 経典教科書推薦
経典教科書推薦
引用:
Guttag, J. V. (2021). Introduction to Computation and Programming Using Python: Aims and Applications (3rd ed.). MIT Press.
章の概要:
第1章: はじめに
計算の基本、宣言的知識と命令的知識の区別、アルゴリズム的問題解決の概念を紹介します。アルゴリズムの役割とPythonプログラミングの導入に重点を置いています。
第2章: Python入門
データ型、演算子、簡単なプログラムの作成など、Pythonの基本をカバーします。Pythonの構文と意味論を理解するのに役立ちます。
第3章: 簡単な数値プログラム
平方根や素数を計算するプログラムなど、基本的な数値プログラムの作成を探求します。力まかせ探索、二分探索、近似アルゴリズムなどの手法を議論します。
第4章: 関数、スコープ、抽象化
関数、変数のスコープ、プログラミングにおける複雑さを管理するための抽象化の重要性を紹介します。
第5章: 構造化型とミュータビリティ
タプル、リスト、辞書などのPythonの構造化型について、ミュータビリティとプログラムの動作への影響に焦点を当てて説明します。
第6章: 再帰とグローバル変数
同じ問題のより単純なバージョンで定義できる問題を解決する方法としての再帰と、グローバル変数の使用について説明します。
第7章: モジュールとファイル
プログラムをモジュールに整理し、データの読み書きのためにファイルシステムと対話する方法をカバーします。
第8章: テストとデバッグ
プログラムの正確性を保証するためのテスト方法論と、バグを効果的に特定・修正するデバッグ技術に焦点を当てます。
第9章: 例外とアサーション
実行時エラーに対応するための例外処理と、プログラムの状態が期待通りであることを確認するためのアサーションの使用を紹介します。
第10章: クラスとオブジェクト指向プログラミング
クラス、オブジェクト、継承、ポリモーフィズムなどのオブジェクト指向プログラミングの原則を、Pythonを使用して説明します。
第11章: アルゴリズムの複雑さの初歩
アルゴリズムの効率を評価する方法を議論し、アルゴリズムの複雑さの概念を紹介します。
第12章: 基本的なアルゴリズムとデータ構造
ソートと検索などの基本的なアルゴリズムとデータ構造をレビューし、それらの実装とPythonでの使用法に重点を置きます。
第13章: プロットとクラスの詳細
Pythonでのクラスの使用を拡張し、Matplotlibなどのライブラリを使用したデータの視覚化を紹介します。
第14章: 動的計画法
主要概念: 再帰アルゴリズムを最適化するために中間結果をメモリに保存する(メモ化)。
応用: ナップサック問題や最長共通部分列の探索などの最適化問題の解決。
第15章: 最適化問題
主要概念: 与えられた制約の下で最適解を見つけるためのアルゴリズムの適用。
応用: タスクスケジューリング、リソース割り当て、ネットワーク設計。
第16章: ランダムウォーク
主要概念: ランダムなステップのシーケンスで構成されるパスのモデリング。
応用: 金融モデリング(株価の動きなど)、物理学(粒子の拡散など)。
第17章: 確率と統計
主要概念: データを分析し、推論を導くための統計的手法の使用。
応用: 仮説検定、データ分析、予測モデル。
第18章: ランダム性のシミュレーション
主要概念: 計算技術を使用したランダムプロセスのシミュレーション。
応用: 保険・金融におけるリスク分析、気象パターンなどの複雑なシステムのシミュレーション。
第19章: データ可視化
主要概念: 視覚的な手段によるデータの効果的な提示。
応用: 探索的データ分析、研究・ビジネスにおける結果の提示。
第20章: モンテカルロシミュレーション
主要概念: 原理的には決定論的である可能性のある問題を解決するためのランダム性の使用。
応用: 金融派生商品の評価、プロジェクトマネジメントにおけるリスク評価。
第21章: 確率的プログラミング
主要概念: 不確実性を意思決定モデルとアルゴリズムに直接組み込むこと。
応用: サプライチェーンマネジメント、需要が不確実な在庫管理。
第22章: 機械学習の基礎
主要概念: コンピュータがデータから学習し予測を行うことを可能にするアルゴリズム。
応用: メールのスパムフィルタリング、レコメンデーションシステム。
第23章: 機械学習の詳細
主要概念: 過学習と未学習を防ぐための機械学習モデルの強化。
応用: ヘルスケアや金融などの分野での予測モデルの精度向上。
第24章: ニューラルネットワークとディープラーニング
主要概念: 人間の脳を模倣した相互接続されたノードやニューロンの層。
応用: 画像・音声認識、自動運転車。
第25章: 自然言語処理
主要概念: コンピュータが大量の自然言語データを処理・分析するための技術。
応用: チャットボット、感情分析、自動要約。
第26章: 分類手法
主要概念: データを事前に定義されたクラスに分類するアルゴリズム。
応用: 疾患診断、顧客セグメンテーション、顔認識。
主要な概念:
1. Pythonプログラミングの基礎:
Pythonプログラミングの基礎的な導入から始まり、基本的な構文、データ型、制御構造、関数、問題解決技術をカバーします。これには、Pythonプログラミング環境のセットアップと簡単なスクリプトの作成が含まれます。
2. アルゴリズム的思考:
中心的なテーマは、アルゴリズム的思考の開発です。問題を体系的かつ構造化された方法でアプローチし、効率的なプログラムに変換する方法を理解します。これには、問題を分解し、解決策を開発し、それらの解決策をPythonでコーディングする方法が含まれます。
3. データ構造:
リスト、辞書、タプル、セットなどの様々なデータ構造の理解と使用。これらの構造を操作する方法と、効率に基づいてタスクに適した構造を選択する重要性について議論します。
4. 制御構造:
ループ、条件文、例外処理に関する詳細な議論が含まれており、これらの制御構造が論理的な決定とエラー条件に基づいてプログラムの流れをどのように制御するかを説明します。
5. 関数の定義とスコープ:
Pythonでの関数の定義と使用方法を探求し、パラメータの受け渡し、戻り値、変数のスコープルールの側面を含みます。関数は、プログラミングにおけるモジュール性と再利用性を実現する方法として強調されています。
6. オブジェクト指向プログラミング:
クラス、オブジェクト、継承、ポリモーフィズムなどのオブジェクト指向プログラミング(OOP)の原則の紹介。これらは、モジュール化されスケーラブルなコードを書くために不可欠です。
7. 再帰:
再帰の概念を、自然に類似した部分問題に分割できる問題を解決する方法として探求します。再帰的思考は、いくつかのプログラミングシナリオに適用されます。
8. 複雑さとビッグO記法:
アルゴリズムの計算複雑さと、ビッグO記法を使用してこの複雑さを表現する方法を理解します。これには、アルゴリズムの時間的・空間的効率の分析が含まれます。
9. アルゴリズム設計技法:
貪欲アルゴリズム、分割統治法、動的計画法など、いくつかの重要なアルゴリズム設計パラダイムを紹介します。各パラダイムは実用的な例と共に議論されます。
10. テストとデバッグ:
Pythonコードを体系的にテストおよびデバッグして、信頼性が高く期待通りに動作することを確認するための技術。これには、テストケースの作成とPythonのデバッグツールの使用が含まれます。