>> David: Selamat Datang, nama saya David malan dan ini CS50.
Dan, ini bukan anda khas sekolah tinggi komputer
ilmu sahaja.
Kursus ini sedikit khusus sesuatu.
Dan itu bukan kerana Aku mengajarkannya.
itu kerana ini adalah salah satu dari, kita suka berfikir,
mereka jarang program yang benar-benar meramas otak anda begitu banyak
dan anda begitu banyak jadual
yang pada akhir semester anda benar-benar merasa lebih pintar.
Jadi, itu yang kurasakan
ketika saya sendiri mengambil ini Tentu saja kembali pada tahun 1996.
Aku kerajaan besar
pada saat di sini Rumah tinggal di Mather.
Dan, I.
[Bersorak]
Sebagai adalah lain, lima orang lain di sana.
Jadi, saya adalah kerajaan utama pada ketika itu.
Dan aku kerajaan besar
kerana aku selalu menyukai sejarah.
Aku suka berperlembagaan undang-undang di sekolah tinggi.
Maka, aku memulakan jalan ini mahasiswa baru tahun melakukan apa yang saya lakukan
terbaik, melakukan apa yang aku tahu aku suka.
Dan aku selalu sedikit geek,
Aku selalu mengoceh dengan komputer.
Tapi, aku sendiri, mungkin ironisnya dalam retrospeksi,
Aku akan selalu dilihat orang-orang yang mengambil ilmu komputer
di SMA saya, saya teman-teman sebagai Geeks nyata.
Namun, akhirnya itu, sophomore tahun ini saya mengambil program kecil
disebut CS50 yang sebenarnya pernah takut pergi sendiri
mahasiswa tahun.
Dan aku pengguna pembantu pada saat itu.
Jadi, saya pasti sudah berkelulusan, sekurang-kurangnya,
berada di antara mereka, mereka Geeks
siapa aku mengolok-olok di sekolah tinggi.
Tapi, saya takut.
Ada, itu reputasi ini pada masa dan mungkin masih
di bahagian yang itu, itu saja menakutkan.
Itu banyak bekerja.
Sulit dan belum, itu salah satu hal-hal di mana, ya Tuhan,
kulit jauh lebih buruk daripada gigitannya.
Aku mendapati diriku sophomore tahun, untuk pertama kalinya,
benar-benar termasuk kerja rumah menyenangkan.
Dan aku tidak pernah berkata ini hanya untuk pitch kursus ini untuk anda.
ini adalah asli realisasi bagi saya.
Sekarang, saya kira, di salah satu titik, aku melampaui batas
untuk geekdum benar di mana saya benar-benar digunakan untuk melihat ke depan
untuk malam Jumaat kerana Aku bisa bergelung di depan
dari MacBook kecilku dan bekerja pada masalah CS50's set.
Jadi, pada saat itu, saya fikir saya sudah jelas melanggar batas.
Dan, kami tujuan dalam kursus ini tidak untuk menukar kamu semua
kepada orang itu, tetapi, hanya untuk mengatakan
bahawa ada sesuatu yang sedikit khusus tentang kursus ini,
khusus sedikit sesuatu tentang ilmu komputer
secara umum terutama hari ini.
Dan, semakin terbiasa kita semua masuk ke teknologi,
mainan banyak kita membawa di dalam saku kami
yang semuanya adalah komputer.
Maksudku, iPhone sebenarnya komputer berprestasi tinggi
dari laptop saya masih kuliah.
Anda boleh melakukan banyak rapi hal dengan hal-hal ini.
Dan sekarang, sebahagian besar kami di bilik ini,
mungkin hanya menggunakan orang lain perisian, orang lain alat-alat,
penyelesaian orang lain masalah kerana kita pergi
untuk iTunes, kita download beberapa aplikasi dari kedai app
dan Walla yang dapat kita lakukan benar-benar rapi sesuatu.
Namun, pada akhir semester ini,
Anda boleh menjadi orang yang melakukan penyelesaian masalah.
Anda boleh menjadi orang memecahkan beberapa masalah, membina aplikasi yang,
bahawa perisian, alat yang bahawa, baik,
satu hanya menghibur aku, menghibur anda.
contohnya, kawalan, berkata, iTunes library
dari dengan apartemen anda jelas sebuah aplikasi
yang sudah ada atau anda boleh mencari jadual yang lebih shuttle
dengan contohnya.
Jadi sebenarnya, salah satu hal-hal pertama yang saya lakukan
setelah mengambil CS50 adalah lagi, itu mungkin
pada saat ini Jumaat malam dan malam Sabtu,
ada kesempatan ini pada saat itu
mana Harvard lari shuttle bus.
Dan, hingga ke hari ini, mereka masih telah dicetak jadual.
Tapi, ada yang benar-benar tidak bererti talian termasuk
ketika pesawat ulang-alik seterusnya.
Sekarang, saya tidak peduli, kerana walaupun aku tinggal
di Mather aku tidak di antara mereka yang umumnya memuat ulang-alik.
Tapi, saya punya banyak teman di Pfoho misalnya.
Dan salah satu dari mereka bertanya kepada saya, Aku berfikir dalam pada satu titik.
[Bersorak]
Oke Pfoho lebih baik dari Mather rupanya.
Jadi, salah satu teman saya jenis
yang membuat saya berfikir mungkin aku bisa menulis sebuah program kecil untuk jenis
bantuan teman-teman saya cek jadual shuttle.
Dan demikianlah lahir canggung bernama anak shuttle,
ini adalah sebahagian daripada leksikon yang tinggal di beberapa nombor
tahun sekurang-kurangnya di antara beberapa senior.
Pada waktu itu, ini adalah ini program baris perintah kecil
sama dalam semangat untuk Dos.
Itu berjalan di persekitaran UNIX.
Jadi, tidak terlalu seksi sama sekali.
Anda hanya menaip beberapa perintah dan memberitahu anda
ketika pengangkutan itu.
Well, ini hari ini adalah sedikit lebih canggih.
Dan, itu sebenarnya diwakili dari tepat jenis
projek yang mahasiswa di akhir program
sampai akhir keputusan oleh istilah.
Jadi, ini adalah versi empat, beberapa 15 tahun kemudian, dari Shuttleboy.
Sepertinya Google Maps menjadi agak lambat di sana.
Tapi, bagi anda yang mempunyai untuk keluar dari sini selepas kelas
dan pergi, berkata, dari Memorial Hall dan perlu
untuk pergi ke, katakanlah, Quad itu.
Nah, anda boleh meninggalkan dalam dua minit jika oleh,
ini benar-benar tidak bekerja untuk anda hanya belum,
atau anda mempunyai banyak lain Pilihan seperti yang mungkin anda sukai.
Dan, akan datang, kita dapat pitch ini dari CS50,
itu akan sama kemampuan melalui SMS.
Anda boleh teks Shuttleboy melalui telefon.
Anda menyebut Shuttleboy.
CS50 nombor telefon tahun ini, well,
luar biasa ini sedia, 617-BUG-CS50.
Jadi, yang akan segera debut.
Jadi jangan menyebutnya hanya
tapi karena aku sudah ditegur untuk mendapatkan,
sekarang ini sedang diarahkan
mengajar kepala sistem kami orang itu telefon.
Jadi, anda hanya akan membawanya jika anda mempunyai soalan
tentang jadual kapal sekarang.
Tapi, yang akan segera dilaksanakan.
Jadi, lain hal, sebenarnya, bahawa kita sendiri menghabiskan musim panas ini
pada benar-benar dalam persiapan untuk semester ini adalah sejumlah besar
masalah lain yang kami ingin menyelesaikan.
Sebagai contoh, ada keseluruhan banyak hal yang terjadi
di kampus ini pada hari tertentu.
Dan sebenarnya, menempatkan lain cara, ada jauh
hal terjadi di kampus ini
bahawa saya pasti pernah memanfaatkan.
Dan, walaupun aku sekarang kewalahan dengan berapa banyak hal
yang terjadi, di kampus,
Aku masih tampak tak pernah untuk mencari masa.
Tapi, Walla, bahkan ada, kuliah CS50's.
Itu di mana anda adalah, jadi ini , Ini adalah program kami menulis
untuk semua agregat peristiwa di kampus.
Dan ini telah sesuatu yang lain pelajar
dalam program yang sama telah menangani sendiri.
Dan, kami telah bekerja dengan entiti lain di kampus
untuk benar-benar membuat hal ini terjadi.
Tapi titik untuk CS50 istilah ini adalah bahawa semua
program-program kecil kita telah bekerja pada apakah ini
atau apakah pertama untuk menggabungkan semua berita Harvard
di satu tempat, semua Google News,
semua hal-hal ini akan untuk memiliki apa yang disebut API's,
pengaturcaraan aplikasi interface.
Dan ini hanya bintang kemampuan berbicara
membiarkan orang lain, orang di ruangan ini,
benar-benar melakukan sesuatu dengan data yang sama.
Jadi, dengan syarat akhir, jika anda memutuskan
untuk melaksanakan tugas akhir berkaitan dengan berita atau peristiwa
atau peta, baik kita, di sekurang-kurangnya sebagai kursus,
akan membuat semua lebih dengan tahun ini dengan menyediakan anda
dengan antara muka; semacam fungsi, sehingga untuk berbicara,
perisian yang anda boleh gunakan dalam projek anda sendiri untuk pergi di atas
dan seterusnya di mana pelajar, mungkin, sudah di masa lalu
kerana rangka kerja ini telah tidak berada di tempat bagi mereka.
Dan sekali lagi, ini semua bermula, setidaknya untuk saya,
sekitar 15 tahun yang lalu melaksanakan Shuttleboy.
Saya kemudian diemail saya kawan Ken di Pfoho.
Aku berkata hei bagaimana menurutmu?
Adakah ini berguna?
Dia dihantar keluar pada Pfoho membuka pendaftaran dan Walla,
bertahun-tahun kemudian aku tampaknya masih memerah susu
projek ini.
Dan hal rapi tentang itu, dan ini adalah di mana terlalu kursus
seperti ini dalam kejuruteraan dan ilmu komputer, saya pikir,
sedikit khusus, adalah bahawa, apabila anda melakukan pekerjaan rumah anda
dan ketika anda melakukan kerja anda dalam kursus ini, anda tahu,
banyak dari mereka, ya, anda akan meletakkan sebelah dan tidak benar-benar menggunakan.
Namun, sebahagian, anda akan.
Dan ini benar-benar ada kuat hal, setidaknya untuk saya,
hal yang sangat menarik, apabila anda membuat sesuatu
dan orang lain benar-benar peduli, orang lain tidak hanya tersenyum
dan menepuk anda pada kembali dan kemudian pergi semacam
tentang kehidupan mereka sendiri.
Mereka benar-benar menggunakan apa yang anda buat dalam kehidupan mereka walaupun
untuk sesuatu yang konyol atau sesederhana hanya mencari
ketika mereka boleh keluar dari sini
untuk menangkap seterusnya shuttle ke Quad.
Jadi, dengan istilah akhir, itu salah satu tujuan program ini;
untuk memberdayakan kamu hanya mengenalpasti beberapa masalah apakah
itu di kampus atau mudah-mudahan baik luar kampus,
dan benar-benar menggunakan sendiri kemahiran, anda sendiri fikiran dan menyelesaikan
bahawa masalah di beberapa bahagian, teknologi.
Jadi, ini juga kursus seperti yang kita katakan dalam silabus
dan program rasmi keterangan yang mengajari anda bagaimana
untuk berfikir dan mengajarkan anda bagaimana
untuk menyelesaikan masalah lebih efisien.
Nah, apa artinya?
Yah, kalau kau punya 600 megahertz di saku anda
atau tiga gigahertz bawah meja anda di rumah,
Anda boleh menyelesaikan banyak masalah cekap hanya
oleh kekerasan luncurkan.
Tapi, ada banyak masalah di dunia ini,
apakah itu akan mencari, berkata, Facebook rangkaian
atau internet melalui Google,
bahawa tidak peduli seberapa segera komputer tertentu anda,
tidak ada cara di neraka anda akan bilion carian
laman web dengan cepat kecuali Anda benar-benar pendekatan ini
masalah cerdas.
Anda tidak hanya mencari, contohnya,
pendaftaran besar dari semua web laman di bumi dari atas
melihat ke bawah untuk sesuatu yang berkaitan
untuk istilah carian apa pun yang anda cari mudah-mudahan Google
dan mungkin Google dan Facebook dan setiap
ini entiti besar mempunyai banyak orang pintar berfikir
tentang bagaimana mereka dapat mencari data lebih cepat,
bagaimana mereka boleh memproses maklumat lebih efisien, dan,
bagaimana mereka bisa saja umum memberikan hasil lebih cepat
sehingga yang anda boleh lakukan belum,
yang lebih menarik hal-hal dengan peranti tersebut.
Jadi, apa yang kita maksud, walaupun, oleh bagaimana, mengajar orang bagaimana
untuk berfikir lebih hati-hati, lebih algorithmically.
Well, ini sedikit visual tampaknya selalu pergi lebih baik.
Dan, tampaknya menjadi kenangan.
Dan Aku bahkan bertanya saja terakhir oleh bekas pelajar,
oh yang anda akan lakukan hal buku telefon lagi.
Dan aku cukup banyak di tempat memutuskan baik pasti kita akan membina
hal buku telefon.
Dan dia bertanya kapan anda merobek dalam setengah benar,
Aku seperti juga yeah teknikal merobek kita menjadi dua, tetapi tidak
di jalan, di komputer ilmu cara saya akan dapat
untuk merobek hal di setengah.
Jadi, di sini masalahnya bahawa kita dihidangkan untuk beberapa waktu.
Jadi, inilah buku telefon.
It's got setidaknya ribu atau lebih halaman.
Dan tujuan mudah di tangan dunia yang sangat nyata adalah untuk mencari,
berkata, orang di sini.
Jadi, Mike Smith, terkini nama bermula dengan S. Jadi,
Aku seorang manusia biasa, aku mengambil buku telefon.
Dan orang di luar sana, apa anda akan, orang yang khas,
lakukan untuk mula mencari Mike Smith, jelas tidak tahu
dahulu apa laman dia sebenarnya pada.
Benar, supaya anda pergi kasar di tengah, kanan.
Dan pada saat ini dalam cerita, Aku mungkin di N atau M's,
Anda tahu, kira-kira setengah cara melalui buku telefon.
Ternyata, kali terakhir saya melakukannya contoh ini saya bisa menemukan
diriku di bahagian pendamping.
Jadi, itu sebenarnya tidak sama seimbang antara A sampai M
dan N melalui Z. Tapi, hari ini, kita, pada kenyataannya, di M's,
alright begitu, sekarang aku di M's.
Tapi apa Takeaway saya sekarang hanya
sebagai manusia normal off dari jalan?
Di mana saya pergi selanjutnya untuk Mike Smith.
[Terdengar] Dan demikian, hanya mungkin pada setengah ini, ke kanan,
kerana S datang selepas M. Dengan demikian, terletak sini drama visual.
Itu tidak benar-benar merobek-robek menjadi dua, kanan.
Aku agak curang ke pusat.
Tapi, kita sekarang tahu bahawa Mike setidaknya tidak di setengah itu.
Kami benar-benar dapat membuang setengah dari masalah itu.
Dan aku pergi dengan masalah yang mendasar masih
hal yang sama, termasuk Mike Smith dalam sebuah buku yang sangat besar.
Tapi, masalahnya adalah sekarang setengah besar.
Kalau seribu halaman sebelum, sekarang punya 500.
Kau tahu apa, aku boleh melakukan hal yang sama lagi.
Aku bisa jenis secara rekursif atau berkali-kali melakukan hal yang sama.
Sekarang aku tidak cukup pada S. Aku ada di T. Dengan demikian,
oh aku pergi terlalu jauh.
Tapi, saya tahu sekarang bahawa Mike tidak ke kanan, akan ada
menjadi beberapa kelas suatu hari di mana Aku hanya tidak bisa robek hal bendungan,
Aku yakin.
Tapi sekarang, aku tahu dia tidak ke kanan.
Jadi, sekarang masalahnya telah empat.
Jadi, saya sudah pergi dari ribu untuk 500-250 halaman.
Dan lagi, jika anda meneruskan logik, meneruskan matematik,
Aku memotong ini masalah dalam setengah, setengah,
setengah sampai akhirnya aku baik akan tidak termasuk Smith
sama sekali, tidak mungkin, atau aku akan untuk mencari satu yang saya cari.
Tapi, itu, kemudian, memunculkan soalan, apakah ini lebih baik
berbanding dengan pendekatan mudah saja berkata, Anda tahu, A, nope, B,
tidak ada, bermula dari kiri ke kanan akan linier melalui buku?
Well, secara naluriah ya.
Ini akan jauh lebih cepat.
Tapi, berapa banyak?
Nah, jika saya mempunyai laman seribu buku telefon atau katakanlah 1.024
bagi anda yang seperti kekuatan dari dua,
berapa banyak masa yang boleh saya harus membagi masalah ini
setengah sebelum mendapati Mr Smith?
>> Sepuluh.
>> David: Jadi, sepuluh, benar.
Jika anda mempunyai 1.024 halaman dan anda membaginya menjadi dua, dua,
setengah, setengah, saya melakukannya sepuluh kali yang bermaksud aku pergi
1,000 laman ke orang yang saya cari
untuk di laman ternyata hanya sepuluh.
Dan yang agak rapi, tetapi, anda tahu, jika anda berfikir
tentang hal ini anda telah melakukan ini semua kehidupan anda.
Ini bukan yang dramatik.
Tapi sekarang, bahawa buku telefon tidak hanya untuk Boston,
itu untuk semua AS atau seluruh dunia
dan hal ini milyaran halaman di dalamnya,
jadi bayangkan sebuah buku telefon dengan empat bilion halaman.
Berapa banyak membalik halaman saya harus dilakukan secara maksimum
untuk mencari Mike Smith empat bilion laman buku telefon?
>> Log base dua.
>> David: Jadi yeah, jika anda jenis
jenis matematik ini adalah log base dua.
Tapi, jika anda berfikir empat bilion menjadi dua bilion
untuk satu bilion, sehingga setengah bilion.
Maksudku, yang benar-benar pergi whittles sendiri
down pretty darn segera.
Bahkan dengan 32 halvings dari buku telefon bahkan
daripada empat bilion, saya akan turun ke satu halaman.
Dan saat itulah hal ini semakin kuat, saya pikir.
Itulah saat ini mendapatkan idea-idea menarik
apabila anda boleh mempunyai empat bilion laman masalah
dan dalam 32 langkah anda dapat mencari orang yang anda cari.
Dan, itulah yang kita maksud ketika kita mengatakan bahawa anda akan belajar bagaimana
untuk berfikir lebih hati-hati, lebih algorithmically,
lebih cerdas tentang menyelesaikan masalah.
Dan kembali sangat besar ketika Anda benar-benar boleh melakukan ini,
dan lagi, untuk ini titik googles
dunia yang Facebooks yang mewah
mempunyai dataset besar.
Anda harus pendekatan masalah ini
dengan cara ini dinyatakan itu hanya tidak akan berjaya.
Nah, apa yang membuat mahasiswa benar-benar ingat?
Aku, kami ingin melakukan hal-hal yang yang sedikit kadang-kadang konyol
untuk jenis menghilangkan kegembiraan
dari apa yang dinyatakan banyak bahan-bahan baru.
Jadi, dia benar-benar, ini bekas pelajar mengutus aku link ini
yang saya pergi ke depan, hanya untuk menendang dan kemudian menyesalinya
pada akhirnya, menarik di utube di sini.
Jadi, saya fikir saya akan berkongsi apa seorang saintis non-komputer bermaksud
ketika dia air mata buku telefon setengah.
[Tertawa]
[Diam]
[Tak terdengar]
>> Kau tahu lebih dari 200 halaman, bagus garis yang bersih, air mata yang sah.
[Tertawa]
>> David: Jadi, saya kira, jalan bekerja terlalu.
Jadi, apa yang saya keluar dari ini Tentu saja bertahun-tahun yang lalu
ya, Shuttleboy, dan kemudian ya gelaran sarjana dalam ilmu komputer,
dan kemudian ya sebuah PHD dalam ilmu komputer.
Dan bukan itu yang kita cuba
untuk menukar sebahagian besar pelajar dalam kursus ini ke dalam.
Sebahagian besar dari anda dalam Tentu saja tidak akan pergi
pada besar dalam ilmu komputer.
Beberapa dari anda mungkin kecil, tapi untuk beberapa
daripada anda ini akan kursus terminal.
Dan itu baik-baik saja kerana program ini adalah, pada kenyataannya,
berstruktur dengan cara di mana bahkan jika anda hanya membayar yuran anda
selama beberapa bulan dan Anda benar-benar fokus dalam
dan anda benar-benar memuat sebanyak keluar dari program ini seperti yang anda boleh,
Anda akan, pada kenyataannya, dilengkapi dengan baik untuk kembali
untuk dunia anda ekonomi, biologi, psikologi,
diterapkan matematik, dan benar-benar memanfaatkan apa yang akhirnya
sebagai sebuah program yang menarik sebagai kami berharap dapat konseptual
karena secara fundamental praktikal.
Dan itu juga adalah sesuatu yang mungkin agak jarang dijumpai.
Saya pikir saya mau berbagi beberapa Komen bahawa pelajar
dari musim gugur yang lalu dimasukkan ke dalam ini Manual isyarat tahun terakhir ketika ditanya
tentang apa yang ingin anda untuk memberitahu para calon mahasiswa.
Nah, jika anda belum melihat ulasan ini,
kata seorang mahasiswa program ini akan memakan masa yang lumayan
masa anda up.
tetapi, jika anda memasukkan karya anda ke seluruh dunia baru, secara keseluruhan,
jika anda meletakkan pekerjaan, jika anda menempatkan pekerjaan ke dalam, baik,
jadi ini adalah tata bahasa nya bukan milikku, jadi jika anda menaruh, dimasukkan ke dalam kerja,
seluruh dunia baru akan terbuka kepada anda.
Amazing betapa aku belajar hanya dalam 12 minggu.
Seorang murid lain menulis, Anda lebih baik mengambil ini
atau anda akan menyesalinya.
Lain menulis, lebih sedikit terus terang, ia akan menendang bokongmu
dan membuat anda merasa besar.
Dan akhirnya, yang satu ini mungkin sesuatu yang saya hanya boleh
menunjukkan secara bertulis, namun, kedua dari bawah sini.
[Tertawa]
Jadi, aku tidak yakin apakah Anda punya banyak teman
yang mengambil kursus ini tapi kami semacam melakukan banyak kerosakan
untuk pelajar tahun lalu.
Kami diperkenalkan, di awal, beberapa kuliah, seorang beberapa kuis,
sebuah set beberapa masalah, idea ini lolcats.
Anda tidak dapat melihat apa Aku bisa lihat di sini
tapi suatu saat anda akan melihat seorang pemuda bernama kucing bahagia
yang merupakan pemimpin yang Lolcat disebut.
Ini adalah salah satu bodoh ke depan internet
yang menurut saya terus terang dikotomi yang
antara dua lelaki di sini dan apa yang kita sekarang mempunyai
pada paparan adalah mungkin.
[Tertawa]
Salah satu yang paling tepat menggunakan teater ini sampai saat ini.
Dan, kenapa tidak kita membuat sedikit lebih nyata sedikit lebih peribadi
idea ini benar-benar menyelesaikan masalah yang lebih efisien.
Masalah sederhana pada hari pertama setiap sekolah untuk duduk
atau berdiri dan mula menghitung pelajar,
roll kanan panggilan macam.
Nah, yang paling naif tapi tetap,
amat benar pendekatan bahawa guru boleh turun adalah satu, dua,
tiga, empat, lima, enam, tujuh,
dan kami akan berada di sini beberapa waktu.
Jadi, apa yang marjinal perbaikan ini bahkan
bahawa anda mungkin dilakukan sebagai anak-anak?
Bagaimana anda mengira orang lebih cepat?
Dan, jangan mula membaca dari Arahan saya sendiri?
Apa yang akan anda dilakukan sebagai anak-anak?
Mulai menghitung berpasangan, ke kanan, seperti jadi aku cukup bagus di dua,
empat, enam, lapan, sepuluh, 12.
Jadi, itu adalah sesuatu menarik betul.
Jadi, banyak yang bagaimana perbaikan adalah bahawa di sana?
Jadi, ini jelas faktor dua.
Butuh waktu setengah banyak masa.
Tapi, anda tahu apa, kerana kami akan mencari sepanjang semester ini,
masalah besar, seperti mempercepat anda waktu berjalan hanya dengan faktor
dua adalah tidak semua yang menarik
kerana analog di sini di dunia komputer
bahawa aku adalah aku CPU komputer, baik sih,
jika aku hanya menunggu 12 bulan, 18 bulan,
Aku komputer hanya akan menjadi boleh secara alami, dengan nombor
dari gigahertz saya dalam diriku untuk dapat
untuk mengira orang di bilik ini lebih cepat.
Jadi, ini macam, jenis ini dari speedups linier seperti faktor
dua faktor tiga, bahkan faktor sepuluh, siapa yang peduli?
Benar, kita dapat membuang masalah hardware.
Kita boleh menunggu hal-hal yang keluar.
Kita bisa mengembangkan mesin lebih cepat.
Tapi, intelektual, yeah yang agak cerdas
tetapi tidak benar-benar perubahan fundamental
masalah.
Aku masih akan dari kiri ke kanan, depan ke belakang.
Ini benar-benar algoritma yang sama.
Tapi, saya menawarkan bahawa kita bisa berbuat lebih baik.
Kita boleh melakukan lebih cerdas dari ini
dan melakukan mendasar merupakan pelaksanaan lebih cepat.
Tapi, untuk menunjukkan ini,
kami memerlukan anda untuk humor kita hanya sesaat.
Dan di titik ini
dimana akan aku berbicara kurang dan anda berbicara lebih.
Tapi aku ingin kau menjalankan langkah pertama bersama-sama,
yang jika anda akan humor kami, sila berdiri.
Penggunaan di sini, di papan, anda tahu adalah, oke,
beberapa dari anda telah untuk duduk.
Sesungguhnya orang-orang di belakang, sana kita pergi, baik-baik saja.
Terima kasih.
Jadi, program di sini adalah sebelum anda.
Anda sekarang komputer melaksanakan program ini.
Ini cukup diri jelas pada masa ini.
Ya, anda harus menjadi nombor satu.
Mendapatkannya? Benar, banyak di antara anda mungkin berfikir ini sudah
Lagi pula, pelajar-pelajar tahun pertama.
Jadi, berfikir untuk diri sendiri, Anda nombor satu.
Jadi, langkah ketiga di sini, sepasang mati dengan berdiri seseorang,
Anda menambah dua nombor bersama dan mengadopsi jumlah yang
sebagai nombor baru anda dan kami akan melakukan pemeriksaan kesihatan jiwa.
[Suara dari] orang ramai
Adakah anda tahu berapa banyak yang kita miliki?
>> [] Tak terdengar
>> Tidak terdengar] [.
>> Kita perlu mempunyai kunci jawaban.
[Diam]
>> Yeah.
[Suara dari] orang ramai
>> Daud: Pada titik ini algoritma harus
mereda.
[Suara dari] orang ramai
Mungkin kita harus pergi dengan pendekatan saya setelah semua.
>> 43.
>> 163.
>> David: Ooh geometri dalam depan 300 orang ditambah.
[Tertawa]
Apa yang kami akhir pengiraan akan?
>> 180.
[Tertawa]
>> 1,200.
>> 386.
>> Daud: 386, dan Anda berdiri yang terkini?
Apakah semua orang bahawa?
Adakah anda tahu jawapannya?
>> Apa?
>> Daud: Adakah anda tahu apa jawabannya?
Kami tidak membawa kunci jawaban dengan kami sehingga,
386 pada kenyataannya justru jawapan yang betul untuk pertama kalinya.
[Bersorak]
[Tepuk tangan]
Tidak apa-apa.
[Tepuk tangan]
Sangat, sangat manis.
Jadi, apa yang Takeaway
kerana yang pasti merasa sedikit lebih lambat
dari saya sangat mudah
tetapi tetap amat benar pendekatan hanya akan onesies
dan twosies dan hanya mendapatkannya dilakukan dengan dari kiri ke kanan.
Tapi, apa yang kita benar-benar hanya lakukan di sana?
Nah, jika ada kasar, katakanlah, 400 daripada anda berdiri
pada satu titik, dan kemudian setengah daripada anda, sangat cepat,
dari apa yang saya boleh hantar, ingin duduk.
Jadi, setengah daripada anda duduk, kami pergi 400-200 kemudian
hingga 100 lalu ke 50 kemudian ke 25.
Jadi sekali lagi, ada yang memisahkan sama
dan menawan idea kita telah dengan buku telefon.
Sekali lagi, dengan iterasi setiap kita dibelah dua saiz masalah,
kita dibelah dua itu, kita dibelah dua itu.
Jadi, secara teori, algoritma anda seharusnya sudah jauh lebih cepat
dari pendekatan linier saya kerana pendekatan saya akan mengatakan telah diambil
400 langkah atau mungkin jika saya 200 langkah sedikit pandai.
Tapi, anda pasti sudah diambil jauh lebih sedikit, ke kanan 400-200,
100, 50, 25, 13, enam; sehingga kurang dari sepuluh langkah
di akhir versus saya 200 atau 400.
Dan ada benih dari benar-benar menarik idea.
Dan ya, secara matematik apa yang anda hanya lakukan adalah sesuatu yang sangat
sedikit logaritma dalam alam dengan dasar masuk dua,
kami dibagi dalam dua dan dua lagi.
Dan kami akan kembali ini kemudian di semester ini.
Namun di situlah letak lagi yang sangat cerdas pelaksanaan.
Dan, kita hanya menggaruk permukaan
dari yang sangat cerdas yang sangat cerdas cekap pendekatan
untuk masalah yang kita akhirnya bisa menyelesaikan.
Jadi, yang adalah orang yang anda hanya berbual dengan jika sebentar?
Sebuah keprihatinan bersama dalam suatu kursus seperti ini adalah semua orang bahawa
di sebelah kiri anda dan semua orang ke kanan
Anda harus secara jelas tahu lebih banyak dari anda.
Yah, itu benar-benar tidak terjadi.
Dan pada kenyataannya, dalam beberapa tahun terakhir,
kursus ini telah melakukan usaha bersepadu untuk mencapai
kepada mereka yang kurang nyaman, sehingga untuk berbicara.
Dan dengan itu, kita bererti tidak orang yang belum pernah menyentuh komputer
dahulu kerana itu benar-benar sukar untuk mencari
di sini hari ini, tetapi orang-orang yang menggunakan email,
menggunakan Facebook, mungkin bahkan sekarang
tetapi tidak pasti apa yang harus dilakukan
ketika sesuatu berjalan salah atau ketika mereka diminta
tentang apa-apa teknologi, Anda tahu, tangan naik
atau mereka jenis push peranti keras
untuk seorang teman yang mungkin lebih berpengalaman dalam hal itu daripada mereka.
Well, ini adalah beberapa statistik dari semester tahun lalu.
Jadi, ketika ditanya, ketika kita tanya kami 400 pelajar jadi tahun terakhir,
Anda tahu, apa tahap anda kemudahan datang ke dalam kelas ini,
34% baik menulis sendiri turun seperti di antara mereka yang kurang selesa.
Jadi, jika anda telah datang ke ini bilik dan masih berfikir sekarang,
itu, anda tahu apa, istilah menjelaskan saya kurang selesa,
tahu bahawa anda berada di sangat baik syarikat.
Tapi, menyedari juga bahawa, jika Anda akan datang dalam kursus ini
dengan latar belakang komputer ilmu pengetahuan dan anda benar-benar
yang geek di sekolah menengah dan sekolah tinggi yang menulis kod
dan pengajaran sendiri Bahasa, baik itu juga boleh
kerana pasti ada khalayak berukuran trivial
dengan latar belakang sebagai baik, sekitar 13% jangka, lalu.
Dan kemudian, semua orang ada lain, seperti seseorang
yang tidak berfikir mereka kurang selesa,
mereka pasti tidak berfikir mereka lebih selesa
tapi mereka hanya dalam suatu kursus untuk mendapatkan sesuatu dari itu.
Jadi, kursus ini menyedari tidak cukup menarik spektrum
pelajar.
Dan, untuk menempatkan ini di lebih istilah konkrit, 71% daripada pelajar,
tahun lalu, telah sifar kursus di belakang mereka.
Jadi, jika anda memasuki Tentu saja semua orang berfikir oh
yang mengambil CS50 adalah ilmu komputer jagoan
di sekolah tinggi, itu tidak terjadi.
Kebanyakan orang mungkin hanya tertarik di dalamnya.
Dan beberapa, ya, benar-benar telah mengambil beberapa program, beberapa,
atau sekurang-kurangnya satu orang tahun terakhir telah diambil lima
program sebelumnya.
Jadi, kita pasti mempunyai beberapa outlier tapi sekali lagi daging
kurva yang ada dalam mereka nilai lebih rendah sama sekali.
Dan lain yang menarik statistik kita berkongsi
selama beberapa masa lalu tahun adalah nisbah gender.
Jadi, secara historis, sekurang-kurangnya di ilmu komputer, ada sedikit
dari laki-laki perempuan miring.
Aku beberapa tahun yang lalu itu jauh lebih ditandai dari tahun lalu.
Jadi, kita sekarang sudah hampir pada peringkat 40%.
Dan jika aku bisa melempar menuruni cabaran hanya untuk demi
mempunyai satu pertiga pie chart tahun depan,
itu bahkan lebih adil.
Saya akan menunjukkan bahawa benar-benar ada alasan
dari program perspektif bahwa laki-laki
dan perempuan seharusnya tidak harus mendaftarkan
semacam ini tentu saja.
Dalam jumlah yang relatif sama dan menyedari menjadi 38 peratus,
48 peratus, kita sebenarnya hanya senang melihat bahawa kami hampir
pada saat itu, sekurang-kurangnya, bahkan statistik nilai 50%.
Jadi, jika anda, pada kenyataannya, wanita, melakukan sisanya juga boleh menjamin
yang ini tidak, pada kenyataannya, kelas didominasi laki-laki.
Well, ini hanya supaya terjadi menjadi ulang tahun 20 CS50's.
Aku, juga terima kasih.
[Bersorak]
[Tepuk tangan]
Itu sangat baik daripada anda kerana kami membawa kuih
anda sebenarnya.
Jadi, bila anda keluar di sini hari ini,
Anda benar-benar akan mendapatkan kesempatan untuk bertemu banyak
dari program pengajaran rakan yang akan datang-datang
di lorong.
Dan ya itu akan menjadi menyenangkan semacam cara insentif
mesyuarat fellows mengajar.
Tapi, kita melakukan perjalanan sampai kedai roti kecil
dan lagi konsisten dengan Tentu saja sifat suka bermain sementara
tetap mengharapkan jumlah trivial
kerja sementara kita bersenang-senang itu.
Tapi, kami mempunyai salah satu kuih ini untuk anda.
[Tertawa]
Jadi, jika anda tertawa itu benar-benar baik kerana bahkan
jika anda di antara salah satu kurang nyaman mereka
setidaknya kau menyedari hal itu.
Bagi anda di 14 peratus mungkin lebih suka rasa ini.
[Tertawa]
Kemudian, jika anda tidak tahu apa neraka yang sedang berlaku sekarang,
kami juga mempunyai untuk sisa anda.
[Bersorak]
[Tepuk tangan]
Jadi, yang sedang dipotong-potong menjadi potongan-potongan luar saat kita bicara.
Jadi sekali lagi, mari kita hal-hal yang membuat takik
dan sekurang-kurangnya memperkenalkan beberapa penyewa asas
bahawa kita kemudian akan mengambil untuk diberikan
di sisa semester ini.
Jadi, kita semua mungkin tahu bahawa akhirnya komputer mendidih
bawah sifar dan entah bagaimana yang, hal-hal yang disebut bit.
Apa artinya?
Nah anda dapat memikirkannya terus terang sebagai bola lampu,
sedikit adalah bola lampu itu baik pada atau batal.
Ini sebuah butang, itu baik pada atau batal.
Sekarang, saintis komputer umumnya memikirkan mati
sebagai nombor sifar dan sewenang-wenangnya,
dan idea sebagai satu.
Jadi, jika anda membaling butang lampu
pada satu giliran it off itu sifar.
Atau, dengan kata lain, putar cahaya pada itu nilai
yang benar mematikannya itulah nilai false.
Jadi, ini hanya sinonim.
Pada akhir hari, ya, semua perhitungan, semua hal yang terjadi
di bawah kap dalam komputer tidak akhirnya mendidih
turun ke sifar dan yang.
Dan, apabila anda berhenti memikirkannya,
it's pretty bendungan luar biasa apa dunia telah dilakukan
dengan bangunan asas blok termasuk beberapa
dari peranti anda memegang di tangan anda.
Nah, kenapa sifar dan yang berguna?
Ya Tuhan, bahkan dalam nyata dunia kita
sekurang-kurangnya sepuluh digit, sifar sampai sembilan.
Mengapa begitu terhad?
Baik dalam peranti keras hal itu sangat mudah.
Ini jauh lebih mudah merupakan dua negara, benar.
Jika komputer disambungkan ke dinding, biasanya,
Anda mempunyai ini mudah sumber alam binari.
It's on atau off.
Kuasa mengalir atau tidak.
Jadi, itu satu jenis alasan awal
bahawa dunia itu hanya dengan sifar dan yang ada di komputer.
Tapi, anda boleh menggunakannya sebagai blok bangunan.
Jadi, ini sebenarnya sedikit kecil di skrin sini
tapi kita boleh mengira dalam binari atau kita boleh mewakili apa yang kita inginkan
dalam binari seperti yang kita boleh, berkata, perpuluhan, seperti kita boleh,
bahkan sebenarnya, dengan huruf abjad.
Jadi, inilah sistem cepat.
Hanya dalam masa beberapa minit Anda sekarang akan tahu bagaimana cara menghitung,
bagaimana menulis, bagaimana binari berbicara banyak
seperti laptop anda sendiri.
Nah, anda miliki, di dunia binari, hanya semacam
seperti sekolah dasar medan atau nilai-nilai.
Jadi, di sekolah dasar kita belajar ini adalah yang medan ini
medan puluhan, yang ratusan medan dan sebagainya.
Dengan kata lain, mengapa adalah jumlah kita tahu
sebagai 123 nombor 123?
Well, guru saya mengajar ini adalah yang medan,
ini adalah puluhan, ini adalah ratusan.
Nah apa artinya?
Nah, untuk mengetahui apa nilai total
dari apa yang dinyatakan string digit,
hanya hash tanda di papan tulis.
Yah, kita memiliki satu 100, jadi itu 1 kali 100
dan kemudian ditambah apa dua 10's
jadi itu 2 kali 10 dan ditambah lagi tiga orang, jadi itu 3 kali 1, oke,
jadi aku sepertinya mendapatkan kembali ke tempat saya mulai.
Tapi, ini proses yang sangat mudah hanya mengalikan angka
oleh nilai medan adalah apa yang binari
semua tentang.
Tapi, dalam binari anda menggunakan kekuatan dua tidak kekuatan sepuluh.
Jadi, inilah serangkaian lapan bola lampu.
Komputer saintis hendak menggunakan nilai-nilai seperti dua dan lapan dan 16
dan 24 dan 32 kerana mereka semua nilai-nilai umum yang nyaman
digunakan.
Jadi, ketika kita berbicara sekitar lapan nilai-nilai
dalam urutan ini seperti disebut bait.
Dan hari ini kita jarang bertutur dalam bytes adil,
kita bicara gigabyte Mb dan terabyte hari ini.
Tapi semua akhirnya hal yang sama.
Berikut adalah lapan bit AKA pertama bait, jargon hanya sederhana.
Jadi, semua bola lampu adalah mati.
Jadi, matematik itu sebenarnya sangat mudah.
Jadi ada di sebelah kanan, walaupun kecil untuk melihat,
adalah medan seseorang, berpasangan, yang merangkak, yang lapan,
itu 16S, 32s, 64s, 128s.
Baiklah, mungkin sukar menghafal pada awalnya
tapi itu hanya dikalikan oleh dua dari kanan ke kiri.
Jadi, anda sentiasa boleh semula ini.
Yah, mereka semua pergi begitu itu 0 kali placeholder,
0 kali placeholder.
Jadi, ini nombornya 0 terwakili dalam binari.
Dengan kata lain, bagaimana anda tulis nombor kita tahu
sebagai 0 dalam binari?
Well, satu, dua, tiga, empat, lima, enam, tujuh, lapan,
dan teknikal sahaja seperti dalam perpuluhan,
semua sifar terkemuka, mereka tidak menambah sesuatu
dengan rumus mereka hanya ada
kerana kita sewenang-wenangnya memutuskan kami ingin lapan
hal ini berturut-turut, benar.
Jika mereka sedang fizikal objek, kita mempunyai lapan
sehingga mereka harus semua pergi.
Jadi, kita boleh baru saja lolos dengan satu sifar.
Nah bagaimana anda mewakili nombor satu?
Yah, secara naluri anda akan untuk menghapuskan salah satu switch.
Kau akan mengubah bola lampu di.
Jadi, ada user yang pertama kerana kita sekarang menempatkan satu,
bola lampu yang ada di, dalam kedudukan seseorang.
Bagaimana kita akan untuk mewakili dua?
Yah, kita benar-benar akan melemparkan dua switch sekarang setidaknya
versus negara ini, kita harus menukar
dalam medan kedua itu mematikan yang medan
dan sekarang kami mempunyai nilai satu di medan berpasangan.
Jadi, itulah jumlah keseluruhan nilai dua.
Sekarang, latihan mental cepat; apa yang akan terjadi
dengan urutan seterusnya?
Bagaimana saya mempresentasikan nombor tiga?
Yah, aku butuh satu dari medan berpasangan,
salah satu daripada bertiga medan dan ha ah.
Jadi, sekarang aku sudah bertambah yang satu.
Dan sekarang, ini sama dasar pola berulang.
Apa nombor empat?
Yah mari kita lihat, saya hanya perlu pertama dalam medan merangkak
dan kemudian sifar di yang berpasangan dan yang.
Jadi, terus seperti itu.
Dan, itu hanya ini urutan langkah.
Dan dalam pengertian binari benar-benar tidak semua yang rumit.
Di atas sana kita mempunyai lapan sifar.
Berikut yang telah kami tujuh sifar dan satu.
Berikut yang telah kami enam sifar, satu,
dan sifar dan itu binari.
Sekarang, untungnya, kami komputer saintis, pengaturcara kami
oleh keperluan akhir tidak akan sering menulis dalam binari,
bertutur dalam binari, berfikir dalam binari
kerana kami telah membina banyak lapisan dari traksi di atas itu.
Bahkan, orang jarang berbicara tentang bit kecuali
dalam konteks rangkaian mereka berbicara tentang bait
kerana sedikit pun, tidak berguna,
lapan bit hari ini masih tidak berguna,
tapi setidaknya lapan bit,
satu bait setidaknya mendapatkan kita ke arah lebih bermanfaat unit
saiz.
Tapi, ketika kita mula mencari bawah kap mobil,
ketika kita masalah-masalah tertentu seperti melihat gambar
dan mungkin melihat lalu lintas rangkaian,
itu akan menjadi menarik
untuk mengetahui bagaimana anda mewakili data kerana anda akan
harus mencari cara untuk memaparkan bahawa maklumat yang sama.
Dan, pada kenyataannya, kita, jika kita hanya memiliki sifar dan yang,
bagaimana kita menjalani mewakili, mengatakan huruf abjad?
Yah, kita akan harus mempunyai beberapa pemetaan
antara binari dan huruf.
Tapi itu seperti yang belum jelas.
Tapi untuk saat ini palu rumah dan memberikan saya berehat
dari berbicara di, saya pikir Aku berhenti sejenak dan melihat
jika kita tidak boleh merekrut lapan relawan,
satu bait lapan orang.
Bolehkah saya mendapatkan lapan orang untuk yang tidak terlalu canggung
datang ke atas.
baik, baik satu, dua, tiga, empat, lima, enam, tujuh,
sangat antusias lapan lapan, datang ke bawah.
Jadi, kamu semua, untuk hanya saat di sini, oh dan anda mempunyai
harus bersedia untuk tidak berada di internet kerana ada
sebenarnya kamera di bahagian belakang bilik ini.
Jadi, kembali sekarang jika anda tidak mahu berada di,
halo ibu, untuk selama-lamanya.
Jadi, mari kita lihat, anda di sini akan menjadi medan 128.
Dan biarkan aku meminta anda hanya terus ini sebelum anda.
Dan sebenarnya, jika anda boleh scooch cara ini hanya sedikit
sedikit, maka saya akan menyingkir anda.
Anda akan medan 64's,
Anda akan menjadi 32's medan dan 16's.
32's, 16, 8, 4's, 2's dan 1's.
Baik.
Jadi sempurna berbaris dengan pemegang tempat dari sebelumnya,
tapi kita perlu sedikit pemetaan, sehingga set up cepat.
Kita hanya perlu cara sewenang-wenangnya pemetaan nombor binari,
yang benar-benar dapat dikonversi sangat mudah untuk nombor perpuluhan.
Jadi kita perlu cara menukar nombor bagi huruf
jika komputer kita benar-benar akan menunjukkan kepada kita email
atau taip URL atau sebenarnya memaparkan maklumat bukan numerik.
Dan, dalam kenyataannya, ada suatu sistem untuk itu, itu namanya ASCII,
akronim yang maknanya tidak
begitu menarik, tapi yang utiliti.
Ini hanya pemetaan dari huruf ke angka
dan sebenarnya ada banyak lebih nombor di paparan,
dan kalian, tidak bimbang, tidak akan memiliki
untuk menguji dirimu dengan ini hanya dalam beberapa saat.
Tapi ada pemetaan antara nombor dan huruf
dan aku hanya akan mendapatkan kami mulai dengan menunjuk
keluar beberapa ini.
Jumlah bunga sekarang akan menjadi,
whoops, akan menjadi ini.
Whoops. Jadi, dalam medan ini di sini, aku tidak bisa untuk memperbesar
di secara bersamaan, kami telah perpuluhan.
Disember untuk perpuluhan.
Dan kemudian kita aksara di sebelah kanan.
Jadi jika aku melompat lebih ke ini medan, pikir itu agak kecil
pada paparan, jumlah 65 mewakili surat apa?
Modal A. Dan jumlah 97?
A. huruf kecil Baiklah.
Jadi dua saja, ke kanan, jadi jangan pulang dan cuba
mengingati grafik ASCII.
Ayo masa kuis, jangan cuba menghafal sebuah jadual ASCII.
Menghafal dua, 65 adalah modal A dan 97 adalah huruf kecil A.
Dan dari sana anda boleh Bootstrap diri anda untuk semua
yang lain abjad aksara.
Tapi semua jadual ini berkata, dan Aku hanya turun jadual ini
dari ASCIItable.com, ini adalah standard yang telah
sekitar bagi banyak orang, banyak, banyak tahun,
tapi kebanyakan komputer masih menggunakannya.
Apa yang sekarang kita miliki adalah sarana
pengekodan abjad maklumat dengan menggunakan apa yang
akhirnya berangka.
Jadi, jika orang-orang ini hanya suis, bola lampu,
komputer, kita dapat benar-benar menyampaikan mesej.
Jadi anda masing-masing telah beberapa penggunaan di bahagian belakang.
Kita akan mempunyai tiga pusingan di sini di mana orang-orang ini akan
mengeja dalam bahasa Inggeris, dalam ASCII,
mesej yang sangat singkat, Perkataan surat tiga.
Ini akan melibatkan mereka baik mengangkat tangan mereka,
dengan demikian mewakili satu atau hanya berdiri kikuk,
dengan demikian mewakili sifar.
Jadi mengapa kita tidak meneruskan segera dengan pusingan pertama
dan anda dapat meningkatkan atau tidak mengangkat tangan anda.
Jadi penonton tidak melepaskan dr kesukaran.
Nombor berapa yang mereka saat ini mewakili?
66. Benar.
Tidak sulit kerana kami mempunyai satu satu, tangan di medan 64s,
tangan di medan 2's.
64 kali satu ditambah dua kali pertama 66.
Mereka mewakili nombor 6, 832 00:35:48,254 ---> 00:35:52,264 which means the first letter is B. So not too bad, right? 833 00:35:52,674 ---> 00:35:53,234 Round two. 834 00:35:53,314 ---> 00:35:56,654 First letter was a B. 835 00:35:56,654 ---> 00:35:56,824 [Tertawa] 836 00:35:56,824 ---> 00:36:01,104 >> Seventy Nine. 837 00:36:02,454 ---> 00:36:04,374 >> David: Can someone second that? 838 00:36:04,374 ---> 00:36:04,924 Yes. All right. 839 00:36:04,924 ---> 00:36:10,084 So 79, which means it's now an O. So B,O. 840 00:36:10,084 ---> 00:36:10,984 There's a third letter. 841 00:36:10,984 ---> 00:36:13,284 Actually that is kind of, yeah. 842 00:36:14,114 ---> 00:36:14,644 Third round. 843 00:36:14,834 ---> 00:36:15,724 Third and final round. 844 00:36:15,864 ---> 00:36:19,594 What number is this? 845 00:36:22,244 ---> 00:36:23,374 I heard an 87. 846 00:36:23,674 ---> 00:36:24,394 Someone else agree? 847 00:36:25,434 ---> 00:36:25,924 All right, yeah. 848 00:36:26,134 ---> 00:36:27,764 This is in fact 87, which maps to, 849 00:36:27,764 ---> 00:36:30,984 and this is a very clever set up at 850 00:36:30,984 ---> 00:36:34,184 which point you all B, O, W, it's bow. 851 00:36:34,384 ---> 00:36:34,834 Very good. 852 00:36:35,104 ---> 00:36:37,194 So actually besides that little souvenir, 853 00:36:38,784 ---> 00:36:40,794 that was not a very enthusiastic applause, 854 00:36:40,794 ---> 00:36:42,004 so I'll take care of you. 855 00:36:42,254 ---> 00:36:44,074 So we do have a little something for these guys here now 856 00:36:44,074 ---> 00:36:44,764 that they just appeared 857 00:36:44,764 ---> 00:36:47,424 on center stage doing perhaps the geekiest thing they could. 858 00:36:47,914 ---> 00:36:49,894 So maybe if we could humor them if only 859 00:36:49,894 ---> 00:36:51,364 because I'm feeling a little bit awkward now. 860 00:36:51,364 ---> 00:36:52,954 A little round of applause for these guys here. 861 00:36:53,494 ---> 00:36:59,624 [Tepuk tangan] 862 00:37:00,124 ---> 00:37:00,764 All yours. 863 00:37:00,764 ---> 00:37:01,124 All right. 864 00:37:01,284 ---> 00:37:02,314 Thank you very much. 865 00:37:02,364 ---> 00:37:08,554 So, so, it turns out that we can take this one step further, 866 00:37:08,764 ---> 00:37:11,624 but you are now entering a community of people 867 00:37:11,794 ---> 00:37:13,954 who understand things like this. 868 00:37:14,494 ---> 00:37:23,164 [Diam] 869 00:37:23,664 ---> 00:37:25,344 It's slowly spreading, yes? 870 00:37:25,479 ---> 00:37:27,479 [Tertawa] 871 00:37:27,614 ---> 00:37:29,274 It's not cool that you understand this now. 872 00:37:29,714 ---> 00:37:31,944 So we've already done some damage here today, but yes, 873 00:37:32,394 ---> 00:37:34,354 there is now such a thing as geek humor 874 00:37:34,354 ---> 00:37:36,864 that you might just catch a little bit more on to. 875 00:37:36,864 ---> 00:37:38,944 So what are we going to do throughout this semester? 876 00:37:39,154 ---> 00:37:44,044 So there's 12 weeks, zero index, so 13 weeks in total. 877 00:37:44,044 ---> 00:37:45,354 You'll find throughout the semester 878 00:37:45,354 ---> 00:37:48,244 that computer scientists tend to count starting from zero 879 00:37:48,244 ---> 00:37:49,964 for reasons that will soon become clear. 880 00:37:50,174 ---> 00:37:52,434 But what we're going to do this week, starting this Friday, 881 00:37:52,434 ---> 00:37:54,304 is introduce you to programming. 882 00:37:54,304 ---> 00:37:56,954 Now you may already be coming at this course with a background 883 00:37:56,954 ---> 00:37:58,644 in the same, and that's perfectly fine, 884 00:37:58,644 ---> 00:37:59,714 but we'll also be able 885 00:37:59,714 ---> 00:38:01,844 to introduce some more sophisticated topics 886 00:38:01,844 ---> 00:38:03,804 than are typically covered, things like events 887 00:38:03,804 ---> 00:38:05,774 and threading, so just to toss out a couple 888 00:38:05,774 ---> 00:38:07,264 of buzz words for those unfamiliar. 889 00:38:07,404 ---> 00:38:09,494 But what we're going to do is not dive 890 00:38:09,494 ---> 00:38:12,764 into what the typically traditional language like Java 891 00:38:12,764 ---> 00:38:17,084 or C++ or C sharp catch phrases that you might have heard 892 00:38:17,084 ---> 00:38:19,444 in the past, but we're going to use a programming environment, 893 00:38:19,444 ---> 00:38:21,034 a graphical programming environment 894 00:38:21,034 ---> 00:38:23,934 that was actually developed by MIT's media lab. 895 00:38:23,934 ---> 00:38:26,354 And this is an environment that allows you to program, 896 00:38:26,354 ---> 00:38:30,024 quite literally, by dragging and dropping puzzle pieces 897 00:38:30,024 ---> 00:38:31,444 that fit together logically 898 00:38:31,444 ---> 00:38:33,634 that lets you implement these things called loops 899 00:38:33,634 ---> 00:38:35,494 and conditions and Boolean expressions 900 00:38:35,734 ---> 00:38:38,664 and you can actually, on day one, after this Friday, 901 00:38:38,884 ---> 00:38:40,834 write a program that actually some 902 00:38:40,834 ---> 00:38:42,394 of your friends might care about. 903 00:38:42,484 ---> 00:38:43,604 So in yester year, say 904 00:38:43,604 ---> 00:38:46,674 when you've taken a computer science course in high school, 905 00:38:46,874 ---> 00:38:49,504 odds are one of your first programs was the equivalent 906 00:38:49,504 ---> 00:38:51,704 of hello world, like wow mom, 907 00:38:51,704 ---> 00:38:54,864 I just made the computer type some characters on the screen. 908 00:38:54,864 ---> 00:38:56,984 It's a very underwhelming experience. 909 00:38:57,294 ---> 00:39:00,824 Much more interesting is it to implement a little something 910 00:39:00,824 ---> 00:39:04,114 like this, as one of last year's students did. 911 00:39:04,644 ---> 00:39:07,114 So I give you the work of a former classmate. 912 00:39:07,434 ---> 00:39:10,954 It's a love story, of sorts, about dancing cookies. 913 00:39:11,494 ---> 00:40:25,544 [Musik] 914 00:40:26,044 ---> 00:40:27,684 So this was actually from a student 915 00:40:27,714 ---> 00:40:29,004 who had never programmed before. 916 00:40:29,004 ---> 00:40:30,854 And just to give you a teaser of this interface, 917 00:40:30,854 ---> 00:40:33,104 and we're only going to use this for one week time, 918 00:40:33,104 ---> 00:40:35,114 really to get the comfort levels up 919 00:40:35,114 ---> 00:40:36,294 and to really get folks excited 920 00:40:36,294 ---> 00:40:38,484 about what you can actually make these machines do, 921 00:40:38,694 ---> 00:40:41,244 this is an environment where you'll be programming by, 922 00:40:41,244 ---> 00:40:43,034 for at least a week, just dragging 923 00:40:43,034 ---> 00:40:45,154 and dropping puzzle pieces that fit together, 924 00:40:45,334 ---> 00:40:47,144 as we'll see, in a logical fashion. 925 00:40:47,144 ---> 00:40:50,114 And it lets you do fun, silly things quickly. 926 00:40:50,114 ---> 00:40:52,554 And for any of you who are a little bit familiar with things 927 00:40:52,554 ---> 00:40:56,564 like Java and C++, it's usually a good semester or two 928 00:40:56,564 ---> 00:40:59,754 or three before you finally get to start writing something 929 00:40:59,754 ---> 00:41:02,884 that another person might actually enjoy watching. 930 00:41:02,884 ---> 00:41:06,674 Well, in week one of the course, or the second week, zero index, 931 00:41:06,834 ---> 00:41:09,214 where we dive into a little more traditional environment. 932 00:41:09,214 ---> 00:41:10,854 In this course we'll spend much of our time 933 00:41:10,854 ---> 00:41:13,454 on a language called C. This is one 934 00:41:13,454 ---> 00:41:15,634 of the earliest languages that, unlike Java, 935 00:41:15,914 ---> 00:41:19,924 actually gives us much greater access for better or for worse, 936 00:41:19,924 ---> 00:41:22,604 to manipulating hardware and actual memory, 937 00:41:22,604 ---> 00:41:24,204 and we can do a lot of damage with that. 938 00:41:24,384 ---> 00:41:27,974 In fact, any time you read of web servers being exploited 939 00:41:27,974 ---> 00:41:29,524 or computers being hacked into, 940 00:41:29,754 ---> 00:41:32,254 very often to this day it's the result 941 00:41:32,464 ---> 00:41:36,804 of people having run software in a language called C or C++ 942 00:41:37,164 ---> 00:41:41,334 without sufficient care given to what are called buffer overruns 943 00:41:41,334 ---> 00:41:44,934 or lengths of arrays, so some fairly technical concepts 944 00:41:44,934 ---> 00:41:46,544 that are not that hard to understand, 945 00:41:46,764 ---> 00:41:49,634 but there's been a lot of humans making a lot of mistakes 946 00:41:49,634 ---> 00:41:53,074 for years and with this language we'll actually understand some 947 00:41:53,074 ---> 00:41:55,514 of those security implications. 948 00:41:55,774 ---> 00:41:57,354 But each week, typically, 949 00:41:57,354 ---> 00:41:59,774 we'll introduce also an interesting domain 950 00:41:59,774 ---> 00:42:01,784 that will inspire that week's problem set. 951 00:42:01,784 ---> 00:42:06,004 So we'll also take a look this week at the field of cryptology, 952 00:42:06,244 ---> 00:42:10,074 cryptanalysis, the notion that you can encipher information 953 00:42:10,074 ---> 00:42:12,024 in such a way that people can't read your messages, 954 00:42:12,374 ---> 00:42:14,524 but if clever enough perhaps you can, in fact, 955 00:42:14,584 ---> 00:42:16,934 crack what are otherwise secret messages. 956 00:42:17,154 ---> 00:42:20,674 In week three we'll then look at some basic fundamentals 957 00:42:20,674 ---> 00:42:23,404 of computer science like searching and sorting 958 00:42:23,404 ---> 00:42:25,934 and we'll actually look at this notion 959 00:42:25,934 ---> 00:42:27,754 of recursion, how to debug things. 960 00:42:27,754 ---> 00:42:31,624 In short, we'll take things up to the level of problem solving 961 00:42:31,744 ---> 00:42:33,804 and not so much about mere syntax 962 00:42:34,084 ---> 00:42:36,754 and implementing short little cookie cutter programs. 963 00:42:36,754 ---> 00:42:40,114 In week four we'll introduce more sophisticated 964 00:42:40,114 ---> 00:42:40,834 problems still. 965 00:42:41,094 ---> 00:42:43,124 What does it mean to manage memory? 966 00:42:43,154 ---> 00:42:45,604 What does it mean to run out of memory? 967 00:42:45,604 ---> 00:42:48,424 What does it mean to actually segfault, 968 00:42:48,424 ---> 00:42:50,654 if you've heard this expression, and odds are you haven't, 969 00:42:50,654 ---> 00:42:52,304 but very bad things happen and frankly 970 00:42:52,304 ---> 00:42:55,174 by terms end you'll understand terms like my code segfaulted 971 00:42:55,404 ---> 00:43:00,084 which actually is generally not going to be a good thing. 972 00:43:00,084 ---> 00:43:02,414 But then again, we'll introduce some domain specific stuff. 973 00:43:02,414 ---> 00:43:03,014 So actually one 974 00:43:03,014 ---> 00:43:05,234 of my internships during graduate school was to work 975 00:43:05,234 ---> 00:43:08,374 for the local Middlesex County District Attorney's office doing 976 00:43:08,424 ---> 00:43:11,034 forensic investigations in a digital sense. 977 00:43:11,074 ---> 00:43:13,084 The local Mass state police would bring 978 00:43:13,084 ---> 00:43:16,514 to our office hard drives and floppy disks and sometimes 979 00:43:16,514 ---> 00:43:18,624 for no reason mice and keyboards. 980 00:43:18,624 ---> 00:43:21,624 And we would be tasked with finding evidence. 981 00:43:21,744 ---> 00:43:25,694 Now it turns out, maybe just an FYI, that the criminals 982 00:43:25,694 ---> 00:43:28,674 in Cambridge, Massachusetts, at least, 983 00:43:28,944 ---> 00:43:30,474 not necessarily that clever. 984 00:43:30,474 ---> 00:43:32,644 Very often our forensic analysis boiled 985 00:43:32,644 ---> 00:43:34,684 down to booting the computer up and double clicking 986 00:43:34,684 ---> 00:43:37,934 on the My Documents folder, and therein laid the evidence. 987 00:43:38,464 ---> 00:43:41,214 But what we'll do this week is give you a sense 988 00:43:41,214 ---> 00:43:43,164 of what it actually means to store information 989 00:43:43,164 ---> 00:43:44,954 on a hard drive, on a flash drive, 990 00:43:44,954 ---> 00:43:48,764 and why can't otherwise private information be disclosed 991 00:43:48,764 ---> 00:43:51,914 to third parties when you drop off a computer to be repaired 992 00:43:51,914 ---> 00:43:53,754 or even when you discard it. 993 00:43:53,804 ---> 00:43:55,394 Well someone might very well be sifting 994 00:43:55,394 ---> 00:43:57,364 through those hard drives and it's really not that hard 995 00:43:57,364 ---> 00:43:59,614 to find data if you know how to look for it. 996 00:43:59,814 ---> 00:44:01,674 Well, in week five we'll look 997 00:44:01,674 ---> 00:44:05,154 at more sophisticated data structures, tools and techniques 998 00:44:05,154 ---> 00:44:07,074 that you can use ala phone books 999 00:44:07,074 ---> 00:44:11,894 and ala searching huge data sets much more intelligently. 1000 00:44:11,894 ---> 00:44:14,524 And the week's problem set will task you competitively 1001 00:44:14,734 ---> 00:44:17,514 to see just how fast the code you can write is 1002 00:44:17,694 ---> 00:44:19,504 and how little memory you can use. 1003 00:44:19,774 ---> 00:44:23,294 Toward terms end though we'll take things up to a higher level 1004 00:44:23,294 ---> 00:44:26,024 in terms of programming languages and put C behind us 1005 00:44:26,254 ---> 00:44:28,614 and introduce a web programming language known as PHP, 1006 00:44:29,184 ---> 00:44:31,284 one of the popular languages these days. 1007 00:44:31,284 ---> 00:44:33,364 Much of Facebook is still written in PHP, 1008 00:44:33,364 ---> 00:44:36,514 at least outward facing, and it's just a very easy language 1009 00:44:36,514 ---> 00:44:39,524 to learn quickly once you already know another. 1010 00:44:39,524 ---> 00:44:42,134 So with PHP we'll be able to solve problems 1011 00:44:42,134 ---> 00:44:44,664 and implement websites that do interesting things. 1012 00:44:44,664 ---> 00:44:46,474 The news site I showed you, the events site, 1013 00:44:46,714 ---> 00:44:47,594 the shuttle boy site, 1014 00:44:47,594 ---> 00:44:50,454 all of those all happen to be written in PHP. 1015 00:44:50,454 ---> 00:44:52,314 But by no means is that prerequisite. 1016 00:44:52,314 ---> 00:44:54,174 What you'll also find throughout this course is 1017 00:44:54,174 ---> 00:44:57,564 that you're not going to exit this course knowing C. You're 1018 00:44:57,564 ---> 00:44:59,634 not going to exit this course knowing PHP. 1019 00:44:59,634 ---> 00:45:03,184 Those are not interesting skills to claim, but knowing how 1020 00:45:03,184 ---> 00:45:06,564 to program, knowing how to use data structures and algorithms 1021 00:45:06,564 ---> 00:45:09,244 in an interesting way, that's a compelling story. 1022 00:45:09,244 ---> 00:45:11,464 Even I, all these years later, throughout college 1023 00:45:11,464 ---> 00:45:14,804 and graduate school, the only time I ever learned a language 1024 00:45:15,054 ---> 00:45:18,744 was probably in CS50 where it was still taught in C and CS51, 1025 00:45:18,744 ---> 00:45:20,654 which is one of the successor courses. 1026 00:45:20,714 ---> 00:45:24,764 Everywhere along the way since has been go learn this language 1027 00:45:24,764 ---> 00:45:26,094 and then work on this problem set 1028 00:45:26,154 ---> 00:45:28,264 because computer science is not supposed to be 1029 00:45:28,264 ---> 00:45:31,324 about here's a language, let's spend seven weeks teaching you 1030 00:45:31,324 ---> 00:45:32,604 where the semi colons are. 1031 00:45:32,764 ---> 00:45:34,734 There are much more interesting ideas out there. 1032 00:45:34,804 ---> 00:45:35,804 Databases, for one. 1033 00:45:35,804 ---> 00:45:37,684 And in week two we'll introduce you 1034 00:45:37,684 ---> 00:45:41,384 to this query language called SQL that'll allow you 1035 00:45:41,594 ---> 00:45:43,114 to store information in databases 1036 00:45:43,114 ---> 00:45:45,124 and actually implement some fairly interesting 1037 00:45:45,404 ---> 00:45:46,244 final projects. 1038 00:45:46,274 ---> 00:45:47,394 The week after we'll look 1039 00:45:47,394 ---> 00:45:49,244 at what's called client side programming, 1040 00:45:49,244 ---> 00:45:52,074 doing interesting things on a user's computer, 1041 00:45:52,074 ---> 00:45:53,974 taking advantage of their CPU cycles, 1042 00:45:54,244 ---> 00:45:57,084 doing things ala Google maps and these websites 1043 00:45:57,084 ---> 00:45:58,774 that actually use JavaScript, 1044 00:45:58,774 ---> 00:46:00,354 which is actually a language we'll introduce 1045 00:46:00,354 ---> 00:46:03,224 to let you do client side things, make more interesting, 1046 00:46:03,224 ---> 00:46:05,874 more sophisticated user interfaces, but at the end 1047 00:46:05,874 ---> 00:46:08,374 of the day have to be really mindful when implemented 1048 00:46:08,564 ---> 00:46:11,794 of a lot of sticky issues like network speeds, 1049 00:46:11,794 ---> 00:46:13,584 network performance and security. 1050 00:46:13,814 ---> 00:46:16,684 So it's not about again just coding something up that's fun 1051 00:46:16,684 ---> 00:46:19,184 to use or pretty to look at, but actually thinking 1052 00:46:19,184 ---> 00:46:21,524 about the design that'll be the interesting process. 1053 00:46:21,664 ---> 00:46:24,844 And then, the end result aesthetically will often be a 1054 00:46:24,844 ---> 00:46:27,164 really neat toy to show yourself or a friend. 1055 00:46:27,164 ---> 00:46:29,604 And then we'll look at hardware. 1056 00:46:29,604 ---> 00:46:30,734 We're going to take for granted 1057 00:46:30,734 ---> 00:46:32,694 that there are these physical boxes throughout much 1058 00:46:32,734 ---> 00:46:35,934 of the semester that will do what we tell them to do. 1059 00:46:36,324 ---> 00:46:37,464 But how are they doing that. 1060 00:46:37,464 ---> 00:46:39,464 So we'll actually take a peak under the hood and talk 1061 00:46:39,464 ---> 00:46:42,984 about what a compiler really is, what a CPU really is 1062 00:46:42,984 ---> 00:46:46,324 and actually consider what's making all of this fanciness 1063 00:46:46,324 ---> 00:46:49,424 from stupid YouTube videos on down possible. 1064 00:46:50,014 ---> 00:46:51,254 So what are the expectations? 1065 00:46:51,254 ---> 00:46:52,584 Attending lectures and sessions, 1066 00:46:52,924 ---> 00:46:55,794 completing nine problem sets assigned roughly weekly, 1067 00:46:55,794 ---> 00:46:57,994 two quizzes, the final project and there is 1068 00:46:57,994 ---> 00:46:59,464 in fact no final exam. 1069 00:46:59,464 ---> 00:47:02,824 Grades, it's always a question, broken down as follows here. 1070 00:47:02,824 ---> 00:47:04,174 You can take the course pass-fail. 1071 00:47:04,174 ---> 00:47:06,994 But let me say it here, and I've said it many times. 1072 00:47:07,254 ---> 00:47:09,864 I personally care relatively little about grades. 1073 00:47:09,914 ---> 00:47:11,764 I think they are a wonderful, well, 1074 00:47:11,914 ---> 00:47:15,344 they are a useful pedagogical tool with which to motivate 1075 00:47:15,344 ---> 00:47:18,704 and unfortunately sometimes de-motivate, but you'll find 1076 00:47:18,704 ---> 00:47:22,494 in this course that at the end of the day it's more 1077 00:47:22,494 ---> 00:47:26,464 about seeing how far you can go from weeks zero to week 12, 1078 00:47:26,464 ---> 00:47:28,464 as we say in the syllabus than it is 1079 00:47:28,464 ---> 00:47:30,934 about absolutely ranking all students in this course. 1080 00:47:30,934 ---> 00:47:33,244 So if you're coming into this course among those less 1081 00:47:33,244 ---> 00:47:36,154 comfortable, though a large demographic do not assume 1082 00:47:36,344 ---> 00:47:39,404 that that's automatically putting you in the lower third 1083 00:47:39,564 ---> 00:47:41,194 of the so called distribution. 1084 00:47:41,194 ---> 00:47:44,464 At terms end do I sit down with the TF's and discuss each 1085 00:47:44,464 ---> 00:47:45,614 and every one of the students. 1086 00:47:45,784 ---> 00:47:48,984 We take into account where a student came from, 1087 00:47:49,184 ---> 00:47:51,574 what kind of trajectory they were actually on and so 1088 00:47:51,574 ---> 00:47:55,024 at the end of the day please focus more on, and I don't mean 1089 00:47:55,024 ---> 00:47:56,934 to sound too grand, the process of learning 1090 00:47:57,144 ---> 00:47:58,154 and less on the numeric's. 1091 00:47:58,254 ---> 00:48:00,604 And you'll actually see that we grade problem sets, 1092 00:48:00,604 ---> 00:48:04,074 in particular, very coarsely, whereby along three axis, 1093 00:48:04,074 ---> 00:48:07,634 you will get a score of 1, 2, 3, 4, or 5, 1094 00:48:07,674 ---> 00:48:09,354 where 3, is in fact good. 1095 00:48:09,604 ---> 00:48:13,574 3 is not C. 3 is good, 4 is better, 5 is best. 1096 00:48:13,574 ---> 00:48:16,344 But more on that as the problem sets are released. 1097 00:48:16,714 ---> 00:48:19,934 So the course's website is where you will find, as in most cases, 1098 00:48:19,934 ---> 00:48:23,504 a whole lot of useful things, if not silly things, too. 1099 00:48:23,684 ---> 00:48:25,414 And we have the luxury, as computer scientists 1100 00:48:25,414 ---> 00:48:27,244 of implementing it ourselves. 1101 00:48:27,244 ---> 00:48:27,924 So over the course 1102 00:48:27,924 ---> 00:48:30,234 of the semester you will see various new features 1103 00:48:30,234 ---> 00:48:30,754 rolling out. 1104 00:48:30,754 ---> 00:48:32,064 You'll find out over the course of the semester 1105 00:48:32,064 ---> 00:48:34,594 that the bulletin board is a wonderful place, 1106 00:48:34,594 ---> 00:48:35,914 certainly in the course of this size, 1107 00:48:35,914 ---> 00:48:38,384 to turn when you have questions about the problem set, 1108 00:48:38,544 ---> 00:48:41,394 questions about some computer science concept. 1109 00:48:41,394 ---> 00:48:43,844 You'll be able to check your grades, download all handouts 1110 00:48:44,034 ---> 00:48:46,514 in advance of lecture typically will I post the slides, 1111 00:48:46,514 ---> 00:48:48,144 if you're the type who wants to scribble on notes. 1112 00:48:48,414 ---> 00:48:51,154 But as you've seen, usually I shy away from long lists 1113 00:48:51,154 ---> 00:48:54,054 of details and more like pictures of cats 1114 00:48:54,284 ---> 00:48:56,284 and other visual cues. 1115 00:48:56,704 ---> 00:48:59,794 So you'll find, too, that we will provide printouts of code 1116 00:48:59,794 ---> 00:49:02,294 when we actually think it particularly advantageous 1117 00:49:02,294 ---> 00:49:03,554 to write right on the paper. 1118 00:49:03,844 ---> 00:49:07,204 Software, videos will be available, usually around 1 to 2 1119 00:49:07,204 ---> 00:49:09,254 to 3 days maximally after each lecture. 1120 00:49:09,504 ---> 00:49:12,114 So the courses are being filmed and every lecture will go online 1121 00:49:12,334 ---> 00:49:14,664 in various formats including QuickTime and MP3's 1122 00:49:14,664 ---> 00:49:16,534 for downloads to iPods and such. 1123 00:49:16,774 ---> 00:49:17,824 And also you will find a link 1124 00:49:17,824 ---> 00:49:19,584 to download what we call the virtual terminal room, 1125 00:49:19,824 ---> 00:49:22,324 which as you'll see is related to virtual office hours. 1126 00:49:22,634 ---> 00:49:25,044 Books are expensive and in the computer world also not 1127 00:49:25,044 ---> 00:49:25,644 that useful. 1128 00:49:25,894 ---> 00:49:30,104 They are on the shelves of the coop, although we're told 1129 00:49:30,104 ---> 00:49:33,214 that last year they ordered like 120 books for the course 1130 00:49:33,474 ---> 00:49:36,374 and 30 were actually purchased, but this perhaps speak 1131 00:49:36,554 ---> 00:49:39,344 to the fact that there are places like Amazon.com, 1132 00:49:39,344 ---> 00:49:42,764 so if you are the type who actually enjoys the sort 1133 00:49:42,764 ---> 00:49:45,564 of support structure that a book provides, if you like to read 1134 00:49:45,564 ---> 00:49:47,774 up more than say a course's typical materials offer, 1135 00:49:47,774 ---> 00:49:50,304 by all means, procure one or more of the books 1136 00:49:50,344 ---> 00:49:52,164 that we recommend here and discuss more 1137 00:49:52,164 ---> 00:49:53,354 in detail in the syllabus. 1138 00:49:53,604 ---> 00:49:55,454 But realize there are so many resources 1139 00:49:55,454 ---> 00:49:57,214 that this course provides in printed form 1140 00:49:57,214 ---> 00:49:58,804 and electronic form, and my God, 1141 00:49:58,804 ---> 00:50:00,114 there's the whole internet out there. 1142 00:50:00,364 ---> 00:50:02,314 Books are not something that are required 1143 00:50:02,314 ---> 00:50:03,404 for this particular course. 1144 00:50:03,984 ---> 00:50:05,844 Lectures, in general, will be Monday's and Wednesday's, 1145 00:50:06,064 ---> 00:50:08,784 except for this Friday and next Friday, 1146 00:50:09,044 ---> 00:50:10,964 simply because of shopping period and Labor Day. 1147 00:50:10,964 ---> 00:50:13,494 So we'll meet this Friday, next Wednesday, next Friday, 1148 00:50:13,694 ---> 00:50:16,214 but there after this is just a Monday, Wednesday course. 1149 00:50:16,514 ---> 00:50:18,934 So this little visual cue here is to remind me that yes, 1150 00:50:19,044 ---> 00:50:22,124 we do distribute videos in QuickTime formats, MP3's, 1151 00:50:22,174 ---> 00:50:25,034 fun ways that you can, if you're actually this type, 1152 00:50:25,194 ---> 00:50:27,714 maybe in the 14 percent, watch a computer science lecture 1153 00:50:27,714 ---> 00:50:35,204 on your iPod, but it reminded me that at terms end last year, 1154 00:50:35,204 ---> 00:50:37,124 the course culminates in final projects, 1155 00:50:37,124 ---> 00:50:39,354 in which students can design most anything they want, 1156 00:50:39,354 ---> 00:50:41,424 and we actually had some students tackle some 1157 00:50:41,424 ---> 00:50:42,504 iPhone applications. 1158 00:50:42,714 ---> 00:50:45,434 Some one of these at least is now in the Apple store. 1159 00:50:45,434 ---> 00:50:46,274 It's called Rover. 1160 00:50:46,394 ---> 00:50:48,894 It's been adopted essentially by Harvard agencies 1161 00:50:48,894 ---> 00:50:49,994 and it's the iPhone version 1162 00:50:49,994 ---> 00:50:51,974 of the unofficial guide to life at Harvard. 1163 00:50:51,974 ---> 00:50:53,104 They did a brilliant job. 1164 00:50:53,774 ---> 00:50:56,034 I bring this slide up too, just to point 1165 00:50:56,304 ---> 00:50:58,504 out what other technologies might very well be 1166 00:50:58,504 ---> 00:50:59,264 down the road. 1167 00:50:59,264 ---> 00:51:00,964 Some of you may have seen this before, 1168 00:51:00,964 ---> 00:51:03,094 but just to give you a teaser of apparently what's 1169 00:51:03,094 ---> 00:51:06,764 in the pipeline, I thought I would offer this brief 1170 00:51:07,354 ---> 00:51:09,654 distraction here. 1171 00:51:10,494 ---> 00:51:32,554 [Musik] 1172 00:51:33,054 ---> 00:51:36,764 >> With the MacBook wheel, Apple has replaced the keyboard 1173 00:51:36,764 ---> 00:51:39,284 with a sleek, touch sensitive click wheel. 1174 00:51:39,504 ---> 00:51:42,344 Apple CEO Steve Jobs introduced the product yesterday 1175 00:51:42,614 ---> 00:51:43,974 at the annual Mac Expo. 1176 00:51:44,304 ---> 00:51:47,444 Senior product innovator says the MacBook wheel will make 1177 00:51:47,574 ---> 00:51:49,094 typing a thing of the past. 1178 00:51:49,094 ---> 00:51:51,534 >> At Apple our philosophy is create products that are simple 1179 00:51:51,534 ---> 00:51:54,474 to use and nothing's more simple than a single giant button. 1180 00:51:54,754 ---> 00:51:56,634 >> Gilman showed me how the revolutionary new 1181 00:51:56,634 ---> 00:51:57,344 computer works. 1182 00:51:57,704 ---> 00:52:00,414 >> Gilman: Just open the intuit-type alphabet menu here, 1183 00:52:01,064 ---> 00:52:04,794 scroll to the letter you need and center click to select it 1184 00:52:05,424 ---> 00:52:07,074 and click again to capitalize 1185 00:52:07,624 ---> 00:52:09,784 and repeat this process for each new letter. 1186 00:52:09,784 ---> 00:52:11,194 It couldn't be simpler. 1187 00:52:14,214 ---> 00:52:16,414 You could also let the predictive sentence technology 1188 00:52:16,534 ---> 00:52:17,564 complete the sentence for you. 1189 00:52:17,944 ---> 00:52:21,344 >> Gilman says the MacBook wheel has also simplified organization 1190 00:52:21,344 ---> 00:52:23,684 of files, so searching your hard drive will be a snap. 1191 00:52:24,204 ---> 00:52:26,444 >> Gilman: Just press both sides of the wheel concurrently 1192 00:52:26,794 ---> 00:52:29,124 and center click and there, you have an alphabetical list 1193 00:52:29,124 ---> 00:52:31,084 of every file on your hard drive. 1194 00:52:31,274 ---> 00:52:33,194 Everything is just a few hundred clicks away. 1195 00:52:33,414 ---> 00:52:36,174 >> Apple is calling the MacBook wheel the most intuitive product 1196 00:52:36,424 ---> 00:52:37,364 every designed. 1197 00:52:37,544 ---> 00:52:38,684 >> Here at Apple we like to think 1198 00:52:38,684 ---> 00:52:40,884 that we're giving customers features they don't even know 1199 00:52:40,884 ---> 00:52:41,624 they want yet. 1200 00:52:41,914 ---> 00:52:44,134 >> While the MacBook wheel won't hit the shelves for another 3 1201 00:52:44,134 ---> 00:52:46,784 to 15 months, many apple users already have it 1202 00:52:46,784 ---> 00:52:47,494 on their wish list. 1203 00:52:47,714 ---> 00:52:50,064 >> I'll buy almost anything [inaudible] and made by Apple. 1204 00:52:50,244 ---> 00:52:52,304 >> Alex [inaudible] was one of the lucky few to get to try 1205 00:52:52,304 ---> 00:52:55,424 out a MacWheel and spent 45 minutes typing an email 1206 00:52:55,424 ---> 00:52:56,004 to his friend. 1207 00:52:56,324 ---> 00:52:57,934 >> I never really realized how much I hated keyboards 1208 00:52:57,934 ---> 00:52:59,174 until I saw this thing. 1209 00:52:59,174 ---> 00:53:02,994 >> I like how it automatically says, sent with a MacBook Wheel, 1210 00:53:02,994 ---> 00:53:04,344 so people automatically know you have one. 1211 00:53:04,464 ---> 00:53:06,994 >> With a price tag of just under 2600 dollars 1212 00:53:07,024 ---> 00:53:09,704 for the lowest end MacBook Wheel, it is an investment. 1213 00:53:10,214 ---> 00:53:12,834 But the super thin laptop features numerous innovations, 1214 00:53:12,834 ---> 00:53:15,154 like the new ultra thin hummingbird battery, 1215 00:53:15,474 ---> 00:53:16,854 which can power the MacBook Wheel 1216 00:53:16,904 ---> 00:53:19,454 for a fill 19 minutes before needing to be recharged 1217 00:53:19,614 ---> 00:53:22,234 and the computer is virtually unbreakable unless dropped 1218 00:53:22,234 ---> 00:53:22,604 or hit. 1219 00:53:22,884 ---> 00:53:24,664 But Apple isn't resting on its laurels, 1220 00:53:24,664 ---> 00:53:26,904 Bryan Gilman says they're already hard at work 1221 00:53:26,904 ---> 00:53:28,774 on the next generation of the MacBook Wheel, 1222 00:53:28,774 ---> 00:53:31,344 which will be four ounces lighter due to its lack 1223 00:53:31,414 ---> 00:53:32,904 of streaming hard drive or wheel. 1224 00:53:32,904 ---> 00:53:35,214 For the Ugly news Network, I'm Jeff Tate. 1225 00:53:35,504 ---> 00:53:36,254 >> Thank you for that, Jeff. 1226 00:53:36,364 ---> 00:53:38,024 It remains to be seen if the wheel will catch 1227 00:53:38,234 ---> 00:53:40,504 on in the business world where people use computers 1228 00:53:40,504 ---> 00:53:43,024 for actual work and not just dicking around. 1229 00:53:43,274 ---> 00:53:44,774 Moving on, police warn. 1230 00:53:44,774 ---> 00:53:45,554 >> David: So I've seen that thing 1231 00:53:45,554 ---> 00:53:47,774 at least a half a dozen times now, including once 1232 00:53:47,774 ---> 00:53:51,064 at like two a.m. last night and I was scrolling down on YouTube 1233 00:53:51,064 ---> 00:53:52,514 and literally like an hour prior, 1234 00:53:52,514 ---> 00:53:55,514 some guy in all seriousness posted, just a wheel? 1235 00:53:55,514 ---> 00:53:57,484 That's the stupidest product I've ever seen. 1236 00:53:57,484 ---> 00:53:58,194 [Tertawa] 1237 00:53:58,194 ---> 00:54:02,754 And then the rants ensued in the thread thereafter. 1238 00:54:03,084 ---> 00:54:05,464 So besides lectures there are also sections 1239 00:54:05,464 ---> 00:54:06,764 and it is your teaching fellow 1240 00:54:06,764 ---> 00:54:08,554 and the course's course assistants that you will get 1241 00:54:08,554 ---> 00:54:11,354 to know very well over the course of this semester. 1242 00:54:11,804 ---> 00:54:14,024 Sectioning won't begin for a week or so's time. 1243 00:54:14,024 ---> 00:54:15,784 More on that in the lectures to come. 1244 00:54:15,784 ---> 00:54:18,034 But know that the course will have several different tracks 1245 00:54:18,264 ---> 00:54:20,854 of sections, much like First Knight's has for music. 1246 00:54:21,114 ---> 00:54:24,164 Sections targeted more at those less comfortable, 1247 00:54:24,354 ---> 00:54:26,644 those more comfortable and those somewhere in between. 1248 00:54:26,824 ---> 00:54:30,254 And we also offer most Sunday nights before a problem set is 1249 00:54:30,294 ---> 00:54:33,784 due on the following Friday is what we call code walkthrough's 1250 00:54:33,784 ---> 00:54:36,574 where one of the course's teaching fellows will lead a 1251 00:54:36,574 ---> 00:54:39,424 session targeted specifically at the week's problem set 1252 00:54:39,424 ---> 00:54:41,964 and will help you answer the question where do I begin, 1253 00:54:42,094 ---> 00:54:43,174 how should I approach this? 1254 00:54:43,174 ---> 00:54:45,694 And that too will be filmed and made available online 1255 00:54:45,924 ---> 00:54:47,904 and always linked on the course's website. 1256 00:54:48,224 ---> 00:54:50,394 So this course has a huge staff. 1257 00:54:50,594 ---> 00:54:53,644 Our staff is larger than Harvard's average class size. 1258 00:54:53,644 ---> 00:54:55,824 We have over 50 people involved in the production 1259 00:54:55,824 ---> 00:54:57,264 of this course on a weekly basis. 1260 00:54:57,544 ---> 00:55:00,514 Some of them teaching fellows who hold sections, grade work, 1261 00:55:00,704 ---> 00:55:02,124 hold office hours and more. 1262 00:55:02,124 ---> 00:55:04,984 Course assistants who are former students, who are offering 1263 00:55:04,984 ---> 00:55:08,384 on a volunteer basis in fact multiple hours of office hours 1264 00:55:08,384 ---> 00:55:09,554 in the computer lab per week. 1265 00:55:09,864 ---> 00:55:11,534 System administrators, folks doing all 1266 00:55:11,534 ---> 00:55:12,984 of our AV and video production. 1267 00:55:12,984 ---> 00:55:14,824 Someone who will actually be taking notes for you. 1268 00:55:15,104 ---> 00:55:18,304 So it is actually my opinion that scribbling 1269 00:55:18,304 ---> 00:55:19,524 down almost every word that someone 1270 00:55:19,524 ---> 00:55:21,584 like me says is not a very good use of one's time. 1271 00:55:21,584 ---> 00:55:23,824 It's much more interesting I think to actually engage 1272 00:55:24,044 ---> 00:55:25,964 with what's on the screen, what's being presented. 1273 00:55:25,964 ---> 00:55:29,134 And so what we will do as a course is post PDF's online 1274 00:55:29,134 ---> 00:55:31,864 within a couple of days of lectures of scribe notes, 1275 00:55:31,864 ---> 00:55:33,834 which is essentially an authoritative version 1276 00:55:33,834 ---> 00:55:38,234 of course notes, unedited, but documenting what went 1277 00:55:38,234 ---> 00:55:41,544 on in lecture that day, thereby hopefully freeing your minds 1278 00:55:41,544 ---> 00:55:44,724 and pencils from jotting information down. 1279 00:55:44,904 ---> 00:55:46,014 We have some of our team here. 1280 00:55:46,014 ---> 00:55:47,924 Most of our team is actually shopping courses. 1281 00:55:47,924 ---> 00:55:49,774 But if a few of your guys would like to come on stage 1282 00:55:49,774 ---> 00:55:52,164 for a moment with our head teaching fellow 1283 00:55:52,164 ---> 00:55:53,534 and assistant head teaching fellow. 1284 00:55:53,684 ---> 00:55:56,914 Allow me to ask the latter to say a quick hello. 1285 00:55:57,494 ---> 00:56:02,624 And as these guys come up in absentia allow me to say 1286 00:56:02,624 ---> 00:56:06,144 that also on staff this year besides the folks you see here 1287 00:56:06,144 ---> 00:56:10,774 are Alex, Alice, Andrew, Batul, Charlotte, Chris, Dan, Dan, 1288 00:56:10,774 ---> 00:56:16,294 Daniel, David, David, David, Derek, Dev, Didi, Doug, Drew, 1289 00:56:16,294 ---> 00:56:21,374 Erica, Fil, Glen, Greg, Janice, Jason, Jean, Jeff, Jesse, John, 1290 00:56:21,374 ---> 00:56:25,394 John, Jonathan, Jordan, Josh, Karim, Kelly, Ken, Kent, 1291 00:56:25,654 ---> 00:56:30,194 Kyu Bok, Lee, Madhura, Marta, Matthew, Michael, Michelle, 1292 00:56:30,194 ---> 00:56:34,714 Mike, Mike, Nathan, Patrick, Peter, Peyton, Rose, Saba, 1293 00:56:34,924 ---> 00:56:38,794 Sanjay, Shannon, Stacey, Ted, Wellie, Yair and me. 1294 00:56:39,684 ---> 00:56:42,004 So our course is teaching fellows and course assistants, 1295 00:56:42,004 ---> 00:56:45,644 Cansu and Yuhki, would you like to say a quick hello? 1296 00:56:46,194 ---> 00:56:48,574 >> Hi. It's definitely a great honor 1297 00:56:48,574 ---> 00:56:50,624 to be back here for the third time. 1298 00:56:51,044 ---> 00:56:53,654 And if you're one of those who are like less comfortable. 1299 00:56:53,654 ---> 00:56:53,721 [Tertawa] 1300 00:56:53,721 ---> 00:57:00,254 I think I can [inaudible]. 1301 00:57:00,654 ---> 00:57:00,754 Okay. 1302 00:57:00,754 ---> 00:57:00,821 [Tertawa] 1303 00:57:00,821 ---> 00:57:03,444 If you're one of those [inaudible]. 1304 00:57:03,444 ---> 00:57:07,094 There's no need to be afraid. 1305 00:57:07,094 ---> 00:57:09,764 I walked in here two years ago with no experience what so ever, 1306 00:57:09,794 ---> 00:57:14,394 and I thought that I was like dumb and I was sure 1307 00:57:14,394 ---> 00:57:15,594 that I was going to fail the class. 1308 00:57:15,594 ---> 00:57:18,824 And I came back for the third time. 1309 00:57:18,904 ---> 00:57:21,184 I did not fail the class. 1310 00:57:22,544 ---> 00:57:25,554 This course is great because it has such a good community. 1311 00:57:25,554 ---> 00:57:30,274 As you can tell by the names listed by David. 1312 00:57:30,274 ---> 00:57:32,984 All the CA's and TF's are here to help you. 1313 00:57:32,984 ---> 00:57:36,574 So if you have any questions at all, just come up to us. 1314 00:57:36,574 ---> 00:57:40,564 Not taking this class because it's hard is not a good excuse. 1315 00:57:42,234 ---> 00:57:43,424 So, hi. 1316 00:57:43,424 ---> 00:57:45,034 >> [Inaudible]. 1317 00:57:45,034 ---> 00:57:51,224 >> Hi, so well both as a student and TF, 1318 00:57:51,224 ---> 00:57:55,254 I've really enjoyed being a part of this course. 1319 00:57:55,254 ---> 00:57:58,724 And even though it's a course that requires a lot of work 1320 00:57:58,774 ---> 00:58:01,274 from you, we've put a lot of work in to it for you as well 1321 00:58:01,274 ---> 00:58:03,874 to make it as enjoyable and as fun as possible. 1322 00:58:03,964 ---> 00:58:08,914 So, we really hope that all of you stay and take part 1323 00:58:09,104 ---> 00:58:11,174 in this very special experience. 1324 00:58:11,674 ---> 00:58:11,874 >> Thanks. 1325 00:58:11,874 ---> 00:58:14,044 >> David: So you will find, thank you, all of you, 1326 00:58:14,044 ---> 00:58:15,014 you will meet them in the hallway 1327 00:58:15,014 ---> 00:58:16,154 in just a few minutes as well. 1328 00:58:16,474 ---> 00:58:18,414 So you'll find that this course, perhaps more 1329 00:58:18,414 ---> 00:58:21,064 so than many is very much a shared experience. 1330 00:58:21,064 ---> 00:58:22,324 This is not a competitive course. 1331 00:58:22,324 ---> 00:58:23,714 This is not your premed course. 1332 00:58:23,994 ---> 00:58:26,084 This is a course which ultimately yes is 1333 00:58:26,084 ---> 00:58:28,564 about doing independent work, as you'll see each week 1334 00:58:28,604 ---> 00:58:29,714 by way of the problem sets. 1335 00:58:30,054 ---> 00:58:32,264 But you can't help but to get close to someone 1336 00:58:32,514 ---> 00:58:35,504 when you're fighting with some bug and banging your head 1337 00:58:35,544 ---> 00:58:39,714 against the computer screen proverbially to try 1338 00:58:39,714 ---> 00:58:41,084 to track down some bug. 1339 00:58:41,324 ---> 00:58:43,804 And I think you'll find that past students will concur 1340 00:58:43,804 ---> 00:58:45,614 that you exit this course with a lot 1341 00:58:45,614 ---> 00:58:48,494 of friends among students and also on staff. 1342 00:58:48,724 ---> 00:58:50,004 So where does that happen? 1343 00:58:50,244 ---> 00:58:51,844 Well, within office hours in the basement 1344 00:58:51,844 ---> 00:58:53,864 of the science center there's some large computer labs 1345 00:58:53,864 ---> 00:58:56,664 and we pretty much take them over five nights a week. 1346 00:58:56,834 ---> 00:58:59,454 These won't start for some time, and this, to be honest, 1347 00:58:59,494 ---> 00:59:00,854 is perhaps the most beautiful picture 1348 00:59:00,854 ---> 00:59:02,174 of the science center I've ever seen. 1349 00:59:02,604 ---> 00:59:04,604 [Tertawa] 1350 00:59:05,034 ---> 00:59:07,024 It does not look like that on the inside. 1351 00:59:07,134 ---> 00:59:11,524 But it is a place where a good percentage of students do choose 1352 00:59:11,524 ---> 00:59:14,014 to spend time to get one on one assistance with each 1353 00:59:14,014 ---> 00:59:15,444 of the week's problem sets. 1354 00:59:15,444 ---> 00:59:19,504 Each week we will offer more than 100 hours of assistance one 1355 00:59:19,504 ---> 00:59:21,854 on one in the science center per the schedule 1356 00:59:21,854 ---> 00:59:23,144 that will eventually go online. 1357 00:59:23,394 ---> 00:59:26,344 And for those of you who live, say in the quad, or in Mather, 1358 00:59:26,344 ---> 00:59:28,044 or who just don't want to trek all the way 1359 00:59:28,044 ---> 00:59:29,894 to the science center to ask that quick question, 1360 00:59:30,144 ---> 00:59:32,624 we also offer what are called virtual office hours, 1361 00:59:32,624 ---> 00:59:35,134 much like remote technical support where you'll be able 1362 00:59:35,134 ---> 00:59:38,364 to log into a glorified chat room, in which yes, 1363 00:59:38,364 ---> 00:59:40,474 you can type back and forth with a TF or a CA, 1364 00:59:40,474 ---> 00:59:43,264 but you can also share your screen or share control 1365 00:59:43,264 ---> 00:59:45,224 of your mouse with them subject to your consent 1366 00:59:45,434 ---> 00:59:47,814 so that they can help you troubleshoot any problem 1367 00:59:47,814 ---> 00:59:49,654 or any question you have remotely. 1368 00:59:49,654 ---> 00:59:51,814 To give you a sense of what's involved in the course, 1369 00:59:52,084 ---> 00:59:53,724 these are statistics from last year. 1370 00:59:53,724 ---> 00:59:55,814 So you will, I think it's quite fair to say, 1371 00:59:55,814 ---> 00:59:57,414 work your ass off in this course. 1372 00:59:57,624 ---> 00:59:59,304 But per my promise from the start, 1373 00:59:59,584 ---> 01:00:01,744 this is one of those experiences 1374 01:00:01,984 ---> 01:00:04,544 that I don't think a typical student regrets. 1375 01:00:04,684 ---> 01:00:06,784 If you flip through, for instance, the Q Guide forms 1376 01:00:06,814 ---> 01:00:09,884 that are all on the course's website, you'll find that only 1377 01:00:10,134 ---> 01:00:12,074 by putting in the time to a course 1378 01:00:12,074 ---> 01:00:14,934 like this do you really exit having felt 1379 01:00:14,934 ---> 01:00:16,334 like you got something out of it 1380 01:00:16,334 ---> 01:00:19,704 and frankly might very well even have emerged even smarter. 1381 01:00:19,984 ---> 01:00:23,324 So what does it mean to actually write programs 1382 01:00:23,364 ---> 01:00:24,944 and implement problem sets? 1383 01:00:24,944 ---> 01:00:26,764 Well, the first problem set last year, 1384 01:00:27,054 ---> 01:00:28,244 a quick retrospective here, 1385 01:00:28,244 ---> 01:00:30,484 was to implement your very own programming scratch. 1386 01:00:30,684 ---> 01:00:32,534 And we spend just the first week there, and the goal is 1387 01:00:32,534 ---> 01:00:34,834 to implement your own game or animation or art 1388 01:00:35,064 ---> 01:00:37,104 or anything that appeals to you. 1389 01:00:37,104 ---> 01:00:40,214 In week one, then do you implement some basic C programs 1390 01:00:40,254 ---> 01:00:42,554 to get acclimated to some more traditional programming 1391 01:00:42,554 ---> 01:00:44,224 environments at the command line, 1392 01:00:44,224 ---> 01:00:47,004 at Linux so you get comfortable with some of these basics 1393 01:00:47,004 ---> 01:00:49,004 that will certainly serve you well in the long run. 1394 01:00:49,294 ---> 01:00:51,704 Last year's Problem Set 2 was about cryptography. 1395 01:00:51,944 ---> 01:00:55,274 We gave students the opportunity to implement some ciphers, 1396 01:00:55,274 ---> 01:00:57,684 some algorithms that let them encrypt information. 1397 01:00:57,914 ---> 01:01:00,424 And we also offered some students the opportunity 1398 01:01:00,424 ---> 01:01:01,284 to do the opposite. 1399 01:01:01,554 ---> 01:01:03,324 Each problem set, many problem sets, 1400 01:01:03,324 ---> 01:01:05,484 as you'll see are implemented in two editions. 1401 01:01:05,694 ---> 01:01:08,514 A standard edition that we expect almost everyone to do, 1402 01:01:08,514 ---> 01:01:09,734 say 90 percent of the class. 1403 01:01:10,194 ---> 01:01:12,974 And then a hacker edition, which presents the material 1404 01:01:12,974 ---> 01:01:14,564 from a more sophisticated angle, 1405 01:01:14,564 ---> 01:01:16,294 expects perhaps a bit more clever work 1406 01:01:16,294 ---> 01:01:17,654 for those more experienced, 1407 01:01:17,904 ---> 01:01:19,934 and for this one did those students get handed 1408 01:01:19,934 ---> 01:01:23,714 in the hacker edition pre existing user names 1409 01:01:23,714 ---> 01:01:26,304 and passwords in encrypted form and they had to figure 1410 01:01:26,494 ---> 01:01:27,824 out what those passwords for. 1411 01:01:27,824 ---> 01:01:30,844 We actually got into trouble for this a few years ago because all 1412 01:01:30,844 ---> 01:01:32,764 of the sudden FAS Computer Services saw 1413 01:01:32,764 ---> 01:01:38,904 like 50 people running a crack program on nice.fas.Harvard.edu, 1414 01:01:39,174 ---> 01:01:41,704 so they now have been given a heads up for programs like that. 1415 01:01:42,094 ---> 01:01:44,574 Last year students implemented the game of 15. 1416 01:01:44,794 ---> 01:01:46,824 Not all that much fun to play as a party favorite, 1417 01:01:46,824 ---> 01:01:48,484 moving the numbers up down, left, right, 1418 01:01:48,584 ---> 01:01:50,114 but a real stepping stone 1419 01:01:50,114 ---> 01:01:52,194 to implementing something interactive 1420 01:01:52,244 ---> 01:01:54,264 that involves a human and the hacker edition 1421 01:01:54,264 ---> 01:01:56,654 for this one had students implementing God mode, 1422 01:01:56,654 ---> 01:01:59,484 which actually solved this thing for the human, 1423 01:01:59,484 ---> 01:02:02,594 maybe cheat mode is the more apt term, in Sudoku, 1424 01:02:02,814 ---> 01:02:05,604 which was a step up toward that, where we provided the students, 1425 01:02:05,604 ---> 01:02:08,384 you, with a framework with a whole bunch of code 1426 01:02:08,384 ---> 01:02:11,184 that you needed to first understand before taking things 1427 01:02:11,184 ---> 01:02:13,044 the final mile and implementing some 1428 01:02:13,044 ---> 01:02:14,394 of the remaining functionality. 1429 01:02:14,644 ---> 01:02:17,034 And then we dabbled in forensics and this grew 1430 01:02:17,034 ---> 01:02:20,444 out of a real world experience between me and a friend. 1431 01:02:20,674 ---> 01:02:22,914 For this problem set last year, this buddy and I, 1432 01:02:22,914 ---> 01:02:25,044 who he being a particularly good photographer, 1433 01:02:25,284 ---> 01:02:29,604 strolled around campus and we shot photographs of unique, 1434 01:02:29,774 ---> 01:02:33,484 non obvious, but identifiable places on campus. 1435 01:02:33,484 ---> 01:02:34,904 And this was using his digital camera. 1436 01:02:34,904 ---> 01:02:36,324 All of these JPEGs got stored 1437 01:02:36,324 ---> 01:02:37,854 on a digital flash card or what not. 1438 01:02:38,134 ---> 01:02:40,754 And then I accidentally formatting the thing, 1439 01:02:40,754 ---> 01:02:41,474 or erased it. 1440 01:02:41,584 ---> 01:02:44,514 Well, it turns out formatting something or erasing something, 1441 01:02:44,514 ---> 01:02:45,914 usually means neither. 1442 01:02:45,914 ---> 01:02:48,134 It just means doing a little bit of work 1443 01:02:48,254 ---> 01:02:50,374 to make the human think their data has been erased, 1444 01:02:50,374 ---> 01:02:51,974 when in reality it hasn't. 1445 01:02:52,384 ---> 01:02:53,604 It's just been forgotten. 1446 01:02:53,934 ---> 01:02:56,624 And so we tasked last year's students with writing a program 1447 01:02:56,624 ---> 01:03:01,214 in C to actually recover these photos for my friend. 1448 01:03:01,214 ---> 01:03:03,294 We gave everyone a forensic image, so to speak, 1449 01:03:03,294 ---> 01:03:06,104 a big file representing that compact flash card, and they had 1450 01:03:06,104 ---> 01:03:08,114 to recover the several dozen photographs. 1451 01:03:08,114 ---> 01:03:10,314 And they also had to solve this little murder mystery. 1452 01:03:10,604 ---> 01:03:12,624 We provided folks with this image here. 1453 01:03:13,714 ---> 01:03:17,384 Those of you who've seen this before might be doing 1454 01:03:17,384 ---> 01:03:19,654 that squinting thing right now where you're trying to look 1455 01:03:19,754 ---> 01:03:22,184 through the picture, well you look pretty awkward, 1456 01:03:22,184 ---> 01:03:23,764 because this is not a magic eye puzzle. 1457 01:03:23,764 ---> 01:03:25,314 This is just random red noise 1458 01:03:25,314 ---> 01:03:29,484 that actually has behind it an actual message. 1459 01:03:29,484 ---> 01:03:33,844 And it turns out, I think it was Colonel, let's see, 1460 01:03:33,844 ---> 01:03:35,014 I've got my little solution here. 1461 01:03:35,014 ---> 01:03:36,724 Last year it was Colonel Mustard 1462 01:03:36,784 ---> 01:03:38,734 in the study with the candlestick. 1463 01:03:38,884 ---> 01:03:41,634 And this was the murder message recovered by students 1464 01:03:41,634 ---> 01:03:42,784 who wrote code to do so. 1465 01:03:42,784 ---> 01:03:44,694 And then in Problem Set 6 last year. 1466 01:03:44,694 ---> 01:03:45,604 We challenged students 1467 01:03:45,604 ---> 01:03:48,504 with implementing the fastest spell checker possible. 1468 01:03:48,504 ---> 01:03:49,414 What do we mean by that? 1469 01:03:49,774 ---> 01:03:54,054 Well, we handed the students a big text file containing 140 1470 01:03:54,114 ---> 01:03:58,424 plus thousand English words, and we said write a program 1471 01:03:58,424 ---> 01:04:01,914 that loads all of these words into memory, but very quickly 1472 01:04:01,914 ---> 01:04:05,024 and very efficiently can tell us yea or nay, 1473 01:04:05,214 ---> 01:04:08,274 is this document perfectly spelled or are there errors? 1474 01:04:08,274 ---> 01:04:10,694 And what we provided was a testing framework, a harness, 1475 01:04:11,004 ---> 01:04:14,144 that students, if they wanted to compete, could run their code 1476 01:04:14,144 ---> 01:04:16,914 against some benchmarks, against some testing programs 1477 01:04:16,944 ---> 01:04:17,604 that we wrote. 1478 01:04:17,814 ---> 01:04:20,394 And then, ranked on the course's website from fastest 1479 01:04:20,394 ---> 01:04:23,274 to slowest were the running times, 1480 01:04:23,424 ---> 01:04:25,614 the amount of time it took for each student's code 1481 01:04:25,614 ---> 01:04:28,094 to actually execute, complete opt in. 1482 01:04:28,094 ---> 01:04:29,274 It's by no means required. 1483 01:04:29,484 ---> 01:04:32,814 And we took a bullet for the team and made sure that one 1484 01:04:32,814 ---> 01:04:35,694 of our own teaching fellows intentionally, I think, 1485 01:04:35,694 ---> 01:04:37,294 was at the very bottom of the list. 1486 01:04:37,694 ---> 01:04:39,204 So, there was definitely a lower bound. 1487 01:04:39,204 ---> 01:04:41,984 But the odd, the funny thing was we saw this 1488 01:04:41,984 ---> 01:04:45,734 in the cue guide evaluation, this problem set of all things, 1489 01:04:45,974 ---> 01:04:48,764 was apparently the one that people sunk the most time into. 1490 01:04:48,984 ---> 01:04:51,624 Not because it took any longer than all the other p sets, 1491 01:04:51,854 ---> 01:04:54,444 but they would come back from like dinner, look at the board, 1492 01:04:54,444 ---> 01:04:57,074 and realize dam my friend, my roommate just ever 1493 01:04:57,074 ---> 01:04:59,984 so slightly inch higher than me and so it incentivized people 1494 01:04:59,984 ---> 01:05:02,524 if only to one up their friends and roommates. 1495 01:05:03,164 ---> 01:05:05,684 In Problem Set 7, last year, we asked students 1496 01:05:05,684 ---> 01:05:08,964 to implement their own E*Trade like website, whereby you had 1497 01:05:08,964 ---> 01:05:10,194 to create a website using 1498 01:05:10,194 ---> 01:05:12,864 that language call PHP a database called mysql 1499 01:05:13,374 ---> 01:05:17,224 that actually lets people log in and then manage a portfolio 1500 01:05:17,224 ---> 01:05:19,124 of stocks, buy stocks quote unquote, 1501 01:05:19,204 ---> 01:05:21,344 sell stocks quote unquote, get stock quotes. 1502 01:05:21,344 ---> 01:05:21,974 And from where? 1503 01:05:22,194 ---> 01:05:24,504 Well, we have the students; we had the student patch 1504 01:05:24,504 ---> 01:05:27,394 into Yahoo Finance where they grabbed merely the Real time 1505 01:05:27,394 ---> 01:05:29,974 stock quotes to actually simulate the process 1506 01:05:30,334 ---> 01:05:31,844 of buying and trading stocks. 1507 01:05:31,844 ---> 01:05:35,004 Unfortunately some students, perhaps some economics majors 1508 01:05:35,004 ---> 01:05:37,174 or just folks with too much free time figured 1509 01:05:37,174 ---> 01:05:38,644 out last year how to gain the system. 1510 01:05:38,904 ---> 01:05:41,414 So, even though we gave everyone 10,000 virtual dollars, 1511 01:05:41,694 ---> 01:05:46,044 I think our winner turned teaching fellow this year 1512 01:05:46,044 ---> 01:05:49,754 actually, right don't push them away make them one of your own, 1513 01:05:49,894 ---> 01:05:52,634 for a billion dollars something like that ridiculous. 1514 01:05:53,084 ---> 01:05:54,774 Turns out we weren't really checking whether 1515 01:05:54,774 ---> 01:05:56,534 or not people were trading after hours. 1516 01:05:56,794 ---> 01:06:00,204 And it turns out that also, Yahoo stalk quotes are not 1517 01:06:00,204 ---> 01:06:02,044 in fact perfectly Real time which means 1518 01:06:02,044 ---> 01:06:04,794 if you just have a real E*Trade account you can see the future 1519 01:06:05,004 ---> 01:06:06,484 and see where the stocks are going. 1520 01:06:06,484 ---> 01:06:06,551 [Tertawa] 1521 01:06:06,551 ---> 01:06:11,974 So, apparently you can exploit that if you put your mind to it. 1522 01:06:12,174 ---> 01:06:13,394 and then, in Problem Set 8, 1523 01:06:13,394 ---> 01:06:15,364 the course's final problem set last year, 1524 01:06:15,614 ---> 01:06:18,744 we had students implement a mash up where they take Google News 1525 01:06:18,744 ---> 01:06:22,514 and Google Maps and mash them together using JavaScript, 1526 01:06:22,514 ---> 01:06:25,674 PHP and SQL in such a way that they had a website 1527 01:06:25,674 ---> 01:06:27,724 that they could find all of the local news 1528 01:06:27,724 ---> 01:06:31,174 from whether it's zip code 02138 or 90210. 1529 01:06:31,174 ---> 01:06:34,334 And, you would actually pull the local current even articles 1530 01:06:34,604 ---> 01:06:36,794 by this thing called XML and integrate it 1531 01:06:36,794 ---> 01:06:38,434 into the view of a Google Map. 1532 01:06:38,904 ---> 01:06:42,404 And then, at very course's end was the true climax 1533 01:06:42,404 ---> 01:06:42,954 of the course. 1534 01:06:42,984 ---> 01:06:45,174 This course culminates in final projects, 1535 01:06:45,174 ---> 01:06:47,014 which ultimately will be your opportunity 1536 01:06:47,014 ---> 01:06:49,894 to design your very own piece of software, designed by you 1537 01:06:50,124 ---> 01:06:51,644 or two or three friends. 1538 01:06:51,824 ---> 01:06:55,594 And the course then climaxes with the new and improved, 1539 01:06:55,594 ---> 01:06:59,024 with the second annual computer science 50 fair 1540 01:06:59,024 ---> 01:07:01,084 which last year was an exhibition across the street 1541 01:07:01,084 ---> 01:07:02,344 in one of the engineering buildings 1542 01:07:02,594 ---> 01:07:06,484 with 300 laptops atop tables, popcorn was popping, 1543 01:07:06,484 ---> 01:07:08,484 music was playing, stress balls 1544 01:07:08,484 ---> 01:07:10,774 with CS50's logo were being thrown around. 1545 01:07:11,074 ---> 01:07:13,324 And this was an opportunity for our 300 plus students 1546 01:07:13,324 ---> 01:07:16,364 to exhibit their final projects not only to each other but also 1547 01:07:16,364 ---> 01:07:19,724 to some 900 attendees in total. 1548 01:07:19,724 ---> 01:07:21,774 And we also invited some recruiters as well. 1549 01:07:21,774 ---> 01:07:24,044 So, that is what you have to look forward in this course. 1550 01:07:24,234 ---> 01:07:27,024 You also have cake to look forward to in the hallway. 1551 01:07:27,284 ---> 01:07:29,934 This is CS50 and we'll see you on Friday. 1552 01:07:30,494 ---> 01:07:38,498 [Tepuk tangan]