最後に
- American Repertory Theaterが今期のレクチャーの場所を提供し、また素晴らしい小道具、照明、音響を提供してくれたことに謝辞を表明します。
- ハーバード大学とイェール大学の教員やコースアシスタントを含め、CS50のスタッフ全員が壇の外で最大限の尽力をしてくれました。
- また、デビッドも間違いを犯したり、答えに自信がない質問もありますので、このコースの後も学習は続きますのでご安心ください。
- 最後に、次のことを忘れないでください。
このコースで最終的に重要なことは、クラスメートと相対的にどの程度成長したかということではなく、コースを最初に始めたときの自分と相対的にどの程度成長したかということです。
- 基礎となる原則をいくつか学びました。
- 計算論的思考
- 出力を生成する入力が与えられ、アルゴリズムを使用して問題を解決すること
- コードを評価するための正確性、デザイン、スタイルの評価軸
- 抽象化、つまりはコード内の関数のようにシンプルな問題に積み重ねて考えること。
- 精度を高めるためには、指示や処理で起こりうる限界値をすべて考慮する必要があります。
- これらの基本的な考え方を使用することで、CやPython以外のツールを使用して、さらに多くの問題を解決する方法を学ぶことができます。
- ボランティアの方に、キューブと雪だるまの描き方の一連の指示をお願いしていますが、それぞれの指示の解釈が少しずつ違うので、最終的な絵は全く違ったものになりました。
倫理
- 私たちは倫理を、何かをするべきかどうか、あるいはそれをどのように行うべきかと考えるかもしれません。たとえそれができる能力があったとしてもです。
- たとえば、コードを使用して大量の電子メールを送信し、より多くのスパムを作成できます。私たちはウェブサイトのパスワードをフォームで収集することができ、ユーザが同じパスワードを別のサイトで使用した場合、パスワードを安全に保存しない限り、そのユーザのアカウントにアクセスできることになります。
- JavaScriptも、カートに追加したアイテムのように、ユーザのサイト上での行動を記録するために使用できます。しかし、時間の経過とともに、すべての行動を記録すると、ユーザのプライバシーが懸念されます。
- Facebookの以前にもFacemashというウェブサイトがあり、これはハーバード大学の学生の画像をダウンロードして無断で利用するコードが使われていました。
- 哲学科の同僚であるMeica MagnaniとSusan Kennedyと共に、より厳密に意思決定を行うためのフレームワークについて議論をしています。
- ハーバード大学のEmbedded EthiCSプログラムは、倫理的推論のツールをコンピュータ科学のコースに統合し、将来のコンピュータ科学者が倫理的に技術を創造し、利用することを確実にするのに役立つでしょう。
- このセクションの講義録および関連するラボの読み物が、別途掲載されています。
今後の学習
- コンピューターサイエンスのコースを今後受講することがなくても、テクノロジーを使って自分の領域の問題を解決できるようになることを願っています。
- 新しい問題に直面したとき、私たちは以下のスキルに頼ることができます。
- 質問をする
- 答えを見つける
- ドキュメントを読む
- 新しい言語を独学する
- CS50 IDEも今後のプロジェクトで使用できますが、コース用のツールが付属しています。
- ターミナルやその他のコマンドラインツールを含むMacやPC用の業界標準ツールには、以下のようなものがあります。
- …
- Brianは、異なるバージョンのコードを管理し、他人とのコラボレーションを可能にするバージョン管理ソフトウェアであるGitに関するワークショップを開催しています。
- 最も人気のあるIDEの1つであるVS Codeはオープンソースで自由に利用でき、テキストエディタを中心に、追加可能な多くの機能があります。他の選択肢もたくさんあります。
- Webホストには次のようなものがあります。
- …
- Webアプリケーションホストには次のようなものがあります。
- …
- また、新たな技術やプログラミングについてのリソースとして次のようなものがあります。
- …
- CS50のコミュニケーションサイトもたくさんあります。
クイズショー
- 受講者を対象に、次の質問でクイズショーを行いましょう。
- ソースコードをマシンコードにコンパイルする手順は何ですか?
- 前処理、コンパイル、アセンブル、リンク
- バイナリ検索の実行時間は何ですか?
- O(log n)
- CS50の講義で最初に言及された動物はどれですか?
- Cat (猫)
- メモリを
malloc
するたびに、何を毎回確認する必要がありますか?free
- レースコンディションとは何でしょうか?
- 2つの事象が同時に発生し、予期しない結果が生じること
- 写真を拡大することで、より詳細な情報を生成するように「改善」できますか?
- いいえ、写真には一定の決められた解像度しかありません。
- 良いハッシュ関数とは言えない特徴は次のどれですか?
- ランダム性
- FIFOは何を表しますか。
- First in, first out (先入れ先出し)
- RGB値でピンクを表すのは次のどれですか?
#ffd0e0
- Cでは、次のコード行のうち、文字列
s
のコピーに十分なメモリを割り当てるのはどれですか。malloc(strlen(s) + 1)
- 服をどのように整頓するのが良いでしょうか?
- queue (キュー)
- セグメンテーション違反とは何ですか。
- プログラムが本来アクセスすべきでないメモリにアクセスすること
- 次のオーバーフローのうち、ベースケースのない再帰で発生する可能性のあるものはどれですか?
- スタックオーバーフロー
- Fiftyvilleの町で、rubber duckの強盗を目撃した3人の名前は?
- Ruth, Eugene, and Raymond
- 以下のコマンドラインプログラムのうち、メモリリークをチェックするのはどれですか?
valgrind
- C言語には存在するがPythonには存在しないものはどれですか?
- do-whileループ
- パスワードなどの個人情報を送信する場合、どのようなHTTPリクエストを使用する必要がありますか。
- POST
- 辞書内の単語を一定時間で検索できるデータ構造は何ですか?
- trie
- クッキーとは?
- 2つの意味があります。
- 現在の自信はどのくらいですか?
- より自信が持てるようになりました
- ソースコードをマシンコードにコンパイルする手順は何ですか?
- CS50に参加いただきありがとうございました!