>>ダビデは:ようこそ、私の名前はDavidマランであり、これはCS50です。そして、これは典型的な高校のコンピュータサイエンスコースではありません。このコースは少し特別なもの。私はそれを教えているため、そして、それはない。これは、我々は考えて好きですからだと、実際にはそれほど、あなたのスケジュールをそんなに学期の終わりまでには、真に賢く感じることをあなたの脳を絞りこれらの貴重なコースです。だから、私は、私は戻って1996年にこのコースを取った感じの方法でした。私は政府の時間をここマザーハウスに住んで主要なでした。そして、第1 [応援]は、他のされると、5人が。だから、私は政府時に主要された。そして、私は政府が私はいつも好きだから歴史の主要なでした。私は高校時代に憲法が好きだった。そして、私はこのパス新入生年、私は最高の、私は私が好きな知っているか行う上でオフに設定します。そして、私はいつもオタクのビットをしていました、私はいつもコンピュータでbabbledと思います。しかし、私は自分自身を、おそらく皮肉なことに振り返ってみると、私はいつも私の高校の科学コンピュータを取っていた人を見ると思います、本当のオタクとしての私の友人。私は実際に自分の1年生の私をおびやかしたていたというCS50をこの小さなコースを受講するにもかかわらず、最後に、2年でした。そして私は時にユーザーのアシスタントだった。だから、私は確かにすでに、少なくともそのうちに修飾された、私は高校での楽しさをしたこれらのオタク。しかし、私は怖がっていた。が、それは部分的にそれがされた時点でこの評判、おそらくがまだいたが、それは恐ろしいコースでした。それは多くの作業をした。これは、ハード、まだされ、それが1つ、私の神、樹皮ははるかにその口よりも悪化していたそれらの事の一つだ。私は今年、初めて、実際に宿題を楽しく見つける2年生が見つかりました。そして、私はこれだけであなたにこのコースを売り込むとは言わないよ。これが私のために本物の実現された。今、私は、ある時点で考えて、私は私の小さいMacBookの前でカールがあるためとCS50の問題セットの作業私は実際には金曜日の夜に楽しみにするために使用真geekdumにラインを越えるでした。だから、その時点で、私ははっきりと線を越えると思う。そして、このコースでは我々の目標は、その人に、すべてのあなたの有効にするが、ただ、このコースについて少し何か特別な、一般的にはほとんど何かのコンピュータに関する特別な科学は、特にこれらの日だと言うことはできません。そして、より多くの順化我々はすべての技術に持って、より多くのおもちゃが私たちの周りのコンピュータ自身です私たちのポケットに入れて持ち運ぶ。私はつまり、私のiPhoneは、実際より高いパフォーマンスのコンピュータよりも私のラップトップは、大学にいたです。あなたはこれらのことで端正な多くの事を行うことができます。私たちは、iTunesに行くためにそして今、私たちのこの部屋では、ほとんどがおそらく他の人のソフトウェア、他の人のツールは、問題を他の人のソリューションを使用して、我々は、アプリケーションストア、我々は何かを本当にきちんと行うことができますワラからいくつかのアプリをダウンロードします。しかし、この学期の終わりにすることで、人が問題を解決することができます。あなたは人いくつかの問題を解決する、そのアプリケーションを、ソフトウェアのその部分、または、1つだけ私を楽しませて、そのツールの構築、することができますあなたが楽しいから。インスタンス、例えば、iTunesライブラリを制御する既に存在するか、より簡単にインスタンスのシャトルスケジュールを見つけることができる明確にアプリをアパートからです。だから実際には、1つは私は再びれたCS50を受けた後でした、それはおそらくこの時点で金曜日の夜と土曜日の夜だった非常に最初のものは、ハーバード大学はシャトルバスを実行していた時にこの機会となりました。この日はまた、に、彼らはまだスケジュールを印刷して。しかし、そこにあったは本当にないときに、次のシャトルがあった見つけ出すのオンラインを意味します。今、私はマザー私は人一般的にシャトルバスを取ったの間ではなかったに住んでいたにもかかわらずので、気にしませんでした。しかし、私は例えばPfohoの友達がたくさんいた。そして、それらの1つを私に聞くと、私は1つの時点で考える。 [応援]さてPfohoのマザーよりも明らかに。したがって、1つは私の友人の種類の私は多分私は私の友人は、シャトルのスケジュールを確認するための種類に小さなプログラムを書くことができます考えるようになった。このようにぎこちなく名前シャトルの男の子が生まれた、何年も前のいくつかの数のいくつかの先輩の少なくとも間に宿泊された辞書のこの作品。当時、この問題をこの小さなコマンドラインプログラムの精神でドスに類似していた。これは、UNIX環境で走っていた。だから、それは非常にセクシーではなかった。あなただけのカップルのコマンドを入力し、シャトルバスがあったときにはあなたを語った。さて、これらの日は、もう少し洗練されたです。そして、それは実際にプロジェクトがこのコースの最後に生徒たちは条件によってエンドを作るの正確種類の表現です。ですから、これはバージョンが4、約15年後には、Shuttleboyの。 Googleマップではビットが遅くされているようだ。しかし、これらの場合ここから後のクラスを取得し、例えば移動しての、最大、クワッド言う行く必要がある記念館から。でまあ、のいずれか2分で、これは本当にあなたのためだけではまだ機能していないか、または他の多くのオプションが好きかもしれないとしておくことができます。そして、すぐに来て、私たちはCS50からピッチができますが、SMSで同じ機能になります。電話することができますテキストShuttleboyを介して。あなたはShuttleboyを呼び出します。 CS50の電話番号は、今年も、驚くほど、これは利用可能な617 -バグCS50されました。だから、それはすぐにデビューします。私はのために、今それが我々のシステムの頭の指導員の携帯電話に転送されているか叱責得ているので、だから、まだそれを呼び出すことはありません。あなたが今のシャトルスケジュールについて質問がある場合だから、あなたは彼を取得します。しかし、それはすぐに実装されます。だから、他のものは、実際に、私たち自身がこの夏、準備は本当にこの学期過ごした私たちは解決したい、他の問題の全体の束があった。例えば、あるものは、このキャンパス内の特定の日に続く全体の多くのです。そして、実際には、別の方法を入れ、そこにものの全体の多くは、私は確かに活用することが、このキャンパスで起こっている。そして、にもかかわらず、私は今、私はまだ時間を見つけるように思える方法多くは、キャンパス内で起こっていることに圧倒しています。しかし、ワラでも、そこに、CS50の講義。それはどこにはいるので、これはでしたが、この私たちはすべてのキャンパスでのイベントの集計を書いたプログラムです。そして、このているものは、これと同じコースで他の学生は、自分で取り組んでいますされて。そして、私たちは、キャンパス内に他のエンティティと実際にこれが起こるために努力している。しかし、ポイントにCS50は、この用語ですが、すべての我々は、すべてのGoogleニュースでは、これらすべてのものを持っているとしているこの1つのかどうかを1つ1つの場所のすべてのハーバード大学のニュース集約するかどうかに取り組んできたこれらの小さなプログラムのどのようなAPIの、アプリケーションプログラミングインターフェイスと呼ばれます。そして、これは単なる空想は、他の人々を招き入れの能力を代弁、この部屋の人々は、実際には同じデータで何かをしている。あなたが決めるならそれで、条件によってエンドはもちろん、よく私達は、少なくとも、それがすべての詳細は今年簡単にするインターフェイスをご提供することで最終的なプロジェクトをニュースやイベントやマップに関連する実施する種の関数は、そのソフトウェアを、あなたの自身のプロジェクトで上に行くと、このフレームワークは、代わりに彼らのためにされていないため、学生は、おそらく、過去に行っているを超えて使用することができます話す。そして再び、これはすべて、私のために始めた、少なくとも約15年Shuttleboyを実装しました。それから、Pfohoの友人ケンメールを送った。私はちょっと何を考えてんだ?この便利なのですか?彼はPfohoオープンリストとワラにそれを郵送、これらすべての年後、私は明らかにまだこのプロジェクトを搾乳しています。そして、それについてきちんとしたことは、これはどこだと思います工学、コンピュータ科学、このようにもコースは、少し特殊です、そのときあなたの家を行う動作とするときは、このコースではあなたのプロジェクトを行うがされると、知っている、それらの、はい、多くの場合は、脇に置かれます実際に再利用されません。しかし、その一部は、必要になります。そして、これは本当に強力なことは、少なくとも私にとってはだ、これは本当にエキサイティングなこと、何か他の人が実際にケアする、他の人々は笑顔しないと自分の人生について行くの背中にして並べ替えをたたき込む。彼らは実際にあなたが自分の生活でもそれはばかげたとして何かまたはちょうどその時、彼らはここのクワッドの横にあるシャトルをキャッチすることができますを見つけるように簡単ですなさを使用します。したがって、条件によって最後に、1つのこのコースの目標の一つだ。君たちはいくつかの問題をどうか、キャンパスまたはキャンパス期待をはるかに超えている識別し、力を与える、実際に自分自身のスキル、自分の心といくつかの、その問題を解決を使用する一部技術。だから、これももちろん私たちはシラバスとどのように考えることを教えて、それがどのように効率的に問題を解決する方法を教えてコースの公式説明言うようです。さて、どういう意味ですか?さて、あなたのポケットや3ギガヘルツの自宅であなたの机の下に600メガヘルツを持っている場合は、せん断ブルートフォース効率だけで多くの問題を解決することができます。しかし、この世界で多くの問題かどうか、それは、FacebookのネットワークやGoogle経由でインターネットに、それがどれだけ速く、特定のコンピュータが問題ではないと言う探しているだが地獄では、検索するつもり方法がないWebページの数十億迅速に実際にインテリジェントこの問題に近づく場合を除きます。上から下へ、地球上のすべてのWebページのインスタンスの現在を行うだけでなく、検索、巨大なリスト何でも検索条件に、うまくいけば、Googleと、おそらくGoogleとFacebookとこれらの大きな実体の探しているrelated探しスマートな人々はより迅速にデータを見つけることができる方法についての考え方がたくさんある、どのように、より効率的、そして、どのように彼らは一般的に早急に結果を返すことができますあなたはまだ行うことができます情報を処理することができます、これらのデバイスでより多くの興味深いこと。そして、私たちは、しかし、意味しない方法については、どのようにもっと注意深く、より多くのアルゴリズムと思う人々に教えています。さて、この小さなビジュアルはいつも以上のように思える。そして、それは記憶に残ると思われる。そして、私はちょうど昨日の元学生で、オハイオ州、再度電話帳の事を行うとしている依頼された。スポット私はかなりの申し分なく私たちは電話帳の事を構築きっと決めた。よく技術的には半分に方法はないのは、コンピュータ科学の方法で私は半分にこの事を引き裂くことができる、それを裂き、ええようにそしてときには、右半分にそれを破り私を聞くと、私は。そして、ここではいくつかの時間を提示問題があった。だから、ここ電話帳のだ。それは持っている数千かそこらのページ、少なくとも。そして、手で簡単に目標は、非常に現実の世界は、例えば、ここの人を見つけることです。だから、マイクスミス氏は、最後の名前米とその開始、私は典型的な人間だ、私はこの電話帳を選択します。そして、そこに誰でも、どのような事前にどのページ彼が実際にであることを知らないマイクスミス、明らかに検索を開始するとよいでしょうあなたは、典型的な人。右ので、ほぼ真ん中に、右に行く。そして、物語の中で、この時点で、私はおそらくNのまたはMの場合は、知っている、約半分の方法で電話帳をしています。めくります、私は何とか護衛のセクションで自分を発見したこの例ではなかった最後の時間。だから、実際には均等にMとNをZのでバランスが取れていないしかし、今日のだ、我々は、実際には、のMはの、申し分なく、今すぐ私は私Mの。しかし、何が私のテイクアウトは今だ通りの普通の人間から同じように?どこで次のマイクスミスのために行くです。 [聞き取れない]そして、この半分だけおそらく、右、SはMのそして、ここで視覚的ドラマにあるの後に来るために。それは本当に半分に、右涙ではない。私は種の中心部を押しごまかした。しかし、今では、マイクが半分少なくとも理解している。我々は、文字通りの距離の問題の半分を投げることができる。そして、私は基本的には同じことだ問題が残っている、非常に大きな本の中でマイクスミスを見つける。しかし、問題は現在の半分の広さ。それが、今では500を持っている数千ページを前にしていた場合。あなたは何を、私は再び同じことを行うことができます知っている。私がすることができます種類を再帰的に、または繰り返し同じことを行う。今は米は非常に私はTに来ているではないそして、オハイオ州私は遠く少し行った。しかし、私は今ではマイクは、いくつかのクラスいつかはダムのことを涙ができないことになるだろうが右に知っている、私は賭ける。しかし、今、私は彼が正しいことではない知っている。だから、今問題が四つれています。だから、私は千500〜250ページにやり遂げました。ロジックを続ければ、そして再び、、、私は半分に、半分に、半分に最後まで私はこの問題をチョッピングている数学を継続するか見つけることがに行くすべてのスミスのすべてで、そうか、私はするつもりだ私が探しているものを見つける。右線形本を通過するしかし、それは、その後、質問しておきたい、この任意だけで、あなたは、左からAのいいえを、Bの、いや、知っているというのが単純なアプローチよりも良いですか?まあ、本能的にそうです。これは、多くの高速になるだろう。しかし、どのように少ないくらいですか?私は1000ページの電話帳をしている場合、またはみましょうさて、これらの場合の2つの力をご希望の1,024と言うと、どのように多くの時間、私は半分にスミス氏を見つける前に、この問題を分割する必要があるのでしょうか? >>テン。 >>ダビデは:だから、右10。あなたは1,024ページがある場合、あなたが半分に分割、半分に、半分に、半分に、私は、1000ページから、私はわずか10ページで探している人に行くことを意味の10倍が回転しない。そして、きちんとしたののような、しかし、あなたは知っている、それはあなたが行ってきたのだと思います場合は、このすべてのあなたの人生の。それは劇的ではない。しかし、今、その電話帳はボストンだけではない、それは全体の米国や世界全体は、この事のためのは、その中に数十億ページを持っているので、40億ページで電話帳を想像する。どのように多くのページめくりは、私が最大限4000000000ページ電話帳のマイクスミスを見つけるために行う必要があるだろうか? >>ログベースの2つの。 >>デビッド:それで、ええ、あなたは数学のタイプの種類であれば、この基地を2つのログです。しかし、あなたが思うであれば4 billion to 2000000000〜1000000000ので、5億。私は、実際にホウィットレスにダウンはかなりのスピード自体行く意味します。実際には4億電話帳の32 halvingsでも、私は得られます1つ下のページに。そして、そのときにこのようなものは、強力な取得だと思います。その時、これらのアイデアをするときには、40億ページに問題があることが、32の手順で、あなたが探している人を見つけることができる魅力的ななるのよ。そして、それは私たちが私たちがどのようにもっと注意深く、より多くのアルゴリズム、よりインテリジェントな問題を解決する考えを学ぶつもりだということを意味です。を返しますが、実際にこれを行うことができます巨大であり、また、世界Facebookの巨大なデータセットを持つ余裕があるのグーグルは、このポイントに。あなたはこの方法でこれらの問題にアプローチするんだそれ以外の場合は、単に仕事に行くではない。さて、何が何を学生が実際にリコールですか?私は、我々は少し愚かもオフそれ以外の新素材がたくさんあるものの端を取るのを並べ替えるにしていることをしたい。そして、彼が実際には、この元学生は、私にキックして最後にそれを後悔のためだけに、私が先に進んでこのリンクを送信uTube、ここでプルアップされます。だから、私は何をコンピュータ以外の科学者が半分に彼が涙の電話帳を意味共有と思った。 [ラフター] [シレンス] [聞き取れない] >>あなたは、素晴らしいきれいなラインを、200以上のページを知って、合法的な、涙。 [ラフター] >>ダビデは:そう、私は思う、彼の方法は、あまりにも動作します。だから、私がこのコースの何年も前だはい、Shuttleboyは、次に、コンピュータサイエンスのはい学位をクリックし、コンピュータサイエンスのはい博士号は。そして、それは我々にこのコースではほとんどの学生を有効にするとしているではありません。あなたのこのコースのほとんどは、コンピュータ科学専攻行くされていません。皆さんの中に、マイナーかもしれないが、いくつかこの端末のコースになります。そして、それがこのコースであるため、完全に、実際には罰金、場合でも、わずか数ヵ月のために会費を支払うとあなたが本当にに着目し、あなたが本当に取るように構成ですこのコースの多くのアウトとしてすることができますように、必要になりますで、実際、よく戻って経済学、生物学、心理学、あなたの世界に数学を適用行くし、装備されて実際に私たちは、概念的に、それが根本的に実用的であることを望む、最終的にコースを興味深いものを使用する。そして、それはあまりにもおそらくビット見つけるために稀だものです。私はいくつかのコメントを共有したいと思ったことは昨年秋、今年年キューガイドに置かからの留学生は、将来の生徒たちに教えをご希望ですかについて尋ねた。あなたは既にこれらのコメントを見ていない場合は、まあ、一人の学生がこのコースは、かなりの時間を取ると述べた。しかし、場合は、全く新しい世界では、全体に作業をする場合は、作業をする場合は、場合は、に仕事を言えば、大丈夫なので、この彼の文法は私なので、あなたは、仕事でのput場合全く新しい世界があなたに開く。どれだけ私は12週間で学んだすばらしい。もう1つの学生は、あなた方これを取るか、それを後悔するつもりだ書いている。もう1つは、もう少し露骨に、それはあなたのお尻を蹴るし、あなたは素晴らしい気分を残し書いている。そして最後に、この1つは、おそらく私が書面でのみ、見ることができますが、下からここに2番目のものです。 [笑い]がそれで、私はあなたがこのコースを取ったが、我々は親切、昨年の学生への損傷の多くをした多くの友人を持っている場合はわからない。私たちは、開始時に導入し、いくつかの、いくつかのクイズ、いくつかの問題セット、バカバカしこの概念を講義。あなたは私がここでは瞬間には、若い男が、いわゆる一味のリーダーは幸せ猫の名前が表示されます見ることができる見ることができない。これは私が率直に言って、これらの2人の紳士の間で意見の相違はここと思う私たちが今画面上にあるかもしれないです愚かなインターネット転送の一つです。 [笑い] 1日にこの劇場の最も不適切な用途の。 そして、なぜ我々はよりもう少し実際より効率的に問題を解決するこの概念個人リアルタイムほとんどすることはありません。すべての学校の1日目に簡単な問題が座ったり立っや学生をカウントを開始種の右点呼です。まあ、最も単純な、それでも、非常に正しいアプローチは、教師がかかることが1つ、2、3、4、5、6、7され、ここでかなりの時間がかかると思います。だから、何が限界の改善はあるも、このことは、子供の行っているのでしょうか?どのように人より速く数えるのですか?そして、自分の命令をオフに読み始めるのですか?何があなたは子供の行っているか?のようなスタートカウント2の補数、右、私はかなり2つ、4時、6、8、12、10いいよように。だから、それは何かが興味深い右です。では、どのよう改善の多くであることが?だから、それは明らかに2つの要因があります。それは私に多くの時間の半分を取る。コンピュータの世界でアナログここで私がCPUを私だから、あなたは私たちが今学期、大したことでは、2つのちょうど倍の時間を実行してスピードアップのように見つけると、何のすべてのこれは面白い知っている私は、コンピュータ、よく一体、私はちょうど12ヶ月、18ヶ月待てば、私はコンピュータだけでできる性質上、ギガヘルツの私は持っている数によってこの部屋には高速人を数えるできるようになります。したがって、これらの種類の、3つの2つのファクタの要因のような線形スピードアップこれらの種類の、気に10のも要因?右、我々は問題でハードウェアを投げることができる。我々は物事を待つことができます。我々は、より速いマシンを開発することができます。賢いが、それは本当に根本的に問題を変更していないのようなものだったしかし、知的、ええ。私はまだ右、バックアップする前に、左からつもりです。それは実際に同じアルゴリズムです。しかし、私は、我々はより行うことができます提供しています。これとも根本的に高速な実装を行うには我々は賢く行うことができます。しかし、これを示すために、我々はユーモアたちを一瞬する必要があります。そして、それは私が少ない話をすると、もっと話をされますこの時点でです。しかし、私はあなたが場合は、希望ユーモアたちです手順を1つ一緒に実行する必要が行うには、立ち上がってください。ボード上の方向は、ここであなたは、大丈夫、座っているあなたのカップルを知っている。それらはあなたの後ろには、我々は、申し分なくしてください。ありがとうございます。したがって、プログラムはここまでです。あなたは今のコンピュータこのプログラムを実行している。それはだ、かなり説明この時点で自己。はい、番号のいずれかする必要があります。分かる?/いい?右、あなたがたの多くは、おそらくこのすでにとにかく、最初の1年生の考えている。だから、自分自身に思う場合は、番号のいずれかです。したがって、ステップは3つのここでは、誰かが立って、ペアを組む一緒に2つの数値を追加し、その合計を採用する、新しい番号として、我々は健全性チェックをするつもりだ。 [騒音、どれだけの我々は知っていますか群衆]から? >> [聞き取れない] >>いいえ[聞き取れない]。 >>我々は答えキーを持っている必要があります。 [シレンス] >>うん。 [騒音群衆]から >>デビッド:アルゴリズムがダウンして巻きする必要がありますこの時点で。 [騒音は群衆]から多分私達はすべての後に私のアプローチで行っている必要があります。 >> 43。 >> 163。 >>デビッド:300プラス人の前でOohの演算。 [笑い]どのような最終的な集計になるんだ? >> 180。 [ラフター] >> 1200。 >> 386。 >>ダビデは:386、あなたに最後の1つに立っている?その人はありますか?あなたは答えを知っていますか? >>何ですか? >>デビッド:あなたはどのような答えを知っていますか?私たちは私たちと一緒ので、386は実際に初めて正確に正解が答えキーを持っていない。 [は]を応援 大丈夫です[アップラウーズ]。 [拍手]非常に、非常によくでき。それでは、お持ち帰りされた確かに少しだけで、onesiesとtwosiesに行くだけでは、左から右へと仕上げるの私の非常にそれにもかかわらず、非常に適切なシンプルなアプローチよりも遅い感じているからです。しかし、何を私たちが本当にそこか?まあ、あれがほぼ、の、400あなたの1ポイントに立って、と言うし、半分あなたの、非常に迅速に、より私が言うことができるか、聞かせて座っていました。だから、あなたの半分は座って、我々は400から200、100を50を25にするために行きました。ここでも、そこに同じ分割とは、私たちは電話帳としていたアイデアを征服する。もう一度、すべての反復で我々は問題の大きさを半分に、我々はそれを半分に、我々はそれを半分に。したがって、理論的には、あなたのアルゴリズムでは、はるかに速く、私線形アプローチよりも私のアプローチは、撮影したなるためてきた、400の手順かと言うかもしれないけど、少し200の手順賢いしている場合。しかし、あなたははるかに少ない、400右から200、6;ので、対最後に10の手順よりも少ない100、50、25、13撮影したと私の200または400。そして、本当に面白いアイデアの芽です。そして、はい、数学的に何をだけでした少し自然の中で対数対数の底2でいるものだった、我々は2つで再び分割。そして私達はこの後、この学期で取り上げます。しかし、そこに再び非常に知的な実装がある。そして、私たちは問題が、我々は最終的に解決するかもしれない非常に巧妙な非常に知的な効率的なアプローチの表面を悩ませている。だから、あなたが誰だけでおしゃべりの人々している場合簡単に?コースの共通の関心は、このように、誰もあなたとあなたの権利を明確あなたよりも多くを知っている必要がありますみんなの残っている。まあ、その場合は絶対ではない。そして、実際には、近年では、このコースでは、努力、これらの少ない快適なので、話すことに手を差し伸べてきた。そして、それによって、我々は本当にハード辺り最近見つけることだから前に、コンピュータに触れたことがない人が、Facebookは、多分、今メールを使用するが、必ずしも非常に何をすべきかわからない人ではないことを意味するとき何かがうまくいかない場合や、それらが何かの技術について質問され、あなたが知っている、手が上がるか、あるいはもっと精通して、彼らよりも友人にハードウェアを押して、彼らは親切。さて、これらは昨年の1学期からいくつかの統計があります。だから、、学生は昨年、あなたが知っているのでときに我々は400を尋ねた、どのような快適さのレベルは、このクラスに来ている、よく34%がダウンして、それらの間以下の快適なように自分自身を書いている。だから、この部屋に来ている場合今でも、その場合は、どのような、この用語は以下の快適な私を記述するかを考えている、あなたは非常に良い会社に知っている。しかし、あまりにもあなたはこのコースではコンピュータサイエンスの背景に来ている場合、あなたは、本当に中学生のオタクと高いコードを教えなさい言語、よく書いていた学校だったということに気付くの罰金もので、間違いなく重要なだその背景とサイズの観客も、約13%、最後の項。そして、そこに誰もが、彼らは少ない快適だと思うていない人並べ替え、彼らは間違いなく、彼らがより快適にしているが、彼らはコースでそれから何かを得るためにしているとは思わないです。したがって、このコースではかなりのスペクトルを描画しない実現します。そして、具体的には、学生の71%で、昨年、これを置くために後ろにゼロコースがあった。ですから、このコースをオハイオ州のCS50を取る人を考えて入力している場合、高校でコンピュータサイエンスの達人では、大文字ではなく、それはだでした。ほとんどの人は、おそらくちょうどそれに興味があります。そして、はい、絶対に昨年いくつかのコースを、いくつかの、又は少なくとも1つの撮影した数は、以前は次の5つのコースを取っていた。そこで、我々は確実に外れ値を、再び曲線の肉持つ低い値に完全です。そして、もう一つの興味深い統計情報は、我々は過去数年以上の共有男女比です。だから、歴史的に、コンピュータ科学、少なくとも、ある男性女性スキューのビットです。年の私はより、はるかに著しい昨年よりも前。そこで、我々は、ほぼ現在40%レベルにいる。そして、私は来年3円グラフを有するためだけに、それがさらに公平だを挑むことができる場合。私は、コースという観点男性と女性はもちろん、この種の入学すべきではないから全く理由がないだと指摘するだろう。比較的等しい内の数字は、私たちは実際にはかなり、我々はほぼしている見て喜んで38%、48%に実現すること、50%の統計学的にも値を、少なくとも。実際にそれで、あなたがしている場合、女性が、残りも、これはありませんが、実際には、男性優位のクラスを確保するか。まあ、これは単なるSOはCS50の20歳の誕生日であることを起こる。私は、よくしていただきありがとうございます。 [は]を応援 私たちはあなたのために、実際にケーキを持っているため非常に優しいのね[アップラウーズ]。そして、ときにここへ今日終了すると、実際にチャンスをコース廊下に長引くだろう仲間を教えるの多くを満たすために取得されます。そしてイエスは指導員を満たすインセンティブの方法の良いソートされます。私たちは楽しんでいる間にもかかわらず、仕事の重要な量を期待している一方で、我々は少しパンして、もう一度コースに一貫性のある旅行を取るか遊び心のある性質です。しかし、我々は1つの場合、これらのケーキを持っている。 あなたが笑っている場合は、一人少ない快適の中している場合でも、少なくともあなたはそれを認識しているため、[笑い]がそれで、それは実際には良いことだ。それらはあなたの14%でこの味を好むかもしれない。 あなたは一体何が今起こっているかわからない場合、[笑い]がそして、我々はまた、残りのこのためです。 [は]を応援 私たちは話している[拍手]がそれで、それらは作品の外に切り刻まれている。ここでも、の、ノッチ物事を取る、少なくともいくつかの基本的なテナントの付与のための私たちがしてみましょう紹介させて今学期の残り。そこで、我々は、すべてのおそらく0と1に、コンピュータが最終的になるまで煮詰める何とか知っている、これらのものはビットと呼ばれる。これはどういう意味なのですか。さてあなたはそれを率直に電球として考えることができる、ビットのいずれかまたはそれがオフだだ電球です。これは、スイッチ、それはどちらか、またはそれがオフだです。今、コンピュータ科学者は一般的にオフと考える1つとして数字のゼロ任意とし、概念。したがって、それは1つは、ゼロだ、それをオフだ電灯のスイッチをスローする場合。または、同等、それは事実はfalseの値とそれをオフにするの値ですに光を入れます。したがって、これらは単なる類義語があります。一日の終わり、はい、すべての計算、コンピュータのフードの下に行くすべてのものでは0と、最終的に沸騰を押していません。そして、ときに考えるように停止すると、それはかなりダムは驚くべき世界がとしてきただいくつかは、あなたの手で保持しているデバイスを含む、これらの基本的なビルディングブロック。さて、なぜ0と有用ですか?私の神は、現実の世界でも我々は少なくとも9ゼロから10の数字を持っています。なぜ限定?さて、ハードウェアの面では非常に簡単です。これは、はるかに簡単に2つの状態を、右を表すことです。コンピュータがある場合は、壁は、通常に接続すると、バイナリ自然のこの簡単なソースがあります。これは、どちらかだまたはオフにします。電気が流れているかではない。したがって、1つの最初の理由のような世界がちょうどゼロとコンピュータのものに行きましたです。しかし、あなたはブロックを構築するようにそれらを使用することができます。ですから、これは実際には少し小さな画面ではここですが、我々はバイナリで数えることができるか、我々はバイナリで必要なものを表すことができるだけで我々はできる、10進数を言うように、ただ我々はできる、という事実も、アルファベットと同様に。そして、ここで簡単なシステムです。あなたが今どのように、カウントする方法については、どのようにバイナリ自分のノートパソコンと同じように話すに書き込むための知っているよわずか数分の時間で。さて、あなたは、のバイナリは、並べ替えの世界を持っている小学校の列または値と同じように。だから、小学校で私たちは、このものは、列、これが数十列、数百人の列などです学びます。言い換えれば、なぜ我々は知っている数は123と123?さて、私の先生が私にこの教えるものは、列、これは数十だったが、これは数百人だった。まあそれはどういう意味ですか?さて、何の合計値がそれ以外の数字の文字列であるか、ちょうどボード上のマークをハッシュであることを理解する。まあ、我々は100人なので、これは1回100してプラスは2つの10のように2回、10プラス3のものなので、それが3回1、大丈夫なので、私は後ろに私が始めた得ているように見えるだだだだ。しかし、ちょうど列の値によって数字を乗じて、この非常に単純なプロセスは、まさにバイナリはすべてです。しかし、バイナリでは、10の2つのは力の権限を使用します。だから、ここ8電球一連のです。コンピュータ科学者たちはすべて、一般の便利な値を使用するだから2、8、16、24および32のような値を使用して好きです。だから、私たちはシーケンス内の約8の値を話すこれはバイトと呼ばれるようです。そして、これらの日々はほとんど単にバイトで話す、我々はメガバイトのギガバイトとテラ最近話しています。しかし、それはすべて最終的には同じことがあります。ここでは8ビットはAKA 1バイトは、単純な専門用語のです。したがって、これらのすべての電球のオフになります。だから、数学は実際には本当に簡単です。だから、右側には、それは小さな参照してくださいだが、1つの列には、2の補数、四つんばい、8人乗り、16秒、32秒、こめません、128sです。さてさて、多分それは難しい最初は暗記するだが、それはちょうど倍だ2で右から左に。だから、いつでもこれを再現することができます。まあ、それはすべてオフので、それが0回のプレースホルダ、0回のプレースホルダですよ。ですから、これは数はバイナリで表さ0です。言い換えれば、どのように我々が知っている番号を書いてください0バイナリのように?さて、1つは、二、三、4、5、6、7は、これらすべての先行ゼロの8、技術的には10進数で、のように、彼らは数式にはしている何かを追加しないでくださいそこに私たちは任意の我々を決めたため、行で、右8これらの事をします。彼らは物理的なオブジェクトであれば、私たちは、彼らがすべてオフにするんだ8している。だから、我々はわずかの距離1ゼロ得ていたかもしれない。さて、どのように番号のいずれかを表すのですか?まあ、本能的にいずれかのスイッチのスローになるだろう。あなたは上の電球を有効にするつもりだ。したがって、ある数のいずれかの我々は今、上の電球、自分の立場に置かからです。どのように我々は2つのを表現するつもりですか?さて、私たちは、実際にこの状態以上で対2つのスイッチをスローするつもりだ、我々はものをオフに列を2つの列をオンにすると、現在我々は1つ2の補数列の値を持っている。だから、それは2つの合計値があります。今、迅速な精神運動;何次のシーケンスで発生するだろう?どのように番号を3つの提示のですか?まあ、私は1つは2の補数の列、1つのビッグ3の列とああヘクタールから必要があります。だから、今はインクリメントした、1つ。そして今、この基本的に同じパターンが繰り返されます。何が4番ですか?まあ見てみましょう、私は四つんばいの列の1つをクリックし、2の補数と1にゼロが必要です。それでは、その方法を続けている。そして、それはステップのちょうどこのシーケンスです。また、バイナリの概念には本当にすべてが複雑ではありません。我々は8個のゼロを持って先頭がで。以下、我々は7つのゼロと1つがある。以下、我々は6 0、1、0を持っていることは、バイナリです。 Now, thankfully, we computer scientists, we programmers by terms end are not going to often be writing in binary, talking in binary, thinking in binary because we've built many layers of the traction on top of that. In fact, people rarely talk about bits except in a networking context they talk about bytes because one bit, not that useful, eight bits these days still not that useful, but at least eight bits, one byte is at least getting us toward more useful units of measure. But, when we start looking underneath the hood, when we do certain problems such as look at files and look perhaps at network traffic, it will become interesting to know how you're representing data because you're going to have to figure out how to display that same information. And, in fact, we, if we only have zeros and ones, how do we go about representing, say alphabetical letters? Well, we're going to have to have some mapping between binary and letters. But that's as of yet unclear. But to hammer this point home and to give me a break from speaking at, I thought I'd pause for a moment and see if we can't recruit eight volunteers, one byte eight people. Can I get eight people for whom it is not too awkward to come on up. good, good one, two, three, four, five, six, seven, eight very enthusiastic eight, come on down. So, you all, for just a moment here, oh and you have to be willing to not be on the internet because there is in fact a camera in the back of this room. So, turn back now if you don't want to be on the, hello mom, in perpetuity. So, let's see, you here will be the 128th column. And let me ask that you simply hold this before you. And actually, if you could scooch this way just a little bit, then I will get out of your way. You'll be the 64's column, you shall be the 32's column and the 16's. 32's, 16s, 8's, 4's, 2's and 1's. All right. So perfectly lined up with the place holders from before, but we need a little bit of mapping, so a quick set up. We just need an arbitrary way of mapping binary numbers, which really could be converted very easily to decimal numbers. So we need a way of converting numbers to letters if our computers are actually going to show us emails or type URL's or actually display non numeric information. And, in fact, there is a system for that, it's called ASCII, an acronym whose meaning is not so interesting, but whose utility is. This is just a mapping from letters to numbers and there's actually a lot more numbers on the screen, and you guys, don't worry, aren't going to have to test yourselves with this in just a moment. But there's a mapping between numbers and letters and I'm just going to get us started by pointing out a couple of these. The numbers of interest right now are going to be, whoops, are going to be this. Whoops. So in this column here, I can't seem to zoom in simultaneously, we have decimal. Dec for decimal. And then we have the character on the right hand side. So if I hop over into this column, thought it's a bit small on the screen, the number 65 represents what letter? Capital A. And the number 97? Lowercase A. All right. So those two alone, right, so do not go home and try to remember ASCII chart. Come quiz time, do not try memorizing an ASCII chart. Memorize two, 65 is capital A and 97 is lowercase A. And from there you can bootstrap yourself to all of the other alphabetical characters. But all this chart says, and I just downloaded this chart from ASCIItable.com, this is a standard that's been around for many, many, many years, but most computers still use it. What we now have is a means of encoding alphabetical information using what's ultimately numeric. So if these guys are just switches, light bulbs, computers, we can actually convey messages. So each of you has some hints on the back. We're going to have three rounds here where these guys are going to spell out in English, in ASCII, a very short message, a three letter word. It will involve them either raising their hand, thereby representing a one or just standing there awkwardly, thereby representing a zero. So why don't we proceed immediately with round one and you can either raise or not raise your hands. So the audience doesn't get off the hook. What number are they currently representing? 66. Right. Not hard because we have a one, a hand up in the 64s column, a hand up in the 2's column. 64 times one plus two times one is 66. They're representing the number 6, which means the first letter is B. So not too bad, right? Round two. First letter was a B. [ラフター] >> Seventy Nine. >> David: Can someone second that? Yes. All right. So 79, which means it's now an O. So B,O. There's a third letter. Actually that is kind of, yeah. Third round. Third and final round. What number is this? I heard an 87. Someone else agree? All right, yeah. This is in fact 87, which maps to, and this is a very clever set up at which point you all B, O, W, it's bow. Very good. So actually besides that little souvenir, that was not a very enthusiastic applause, so I'll take care of you. So we do have a little something for these guys here now that they just appeared on center stage doing perhaps the geekiest thing they could. So maybe if we could humor them if only because I'm feeling a little bit awkward now. A little round of applause for these guys here. [ Applause ] All yours. All right. Thank you very much. So, so, it turns out that we can take this one step further, but you are now entering a community of people who understand things like this. [ Silence ] It's slowly spreading, yes? [ Laughter ] It's not cool that you understand this now. So we've already done some damage here today, but yes, there is now such a thing as geek humor that you might just catch a little bit more on to. So what are we going to do throughout this semester? So there's 12 weeks, zero index, so 13 weeks in total. You'll find throughout the semester that computer scientists tend to count starting from zero for reasons that will soon become clear. But what we're going to do this week, starting this Friday, is introduce you to programming. Now you may already be coming at this course with a background in the same, and that's perfectly fine, but we'll also be able to introduce some more sophisticated topics than are typically covered, things like events and threading, so just to toss out a couple of buzz words for those unfamiliar. But what we're going to do is not dive into what the typically traditional language like Java or C++ or C sharp catch phrases that you might have heard in the past, but we're going to use a programming environment, a graphical programming environment that was actually developed by MIT's media lab. And this is an environment that allows you to program, quite literally, by dragging and dropping puzzle pieces that fit together logically that lets you implement these things called loops and conditions and Boolean expressions and you can actually, on day one, after this Friday, write a program that actually some of your friends might care about. So in yester year, say when you've taken a computer science course in high school, odds are one of your first programs was the equivalent of hello world, like wow mom, I just made the computer type some characters on the screen. It's a very underwhelming experience. Much more interesting is it to implement a little something like this, as one of last year's students did. So I give you the work of a former classmate. It's a love story, of sorts, about dancing cookies. [ Music ] So this was actually from a student who had never programmed before. And just to give you a teaser of this interface, and we're only going to use this for one week time, really to get the comfort levels up and to really get folks excited about what you can actually make these machines do, this is an environment where you'll be programming by, for at least a week, just dragging and dropping puzzle pieces that fit together, as we'll see, in a logical fashion. And it lets you do fun, silly things quickly. And for any of you who are a little bit familiar with things like Java and C++, it's usually a good semester or two or three before you finally get to start writing something that another person might actually enjoy watching. Well, in week one of the course, or the second week, zero index, where we dive into a little more traditional environment. In this course we'll spend much of our time on a language called C. This is one of the earliest languages that, unlike Java, actually gives us much greater access for better or for worse, to manipulating hardware and actual memory, and we can do a lot of damage with that. In fact, any time you read of web servers being exploited or computers being hacked into, very often to this day it's the result of people having run software in a language called C or C++ without sufficient care given to what are called buffer overruns or lengths of arrays, so some fairly technical concepts that are not that hard to understand, but there's been a lot of humans making a lot of mistakes for years and with this language we'll actually understand some of those security implications. But each week, typically, we'll introduce also an interesting domain that will inspire that week's problem set. So we'll also take a look this week at the field of cryptology, cryptanalysis, the notion that you can encipher information in such a way that people can't read your messages, but if clever enough perhaps you can, in fact, crack what are otherwise secret messages. In week three we'll then look at some basic fundamentals of computer science like searching and sorting and we'll actually look at this notion of recursion, how to debug things. In short, we'll take things up to the level of problem solving and not so much about mere syntax and implementing short little cookie cutter programs. In week four we'll introduce more sophisticated problems still. What does it mean to manage memory? What does it mean to run out of memory? What does it mean to actually segfault, if you've heard this expression, and odds are you haven't, but very bad things happen and frankly by terms end you'll understand terms like my code segfaulted which actually is generally not going to be a good thing. But then again, we'll introduce some domain specific stuff. So actually one of my internships during graduate school was to work for the local Middlesex County District Attorney's office doing forensic investigations in a digital sense. The local Mass state police would bring to our office hard drives and floppy disks and sometimes for no reason mice and keyboards. And we would be tasked with finding evidence. Now it turns out, maybe just an FYI, that the criminals in Cambridge, Massachusetts, at least, not necessarily that clever. Very often our forensic analysis boiled down to booting the computer up and double clicking on the My Documents folder, and therein laid the evidence. But what we'll do this week is give you a sense of what it actually means to store information on a hard drive, on a flash drive, and why can't otherwise private information be disclosed to third parties when you drop off a computer to be repaired or even when you discard it. Well someone might very well be sifting through those hard drives and it's really not that hard to find data if you know how to look for it. Well, in week five we'll look at more sophisticated data structures, tools and techniques that you can use ala phone books and ala searching huge data sets much more intelligently. And the week's problem set will task you competitively to see just how fast the code you can write is and how little memory you can use. Toward terms end though we'll take things up to a higher level in terms of programming languages and put C behind us and introduce a web programming language known as PHP, one of the popular languages these days. Much of Facebook is still written in PHP, at least outward facing, and it's just a very easy language to learn quickly once you already know another. So with PHP we'll be able to solve problems and implement websites that do interesting things. The news site I showed you, the events site, the shuttle boy site, all of those all happen to be written in PHP. But by no means is that prerequisite. What you'll also find throughout this course is that you're not going to exit this course knowing C. You're not going to exit this course knowing PHP. Those are not interesting skills to claim, but knowing how to program, knowing how to use data structures and algorithms in an interesting way, that's a compelling story. Even I, all these years later, throughout college and graduate school, the only time I ever learned a language was probably in CS50 where it was still taught in C and CS51, which is one of the successor courses. Everywhere along the way since has been go learn this language and then work on this problem set because computer science is not supposed to be about here's a language, let's spend seven weeks teaching you where the semi colons are. There are much more interesting ideas out there. Databases, for one. And in week two we'll introduce you to this query language called SQL that'll allow you to store information in databases and actually implement some fairly interesting final projects. The week after we'll look at what's called client side programming, doing interesting things on a user's computer, taking advantage of their CPU cycles, doing things ala Google maps and these websites that actually use JavaScript, which is actually a language we'll introduce to let you do client side things, make more interesting, more sophisticated user interfaces, but at the end of the day have to be really mindful when implemented of a lot of sticky issues like network speeds, network performance and security. So it's not about again just coding something up that's fun to use or pretty to look at, but actually thinking about the design that'll be the interesting process. And then, the end result aesthetically will often be a really neat toy to show yourself or a friend. And then we'll look at hardware. We're going to take for granted that there are these physical boxes throughout much of the semester that will do what we tell them to do. But how are they doing that. So we'll actually take a peak under the hood and talk about what a compiler really is, what a CPU really is and actually consider what's making all of this fanciness from stupid YouTube videos on down possible. So what are the expectations? Attending lectures and sessions, completing nine problem sets assigned roughly weekly, two quizzes, the final project and there is in fact no final exam. Grades, it's always a question, broken down as follows here. You can take the course pass-fail. But let me say it here, and I've said it many times. I personally care relatively little about grades. I think they are a wonderful, well, they are a useful pedagogical tool with which to motivate and unfortunately sometimes de-motivate, but you'll find in this course that at the end of the day it's more about seeing how far you can go from weeks zero to week 12, as we say in the syllabus than it is about absolutely ranking all students in this course. So if you're coming into this course among those less comfortable, though a large demographic do not assume that that's automatically putting you in the lower third of the so called distribution. At terms end do I sit down with the TF's and discuss each and every one of the students. We take into account where a student came from, what kind of trajectory they were actually on and so at the end of the day please focus more on, and I don't mean to sound too grand, the process of learning and less on the numeric's. And you'll actually see that we grade problem sets, in particular, very coarsely, whereby along three axis, you will get a score of 1, 2, 3, 4, or 5, where 3, is in fact good. 3 is not C. 3 is good, 4 is better, 5 is best. But more on that as the problem sets are released. So the course's website is where you will find, as in most cases, a whole lot of useful things, if not silly things, too. And we have the luxury, as computer scientists of implementing it ourselves. So over the course of the semester you will see various new features rolling out. You'll find out over the course of the semester that the bulletin board is a wonderful place, certainly in the course of this size, to turn when you have questions about the problem set, questions about some computer science concept. You'll be able to check your grades, download all handouts in advance of lecture typically will I post the slides, if you're the type who wants to scribble on notes. But as you've seen, usually I shy away from long lists of details and more like pictures of cats and other visual cues. So you'll find, too, that we will provide printouts of code when we actually think it particularly advantageous to write right on the paper. Software, videos will be available, usually around 1 to 2 to 3 days maximally after each lecture. So the courses are being filmed and every lecture will go online in various formats including QuickTime and MP3's for downloads to iPods and such. And also you will find a link to download what we call the virtual terminal room, which as you'll see is related to virtual office hours. Books are expensive and in the computer world also not that useful. They are on the shelves of the coop, although we're told that last year they ordered like 120 books for the course and 30 were actually purchased, but this perhaps speak to the fact that there are places like Amazon.com, so if you are the type who actually enjoys the sort of support structure that a book provides, if you like to read up more than say a course's typical materials offer, by all means, procure one or more of the books that we recommend here and discuss more in detail in the syllabus. But realize there are so many resources that this course provides in printed form and electronic form, and my God, there's the whole internet out there. Books are not something that are required for this particular course. Lectures, in general, will be Monday's and Wednesday's, except for this Friday and next Friday, simply because of shopping period and Labor Day. So we'll meet this Friday, next Wednesday, next Friday, but there after this is just a Monday, Wednesday course. So this little visual cue here is to remind me that yes, we do distribute videos in QuickTime formats, MP3's, fun ways that you can, if you're actually this type, maybe in the 14 percent, watch a computer science lecture on your iPod, but it reminded me that at terms end last year, the course culminates in final projects, in which students can design most anything they want, and we actually had some students tackle some iPhone applications. Some one of these at least is now in the Apple store. It's called Rover. It's been adopted essentially by Harvard agencies and it's the iPhone version of the unofficial guide to life at Harvard. They did a brilliant job. I bring this slide up too, just to point out what other technologies might very well be down the road. Some of you may have seen this before, but just to give you a teaser of apparently what's in the pipeline, I thought I would offer this brief distraction here. [音楽] >> With the MacBook wheel, Apple has replaced the keyboard with a sleek, touch sensitive click wheel. Apple CEO Steve Jobs introduced the product yesterday at the annual Mac Expo. Senior product innovator says the MacBook wheel will make typing a thing of the past. >> At Apple our philosophy is create products that are simple to use and nothing's more simple than a single giant button. >> Gilman showed me how the revolutionary new computer works. >> Gilman: Just open the intuit-type alphabet menu here, scroll to the letter you need and center click to select it and click again to capitalize and repeat this process for each new letter. It couldn't be simpler. You could also let the predictive sentence technology complete the sentence for you. >> Gilman says the MacBook wheel has also simplified organization of files, so searching your hard drive will be a snap. >> Gilman: Just press both sides of the wheel concurrently and center click and there, you have an alphabetical list of every file on your hard drive. Everything is just a few hundred clicks away. >> Apple is calling the MacBook wheel the most intuitive product every designed. >> Here at Apple we like to think that we're giving customers features they don't even know they want yet. >> While the MacBook wheel won't hit the shelves for another 3 to 15 months, many apple users already have it on their wish list. >> I'll buy almost anything [inaudible] and made by Apple. >> Alex [inaudible] was one of the lucky few to get to try out a MacWheel and spent 45 minutes typing an email to his friend. >> I never really realized how much I hated keyboards until I saw this thing. >> I like how it automatically says, sent with a MacBook Wheel, so people automatically know you have one. >> With a price tag of just under 2600 dollars for the lowest end MacBook Wheel, it is an investment. But the super thin laptop features numerous innovations, like the new ultra thin hummingbird battery, which can power the MacBook Wheel for a fill 19 minutes before needing to be recharged and the computer is virtually unbreakable unless dropped or hit. But Apple isn't resting on its laurels, Bryan Gilman says they're already hard at work on the next generation of the MacBook Wheel, which will be four ounces lighter due to its lack of streaming hard drive or wheel. For the Ugly news Network, I'm Jeff Tate. >> Thank you for that, Jeff. It remains to be seen if the wheel will catch on in the business world where people use computers for actual work and not just dicking around. Moving on, police warn. >> David: So I've seen that thing at least a half a dozen times now, including once at like two a.m. last night and I was scrolling down on YouTube and literally like an hour prior, some guy in all seriousness posted, just a wheel? That's the stupidest product I've ever seen. [ Laughter ] And then the rants ensued in the thread thereafter. So besides lectures there are also sections and it is your teaching fellow and the course's course assistants that you will get to know very well over the course of this semester. Sectioning won't begin for a week or so's time. More on that in the lectures to come. But know that the course will have several different tracks of sections, much like First Knight's has for music. Sections targeted more at those less comfortable, those more comfortable and those somewhere in between. And we also offer most Sunday nights before a problem set is due on the following Friday is what we call code walkthrough's where one of the course's teaching fellows will lead a session targeted specifically at the week's problem set and will help you answer the question where do I begin, how should I approach this? And that too will be filmed and made available online and always linked on the course's website. So this course has a huge staff. Our staff is larger than Harvard's average class size. We have over 50 people involved in the production of this course on a weekly basis. Some of them teaching fellows who hold sections, grade work, hold office hours and more. Course assistants who are former students, who are offering on a volunteer basis in fact multiple hours of office hours in the computer lab per week. System administrators, folks doing all of our AV and video production. Someone who will actually be taking notes for you. So it is actually my opinion that scribbling down almost every word that someone like me says is not a very good use of one's time. It's much more interesting I think to actually engage with what's on the screen, what's being presented. And so what we will do as a course is post PDF's online within a couple of days of lectures of scribe notes, which is essentially an authoritative version of course notes, unedited, but documenting what went on in lecture that day, thereby hopefully freeing your minds and pencils from jotting information down. We have some of our team here. Most of our team is actually shopping courses. But if a few of your guys would like to come on stage for a moment with our head teaching fellow and assistant head teaching fellow. Allow me to ask the latter to say a quick hello. And as these guys come up in absentia allow me to say that also on staff this year besides the folks you see here are Alex, Alice, Andrew, Batul, Charlotte, Chris, Dan, Dan, Daniel, David, David, David, Derek, Dev, Didi, Doug, Drew, Erica, Fil, Glen, Greg, Janice, Jason, Jean, Jeff, Jesse, John, John, Jonathan, Jordan, Josh, Karim, Kelly, Ken, Kent, Kyu Bok, Lee, Madhura, Marta, Matthew, Michael, Michelle, Mike, Mike, Nathan, Patrick, Peter, Peyton, Rose, Saba, Sanjay, Shannon, Stacey, Ted, Wellie, Yair and me. So our course is teaching fellows and course assistants, Cansu and Yuhki, would you like to say a quick hello? >> Hi. It's definitely a great honor to be back here for the third time. And if you're one of those who are like less comfortable. [ Laughter ] I think I can [inaudible]. Okay. [ Laughter ] If you're one of those [inaudible]. There's no need to be afraid. I walked in here two years ago with no experience what so ever, and I thought that I was like dumb and I was sure that I was going to fail the class. And I came back for the third time. I did not fail the class. This course is great because it has such a good community. As you can tell by the names listed by David. All the CA's and TF's are here to help you. So if you have any questions at all, just come up to us. Not taking this class because it's hard is not a good excuse. So, hi. >> [Inaudible]. >> Hi, so well both as a student and TF, I've really enjoyed being a part of this course. And even though it's a course that requires a lot of work from you, we've put a lot of work in to it for you as well to make it as enjoyable and as fun as possible. So, we really hope that all of you stay and take part in this very special experience. >> Thanks. >> David: So you will find, thank you, all of you, you will meet them in the hallway in just a few minutes as well. So you'll find that this course, perhaps more so than many is very much a shared experience. This is not a competitive course. This is not your premed course. This is a course which ultimately yes is about doing independent work, as you'll see each week by way of the problem sets. But you can't help but to get close to someone when you're fighting with some bug and banging your head against the computer screen proverbially to try to track down some bug. And I think you'll find that past students will concur that you exit this course with a lot of friends among students and also on staff. So where does that happen? Well, within office hours in the basement of the science center there's some large computer labs and we pretty much take them over five nights a week. These won't start for some time, and this, to be honest, is perhaps the most beautiful picture of the science center I've ever seen. [ Laughter ] It does not look like that on the inside. But it is a place where a good percentage of students do choose to spend time to get one on one assistance with each of the week's problem sets. Each week we will offer more than 100 hours of assistance one on one in the science center per the schedule that will eventually go online. And for those of you who live, say in the quad, or in Mather, or who just don't want to trek all the way to the science center to ask that quick question, we also offer what are called virtual office hours, much like remote technical support where you'll be able to log into a glorified chat room, in which yes, you can type back and forth with a TF or a CA, but you can also share your screen or share control of your mouse with them subject to your consent so that they can help you troubleshoot any problem or any question you have remotely. To give you a sense of what's involved in the course, these are statistics from last year. So you will, I think it's quite fair to say, work your ass off in this course. But per my promise from the start, this is one of those experiences that I don't think a typical student regrets. If you flip through, for instance, the Q Guide forms that are all on the course's website, you'll find that only by putting in the time to a course like this do you really exit having felt like you got something out of it and frankly might very well even have emerged even smarter. So what does it mean to actually write programs and implement problem sets? Well, the first problem set last year, a quick retrospective here, was to implement your very own programming scratch. And we spend just the first week there, and the goal is to implement your own game or animation or art or anything that appeals to you. In week one, then do you implement some basic C programs to get acclimated to some more traditional programming environments at the command line, at Linux so you get comfortable with some of these basics that will certainly serve you well in the long run. Last year's Problem Set 2 was about cryptography. We gave students the opportunity to implement some ciphers, some algorithms that let them encrypt information. And we also offered some students the opportunity to do the opposite. Each problem set, many problem sets, as you'll see are implemented in two editions. A standard edition that we expect almost everyone to do, say 90 percent of the class. And then a hacker edition, which presents the material from a more sophisticated angle, expects perhaps a bit more clever work for those more experienced, and for this one did those students get handed in the hacker edition pre existing user names and passwords in encrypted form and they had to figure out what those passwords for. We actually got into trouble for this a few years ago because all of the sudden FAS Computer Services saw like 50 people running a crack program on nice.fas.Harvard.edu, so they now have been given a heads up for programs like that. Last year students implemented the game of 15. Not all that much fun to play as a party favorite, moving the numbers up down, left, right, but a real stepping stone to implementing something interactive that involves a human and the hacker edition for this one had students implementing God mode, which actually solved this thing for the human, maybe cheat mode is the more apt term, in Sudoku, which was a step up toward that, where we provided the students, you, with a framework with a whole bunch of code that you needed to first understand before taking things the final mile and implementing some of the remaining functionality. And then we dabbled in forensics and this grew out of a real world experience between me and a friend. For this problem set last year, this buddy and I, who he being a particularly good photographer, strolled around campus and we shot photographs of unique, non obvious, but identifiable places on campus. And this was using his digital camera. All of these JPEGs got stored on a digital flash card or what not. And then I accidentally formatting the thing, or erased it. Well, it turns out formatting something or erasing something, usually means neither. It just means doing a little bit of work to make the human think their data has been erased, when in reality it hasn't. It's just been forgotten. And so we tasked last year's students with writing a program in C to actually recover these photos for my friend. We gave everyone a forensic image, so to speak, a big file representing that compact flash card, and they had to recover the several dozen photographs. And they also had to solve this little murder mystery. We provided folks with this image here. Those of you who've seen this before might be doing that squinting thing right now where you're trying to look through the picture, well you look pretty awkward, because this is not a magic eye puzzle. This is just random red noise that actually has behind it an actual message. And it turns out, I think it was Colonel, let's see, I've got my little solution here. Last year it was Colonel Mustard in the study with the candlestick. And this was the murder message recovered by students who wrote code to do so. And then in Problem Set 6 last year. We challenged students with implementing the fastest spell checker possible. What do we mean by that? Well, we handed the students a big text file containing 140 plus thousand English words, and we said write a program that loads all of these words into memory, but very quickly and very efficiently can tell us yea or nay, is this document perfectly spelled or are there errors? And what we provided was a testing framework, a harness, that students, if they wanted to compete, could run their code against some benchmarks, against some testing programs that we wrote. And then, ranked on the course's website from fastest to slowest were the running times, the amount of time it took for each student's code to actually execute, complete opt in. It's by no means required. And we took a bullet for the team and made sure that one of our own teaching fellows intentionally, I think, was at the very bottom of the list. So, there was definitely a lower bound. But the odd, the funny thing was we saw this in the cue guide evaluation, this problem set of all things, was apparently the one that people sunk the most time into. Not because it took any longer than all the other p sets, but they would come back from like dinner, look at the board, and realize dam my friend, my roommate just ever so slightly inch higher than me and so it incentivized people if only to one up their friends and roommates. In Problem Set 7, last year, we asked students to implement their own E*Trade like website, whereby you had to create a website using that language call PHP a database called mysql that actually lets people log in and then manage a portfolio of stocks, buy stocks quote unquote, sell stocks quote unquote, get stock quotes. And from where? Well, we have the students; we had the student patch into Yahoo Finance where they grabbed merely the Real time stock quotes to actually simulate the process of buying and trading stocks. Unfortunately some students, perhaps some economics majors or just folks with too much free time figured out last year how to gain the system. So, even though we gave everyone 10,000 virtual dollars, I think our winner turned teaching fellow this year actually, right don't push them away make them one of your own, for a billion dollars something like that ridiculous. Turns out we weren't really checking whether or not people were trading after hours. And it turns out that also, Yahoo stalk quotes are not in fact perfectly Real time which means if you just have a real E*Trade account you can see the future and see where the stocks are going. [ Laughter ] So, apparently you can exploit that if you put your mind to it. and then, in Problem Set 8, the course's final problem set last year, we had students implement a mash up where they take Google News and Google Maps and mash them together using JavaScript, PHP and SQL in such a way that they had a website that they could find all of the local news from whether it's zip code 02138 or 90210. And, you would actually pull the local current even articles by this thing called XML and integrate it into the view of a Google Map. And then, at very course's end was the true climax of the course. This course culminates in final projects, which ultimately will be your opportunity to design your very own piece of software, designed by you or two or three friends. And the course then climaxes with the new and improved, with the second annual computer science 50 fair which last year was an exhibition across the street in one of the engineering buildings with 300 laptops atop tables, popcorn was popping, music was playing, stress balls with CS50's logo were being thrown around. And this was an opportunity for our 300 plus students to exhibit their final projects not only to each other but also to some 900 attendees in total. And we also invited some recruiters as well. So, that is what you have to look forward in this course. You also have cake to look forward to in the hallway. This is CS50 and we'll see you on Friday. [アップラウーズ] ==== Transcribed by Automatic Sync Technologies ====