Syllabus

コンピュータサイエンスの知的事業とプログラミングの技術を紹介します。このコースでは、アルゴリズム的に考え、問題を効率的に解決する方法を学びます。
トピックとしては、抽象化、アルゴリズム、データ構造、カプセル化、リソース管理、セキュリティ、ソフトウェアエンジニアリング、ウェブプログラミングなどがあります。言語はC、Python、SQLに加え、HTML、CSS、JavaScriptを使用します。芸術、人文科学、社会科学、科学からヒントを得た問題設定を行います。
コースの最後には、最終プロジェクトを実施します。プログラミングの経験の有無にかかわらず、集中講座の受講者と非受講者の両方を対象としています。CS50の学生の3分の2はCSを受講したことがありません。このコースの最大の目標は、学生が失敗を恐れずに未知の世界を探求すること、すべての学生がアクセスできる集中的な共有体験をすること、そして学生間のコミュニティを構築することです。

期待すること

あなたには以下のことが期待されます。

  • problem setsを10回提出する。
  • ラボを10回提出する。
  • そして、最終的なプロジェクトFinal Projectを提出ことです。

証明書

CS50xは無料で受講することができ、各コース合計10問の問題セットと最終プロジェクトを提出して自動フィードバックを受けることができます。ただし、edXから検証済み証明書を受け取るには、10問の問題セットの一部として提出した各問題と、コースの最終プロジェクトで満足のいくスコア(70%以上)を獲得する必要があります。
問題の評価は、出力の正しさ(check50と呼ばれるプログラムで判定)とコードスタイル(style50と呼ばれるプログラムで判定)の軸で行われ、通常は 出力の正しさ3:コードスタイル1の割合で計算されます。

Books

このコースでは、必須または推奨される書籍はありません。しかし、以下の書籍は興味をそそられるかもしれません。なお、このコースのウェブサイトには、無料の資料が掲載されていますので、そちらをご利用ください。

ハッカーの喜び、第二版
ヘンリー・S・ウォーレン・ジュニア
ピアソン・エデュケーション、2013年
ISBN 0-321-84268-5
翻訳版↓
ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか
ヘンリー・S. ウォーレン,ジュニア (著), Henry S. Warren,Jr. (原著), 滝沢 徹 (翻訳), 鈴木 貢 (翻訳), 赤池 英夫 (翻訳), 葛 毅 (翻訳), 藤波 順久 (翻訳)、2015/1/1

コンピュータのしくみ 第10版
ロン・ホワイト
クエ出版、2014年
ISBN 0-7897-4984-X
翻訳版↓
コンピューター&テクノロジー解体新書、2015/9/19
ロン・ホワイト (著), Ron White (著), トップスタジオ (翻訳)

C言語によるプログラミング(第4版
スティーブン・G・コーチャン
ピアソン・エデュケーション, 2015
ISBN 0-321-77641-0
英語版のみ

講義

各コースの動画、Notesでは、各週のコンセプトを紹介しています。

ウォークスルー

ウォークスルーとは、どこから始めればいいのか、どのように問題に取り組めばいいのかを解説したビデオで、問題集に組み込まれています。

Labラボ

その週に出題される問題に備えるためのプログラミング演習です。

Problem Sets

問題セットはプログラミングの課題です。CS50xでは問題集の締め切りはありません。ご自身のペースで問題集に取り組み、提出することができます。ただし、edXから認証された証明書を取得するためには、2021年12月31日までにすべての問題集を提出し、70%以上のスコアを取得する必要があります。

Final Project

このコースのクライマックスは、Final Projectです。この最終プロジェクトは、あなたが学んだプログラミングの知識を生かして、自分だけのソフトウェアを開発する機会です。このコースで学んだことを生かしたプロジェクトであれば、プロジェクトの内容はあなた次第です。あなたのプロジェクトは、どんな言語でも実装できます。また、CS50 IDE以外のインフラを利用することも可能です。私たちが求めるのは、あなたが興味のあるものを作り、実際の問題を解決し、あなたのコミュニティに影響を与え、世界を変えることです。このコースの後にも残るものを作るように努力してください。

学術的誠実さ

このコースの学問的誠実さに関する哲学は、”合理的である “という言葉で表現されます。このコースでは、クラスメートや他の人との交流が、コースの教材を習得するのに役立つことを認識しています。しかし、他人の助けを借りることと、他人の作品を提出することの間には境界線があります。このポリシーは、その境界線の両側を特徴づけるものです

このコースに提出するすべての作品の本質は、あなた自身のものでなければなりません。問題集での共同作業は、クラスメートや他の人に助けを求めることができる範囲を除いて、許可されていません。ただし、その助けが、他の人があなたのために仕事をすることにならない限りにおいてです。一般的に言って、助けを求める際には、あなたのコードを他の人に見せても構いませんが、あなたと他の人がこのポリシーの他の制約を守っている限り、他の人のコードを見ることはできません。コースの最終プロジェクトでの共同作業は、その仕様で定められた範囲内で許可されます。

以下は、本コースが合理的と考える行為と合理的でないと考える行為を特徴づけるものたちです(無尽蔵にあります)。ある行為が妥当であるかどうか疑わしい場合は、その行為をしてはいけません。合理的でない行為を行ったとコースが判断した場合、認定証を取得する資格がないとみなされる可能性があります。合理的でない行為を行った場合でも、72時間以内にコースのインストラクターに注意を向ければ、コースはその結果を再検討することができます。

合理的なもの

  • 問題について、クラスメートと英語(または他の話し言葉)でコミュニケーションをとること。
  • コースの内容をよりよく理解するために、他の人と議論すること。
  • クラスメートが自分のコードのバグを発見するために、自分のコンピュータでも、コードを見たり、コンパイルしたり、実行したりして、直接またはオンラインで助けること。
  • オンラインや他の場所で見つけた数行のコードを自分のコードに取り入れること。ただし、それらの行は課題の解決策ではなく、その行の出所を引用すること。
  • 自分が書いたコードを誰か(場合によってはクラスメート)に送ったり見せたりして、その人がバグを見つけて修正するのを手伝う。
  • 自分が書いたコードを数行オンラインで共有し、他の人がバグの特定や修正を手伝ってくれるようにする。
  • コースで教えられていること以外にも、参考文献や技術的な問題を解決するためにウェブや他の場所を利用すること。
  • 実際のコードではなく、図や疑似コードを使って、他の人とホワイトボードで問題集の解決策を検討する。
  • コース受講を手助けしてくれるチューターと協力したり、お金を払ったりすること(ただし、チューターがあなたの代わりに仕事をしないことが条件)。

合理的でないもの

  • 自分の問題を(再)提出する前に、ある問題の解決策にアクセスすること。
  • 自分の問題を(再)提出する前に、クラスメートに、ある問題セットの問題に対する彼または彼女の解答を見てもらうこと。
  • 問題集に対するスタッフの解答を逆コンパイルしたり、難読化したり、分解したりすること。
  • このポリシーの他の制約を尊重していても、コースのレッスン以外で発見し、自分の作品に組み込んだコードやテクニックの起源を(コメントのように)引用することを怠ること。
  • 問題を解くのに苦労しているのは自分ではなくクラスメートであるにもかかわらず、その問題の解決策をクラスメートに与えたり、見せたりすること。
  • 自分の作品(の一部)として提出することができる作品に対して、個人に報酬を支払う、または支払うことを申し出ること。
  • オンラインや他の場所で、問題集に対する明白な解答を探したり、勧誘したりすること。
  • 問題集の作業量を他の人と分けて、自分の作業を組み合わせること。
  • 他の人の作品を、ここで許可されている数行を超えて(場合によっては修正して)提出すること。
  • 他のコースに提出した、または提出する予定の作品と同一または類似の作品を本コースに提出すること。
  • 問題セットの問題に対する他の人の解答を見て、それに基づいて自分の解答を作ること。