>> [Bermain muzik]
[MUSIC - Rossini, "RANZ DES VACHES "DARIPADA WILLIAM BERITAHU]
>> [MUSIC - THE BEAT INGGERIS, "MAC DARI KETUA SWIVEL "]
>> [Tepuk tangan dan bersorak]
>> DAVID MALAN: Jadi ini adalah CS50.
Nama saya David Malan.
Dan 73% daripada anda tidak mempunyai pengalaman sebelum dengan sains komputer,
bertentangan dengan apa yang anda mungkin berfikir.
Jadi hari ini kita fikir kita akan cip jauh pada yang tidak biasa, tetapi juga
memberikan anda rasa, bagi mereka yang anda dengan lebih selesa, yang arahan
anda boleh pergi semester ini.
>> Jadi mari kita mulakan dengan ini.
Saya benar-benar tidak tahu apa yang di dalam komputer, walaupun, seperti anda, saya
menggunakannya setiap hari.
Tetapi ia adalah beberapa jenis kotak, dan ada tidak banyak input ke dalamnya.
Minimal, ada, apa?
Mungkin kord kuasa.
>> Dan sesungguhnya dengan bahan yang satu ini, elektrik, kita seolah-olah mampu
melakukan agak sedikit pada hari ini.
Tetapi pada akhir hari, kita perlu mewakili perkara-perkara
bahawa kita mengambil berat tentang.
Kita perlu untuk mewakili maklumat dalam bentuk tertentu.
Dan anda mungkin sekurang-kurangnya samar-samar biasa dengan idea oleh binari atau
bit entah bagaimana atau lain-lain, komputer dikurangkan kepada sifar dan orang-orang.
Tetapi kita boleh menerima itu dan sekurang-kurangnya meletakkan sedikit cahaya untuk itu?
>> Jadi saya mempunyai ini sedikit lampu meja di sini.
Saya mempunyai soket elektrik di sini.
Dan saya akan mencadangkan dalam yang komputer saya adalah sekurang-kurangnya satu
perkara-perkara ini, sesuatu yang mampu daripada dihidupkan atau dimatikan.
Dalam kes ini, ia merupakan satu lampu meja, tetapi pada tahap yang lebih rendah, ia adalah sesuatu yang
dipanggil transistor.
>> Tetapi dalam dunia kita, ia adalah lampu meja, jadi Saya akan pergi ke hadapan dan palam ini
kepada elektrik saya di sini.
Dan saya mendakwa bahawa menggunakan ini mudah, peranti mudah, suis ini mudah, saya
boleh mewakili maklumat.
Sebagai contoh, sekarang, saya mewakili apa-apa, kan?
Saya mewakili apa yang saya akan memanggil 0 atau palsu, yang bertentangan dengan sesuatu
sebenarnya hadir.
Tetapi jika saya hanya menghidupkan suis ini, sekarang saya telah mewakili 1.
Jadi menggunakan sekeping ini yang sangat mudah ingatan, jika anda akan, saya boleh mewakili
maklumat.
>> Sekarang malangnya, komputer saya tidak boleh melakukan semua yang banyak.
Ia hanya boleh mewakili dua nilai di seluruh dunia -
0 atau 1.
Tetapi apa yang satu penyelesaian yang jelas, sekarang, jika kita mahu mengembangkan komputer kita
ingatan dan mewakili lebih daripada hanya 0 dan 1?
>> Nah, mari kita mengambil satu lagi sedikit itu.
Mari kita merebut suis lain, satu lagi transistor, tetapi anda ingin
berfikir mengenainya.
Biar saya pergi ke hadapan dan palam ini ke dalam komputer saya juga.
Dan saya akan menuntut, sekarang, bahawa dengan menggunakan sedikit lebih elektrik dan
beralih lebih daripada suis ini pada dan kira, saya boleh mewakili lebih seperti
maklumat.
>> Jadi sekarang, ini ialah 1.
Jika saya mahu kini mewakili 2, saya boleh melakukan ini.
Tetapi biasanya, konvensyen, kerana kita akan akhirnya lihat, saya akan melakukan ini.
Jadi ini adalah 0, ini ialah 1.
Ini akan menjadi 2.
Dan tidak menghairankan, ini akan menjadi 3.
>> Jadi dengan cara ini, masih, boleh kita mengira sehingga lebih jauh?
Jika saya mendapat sedikit ketiga, suis ketiga, apa yang paling tinggi saya kini boleh
mengira sehingga dari 0?
Jadi 7 jika saya bermula pada 0, betul?
Kerana jika saya menghidupkan lampu ini di dalam dan di sebenarnya palam ini ketiga dan terakhir
cahaya ke dalam soket elektrik saya di sini, maka saya mempunyai keupayaan untuk mewakili
mana-mana dua nilai di sini, dua nilai di sini, dua nilai di sini -
dan saya boleh mewakili 2 kali 2 kali 2, atau lapan nilai yang mungkin.
Dan jika saya memulakan perakaunan pada 0, jadi itulah 0, 1, 2, 3, 4, 5, 6, 7.
>> Jadi perduaan ini.
Ia benar-benar adalah semudah itu.
Dan saya berpendapat bahawa ini adalah sebenarnya agak biasa kepada kebanyakan
semua orang di dalam bilik ini.
Biar saya pergi ke hadapan dan membuka editor teks kecil di sini.
>> Dan anda mungkin ingat dari sekolah rendah bahawa kita mempunyai perkara-perkara seperti beratus-ratus
tempat, tempat puluh, dan tempat yang.
Dan ingat bahawa jika anda mempunyai beberapa perpuluhan nombor, seperti sesuatu yang rawak
seperti 123, anda akan pada dasarnya menulis bahawa di dalam bentuk
ketiga-tiga tiang.
Dan mengapa adalah 1, 2, 3 apa kita tahu sebagai 123?
Nah, dalam ruang paling kiri, kita mempunyai satu 100 campur dua 10s, supaya 120,
ditambah tiga 1s, supaya 123.
>> Sekarang dunia ini yang kita hanya diterangi adalah sama seperti
anda telah biasa dengan bertahun-tahun, kecuali kini, tiang kami
tidak kuasa 10.
Mereka hanya kuasa 2.
Jadi sedangkan itulah tempat orang-orang itu, ini akan menjadi tempat yang berdua-dua, ini adalah
akan menjadi tempat yang merangkak.
>> Dan kerana saya hanya menggunakan yang paling mudah mekanisme untuk mengubah keadaan
dalam dan di luar - elektrik yang mengalir atau elektrik tidak mengalir -
Saya tidak mempunyai cukup ekspresif sama pelbagai sebagai 0 melalui sembilan.
Kami akan memastikan ia sangat mudah di dunia ini komputer.
Saya hanya mempunyai 0 atau 1 -
Mati atau, palsu atau benar.
>> Dan supaya apa yang saya mewakili sekarang 1, 1, 1, kerana masing-masing
lampu diterangi.
Well, yang memberikan saya satu 4 tambah satu 2, jadi itu 6, tambah satu 1, dan itulah 7.
Dan ergo tidak urutan ini daripada tiga bit mewakili nombor 7.
>> Jadi semua masa ini, di dalam anda komputer, telah menjadi apa-apa bilangan
transistor, apa-apa bilangan bit.
Tetapi pada akhir hari, kita boleh mewakili maklumat
sebagai hanya sekali.
Sekarang malangnya, kami hanya dikira sehingga 7 dalam CS50 setakat ini, tetapi
mudah-mudahan kita boleh melakukan sedikit yang lebih baik daripada itu.
Dan sesungguhnya kita boleh.
>> Katakan bahawa kita sebagai manusia hanya sewenang-wenangnya membuat keputusan bahawa kita akan
untuk mengaitkan nombor seperti 1 dan 2, 3, 4, 5, 6, 7, dengan huruf tertentu
abjad.
Dan atas sebab-sebab sejarah, saya akan mula agak sewenang-wenangnya, tetapi saya
akan berkata, manusia, kita akan memutuskan standard, di seluruh dunia, yang
65 mewakili bilangan huruf A. 66 akan mewakili B. Dot, dot, dot.
90 akan mewakili Z. surat
>> Dan mari kita andaikan, jika kita benar-benar meletakkan beberapa berfikir ke dalamnya, kita boleh datang
dengan nombor untuk tanda seru dan huruf kecil, dan sesungguhnya,
orang lain telah dilakukan bahawa untuk kita.
Jadi sekarang kita mempunyai bit yang kita boleh mewakili nombor, nombor dengan yang
kita boleh mewakili huruf, dan dengan surat boleh kita kini mula mengarang
e-mel dan watak-watak percetakan pada skrin.
>> Jadi biarlah saya menjemput, jika saya boleh, lapan sukarelawan berani -
yang tidak keberatan muncul bukan sahaja pada kamera tetapi di internet -
untuk tampil di sini dan mewakili lapan seperti bit, dan bukannya tiga.
Jadi bagaimana kira-kira satu, dua?
Bagaimana kira-kira tiga?
Bagaimana kira-kira empat dalam cahaya biru, lima di akhir?
Tentang seseorang di sini?
Enam di hadapan, tujuh di hadapan, dan lapan di hadapan, serta.
>> Jadi saya hanya kebetulan datang bersedia dengan sekumpulan seluruh slip kertas.
Dan pada keping kertas nombor yang mewakili apa tiang
anda semua akan mewakili.
Jadi, anda akan - apa nama anda?
>> PELAJAR: Anna Lea.
>> DAVID MALAN: Anna Leah, anda akan menjadi ruang 128s.
Anda?
>> PELAJAR: Chris.
>> DAVID MALAN: Chris akan menjadi ruang 64s.
Anda?
>> PELAJAR: Dan.
>> DAVID MALAN: Dan akan menjadi ruang 32s.
>> PELAJAR: Pramit.
>> DAVID MALAN: Pramit akan menjadi ruang 16s itu.
>> PELAJAR: Lillian.
>> DAVID MALAN: Lillian akan 8s itu.
>> PELAJAR: Jill.
>> DAVID MALAN: Jill akan menjadi ruang 4s.
>> PELAJAR: Mary.
>> DAVID MALAN: Mary akan menjadi 2s, dan?
>> PELAJAR: Daud.
>> DAVID MALAN: David akan menjadi ruang 1s.
Jadi, jika anda semua boleh melangkah sedikit hadapan supaya semua orang boleh melihat.
Apa yang lelaki tidak melihat bahawa pada belakang ini slip kertas adalah
lembaran menipu kecil yang kira-kira untuk mengarahkan lapan bit untuk sama ada
mengangkat tangan atau tidak mengangkat tangan mereka.
Jika tangan mereka naik, mereka mewakili 1.
Jika tangan mereka tetap di bawah, mereka mewakili 0.
>> Sementara itu, kami penonton harus dapat mengetahui, berdasarkan ini
pemetaan, apa yang tiga huruf perkataan ini orang kira-kira untuk menyatakan.
Jadi dalam hanya seketika, anda akan membaca baris pertama dari belakang
lembaran menipu anda, dan anda sama ada akan menaikkan atau tidak mengangkat tangan anda.
Jika anda seorang 1, anda meningkatkan, jika anda 0, anda berdiri di sana
canggung, sama seperti itu.
Go.
Apakah nombor yang, pertama sekali, yang lelaki ini mewakili?
>> 66.
66, betul?
Kami mempunyai 1 dalam ruang 64s, 1 dalam ruangan 2s itu.
Yang memberikan saya 66, jadi yang muncul untuk mewakili B. Jadi
anda semua telah dinyatakan -
OK, itu sudah cukup.
B.
>> Jadi sekarang mari kita bergerak ke surat kedua kami.
Go.
Siapa cepat pada matematik di sini?
Jadi 79.
Sekali lagi, jika kita menambah semua daripada tiang-tiang di mana ada 1, pada masa ini, hanya
seperti yang kami lakukan sebelum ini dengan yang paling mudah contoh 7, kita sekarang
mendapatkan nombor 79.
Yang menurut pemetaan kita adalah surat O. Jadi, kita sudah hampir.
B, O. Dan akhir sekali, pergi.
>> Apa yang mereka mewakili sekarang?
Konsensus kurang.
Itu hanya satu bisikan mutlak.
Ya, ia sebenarnya 87.
Baik.
>> Jadi, jika kita merancang kembali bahawa sehingga - mari kita mula memanggil carta ASCII kami,
American Standard Code Pertukaran Maklumat.
Itu memberikan kami surat -
tidak "bo" tetapi "tunduk." Dan itulah yang sempurna petunjuk untuk anda semua untuk mengambil tunduk
dan kepala di belakang.
Thank you very much.
>> [Tepuk tangan]
>> DAVID MALAN: Anda boleh menjaga mereka.
Walaupun sebenarnya, akan sesiapa seperti lampu meja, juga?
>> [Berteriak DARI PENONTON]
>> DAVID MALAN: lampu meja?
>> [Ketawa]
>> DAVID MALAN: Betul ke?
Lampu meja untuk semua orang?
Baiklah.
Jadi bermula dengan yang paling mudah prinsip, kita kini bukan sahaja dikira
daripada 0 sepanjang jalan sehingga 7, kami telah menganggap bahawa hanya dengan membuang lebih banyak
bit atau lebih lampu atau lebih transistor pada masalah ini, kita boleh
mewakili nombor-nombor yang lebih besar dan lebih besar, dan ergo, antara yang lebih besar dan lebih besar
huruf, seperti bahasa Inggeris.
Dan hanya mari kita pada kepercayaan untuk hari ini yang sama kita boleh mula
mewakili grafik dan video dan apa-apa beberapa media lain yang dengannya kita
biasa hari ini.
>> Jadi ini adalah CS50, dan di dalam kelas ini bersama-sama anda, sekali lagi, sangat banyak
rakan-rakan yang mempunyai masa pengalaman seperti anda.
Dan saya menyebut ini hanya kerana agak sering, termasuk baru-baru ini sebagai salah satu
bayat menasihati peristiwa dan pada mahasiswa tingkat kedua musim bunga lepas menasihati
Sekiranya, kita sering mendengar pelajar menolak apabila datang ke meja CS, baik,
Saya telah memikirkan tentang mengambil ini kelas intro, tetapi saya tidak benar-benar
orang komputer.
Atau, tetapi semua orang pasti tahu lebih daripada saya.
Dan saya meletakkan ini dalam tulisan terbesar mungkin, untuk menyampaikan mesej ini bahawa
itu bukan sebenarnya kes itu.
>> Dan jika anda tertanya-tanya, sekiranya Saya, sebenarnya, berada di sini?
Sedar bahawa bukan sahaja ini kursus ini Tajuk Pengenalan kepada Komputer
Sains, ia adalah Pengenalan kepada Komputer Sains I. Jadi memang ada
pengenalan yang kedua itu.
Jadi anda tidak, sebenarnya, di tempat yang salah.
Dan di antara matlamat saya untuk hari ini untuk meredakan sebarang kebimbangan itu anda
mungkin ada, tetapi juga untuk melukis gambar apa yang di kedai untuk
pelajar-pelajar yang kurang dan lebih selesa sama dalam kursus ini.
>> Tetapi pertama, satu perkataan pada satu daripada pemberian anda mempunyai hari ini, antaranya
beberapa Lazim.
Ia adalah satu wawasan kita untuk beberapa ketika sekarang untuk memperkenalkan penggredan baru
pilihan ke dalam kursus ini - iaitu Sab / UNSAT.
Falsafah bagi saya, ia adalah lebih banyak, lebih penting bahawa
pelajar-pelajar di dalam kelas ini melibatkan diri dengan material, boleh dicabar oleh
material, dan bimbang jauh, jauh kurang tentang mekanik skor sebenar
dan gred surat pada semester akhir, tetapi benar-benar memeluk
kursus dan bahan-bahan itu.
Dan benar-benar ini berasa lebih amnya, untuk apa yang menarik kepada mereka,
berasa dicabar dan ganjaran tetapi tanpa rasa takut kegagalan.
>> Dan sesungguhnya, ini juga adalah yang berulang-ulang tema dalam ini dan lain-lain pengenalan
kursus-kursus dalam bidang-bidang lain, bahawa anda mempunyai trepidation ini apabila ia datang kepada
meletakkan jari seseorang dalam perairan yang tidak dikenali.
Saya sendiri, kembali pada tahun 1995, adalah bayat.
Saya amat memberi tumpuan kepada yang a concentrator Gov sini.
Dan lagi saya sentiasa membesar dengan sedikit kepentingan dalam sains komputer.
Saya sentiasa ingin tahu.
>> Tetapi ketika itu, walaupun, saya takut ini walaupun melangkah kaki di CS50, begitu banyak
supaya saya tidak membeli-belah ia tahun bayat.
Dan satu-satunya sebab saya meletakkan kaki di pintu tahun kedua adalah kerana saya
telah dibenarkan untuk mengambil lulus / gagal.
Tetapi walaupun lulus / gagal diperlukan bahawa saya mendapat sehingga saraf untuk membuat temujanji
dengan Profesor Kernehan pada masa itu, membawa lembaran ini besar kertas, dan meminta
dia untuk tandatangan beliau dan beliau kebenaran untuk meneroka
perairan ini yang tidak dikenali.
>> Dan ia tidak membantu dalam beberapa tahun kebelakangan apabila melakukan ini dalam CS50, apabila kita
digunakan untuk lulus / gagal, begitu juga akan berpuluh-puluh atau beratus-ratus rakan-rakan anda
perlu datang, Allah melarang, di hadapan Sanders dengan borang ini, bahawa
dalam sesetengah minda mewakili ketidakupayaan, Saya berani mengatakan, untuk melaksanakan
adalah tahap rakan-rakan anda.
Yang tidak masuk akal, tetapi saya fikir ada mentaliti itu.
Dan ada tidak pernah menjadi dalam budaya ini daripada SAT / UNSAT, atau lulus / gagal lebih
secara amnya, dalam kursus ini, atau benar-benar di kampus ini.
>> Jadi tahun ini kita berubah itu.
Saya akan gembira separuh daripada kelas ini atau lebih berakhir
sehingga mengambil CS50 Sab / UNSAT.
Dalam masa setahun, ia akan menjadi indah jika hampir semua orang.
Selepas itu mungkin kita akan bekerja pada gred surat di Harvard
Kolej amnya.
Tetapi untuk sekarang, kita akan melakukan ini dalam kami bidang sendiri, dan saya akan sepenuh hati
menggalakkan anda untuk mengkaji semula dan Soalan Lazim bertanya soalan seperti yang anda lihat patut, supaya
diharapkan anda, tidak seperti saya, tidak akan cukup mempunyai bahawa faktor ketakutan yang sama apabila
meneroka apa yang mungkin tempat yang tidak dikenali.
>> Jadi apa CS50?
Ia adalah satu pengenalan kepada perusahaan intelektual komputer
sains dan seni pengaturcaraan.
Tetapi apa yang benar-benar bermakna?
>> Well, setakat ini, kita berbincang secara ringkas kira-kira mewakili maklumat.
Tetapi menganggap bahawa kita benar-benar mahu untuk melakukan sesuatu dengannya.
Kita perlu memperkenalkan konsep apa yang kita akan memanggil algoritma.
Algoritma adalah satu prosedur, proses, satu set arahan untuk
melakukan sesuatu.
>> Dan algoritma boleh menjadi sesuatu mudah super.
Sebagai contoh, satu contoh yang mana beberapa anda mungkin biasa ialah
perkara di sini.
Jadi buku ini di sini adalah semakin tarikh, tetapi pada satu ketika dahulu, ia
terkandung banyak seluruh nama-nama dan nombor telefon.
Dan sesungguhnya, jika saya mahu mencari seseorang di dalam buku telefon ini -
berkata, seseorang yang bernama Mike Smith -
Saya dapat mencari Mike Smith dalam apa-apa bilangan cara yang agak mudah.
Saya boleh bermula pada awal dan bergerak ke muka surat 1, tidak ada.
Page 2, tidak ada.
Page 3.
Adalah algoritma itu, adalah bahawa proses, betul?
>> Jadi ia adalah betul, bukan?
Saya jenis bodoh untuk melakukannya di bahawa cara, tetapi akhirnya saya akan
mencari nama keluarga S, dan diharapkan Mike adalah dalam seksyen itu, dan saya akan menjadi
dilakukan dengan algoritma saya.
Tetapi sudah tentu ia bukan intuitif.
Setiap manusia yang paling munasabah dalam bilik tidak akan berbuat begitu.
Apa yang akan anda lakukan?
>> Anda akan telah lurus ke tengah, betul-betul?
Kira-kira ke tengah.
Dan anda sedar, oh, ini adalah Cik Jadi Mike Smith, nama terakhir adalah Smith,
tidak, jelas, maka dalam separuh kiri buku ini.
Dia mesti ke arah S adalah di sebelah kanan.
Dan pada ketika ini, walaupun kebanyakan kita tidak melakukan ini pada hakikatnya, kita boleh
betul-betul lusuh masalah ini pada separuh.
>> [Bersorak dan tepukan]
>> DAVID MALAN: Terima kasih.
>> [Bersorak dan tepukan]
>> DAVID MALAN: Anda benar-benar boleh lusuh ini masalah dalam separuh, meninggalkan saya dengan,
secara literal, setengah masalah kerana besar.
Jadi, jika buku telefon ini adalah - dan ia mungkin adalah - kira-kira 1,000 muka surat, kini
ia hanya 500.
Jika saya melakukan ini sekali lagi dan saya sedar, oh, damn, saya pergi terlalu jauh, saya dalam Ts
seksyen, saya boleh juga -
kiasan atau harfiah -
merobek buku telefon - ia adalah benar-benar lebih mudah ketika itu.
Saya benar-benar boleh merobek buku telefon pada separuh, meninggalkan saya sekarang dengan
tidak 1000, bukan 500 -
250 muka surat.
Dan saya boleh pergi 125, dan separuh daripada itu, dan separuh daripada itu, dan separuh daripada itu,
sehingga akhirnya saya akan ditinggalkan dengan hanya satu halaman.
>> [Ketawa]
>> DAVID MALAN: Itulah bahagian I gagal pada.
Satu halaman tunggal yang Mike adalah diharapkan.
Sekarang mereka algoritma yang berbeza boleh jenis dinilai atau dinilai dalam
cara yang berbeza.
Yang pertama adalah sangat linear, bukan?
Menjadikan halaman, mencari Mike.
Ia amat linear.
Jika ada satu halaman yang lebih dalam telefon buku, ia mungkin akan mengambil saya
satu lagi kedua, satu unit masa, Walau bagaimanapun kita mengira masa.
>> Jadi saya mungkin menarik seperti ini baris ini di sini, di mana seperti saiz
masalah kenaikan dari kiri ke kanan -
buku telefon mendapat yang lebih kecil untuk lebih besar -
dan masa akan meningkat pada paksi menegak, yang lebih besar
buku telefon itu.
Jadi n hanya ubah umum bahawa saintis komputer digunakan untuk mewakili
beberapa nilai, nombor tertentu.
Jadi n akan meningkatkan linear.
Menggandakan saiz buku telefon, ia akan membawa saya dua kali ganda
masa, kemungkinan besar, untuk mencari Mike.
>> Sekarang saya boleh menjadi pintar tentang perkara ini, bukan?
Saya bosan dengan cepat.
Boleh melakukan ini dengan berdua-dua.
Jadi dua muka surat, kemudian empat, kemudian enam, maka lapan.
Dan saya boleh mula terbang melalui satu sedikit lebih cepat, walaupun pada risiko kecil
overshooting Mike, tetapi keluk yang tidak akan semua yang berbeza.
Ia masih akan menjadi lurus line, tetapi sedikit lebih cepat.
>> Tetapi apa yang saya lakukan?
Saya benar-benar melakukan sesuatu asasnya yang lebih baik.
Saya mencapai apa yang kita akan memanggil logaritma masa, log n, di mana hijau ini
talian mempunyai banyak, banyak, banyak kelebihan kurang lurus kepadanya.
Dan sebaliknya, ia menunjukkan, kerana ia semacam menghampiri infiniti pernah jadi secara beransur-ansur,
bahawa saya sebenarnya boleh mengambil-page 1000 buku telefon, dua kali ganda saiz
tahun depan - kerana rasa banyak lebih ramai orang berpindah ke bandar.
>> Jadi sekarang saya telah mendapat 2,000 muka surat, tetapi bagaimana banyak lagi langkah-langkah yang bijak adalah
algoritma akan mengambil?
Hanya satu.
Maksud saya, itu adalah satu perkara yang berkuasa.
Jika kita pergi ke muka surat 4,000 tahun depan, yang akan mengambil saya
hanya dua langkah.
Jadi, anda boleh membuang lebih besar dan lebih besar masalah pada saya, tidak seperti web adalah
membuang masalah yang lebih besar dan lebih besar setiap hari di Google dan Facebooks daripada
dunia, dan ia tidak apa-apa masalah besar.
Kerana saya meletakkan pemikiran lebih dan penjagaan ke algoritma saya dengan yang untuk menyelesaikan
masalah cekap.
>> Dan sesungguhnya, yang akan menjadi salah satu matlamat kursus ini.
Anda akan, di sepanjang jalan, belajar bagaimana untuk program.
Anda akan belajar bagaimana untuk program di apa-apa bilangan bahasa.
Tetapi pada akhir hari, kursus ini mengenai menyelesaikan masalah dan mendapat
lebih baik pada menyelesaikan masalah - dan, seperti dalam kes-kes seperti ini, penyelesaian masalah
dengan lebih cekap.
>> Sekarang setakat ini, kami telah melakukan ini agak intuitif.
Mari kita memperkenalkan sesuatu yang agak generik dipanggil kod pseudo.
Oleh itu, kita akhirnya akan dapat, dalam kursus ini, untuk
pelbagai bahasa pengaturcaraan.
Tetapi hari ini kita akan buat dalam bahasa Inggeris seperti sintaks, di mana anda hanya jenis mengatakan
apa yang anda maksudkan, tetapi anda pernah jadi ringkas dan anda tidak bimbang tentang
tatabahasa dan ayat yang lengkap.
Anda hanya menyatakan diri sebagai ringkas yang mungkin.
>> Jadi pseudokod adalah Bahasa Inggeris seperti sintaksis yang mewakili
bahasa pengaturcaraan.
Dan ke arah itu, izinkan saya mencadangkan supaya kita kini model proses kita hanya
diterangkan mengira sesuatu yang sedikit berbeza, kali ini mengambil
melihat video ini lima minit dihasilkan oleh rakan-rakan kami di TED yang
mentakrifkan apa pseudokod adalah, mentakrifkan apa pemikiran algoritma adalah, dan juga
walaupun contoh yang anda kira-kira untuk melihat adalah, dalam dirinya sendiri, super mudah, ia adalah
akan mula memberi kita mental model, perbendaharaan kata, dengan yang
berbuat banyak, lebih kompleks algoritma agak cepat.
>> [MULA MAIN SEMULA VIDEO]
>> [Bermain muzik]
>> Pencerita: Apakah algoritma?
Dalam sains komputer, algoritma adalah set arahan untuk menyelesaikan beberapa
masalah langkah demi langkah.
Biasanya, algoritma dilaksanakan oleh komputer, tetapi kita manusia mempunyai
algoritma, juga.
Sebagai contoh, bagaimana anda akan pergi kira-kira mengira bilangan
orang di dalam bilik?
Nah, jika anda seperti saya, anda lebih mungkin mata pada setiap orang, satu di
masa, dan mengira dari 0.
1, 2, 3, 4, dan sebagainya.
>> Nah, itu algoritma.
Malah, mari kita cuba untuk menyatakan ia sedikit lebih secara rasmi di pseudokod -
Sintaks bahasa Inggeris seperti yang menyerupai bahasa pengaturcaraan.
Mari N 0 sama.
Bagi setiap orang di dalam bilik, yang ditetapkan N sama dengan N campur 1.
>> Bagaimana untuk mentafsir pseudokod ini?
Nah, satu baris mengisytiharkan, jadi untuk bercakap, ubah yang dipanggil N dan kepada asal
nilai kepada 0.
Ini hanya bermakna bahawa pada awal algoritma kami, perkara yang dengannya
kami mengira mempunyai nilai 0.
Lagipun, sebelum kita mula mengira, kami tidak dikira apa-apa lagi.
Panggilan ini N ubah hanya konvensyen.
Saya boleh memanggilnya apa-apa yang paling.
>> Sekarang garis dua demarks permulaan gelung, satu urutan langkah-langkah yang akan
mengulangi beberapa beberapa kali.
Jadi, dalam contoh kita, langkah yang kita ambil mengharapkan orang di dalam bilik.
Di bawah garis dua adalah barisan tiga, yang menerangkan bagaimana
kami akan pergi kira-kira mengira.
Kasturi ini menunjukkan bahawa ia adalah tiga baris yang akan berulang.
>> Jadi apa pseudokod yang dikatakan adalah bahawa selepas bermula pada 0, bagi setiap
orang di dalam bilik, kami akan meningkatkan N oleh 1.
Sekarang adalah algoritma ini betul?
Nah, mari kita bang pada sedikit.
Adakah ia berfungsi jika terdapat dua orang di dalam bilik?
Mari kita lihat.
>> Selaras satu, kita memulakan N kepada 0.
Bagi setiap dua orang, kita kemudian kenaikan N oleh 1.
Jadi dalam perjalanan pertama melalui gelung, kita kini N dari 0 kepada 1.
Pada perjalanan kedua melalui yang sama gelung, kita kini N dari 1 hingga 2.
Dan sebagainya dengan tujuan ini algoritma ini, n 2, yang sememangnya sepadan dengan bilangan
orang di dalam bilik.
>> Setakat ini, begitu baik.
Bagaimana pula dengan kes sudut, walaupun?
Katakan terdapat 0 orang di dalam bilik - selain saya,
siapa yang melakukan pengiraan.
Selaras satu, kita memulakan N kepada 0.
Kali ini, walaupun, garis tiga tidak melaksanakan di semua kerana tidak ada
orang di dalam bilik.
Dan sebagainya N masih 0, yang sepadan dengan beberapa orang di dalam bilik.
Agak mudah, bukan?
>> Tetapi orang-orang mengira pada satu masa agak tidak cekap, terlalu, tidak?
Sesungguhnya kita boleh melakukan yang lebih baik.
Mengapa tidak mengira dua orang pada satu masa?
Sebaliknya mengira 1, 2, 3, 4, 5, 6, 7, 8, dan sebagainya, mengapa tidak mengira, 2,
4, 6, 8, dan sebagainya?
Ia juga kedengaran lebih cepat, dan ia pasti adalah.
>> Mari kita meluahkan pengoptimuman ini dalam kod pseudo.
Mari N 0 sama.
Bagi setiap pasangan orang di dalam bilik, ditetapkan N sama dengan N campur 2.
Perubahan yang agak mudah, bukan?
Bukannya orang kiraan satu pada satu masa, kita bukannya mengira
mereka dua pada satu masa.
Algoritma ini adalah dengan itu dua kali secepat yang lalu.
>> Tetapi adakah ia betul?
Mari kita lihat.
Adakah ia berfungsi jika terdapat dua orang di dalam bilik?
Selaras satu, kita memulakan N kepada 0.
Bagi pasangan satu orang, kita kemudian kenaikan N dengan dua.
Dan sebagainya dengan tujuan ini algoritma, N 2, yang sememangnya sepadan dengan bilangan
orang di dalam bilik.
>> Katakan seterusnya yang terdapat 0 orang di dalam bilik.
Selaras satu, kita memulakan N kepada 0.
Seperti sebelum ini, barisan tiga tidak melaksanakan pada semua, kerana tidak ada mana-mana pasangan
orang di dalam bilik.
Dan sebagainya N masih 0, yang sememangnya sepadan dengan bilangan
orang di dalam bilik.
>> Tetapi bagaimana jika terdapat tiga orang di dalam bilik itu?
Bagaimana ini tambang algoritma?
Mari kita lihat.
Selaras satu, kita memulakan N kepada 0.
Untuk sepasang orang-orang, kita kemudian kenaikan N dengan 2.
Tetapi apa?
Tidak ada satu lagi pasangan yang penuh dengan orang di dalam bilik, jadi dua baris tidak
lagi terpakai.
Dan sebagainya dengan tujuan ini algoritma, N masih 2, yang tidak betul.
>> Malah, algoritma ini yang dikatakan kereta, kerana ia mempunyai kesilapan.
Mari pembelaan dengan beberapa pseudokod baru.
Mari n 0 sama untuk setiap pasangan orang di dalam bilik.
Set N sama dengan N campur 2.
Jika seseorang masih berpasangan, ditetapkan N sama dengan N campur 1.
Untuk menyelesaikan masalah ini khususnya, kami telah diperkenalkan, selaras empat, yang
keadaan, atau dikenali sebagai cawangan yang hanya melaksanakan jika ada satu
orang yang kita tidak boleh pasangan dengan yang lain.
Dan sehingga kini, sama ada satu atau tiga atau apa-apa bilangan ganjil orang di
Bilik, algoritma ini kini akan mengira mereka.
>> Bolehkah kita melakukan yang lebih baik?
Nah, kita boleh mengira dalam 3 yang atau 4s atau 5S dan 10s, tetapi lebih dari itu, ia adalah
akan mendapat sedikit sukar untuk mata.
Pada akhir hari ini, sama ada dilaksanakan oleh komputer atau manusia,
algoritma hanya satu set arahan dengan
untuk menyelesaikan masalah.
Ini hanya tiga.
Apa masalah yang anda menyelesaikan dengan algoritma?
>> [AKHIR VIDEO MAIN SEMULA]
>> DAVID MALAN: Itu adalah satu-satunya masa Saya akan muncul dalam bentuk kartun.
Tetapi di mana cerita yang daun dari, sekarang, bagaimana kita boleh melakukan yang lebih baik?
Bertiga dan merangkak, kita mendakwa, kita boleh mengira orang-orang yang lebih cepat, tetapi kita boleh
asasnya melakukan lebih baik daripada itu?
Dan saya taruhan kita boleh.
>> Jika kita memperkenalkan sedikit kita sendiri pseudokod di sini, saya akan mencadangkan
bahawa kita boleh mencapai baris seperti ini.
Kami tidak akan mengira orang satu, dua, tiga, empat.
Kami tidak akan pergi ke dua, empat, enam, lapan.
Kami akan melakukan yang lebih baik pada asasnya memikirkan semula oleh masalah itu, dan dalam hal ini
kes, sebaliknya memanfaatkan digunakan sepenuhnya sumber.
>> Dalam seketika, saya berharap anda akan memaafkan dan humor kami oleh berdiri di
tempat, di mana titik kita akan bertanya kepada setiap kamu untuk mengambil di anda
minda nombor 1.
Anda kemudian akan semakin canggung, sebagai masa berlalu, mencari
orang lain yang berdiri, menggabungkan nombor anda bersama-sama
dengan menambah mereka.
Salah seorang daripada kamu kemudiannya akan berlumba untuk duduk turun pertama, dan orang lain
akan berulang.
>> Jadi, dalam erti kata lain, dengan kekuatan semua anda dengan nombor 1, dan kemudian
menggabungkan mereka ke dalam 1s 2s 2s dan orang-orang ke 4s, dengan semua orang semakin
duduk, kita harus, pada akhir algoritma ini, mempunyai hanya satu pinjaman
jiwa yang tidak duduk dengan cukup pantas tetapi yang mempunyai jumlah keseluruhan penonton
dalam atau fikirannya.
>> Jadi, jika anda akan, mari kita pergi ke hadapan dan - langkah satu - berdiri di tempat.
Dan melaksanakan.
>> [Orang ramai merungut]
>> DAVID MALAN: Adakah anda tahu mana Lauren adalah?
729?
>> [Orang ramai merungut]
>> DAVID MALAN: Semua betul?
>> [Orang ramai merungut]
>> DAVID MALAN: Baiklah, kita harus akan hampir akhir.
Kita melihat satu rakan-rakan di sini masih berdiri.
Siapa lagi yang perlu berpasangan?
Jika anda semua ingin berpasangan.
Seseorang top up.
Kenapa saya tidak menghulurkan tangan di sini.
Bagi segelintir orang yang masih berdiri, apa nombor yang anda
ada di dalam fikiran anda?
>> PELAJAR: 78.
>> DAVID MALAN: 78 plus -
siapa yang berdiri di bawah sini?
>> PELAJAR: 39.
>> DAVID MALAN: Plus 39.
Plus yang lain masih berdiri?
81?
OK, siapa lagi?
81 yang lain?
Wow.
Dan kemudian apa yang ada di belakang?
>> PELAJAR: 49.
>> DAVID MALAN: 49, ditambah?
>> PELAJAR: 98.
>> DAVID MALAN: 98 plus?
Adalah bahawa orang lain?
12?
Kerja yang baik.
>> [Ketawa]
>> DAVID MALAN: Oh, 112 -
oh.
Baik kerja!
>> [Ketawa]
>> [Tepuk tangan]
>> DAVID MALAN: Sesiapa sahaja masih berdiri?
Maaf?
>> PELAJAR: 99.
>> DAVID MALAN: 99.
Sesiapa sahaja yang masih berdiri?
Dan jumlah pelajar-pelajar di sini sebenarnya, menurut -
adakah anda mempunyai nombor?
Oh, bilangan sebenar orang di bilik, mengikut akaun yang
rakan-rakan yang mengajar telah melakukan dalam perjalanan semua orang dalam, adalah 729.
Jadi keluar dari sebilik penuh pelajar Harvard yang dikira sendiri,
Jawapannya adalah 637.
>> [Ketawa]
>> DAVID MALAN: Jadi dekat.
Tetapi masih.
OK, supaya pengajaran masa, bukan?
Sekarang ini adalah apa yang kita gambarkan sebagai bug.
Tempat di sepanjang perjalanan, kami melakukan beberapa aritmetik salah, atau orang yang duduk,
atau kiri, atau sesuatu yang salah.
Tetapi itu tidak mengapa.
Kerana walaupun masih, kita mendapat cukup dekat.
Dan saya berpendapat bahawa kita dapat yang salah menjawab banyak yang lebih cepat daripada saya akan mempunyai
menggunakan pendekatan saya lebih linear.
>> Jadi mari kita menganggap kita sebenarnya tidak mendapat bahawa membetulkan, tetapi berfikir tentang apa yang kini
yang berlaku setiap kali, berbanding saya sendiri algoritma menunjuk naif.
Satu, dua, tiga.
Jika ada sememangnya adalah 729 atau 637 orang di sini, yang akan mengambil saya
betul-betul 637 atau 729 pointings satu jari dan
menokok jumlah kiraan saya.
Dan saya boleh melakukan sedikit lebih baik dengan akan dua, empat, enam, lapan, dan
dua kali ganda kelajuan itu, mungkin juga tiga atau empat kali ganda, bergantung bagaimana saya boleh
berbuat demikian mengira dalam kepala saya.
>> Tetapi pendekatan ini yang anda semua mengambil adalah berbeza.
Kerana pada mulanya, anda semua berdiri.
Jadi semua 729.
Dan kemudian benar-benar separuh anda duduk.
Dan selepas itu, satu lagi separuh daripada anda duduk.
>> Dan jumlah masa yang anda lelaki boleh duduk adalah lebih kurang
lapan atau sembilan atau sepuluh jumlah masa, bergantung kepada apa yang jumlah kiraan kita.
Dan kita boleh menyusun daripada melakukan ini cara yang lain.
Jika kita mempunyai 1,024 orang di dalam bilik itu, jumlah masa anda boleh
mengurangkan separuh 1,024 orang adalah 10.
>> Sekarang berfikir tentang hal itu dalam arah lain.
Katakan, sungguh, bahawa kita mempunyai, katakan empat bilion orang di dalam bilik ini,
atau bilik lebih besar.
Berapa kali kita akan pergi melalui algoritma ini, seperti separuh
kelas yang duduk?
Ia hanya akan mengambil 32 seperti operasi, walaupun dalam kelas saiz
empat bilion.
Mengapa?
Kerana empat bilion pergi ke dua bilion, pergi ke satu juta, pergi ke
500 juta, pergi ke 250 juta, dot, dot, dot.
Saya hanya boleh melakukan bahagian yang kira-kira 32 kali, di mana ketika, semua orang kecuali
seseorang akan dibiarkan berdiri.
>> Dan itu juga adalah jenis yang kuat idea yang semakin kita akan cuba
leverage dalam kursus ini, dan dalam pengaturcaraan dan sains komputer yang lebih
secara amnya, kuman sesuatu idea dengan yang kita boleh menyelesaikan masalah banyak,
lebih kuat.
Jadi kami mula agak mudah dengan pseudokod dan seorang lelaki di dalam bilik, tetapi
kini dengan seluruh bilik penuh dengan orang yang telah kita lakukan pada asasnya yang lebih baik.
>> Nah, mari kita kini peralihan dari pseudokod untuk beberapa kod sebenar.
Bahasa ini anda kira-kira untuk melihat berlaku akan dipanggil JavaScript, dan
kami akan kembali ini ke arah akhir semester.
Ia adalah satu bahasa pengaturcaraan yang anda digunakan untuk membuat laman web dan lain-lain
perisian pada hari ini.
Dan kita telah digunakan, terima kasih kepada rakan daripada kita di Stanford, untuk mengekod
beberapa maklumat tersembunyi di sini.
Ini adalah seni steganografi, jadi untuk bercakap, di mana anda boleh menyembunyikan
maklumat apa yang sebaliknya kelihatan bunyi bising atau yang sama sekali berbeza
imej sama sekali.
Tetapi tertanam dalam imej ini tertentu merupakan satu mesej rahsia kejayaannya.
>> Jadi biarlah saya pergi ke hadapan dan tarik sehingga imej yang sama di sini, ini
masa dalam pelayar web.
Dan saya akan melambai tangan saya pada beberapa butiran untuk hari ini, terutamanya
untuk anda yang ini kelihatan seperti bukan sahaja JavaScript tetapi Greek, sebagai
sepenuhnya bahasa asing.
Tetapi ini adalah satu contoh bahasa pengaturcaraan.
>> Dan sekarang, mengambil kepercayaan bahawa baris ini pertama kod -
dan oleh kod, saya hanya bermakna teks.
Text yang boleh saya telah benar-benar ditaip ke dalam Microsoft Word, jika saya mempunyai
perisian hak untuk kemudian melakukan sesuatu dengan ia.
Kod sumber pengaturcaraan, pengaturcaraan kod, adalah benar-benar hanya teks, dan ia
kelihatan berbeza berdasarkan apa bahasa anda menggunakan, tidak seperti bahasa Inggeris dan
Sepanyol dan Rusia semua kelihatan berbeza apabila anda menaip mereka pada papan kekunci anda.
>> Jadi baris pertama ini, buat masa ini mengambil iman, hanya membuka grafik dari
internet, grafik yang bising kita hanya melihat.
Ini sejajar seterusnya di sini adalah satu contoh gelung, dan kita sebenarnya melihat bahawa sama
jargon dalam video TED.
Gelung adalah sesuatu yang berlaku sekali lagi dan sekali lagi, dan walaupun ini
benar-benar kelihatan samar, dengan kata kunci untuk, dan beberapa kurungan, dan
beberapa koma bertitik.
Kami akan kembali kepada yang lama, tetapi gelung bahawa terdapat pada asasnya adalah
memberitahu program ini, melelar atas segala orang-orang titik bising, dari kiri ke
kanan, atas ke bawah.
>> Kerana pada akhir hari, imej seperti ini - dan anda boleh sebenarnya
jenis melihatnya pada projektor ini -
adalah benar-benar hanya grid titik.
Oleh itu, kita dapat mengenal pasti setiap orang-orang titik oleh koordinat, x, y, dan dengan ini
program, sekarang kita boleh mula melakukan sesuatu untuk mereka titik.
>> Jadi apa yang saya akan pergi ke hadapan di sini dan lakukan adalah saya akan membuat beberapa perubahan.
Pertama saya akan pergi ke hadapan dan menghilangkan semua yang kehijauan dan kebiruan
bunyi, dan saya akan pergi ke hadapan dan taip yang berikut
diakui sintaks samar.
im untuk imej.
set biru di lokasi x, koma, lokasi y, kepada 0.
Dalam erti kata lain, saya mahu hanya mematikan semua biru
titik dalam gambar itu.
>> Saya akan pergi ke hadapan sekarang dan klik Run ini / butang Simpan, dan anda akan
notis pada sebelah kanan, imej yang terhasil muncul.
Sekarang hijau super, tetapi itu bukan menghairankan, kerana saya benar-benar bertukar
luar, dengan membuat 1 0 a, semua biru dalam gambar itu.
>> Nah, sekarang mari kita buat ia sedikit lebih.
im untuk imej, titik setGreen, x, y.
Dan itu hanya bermakna Itekadar dari kiri ke kanan dan kemudian atas ke bawah.
Mematikannya dengan nilai 0, juga.
Simpan.
Dan pada projektor, anda tidak boleh benar-benar benar-benar melihat apa-apa pada semua.
>> Pada skrin komputer riba saya, jika saya rakan sebaya dalam hanya dengan cara yang betul, saya dapat melihat sedikit daripada
imej, kerana mereka masih beberapa merah di sana.
Jika anda pernah mendengar singkatan RGB -
merah, hijau, biru -
ia merujuk kepada komposisi ini imej menggunakan
hanya mereka tiga warna.
Dan sekarang, kita telah dibuang semua hijau, semua biru, tetapi
tidak banyak merah.
>> Jadi biarlah saya engkol sehingga merah.
Bagaimana saya boleh berbuat demikian?
Well, pertama, saya akan bertanya program ini soalan.
Saya akan pergi ke hadapan dan mari kita memanggilnya berubah-ubah, seperti dalam algebra.
Anda boleh mempunyai x atau y atau z.
Saya akan mengisytiharkan pembolehubah dan berkata, meletakkan dalam pembolehubah ini,
buat sementara waktu, nilai imej getRed nilai pada x, y.
>> Dan sekali lagi, kita akan kembali kepada semua butiran ini pada masa hadapan.
Tetapi untuk sekarang, hanya mengambil pada kepercayaan bahawa baris ini meminta program, apa
nilai merah di x, y?
Pada titik tertentu?
>> Kemudian saya akan melakukan sesuatu untuk itu.
Kemudian saya akan melakukan imej titik set merah pada x, y, y tetapi kali ini saya akan
meningkatkan dengan melakukan kali merah, katakan, 10.
Jadi peningkatan sebanyak faktor 10.
Biar saya zum keluar sekarang dan klik dapat Run / Simpan.
Dan Voilà, yang berada di sana keseluruhan masa, walaupun mata manusia
tidak cukup melihatnya.
>> Jadi sekali lagi, sekarang ini adalah kod yang sebenar, satu contoh bahasa yang kami akan datang
kembali ke tidak lama lagi.
Tetapi sedar, terutama orang-orang yang anda tidak mempunyai pengalaman itu, ia agak
tidak lama lagi yang kita sendiri akan menulis kod seperti itu di sana.
Malah, alat dengan yang anda semua agak biasa, mungkin, adalah yang CS50
sendiri alat kursus-membeli-belah, yang merupakan sebenarnya reboot musim panas ini oleh beberapa
bekas pelajar CS50 sendiri, kini giliran TFS.
>> Jadi ini berlaku untuk menjadi sebuah laman web yang dibina dalam bahasa yang dikenali sebagai PHP.
Ia menggunakan pangkalan data yang dipanggil MySQL, perkara-perkara yang kita akan mendapat tangan kita
kotor kemudian pada semester tersebut.
Tetapi percaya atau tidak, walaupun sesuatu seperti ini akhirnya mengurangkan ke
mudah gelung dan syarat-syarat dan cawangan, seperti yang kita lihat hanya
masa lalu dalam video TED.
>> Apa yang saya fikir saya akan lakukan sekarang ialah saham tidak hanya sesuatu yang kita kakitangan telah dibuat
untuk kampus, tetapi sesuatu bekas pelajar - tiga
pelajar, sebenarnya -
dibuat pada tahun ini yang lalu, Sierra, Daniel, dan Sam, yang terakhir yang tidak mempunyai sebelum
pengalaman programing apabila dia telah mengambil CS50.
Dan untuk projek akhir mereka, mereka dipamerkan, di Pesta CS50, satu
permohonan dipanggil wrdly, yang merupakan program berasaskan web yang mana mereka dibuat
video ini yang saya fikir saya akan berkongsi kepada memberi anda rasa hanya apa yang
mungkin pada akhir tempoh itu.
>> [Bermain muzik]
>> DAVID MALAN: Itu dari Minggu Zero untuk Minggu 12 tahun lepas.
>> [Tepuk tangan]
>> DAVID MALAN: Sebagai memujuknya juga benar-benar untuk membangkitkan selera anda adalah untuk apa yang
mungkin, anda mungkin telah melihat sudah, atau tidak lama lagi boleh melihat, market.cs50.net, satu
alat baru pasukan itu tentu mempunyai telah bekerja di, kali ini dalam
dengan kerjasama Pelajar Harvard Agensi seperti yang bermula tahun ini
dan berterusan ke dalam ini diharapkan datang musim panas anda akan mempunyai standard yang
peluang di kampus untuk membeli dan menjual perkara-perkara yang menarik minat anda.
Dan dengan perkongsian melalui HSA, anda akan juga dapat melepas item off
dalam salah satu daripada kedai-kedai fizikal HSA di beberapa titik di masa depan, supaya
perkara proksi, terutamanya kerana anda lulus dan tidak semestinya mahu
membuang perkara-perkara, tetapi sebenarnya membayar mengemukakan kepada orang yang mungkin mengikuti anda
di sini di kampus.
Jadi lebih pada yang akan datang.
>> Tetapi yang lebih konkrit, alat itu keluar dari CS50 di baru-baru ini
tahun, yang mana sebahagian dari kamu mungkin biasa dan lain-lain anda mungkin
Googling sekarang, di CS50.net/2x, anda akan mencari pautan kepada lanjutan Chrome
yang demikian menggambarkan bagaimana anda boleh menggunakan JavaScript, bahasa yang sama kita
digunakan dengan menara Eiffel masa yang lalu, untuk melaksanakan kelajuan main 2x
untuk semua Harvard iSites video.
Ini adalah sesuatu yang dibina ke dalam pemain video CS50 sendiri.
Tetapi ini, juga, jika anda mula menggali kepada kod sumber, yang kita akan
gembira menjadikan tersedia, anda akan melihat bagaimana anda juga boleh menyelesaikan masalah-masalah seperti itu,
mempercepatkan widget di laman web dengan yang anda sudah biasa.
>> Jadi perkataan sekarang kursus dan harapan dan apa yang akan berlaku.
Secara umum, kita memang akan berkumpul di sini pada hari Isnin dan Rabu - walaupun
Jumaat ini, kita akan berkumpul kerana Minggu Membeli-belah -
1:00-2:00, walaupun kadang-kadang sehingga 02:30.
Memandangkan bahawa anda itu mungkin mahu atau perlu mengambil beberapa kelas pada 2:00 PM
seterusnya, malah sebelum ini, tidak menyedari sememangnya menyokong apa yang dipanggil
pendaftaran serentak, di mana kita akan menyokong petisyen kepada Lembaga Iklan dan
dekan bermastautin anda bagi pihak anda jika anda mempunyai konflik di suatu tempat di ini
1:00-2:30 range.
Ketua kepada bahawa talian URL untuk butiran tambahan.
>> Tetapi dari segi struktur sokongan yang menyifatkan CS50, pelajar
lebih dan kurang selesa sama, kita menawarkan trek yang berbeza bahagian.
Dan ini adalah beberapa minggu di luar, tetapi tidak lama lagi, anda akan diminta untuk
tahap keselesaan anda.
Adakah anda di kalangan mereka yang kurang selesa, lebih selesa, atau
di suatu tempat di antara keduanya?
>> Dan kita akan mempunyai tiga berbeza trek yang memenuhi
tepat orang-orang penonton.
Jadi pada tiada titik dalam jangka sekiranya anda walaupun berasa seperti anda sedang bersaing
terhadap mana-mana pelajar yang lebih atau latar belakang kurang daripada anda.
Malah, kursus ini bertujuan untuk menjadi lebih banyak kerjasama dan
lebih terbuka daripada itu.
>> Dari segi set masalah, anda akan mencari, juga, bahawa di samping
edisi standard masalah setiap minggu ditetapkan, terdapat sering "penggodam
edisi "yang bertujuan untuk disasarkan pada 5% kepada 10% atau lebih daripada
demografi yang sememangnya di kalangan mereka lebih selesa dan ingin lebih
daripada cabaran daripada standard edisi pset yang menjangka.
Maklumat lanjut mengenai orang-orang untuk menjadi yang terdapat dalam sukatan pelajaran.
>> Tetapi juga di sana boleh didapati butir-butir pada kursus-kursus hari lewat.
Biasanya masalah menetapkan adalah disebabkan pada hari Khamis.
Walau bagaimanapun, anda boleh melanjutkan banyak anda tarikh akhir ini jatuh dari Khamis untuk
Jumaat hanya dengan memenuhi kita separuh jalan, jadi untuk bercakap, menjawab beberapa memanaskan badan
soalan di dalam beberapa masalah minggu ini set, yang akan secara automatik
kemudian memberi anda tambahan 24 jam.
Kami juga akan jatuh paling rendah anda skor, seperti sukatan pelajaran.
>> Untuk memberi anda rasa apa masalah set - kerana ia sememangnya
masalah tentu telah menetapkan bahawa akhirnya menentukan hampir setiap
pengalaman pelajar, lebih-lebih lagi daripada ceramah, lebih-lebih lagi daripada bahagian, lebih
jadi daripada kebanyakan yang lain aspek kursus.
Tahun lepas, misalnya, kita bermula, sebagai kita akan bermula tahun ini, dengan calar.
Terutama Jumaat ini, kami akan menggunakan, untuk hanya masa satu hari, grafik
bahasa pengaturcaraan, yang mana kita akan mulakan program dengan menarik dan
menjatuhkan kepingan teka-teki yang hanya berhimpun secara fizikal jika ia masuk akal
untuk berbuat demikian secara logik.
>> Minggu depan, kita akan cepat peralihan kepada C, yang agak lama tetapi sangat kecil dan
bahasa yang mudah yang akan membolehkan kita untuk benar-benar pergi 0-60 sepanjang
hanya beberapa minggu, dan kemudian parlay kemahiran yang sama dan pengetahuan
membina asas pengaturcaraan ke bahasa peringkat tinggi seperti PHP,
JavaScript, dan yang lain masih.
>> Tahun lepas, pset ketiga dalam perjalanan ialah kriptografi, satu
permohonan domain khusus di mana kami pelajar dicabar untuk melaksanakan apa-apa
beberapa rahsia, program-program dengan yang untuk berebut atau menguraikan maklumat,
untuk menyulitkan itu.
Untuk edisi penggodam, sebaliknya, kami memberikan pelajar hacker fail
dari komputer Unix standard yang mengandungi nama pengguna dan kata laluan,
kedua yang tidak disulitkan, dan kami mencabar mereka penggodam
pelajar untuk menyahsulit, sebaik mereka boleh, mereka kata laluan, yang masih di
domain yang sama.
>> Kacau, permainan dengan yang ada daripada anda mungkin biasa.
Sekeping forensik, di mana kita minta pelajar untuk memulihkan data yang telah
jika tidak dipadam dari digital saya sendiri kad kilat padat kamera, oleh
sebenarnya menulis perisian untuk memikirkan, mana adalah sifar dan orang-orang di
bahawa kamera digital yang sebelum ini terdiri grafik JPEG?
>> Cabaran macam tahun lepas melibatkan bertulis yang paling cepat
ejaan pemeriksa boleh, bersaing terhadap rakan-rakan dan rakan-rakan jika
mereka suka.
Melaksanakan Huff 'n Puff, program mampatan.
Dan kemudian berakhir semester dengan CS50 Kewangan, satu aplikasi berasaskan web dengan
yang anda mewujudkan satu laman web seperti Etrade untuk membeli dan menjual saham, jadi untuk
bercakap, dengan benar-benar menarik hampir petikan masa nyata Yahoo!
Kewangan.
>> Apa yang kita tidak buat tahun lepas adalah satu masalah set yang kekal
tetap kegemaran.
Jika anda tidak pernah pergi ke shuttle.cs50.net, anda akan melihat pengguna
muka sedikit seperti ini.
Tetapi dua tahun yang lalu, kelas dilaksanakan, menggunakan Google Maps dan
Google Earth plug-in dan sedikit daripada celik dengan memandu di sekitar kampus,
supaya Objektif permainan ini adalah, seperti yang anda lihat beberapa muka,
adalah untuk memandu di sekitar kampus mencari kakitangan, rakan-rakan pengajaran dan CA, dan
apabila anda, meletakkan mereka ke bas ulang-alik anda.
Tiada seorang pun daripada mereka benar-benar seolah-olah berada di sini, jadi kita akan memasukkan kod menipu.
>> [Ketawa]
>> DAVID MALAN: Ada kita pergi.
Baiklah.
Dan di sini kini adalah kakitangan dicampur di seluruh kampus.
Dan seperti yang anda boleh lihat, di sebelah kanan sisi skrin, bas ulang-alik
mempunyai tempat duduk kosong.
Dan objektif adalah untuk menulis kod yang boleh digunakan untuk simulasi
memandu dan mengambil dan menurunkan kira penumpang.
Yang satu, terlalu, dengan menggunakan bahasa dipanggil JavaScript.
Jadi menyedari bahawa program-program seperti yang akan berada di landasan yang sama kita ini
tahun, juga.
>> Dari segi, sekarang, sokongan tambahan, kita mempunyai waktu pejabat.
Seperti yang anda mungkin telah melihat di rumah anda sendiri dewan makan atau Annenberg,
kami akan berada di rumah makan dewan empat malam seminggu -
Leverett, Pfoho, Eliot dan Annenberg tahun ini, 20:00-23:00.
Dan apa yang kita fikir kita akan lakukan pada tahun ini adalah sesuatu yang sedikit berbeza.
>> Jika anda mendengar rumblings tahun lepas bahawa ia adalah sedikit terlalu tertekan, ini
waktu pejabat tahun ini, seperti yang kita akan menggambarkan minggu depan, akan lebih organik,
mana semasa ketibaan, anda akan dihantar ke satu meja tertentu
mana ahli-ahli kakitangan pelbagai menanti, dan kami akan melakukan perkara-perkara yang lebih
organik.
Tiada beratur lebih, tidak lebih iPad, tetapi agak mempunyai lebih intim
perbualan di sekeliling meja hanya lapan atau lebih pelajar, supaya kita
anggaran rasa apa yang sebaliknya akan menjadi kelas yang lebih kecil.
>> Kami menawarkan, serta, perkara-perkara ini kita dipanggil walkthroughs, video difilemkan di
terlebih dahulu oleh satu pengajaran kursus ini rakan-rakan, Zamyla, di mana dia
berjalan anda melalui masalah minggu ini set, menawarkan tips dan cara untuk
cabaran yang menanti di hadapan.
Dan sebaliknya, selepas set masalah adalah kerana, pada tahun ini, kami akan juga melepaskan
klip sedikit memanggil bedah siasat yang sebenarnya berjalan anda melalui
penyelesaian wakil, baik dan buruk, melalui mana anda boleh membuat kesimpulan bagaimana
anda boleh mempunyai atau sepatutnya melaksanakan penyelesaian anda sendiri.
>> Dan apa yang kita akan menawarkan untuk kali pertama tahun ini juga, terutamanya
bagi pelajar yang memanfaatkan kursus yang lain
sumber tetapi tetap berjuang terlalu banyak, tentu semua
sendiri akan berpasangan pelajar, kerana sumber membenarkan, dengan tutor supaya
anda mempunyai lebih intim peluang daripada dewan makan rumah
membolehkan bantuan pada satu-satu.
>> Sekarang gambaran akhir di beberapa satu permainan akhir di sisi.
Anda mungkin biasa dengan yang CS50 Hackathon.
Nah, datang Disember ini, dari pukul 8:00 PM hingga 7:00 pagi, pada permulaan
Tempoh membaca, akan menjadi satu peluang untuk berkumpul dengan rakan-rakan -
ini akan menjadi kira-kira 9:00 PM -
di mana anda menyelam ke akhir anda pelaksanaan projek ini di samping
rakan-rakan, kawan-kawan, dan makanan.
Ini akan menjadi kira-kira 01:00, apabila kumpulan pertama makanan tiba.
Dan ini adalah kira-kira 4:00 yang tahun tertentu di CS50 Hackathon.
>> Tetapi kemuncak sebenar kursus adalah bertujuan untuk Fair CS50, sebuah kampus di seluruh
pameran projek-projek anda sendiri akhir, mana keluarga dan rakan-rakan semua
dijemput, sebagai perekrut dan rakan-rakan kami dari industri.
Ini, misalnya, adalah satu gambaran tentang Orang 2,000-plus yang telah dihadiri
tahun yang lalu.
Ungkapan seperti ini adalah bukan luar biasa, dan begitu juga buat anda
rakan sekelas menggembirakan dalam perkara-perkara anda telah dicapai.
>> Dan sebenarnya, ke arah itu, kita perlu acara start-of-panjang, juga.
Jika perkara seperti ini rayuan kepada anda, atau anda sekurang-kurangnya ingin tahu tentang apa yang
ini, tahu bahawa satu tradisi baru tentu dipanggil CS50 teki Day.
Dan ini telah dimulakan beberapa daripada tahun yang lalu benar-benar memberi isyarat ke kampus
bahawa sains komputer tidak kira-kira pengaturcaraan, dan ia sudah tentu tidak
kira-kira memeluk hanya pelajar yang mempunyai pengalaman terdahulu.
Ia adalah benar-benar tentang menyelesaikan masalah amnya.
>> Teka-teki dan sebagainya Hari, sejak beberapa lalu tahun sekarang, telah berkembang menjadi yang bagus
perkongsian dengan rakan-rakan kami di Facebook, di mana akan ada hebat
hadiah dan pizza di seberang sungai di i-makmal Sabtu ini akan datang.
Menuju ke URL yang dengan dua atau tiga rakan-rakan jika anda ingin mengambil bahagian
dalam tradisi baru ini.
>> Jadi saya ingin meminta anda menyimpan satu perkara dalam fikiran, dan kami mempunyai hanya
dua minit klip yang untuk menutup hari ini.
73% adalah nombor untuk diingati.
Kek juga akan menanti anda di luar ini gereja yg merupakan salib seperti yang kita menangguhkan hanya dalam
beberapa detik-detik, yang merupakan tradisi kursus ini, juga.
Tetapi ini adalah petikan utama dari sukatan pelajaran kursus untuk ingat.
Apa yang akhirnya perkara-perkara dalam kursus ini tidak begitu banyak di mana anda berakhir
berbanding dengan rakan-rakan anda tetapi jika anda, dalam Minggu 12, akhirnya relatif kepada
diri dalam Minggu 0.
>> Tetapi melihat bahawa kita akan meninggalkan anda dengan di sini hari ini adalah yang satu ini terakhir di sini
oleh Daniel sama kami, yang melakukan video wrdly seketika lalu.
Saya tinggalkan anda dengan gambaran ini apa yang akan berlaku.
Dan seperti yang kita lakukan ini, jika kita boleh mempunyai CS50 kakitangan dari hadapan bilik
untuk datang sehingga ke peringkat untuk cat semua lebih daripada gambaran visual untuk
apa yang menanti anda tahun ini -
semakin janggal.
Kami akan membuat kesimpulan dengan ini di sini pada skrin.
>> [Bermain muzik]
>> DAVID MALAN: Ini adalah CS50.
>> [MUSIC - MATT & KIM, "Tak mengapa"]
>> SPEAKER 1: Saya suka CS50 lebih daripada kucing.
>> SPEAKER 2: Whoaaaa!
>> [Ketawa]
>> DAVID MALAN: Ini, maka, adalah CS50.
Kami akan melihat anda pada hari Jumaat.
>> [Tepuk tangan dan bersorak]
>> Pencerita: Pada CS50 yang akan datang, satu di atas pentas demo tidak pergi seperti yang dirancang.
>> DAVID MALAN: Kami ingin mencari Mike Smith dalam buku telefon ini.
Nah, apakah naluri anda?
Saya mungkin kira-kira melompat ke tengah buku telefon, pandang ke bawah, melihat bahawa
Saya di M, dan saya tahu sekarang bahawa Mike Smith tidak ke kiri.
Dia mesti ke kanan.
Dan sebagainya pada masa ini, kita benar-benar boleh lusuh -
pada ketika ini, kita benar-benar boleh pemedih mata -
pada ketika ini, kita boleh secara kiasan lusuh buku telefon pada separuh.
>> [Strumming UKELELE]