Computing Curricula(Computer Scienceを教える大学学部レベルで展開するべき科目)

コンピュータサイエンス入門より。

1.離散構造(Discrete Structures)
集合論、論理、証明法、計算の基礎、グラフ理論組み合わせ論、確率論など。
データ構造とアルゴリズム、形式的証明。


2.プログラミング基礎(Programming Fundamentals)
プログラミングの基礎構成概念、アルゴリズムと問題解決、基礎的データ構造、再帰、イベント駆動型プログラミング。
少なくとも2つのプログラミング言語の習得が推奨。


3.アルゴリズムと計算量(Algorithms and Complexity)
ソフトウェアの性能は、採用されたアルゴリズムとその実装法に依存する。
アルゴリズムの選択や実装において、性能・計算理論の基礎が重要。


4.コンピュータアーキテクチャ(Architecture and Prganization)
コンピュータはプログラムを実行してくれる単なるブラックボックスではない。
コンピュータシステムの機能、特性、性能、人とのインタラクションの正しい理解と認識が必要。
たとえば、CPUの動作周波数とメモリサイズのトレードオフ関係。


5.オペレーティングシステム(Operating Systems)
コンピュータを構成しているハードウェアを抽象化し、ハードウェア制御やユーザー間資源共有を可能にするコンピュータ構成要素。
OSの原理や機能を理解することが必要。


6.コンピュータネットワーク(Net-Centric Computing)
TCP/IPに基づくネットワーク技術。
コンピュータネットワークの概念とプロトコル、マルチメディアシステム、インターネットとウェブ、ネットワークセキュリティ、ワイヤレスとモバイルコンピューティング、分散システム。
ソースコードレベルでのプロトコル解析などの実践的学習も必要。


7.プログラミング言語(Programming Languages)
コンピュータとかかわる時の主要なインターフェース。
関数型プログラミング言語やオブジェクト指向プログラミング言語など、多様なプログラミング言語が存在。


8.ヒューマン・コンピュータインタラクション(Human-Computer Interaction)
オブジェクトとかかわる人の振る舞いを理解する方法、HCIのためのプログラムの設計と評価方法、HCI設計の基本的な問題点の理解。
グラフィカルユーザインターフェースやマルチメディアシステム、強調・コミュニケーションのためのHCI。


9.グラフィックスとビジュアルコンピューティング(Graphics and Visual Computing)
4つの相互に関連した分野に分かれる。
・コンピュータグラフィックス:コンピュータによって画像を生成する分野。
・ビジュアリゼーション:データ自身の特徴、データ間の相互関係を見つけ出し表示する分野。
・仮想現実:Computer Graphicsで生成される3次元環境を人が疑似体験する事を可能にする分野。
・コンピュータビジョン:3次元の実世界の性質や構造を1次元や2次元に集約する分野。数学・物理など。


10.知的システム(Intelligent Systems)
自律エージェントの設計と分析。自律エージェントはソフトウェアシステムや物理マシーンなどで構成。
知識表現、推論、問題解決、機械学習


11.データベース(Information Management)
データの収集、ディジタル化、表現、組織化、変換、表示。
格納されたデータの効率的アクセス手法、更新アルゴリズム、データモデリング、物理的データ格納法などのリレーショナルデータベース。
データマイニングやマルチメディア情報システム、ディジタルライブラリなども含む。


12.社会・職業問題(Social and Professional Issues)
コンピュータが必要とされる社会的かつ職業的コンテキストの理解。
職業的かつ倫理的責任、情報システムのリスクと責任、知的財産権、プライバシー。


13.ソフトウェア工学(Software Engineering)
ユーザや顧客の要求を満たすソフトウェアシステムの効率・効果的構築。
要求分析と仕様、設計、構築、検査、運用、保守といったライフサイクルに関する理論、知識、実践。


14.計算科学と数値法(Computational Science and Numerical Methods)
数値解析、オペレーションズリサーチ、数理モデル化とシミュレーション、高性能コンピューティングなど。
分子力学、流体力学、バイオインフォーマティックスなど様々な応用分野に適用。