>> [MUSIC PLAYING]
[MUSIC - ROSSINI, "Ranz DES Vaches "DARI WILLIAM TELL]
>> [MUSIC - THE ENGLISH BEAT, "MARET DARI KEPALA SWIVEL "]
>> [Tepuk Tangan DAN bersorak]
>> DAVID Malan: Jadi ini adalah CS50.
Nama saya David Malan.
Dan 73% dari Anda tidak memiliki pengalaman sebelumnya dengan ilmu komputer,
bertentangan dengan apa yang mungkin Anda pikirkan.
Jadi hari ini kami pikir kami akan chip jauh pada saat itu kurangnya keakraban, tetapi juga
memberikan rasa, bagi anda dengan lebih nyaman, yang arah
Anda dapat pergi semester ini.
>> Jadi mari kita mulai dengan ini.
Aku benar-benar tidak tahu apa yang ada dalam komputer, meskipun, seperti Anda, saya
menggunakannya setiap hari.
Tapi itu semacam kotak, dan ada tidak banyak masukan ke dalamnya.
Minimal, ada, apa?
Mungkin kabel listrik.
>> Dan memang dengan satu bahan, listrik, sepertinya kita harus mampu
melakukan sedikit hari ini.
Tetapi pada akhir hari, kita harus mewakili hal-hal
bahwa kita peduli.
Kita harus merepresentasikan informasi dalam beberapa bentuk.
Dan kau mungkin setidaknya samar-samar akrab dengan ide dengan biner atau
bit entah bagaimana, komputer dikurangi menjadi nol dan satu.
Tapi bisa kita merangkul itu dan setidaknya menaruh sedikit cahaya itu?
>> Jadi saya punya ini sedikit lampu meja di sini.
Saya memiliki outlet listrik di sini.
Dan aku akan mengusulkan dalam yang komputer saya setidaknya satu dari
hal-hal ini, sesuatu yang mampu dari yang dinyalakan atau dimatikan.
Dalam kasus ini, itu memang lampu meja, tetapi pada tingkat yang lebih rendah, itu adalah sesuatu
disebut transistor.
>> Tapi dalam dunia kita, itu adalah lampu meja, sehingga Aku akan pergi ke depan dan pasang ini
menjadi listrik saya di sini.
Dan saya menyatakan bahwa menggunakan sederhana ini, perangkat sederhana, switch ini sederhana, saya
dapat mewakili informasi.
Misalnya, sekarang, saya mewakili apa-apa, kan?
Saya mewakili apa yang saya akan menelepon atau 0 palsu, kebalikan dari sesuatu
benar-benar hadir.
Tapi jika saya hanya menyalakan saklar ini, sekarang saya sudah mewakili 1.
Jadi menggunakan ini bagian yang sangat sederhana memori, jika Anda mau, saya bisa mewakili
informasi.
>> Sekarang sayangnya, komputer saya tidak bisa melakukan semua itu banyak.
Hal ini hanya dapat mewakili dua nilai di seluruh dunia -
0 atau 1.
Tapi apa solusi yang jelas, sekarang, jika kita ingin memperluas komputer kita
memori dan mewakili lebih dari hanya 0 dan 1?
>> Nah, mari kita ambil lagi bit tersebut.
Mari kita ambil tombol lain, yang lain transistor, namun Anda ingin
berpikir tentang hal ini.
Biarkan aku pergi ke depan dan pasang ini ke komputer saya juga.
Dan aku akan mengklaim, sekarang, bahwa dengan menggunakan sedikit lebih banyak listrik dan
berputar lebih dari switch ini dan off, saya bisa mewakili lebih seperti
informasi.
>> Jadi sekarang, ini adalah 1.
Jika saya ingin sekarang merupakan 2, aku bisa melakukan ini.
Tapi biasanya, konvensi, seperti yang kita akan akhirnya melihat, akan saya lakukan ini.
Jadi ini adalah 0, ini adalah 1.
Ini akan menjadi 2.
Dan tidak mengherankan, ini akan menjadi 3.
>> Jadi dengan cara ini, masih, bisa kita menghitung lebih jauh?
Jika saya mendapatkan sedikit ketiga, switch ketiga, apa jumlah tertinggi sekarang saya bisa
menghitung sampai dari 0?
Jadi 7 jika saya mulai dari 0, bukan?
Karena jika saya mengubah cahaya ini dan sebenarnya pasang ini ketiga dan terakhir
cahaya ke dalam soket listrik saya di sini, maka saya memiliki kemampuan untuk mewakili
salah satu dari dua nilai di sini, dua nilai di sini, dua nilai di sini -
dan jadi saya bisa mewakili 2 kali 2 kali 2, atau delapan nilai yang mungkin.
Dan jika saya mulai akuntansi pada 0, sehingga itu 0, 1, 2, 3, 4, 5, 6, 7.
>> Jadi biner ini.
Itu benar-benar adalah yang sederhana seperti itu.
Dan aku berpendapat bahwa ini sebenarnya cukup akrab bagi kebanyakan
semua orang di ruangan ini.
Biarkan aku pergi ke depan dan membuka editor teks kecil di sini.
>> Dan Anda mungkin ingat dari sekolah dasar bahwa kita memiliki hal-hal seperti ratusan
tempat, tempat puluhan, dan yang tempat.
Dan ingat bahwa jika Anda memiliki beberapa desimal nomor, seperti sesuatu yang acak
seperti 123, Anda akan dasarnya menulis yang keluar dalam bentuk
dari tiga kolom.
Dan mengapa 1, 2, 3 apa kita kenal sebagai 123?
Nah, di kolom paling kiri, kita memiliki satu 100 ditambah dua 10s, jadi itu 120,
ditambah tiga 1s, jadi itu 123.
>> Sekarang dunia ini bahwa kita hanya diterangi adalah persis sama dengan
Anda sudah akrab dengan selama bertahun-tahun, kecuali sekarang, kolom kami
tidak pangkat 10.
Mereka hanya kekuatan dari 2.
Jadi sementara itu adalah tempat yang, ini akan menjadi tempat yang berpasangan, ini
akan menjadi tempat merangkak.
>> Dan karena saya hanya menggunakan sederhana mekanisme untuk membalikkan keadaan
dan mematikan - listrik mengalir atau listrik tidak mengalir -
Saya tidak cukup memiliki ekspresif yang sama range 0 sampai sembilan.
Kita akan tetap super sederhana di dunia ini komputer.
Saya hanya memiliki 0 atau 1 -
off atau on, palsu atau benar.
>> Dan apa yang saya mewakili sekarang adalah 1, 1, 1, karena masing-masing
lampu menyala.
Nah, yang memberi saya satu 4 ditambah satu 2, sehingga itu 6, ditambah satu 1, dan itu 7.
Dan ergo melakukan ini urutan tiga bit mewakili angka 7.
>> Jadi selama ini, dalam Anda komputer, telah sejumlah
transistor, jumlah bit.
Tetapi pada akhir hari, kita dapat mewakili informasi
sesederhana itu.
Sekarang sayangnya, kita hanya menghitung sampai dengan 7 di CS50 sejauh ini, tetapi
mudah-mudahan kita bisa melakukan sedikit lebih baik dari itu.
Dan memang kita bisa.
>> Misalkan kita sebagai manusia hanya sewenang-wenang memutuskan bahwa kita akan
untuk mengasosiasikan angka seperti 1 dan 2, 3, 4, 5, 6, 7, dengan huruf spesifik
alfabet.
Dan untuk alasan historis, aku akan mulai agak sewenang-wenang, tapi aku
akan mengatakan, manusia, kita akan memutuskan sebagai standar, secara global, yang
65 merupakan jumlah huruf A. 66 akan mewakili B. Dot, titik, titik.
90 akan mewakili huruf Z.
>> Dan mari kita misalkan, jika kita benar-benar menaruh beberapa berpikir ke dalamnya, kita bisa datang
dengan nomor untuk tanda seru dan huruf kecil, dan memang,
orang lain telah melakukan itu untuk kita.
Jadi sekarang kita memiliki bit yang kita dapat mewakili angka, angka dengan yang
kita dapat mewakili huruf, dan dengan surat yang kami dapat sekarang mulai membuat
email dan mencetak karakter di layar.
>> Jadi biarkan aku mengundang, jika aku bisa, delapan relawan berani -
yang tidak keberatan muncul tidak hanya di depan kamera tapi di internet -
untuk datang ke sini dan mewakili delapan seperti bit, bukan tiga.
Jadi bagaimana satu, dua?
Bagaimana tiga?
Bagaimana empat cahaya biru, lima di akhir?
Tentang seseorang di sini?
Enam di depan, tujuh di depan, dan delapan di depan, juga.
>> Jadi saya hanya kebetulan datang disiapkan dengan sejumlah besar potongan kertas.
Dan pada potongan-potongan kertas nomor yang mewakili apa yang kolom
kalian akan mewakili.
Jadi Anda akan - siapa namamu?
>> SISWA: Anna Leah.
>> DAVID Malan: Anna Leah, Anda akan menjadi kolom 128s.
Anda?
>> SISWA: Chris.
>> DAVID Malan: Chris akan menjadi kolom 64s.
Anda?
>> SISWA: Dan.
>> DAVID Malan: Dan akan menjadi kolom 32s.
>> SISWA: Pramit.
>> DAVID Malan: Pramit akan menjadi kolom 16.
>> SISWA: Lillian.
>> DAVID Malan: Lillian akan 8s tersebut.
>> SISWA: Jill.
>> DAVID Malan: Jill akan menjadi kolom 4s.
>> SISWA: Mary.
>> DAVID Malan: Maria akan menjadi 2s, dan?
>> SISWA: David.
>> DAVID Malan: David akan menjadi kolom 1s.
Jadi, jika kalian bisa melangkah sedikit ke depan sehingga semua orang bisa melihatnya.
Apa yang kalian tidak lihat adalah bahwa pada kembali dari potongan kertas adalah
sedikit contekan yang akan menginstruksikan delapan bit untuk baik
mengangkat tangan mereka atau tidak mengangkat tangan mereka.
Jika tangan mereka naik, mereka mewakili 1.
Jika tangan mereka tetap di bawah, mereka mewakili 0.
>> Sementara itu, kita penonton harus dapat mengetahui, berdasarkan ini
pemetaan, apa tiga huruf kata tersebut orang sekitar untuk mengeja.
Jadi hanya dalam beberapa saat, Anda akan membaca baris pertama dari belakang
contekan Anda, dan Anda baik akan menaikkan atau tidak menaikkan tangan Anda.
Jika Anda seorang 1, Anda meningkatkan, jika Anda seorang 0, Anda berdiri di sana
canggung, begitu saja.
Go.
Nomor berapa, pertama dan terutama, adalah orang-orang yang mewakili?
>> 66.
66, kan?
Kami memiliki 1 di kolom 64s, 1 di kolom 2s.
Itu memberi saya 66, jadi yang muncul akan mewakili B. Jadi
kalian telah dieja -
OK, itu sudah cukup.
B.
>> Jadi sekarang mari kita pindah ke Surat kedua kami.
Go.
Siapa tercepat di matematika di sini?
Jadi 79.
Sekali lagi, jika kita menambahkan semua kolom di mana ada 1, saat ini, hanya
seperti yang kita lakukan sebelumnya dengan sederhana contoh 7, sekarang kita
mendapatkan nomor 79.
Yang menurut kami adalah pemetaan Surat O. Jadi kita sudah hampir sampai.
B, O. Dan terakhir, pergi.
>> Apa yang mereka mewakili sekarang?
Kurang konsensus.
Itu hanya sebuah gumaman mutlak.
Ya, itu sebenarnya 87.
Baik.
>> Jadi jika sekarang kita memetakan kembali bahwa sampai - mari mulai memanggil grafik ASCII kami,
American Standard Kode untuk Informasi Interchange.
Yang memberi kita surat -
bukan "bo" tapi "busur." Dan itu sempurna isyarat bagi kalian untuk mengambil busur
dan kepala di bagian belakang.
Terima kasih banyak.
>> [Tepuk Tangan]
>> DAVID Malan: Anda dapat menjaga mereka.
Meskipun sebenarnya, siapa pun akan seperti lampu meja, juga?
>> [BAGASI DARI PENONTON]
>> DAVID Malan: Lampu meja?
>> [Tertawa]
>> DAVID Malan: Benarkah?
Lampu meja untuk semua orang?
Baik.
Jadi dimulai dengan sangat sederhana prinsip, kita sekarang tidak hanya dihitung
naik dari 0 semua jalan sampai dengan 7, kami telah diasumsikan bahwa hanya dengan melemparkan lebih
bit atau lebih lampu atau lebih transistor pada masalah ini, kita bisa
merupakan angka yang lebih besar dan lebih besar, dan ergo, rentang yang lebih besar dan lebih besar dari
huruf, seperti bahasa Inggris.
Dan mari kita pada iman untuk hari ini yang sama bisa kita mulai
mewakili grafis dan video dan jumlah media lain yang kita
akrab hari.
>> Jadi ini adalah CS50, dan di kelas ini bersama Anda, sekali lagi, sangat banyak
teman sekelas yang memiliki sesedikit pengalaman seperti Anda.
Dan saya menyebutkan ini hanya karena cukup sering, termasuk baru-baru ini sebagai salah satu
mahasiswa menasihati peristiwa dan pada sophomore musim semi lalu menasihati
acara, kita sering mendengar siswa melepaskan ketika datang ke meja CS, baik,
Aku sudah berpikir tentang mengambil ini kelas intro, tapi aku tidak benar-benar
orang komputer.
Atau, tapi semua orang pasti lebih tahu dari saya.
Dan saya menempatkan ini dalam font terbesar mungkin, untuk menyampaikan pesan ini bahwa
itu tidak pada kenyataannya kasus ini.
>> Dan jika Anda bertanya-tanya, harus Saya, pada kenyataannya, berada di sini?
Sadarilah bahwa tidak hanya ini saja yang Judul Pengantar Komputer
Ilmu pengetahuan, Pengantar Komputer Ilmu I. Jadi memang ada
pengenalan seperti kedua.
Jadi Anda tidak, pada kenyataannya, di tempat yang salah.
Dan di antara tujuan saya miliki untuk hari ini untuk meredakan kekhawatiran seperti itu Anda
mungkin, tetapi juga untuk melukis gambaran tentang apa yang ada di toko untuk
siswa yang kurang dan lebih nyaman sama dalam kursus ini.
>> Tapi pertama-tama, sebuah kata pada salah satu handout Anda miliki saat ini, di antaranya
sejumlah FAQ.
Sudah visi kami selama beberapa waktu sekarang untuk memperkenalkan gradasi baru
pilihan dalam kursus ini - yaitu, SAT / UNSAT.
Secara filosofis bagi saya, itu jauh banyak, jauh lebih penting bahwa
siswa di kelas ini terlibat dengan material, ditantang oleh
materi, dan khawatir jauh, jauh lebih sedikit tentang mekanisme nilai aktual
dan nilai huruf pada semester end, tapi benar-benar merangkul
kursus dan materialnya.
Dan sungguh ini terasa, lebih umum, untuk apa yang menarik bagi mereka, untuk
merasa tertantang dan dihargai tapi tanpa takut gagal.
>> Dan memang, ini juga merupakan berulang Tema dalam hal ini dan lainnya pengantar
program di bidang lain, bahwa Anda memiliki gentar ini ketika datang ke
menempatkan jari kaki seseorang dalam perairan asing.
Saya sendiri, kembali pada tahun 1995, adalah mahasiswa baru.
Saya sangat fokus untuk menjadi konsentrator Gov di sini.
Namun aku selalu tumbuh dengan sedikit suatu kepentingan dalam ilmu komputer.
Aku selalu penasaran.
>> Tapi saat itu, bahkan, aku punya rasa takut ini bahkan melangkah kaki di CS50, begitu banyak
sehingga saya bahkan tidak berbelanja itu tahun pertama.
Dan satu-satunya alasan aku meletakkan kaki di Pintu tahun kedua adalah karena saya
diizinkan untuk mengambil lulus / gagal.
Tetapi bahkan lulus / gagal diperlukan bahwa saya mendapatkan keberanian untuk membuat janji
dengan Profesor Kernehan pada saat itu, membawa lembar kertas besar, dan meminta
dia untuk tanda tangan dan nya izin untuk mengeksplorasi
perairan asing.
>> Dan itu tidak membantu dalam beberapa tahun terakhir bahwa ketika melakukan hal ini dalam CS50, ketika kita
digunakan untuk menjadi lulus / gagal, sama akan puluhan atau ratusan teman sekelas Anda
harus datang, Allah melarang, di depan Sanders dengan formulir ini, bahwa
dalam beberapa pikiran merupakan ketidakmampuan, Saya berani mengatakan, untuk melakukan
adalah tingkat rekan-rekan Anda.
Yang konyol, tapi saya pikir ada mentalitas itu.
Dan tidak pernah ada dalam budaya ini SAT / UNSAT, atau lulus / gagal lebih
umumnya, dalam kursus ini, atau benar-benar di kampus ini.
>> Jadi tahun ini kami mengubah itu.
Aku akan setengah gembira dari kelas ini atau lebih berakhir
up mengambil CS50 SAT / UNSAT.
Dalam waktu satu tahun, itu akan menjadi indah jika hampir semua orang.
Setelah itu mungkin kita akan bekerja pada nilai surat di Harvard
Perguruan tinggi lebih umum.
Tetapi untuk sekarang, kita akan melakukan ini dalam kami wilayahnya sendiri, dan saya akan sungguh-sungguh
mendorong Anda untuk meninjau mereka FAQ dan mengajukan pertanyaan sesuai keinginan Anda, sehingga
mudah-mudahan Anda, seperti saya, tidak akan cukup memiliki faktor ketakutan yang sama ketika
mengeksplorasi apa yang mungkin tempat yang asing.
>> Jadi apa CS50?
Ini adalah pengenalan perusahaan intelektual komputer
ilmu pengetahuan dan seni pemrograman.
Tapi apa benar-benar berarti?
>> Nah, sejauh ini, kami berbicara sangat singkat tentang mewakili informasi.
Tapi misalkan kita benar-benar ingin untuk melakukan sesuatu dengan itu.
Kita perlu untuk memperkenalkan gagasan apa yang akan kita sebut algoritma.
Algoritma adalah suatu prosedur, proses, satu set instruksi untuk
melakukan sesuatu.
>> Dan algoritma dapat menjadi sesuatu super sederhana.
Misalnya, contoh dengan yang beberapa Anda mungkin akrab ini
hal di sini.
Jadi buku ini di sini adalah semakin tanggal, tapi sekali waktu, itu
berisi seluruh banyak nama dan nomor telepon.
Dan memang, jika saya ingin menemukan seseorang dalam buku telepon ini -
mengatakan, seseorang bernama Mike Smith -
Aku bisa menemukan Mike Smith dalam jumlah cara cukup mudah.
Aku bisa mulai dari awal dan pindah ke halaman 1, tidak ada.
Page 2, tidak ada.
Halaman 3.
Apakah algoritma itu, adalah bahwa proses, benar?
>> Jadi benar, kan?
Aku agak idiot untuk melakukannya dalam cara itu, tapi akhirnya aku akan
menemukan nama S, dan mudah-mudahan Mike adalah pada bagian tersebut, dan saya akan menjadi
dilakukan dengan algoritma saya.
Tapi tentunya itu tidak intuitif.
Kebanyakan setiap manusia yang wajar dalam kamar tidak akan melakukan itu.
Apa yang akan Anda lakukan?
>> Anda akan pergi langsung ke tengah, kan?
Kira-kira ke tengah.
Dan Anda menyadari, oh, ini adalah Ms Jadi Mike Smith, nama terakhir menjadi Smith,
tidak, jelas, maka dalam kiri setengah dari buku ini.
Ia harus menuju S ada di sebelah kanan.
Dan pada titik ini, meskipun sebagian besar dari kita jangan lakukan ini pada kenyataannya, kita bisa
harfiah merobek masalah ini di setengah.
>> [Bersorak DAN Tepuk Tangan]
>> DAVID Malan: Terima kasih.
>> [Bersorak DAN Tepuk Tangan]
>> DAVID Malan: Anda benar-benar dapat merobek ini masalah dalam setengah, meninggalkan saya dengan,
harfiah, masalah setengah besar.
Jadi jika buku telepon ini - dan itu mungkin itu - sekitar 1.000 halaman, sekarang
itu hanya 500.
Jika saya melakukan ini lagi dan saya menyadari, oh, sialan, aku pergi terlalu jauh, aku di Ts ini
bagian, aku sama bisa -
kiasan atau secara harfiah -
merobek buku telepon - itu benar-benar waktu itu jauh lebih mudah.
Aku benar-benar dapat merobek buku telepon dalam setengah, meninggalkan aku sekarang dengan
tidak 1.000, tidak 500 -
250 halaman.
Dan aku bisa pergi 125, dan setengah dari itu, dan setengah dari itu, dan setengah dari itu,
sampai akhirnya aku akan pergi dengan hanya satu halaman.
>> [Tertawa]
>> DAVID Malan: Itulah bagian I gagal pada.
Satu halaman di mana Mike mudah-mudahan.
Sekarang mereka algoritma yang berbeda dapat semacam dinilai atau dievaluasi
cara yang berbeda.
Yang pertama adalah sangat linier, kan?
Mengubah halaman, mencari Mike.
Ini sangat linear.
Jika ada satu halaman yang lebih dalam telepon buku, itu mungkin akan membawa saya
satu detik, satu unit lebih banyak waktu, namun kami sedang menghitung waktu.
>> Jadi saya mungkin menarik seperti ini baris ini di sini, dimana sebagai ukuran
masalah meningkat dari kiri ke kanan -
buku telepon semakin kecil ke besar -
dan waktu akan meningkat pada sumbu vertikal, semakin besar
buku telepon.
Jadi n hanyalah sebuah variabel umum bahwa ilmuwan komputer digunakan untuk mewakili
beberapa nilai, beberapa nomor.
Jadi n akan meningkat secara linear.
Dua kali ukuran buku telepon, itu akan membawa saya dua kali lebih banyak
waktu, kemungkinan besar, untuk menemukan Mike.
>> Sekarang saya bisa pintar tentang hal ini, kan?
Aku mulai bosan dengan cepat.
Bisa melakukan ini dengan berpasangan.
Jadi dua halaman, lalu empat, lalu enam, lalu delapan.
Dan aku bisa mulai terbang melalui sebuah sedikit lebih cepat, meskipun dengan risiko kecil
overshoot Mike, tapi kurva yang tidak akan semua yang berbeda.
Ini masih akan menjadi lurus line, tetapi sedikit lebih cepat.
>> Tapi apa yang saya lakukan?
Aku benar-benar melakukan sesuatu fundamental yang lebih baik.
Aku mencapai apa yang akan kita sebut logaritma waktu, log n, dimana hijau ini
garis memiliki banyak, banyak, banyak tepi kurang langsung ke itu.
Dan sebaliknya, itu menunjukkan, seperti semacam mendekati tak terhingga pernah secara bertahap,
bahwa saya benar-benar bisa mengambil 1.000 halaman buku telepon, dua kali lipat ukurannya
tahun depan - karena kira banyak lebih banyak orang pindah ke kota.
>> Jadi sekarang aku punya 2.000 halaman, tapi bagaimana banyak langkah cerdas adalah bahwa
algoritma akan mengambil?
Hanya satu.
Maksudku, itu adalah hal yang sangat kuat.
Jika kita pergi ke 4.000 halaman tahun depan, itu akan membawaku
hanya dua langkah lagi.
Jadi Anda bisa melempar besar dan lebih besar masalah pada saya, tidak seperti web adalah
melemparkan masalah yang lebih besar dan lebih besar setiap hari di Googles dan facebooks dari
dunia, dan itu tidak masalah besar.
Karena saya menempatkan lebih banyak pemikiran dan perawatan ke algoritma saya yang dapat digunakan untuk memecahkan
masalah efisien.
>> Dan memang, yang akan menjadi salah satu tujuan dari program ini.
Anda akan, sepanjang jalan, mempelajari bagaimana program.
Anda akan belajar bagaimana program di sejumlah bahasa.
Tetapi pada akhir hari, program ini tentang memecahkan masalah dan mendapatkan
lebih baik untuk memecahkan masalah - dan, seperti dalam kasus seperti ini, pemecahan masalah
lebih efisien.
>> Sekarang sejauh ini, kami telah melakukan ini cukup intuitif.
Mari kita memperkenalkan sesuatu yang cukup generik disebut pseudocode.
Jadi kita akhirnya akan mendapatkan, dalam kursus ini, untuk
berbagai bahasa pemrograman.
Tapi hari ini kita akan melakukannya dalam bahasa Inggris-seperti sintaks, di mana Anda hanya semacam mengatakan
apa yang Anda maksud, tapi kau pernah jadi ringkas dan Anda tidak perlu khawatir tentang
tata bahasa dan kalimat lengkap.
Anda hanya mengekspresikan diri sebagai seringkas mungkin.
>> Jadi pseudocode adalah bahasa Inggris-seperti sintaks yang mewakili
bahasa pemrograman.
Dan untuk mencapai tujuan itu, saya mengusulkan bahwa sekarang kita memodelkan proses kita hanya
dijelaskan menghitung sesuatu yang sedikit berbeda, kali ini mengambil
lihat ini lima menit video yang dihasilkan oleh teman-teman kita di TED yang
mendefinisikan apa pseudocode adalah, mendefinisikan apa berpikir algoritmik adalah, dan bahkan
meskipun contoh Anda akan melihat adalah, dalam dirinya sendiri, super sederhana, itu
akan mulai memberi kami mental Model, kosa kata, yang dapat digunakan untuk
berbuat banyak, jauh lebih kompleks algoritma cukup cepat.
>> [BEGIN VIDEO PEMUTARAN]
>> [MUSIC PLAYING]
>> Narator: Apa itu algoritma?
Dalam ilmu komputer, sebuah algoritma adalah set instruksi untuk memecahkan beberapa
masalah langkah demi langkah.
Biasanya, algoritma dieksekusi oleh komputer, tetapi kita manusia memiliki
algoritma, juga.
Misalnya, bagaimana Anda akan pergi tentang menghitung jumlah
dari orang di sebuah ruangan?
Nah, jika Anda seperti saya, Anda mungkin akan titik pada setiap orang, satu di
waktu, dan menghitung dari 0.
1, 2, 3, 4, dan sebagainya.
>> Nah, itu sebuah algoritma.
Bahkan, mari kita coba untuk mengekspresikan itu sedikit lebih formal dalam pseudo -
Inggris-seperti sintaks yang menyerupai bahasa pemrograman.
Mari N sama 0.
Untuk setiap orang di ruangan, mengatur N sama dengan N ditambah 1.
>> Bagaimana menafsirkan pseudocode ini?
Nah, satu baris menyatakan, sehingga untuk berbicara, variabel yang disebut N dan menginisialisasi
nilainya ke 0.
Ini hanya berarti bahwa pada awal algoritma kami, hal yang dengan
kita menghitung memiliki nilai 0.
Setelah semua, sebelum kita mulai menghitung, kami belum menghitung apa pun.
Memanggil variabel ini N hanya konvensi.
Saya bisa menyebutnya apa yang paling.
>> Sekarang lini dua demarks awal dari lingkaran, urutan langkah-langkah yang akan
mengulang beberapa beberapa kali.
Jadi, dalam contoh kita, langkah yang kami ambil adalah menghitung orang di ruangan itu.
Di bawah baris kedua adalah line tiga, yang menggambarkan dengan tepat bagaimana
kita akan pergi tentang menghitung.
Lekukan menyiratkan bahwa itu tiga baris yang akan mengulangi.
>> Jadi apa yang dikatakan pseudocode adalah bahwa setelah mulai 0, untuk setiap
orang di ruangan itu, kita akan meningkatkan N oleh 1.
Sekarang algoritma ini benar?
Nah, mari kita menggedor sedikit.
Apakah itu bekerja jika ada dua orang di ruangan itu?
Mari kita lihat.
>> Sejalan satu, kita menginisialisasi N ke 0.
Untuk masing-masing dua orang, kita kemudian kenaikan N oleh 1.
Jadi pada perjalanan pertama melalui lingkaran, kami memperbarui N dari 0 ke 1.
Pada perjalanan kedua melalui itu sama lingkaran, kami memperbarui N 1 ke 2.
Dan pada akhir ini algoritma, n adalah 2, yang memang sesuai dengan jumlah
orang di ruangan itu.
>> Sejauh ini, begitu baik.
Bagaimana tentang kasus sudut, meskipun?
Misalkan ada 0 orang di kamar - selain saya,
siapa yang melakukan penghitungan.
Sejalan satu, kita menginisialisasi N ke 0.
Kali ini, meskipun, baris ketiga tidak mengeksekusi sama sekali karena tidak ada
orang di ruangan.
Dan N tetap 0, yang sesuai dengan jumlah orang di dalam ruangan.
Cukup sederhana, kan?
>> Tetapi orang-orang menghitung satu per satu sangat tidak efisien, juga, bukan?
Tentunya kita bisa berbuat lebih baik.
Mengapa tidak menghitung dua orang sekaligus?
Alih-alih menghitung 1, 2, 3, 4, 5, 6, 7, 8, dan sebagainya, mengapa tidak menghitung, 2,
4, 6, 8, dan seterusnya?
Bahkan terdengar lebih cepat, dan itu pasti.
>> Mari mengungkapkan optimasi ini dalam pseudocode.
Mari N sama 0.
Untuk setiap pasangan orang di ruangan, mengatur N sama dengan N ditambah 2.
Perubahan yang cukup sederhana, kan?
Daripada orang hitungan satu pada suatu waktu, kita malah menghitung
mereka dua sekaligus.
Algoritma ini adalah dengan demikian dua kali secepat terakhir.
>> Tapi apakah itu benar?
Mari kita lihat.
Apakah itu bekerja jika ada dua orang di ruangan itu?
Sejalan satu, kita menginisialisasi N ke 0.
Untuk itu sepasang orang, kita kemudian kenaikan N oleh dua.
Dan pada akhir ini algoritma, N adalah 2, yang memang sesuai dengan jumlah
orang di ruangan itu.
>> Misalkan berikutnya bahwa ada 0 orang di ruangan itu.
Sejalan satu, kita menginisialisasi N ke 0.
Seperti sebelumnya, line tiga tidak mengeksekusi sama sekali, karena tidak ada pasangan
orang di ruangan.
Dan N tetap 0, yang memang sesuai dengan jumlah
orang di ruangan itu.
>> Tapi bagaimana jika ada tiga orang di ruangan itu?
Bagaimana ini algoritma tarif?
Mari kita lihat.
Sejalan satu, kita menginisialisasi N ke 0.
Untuk sepasang orang-orang, kita kemudian kenaikan N dengan 2.
Tapi kemudian apa?
Tidak ada sepasang penuh orang lain di dalam ruangan, sehingga garis kedua ada
lagi berlaku.
Dan pada akhir ini algoritma, N masih 2, yang tidak benar.
>> Memang, algoritma ini dikatakan menjadi buggy, karena memiliki kesalahan.
Mari kita ganti rugi dengan beberapa pseudocode baru.
Misalkan n sama dengan 0 untuk setiap pasangan orang di ruangan.
Set N sama dengan N ditambah 2.
Jika seseorang tetap berpasangan, mengatur N sama dengan N ditambah 1.
Untuk mengatasi masalah khusus ini, kami telah diperkenalkan, sejalan empat, seorang
kondisi, atau dikenal sebagai cabang yang hanya mengeksekusi jika ada satu
orang bahwa kita tidak bisa pasangan dengan yang lain.
Dan sekarang, apakah ada satu atau tiga atau ganjil orang
ruang, algoritma ini sekarang akan menghitungnya.
>> Bisakah kita melakukan bahkan lebih baik?
Nah, kita bisa menghitung dalam 3s 4s atau atau bahkan 5s dan 10s, tetapi di luar itu, itu
akan mendapatkan sedikit sulit untuk titik.
Pada akhir hari, apakah dieksekusi oleh komputer atau manusia,
algoritma hanya satu set instruksi dengan
yang untuk memecahkan masalah.
Ini adalah hanya tiga.
Masalah apa yang akan Anda memecahkan dengan algoritma?
>> [END VIDEO PEMUTARAN]
>> DAVID Malan: Itulah satu-satunya waktu Aku akan muncul dalam bentuk kartun.
Tapi di mana cerita itu daun off, sekarang, adalah bagaimana kita bisa berbuat lebih baik?
Bertiga dan merangkak, kita mengklaim, kita dapat menghitung orang jauh lebih cepat, tapi bisa kita
lakukan secara fundamental lebih baik dari itu?
Dan saya bertaruh kami bisa.
>> Jika kami memperkenalkan sedikit kita sendiri pseudocode di sini, aku akan mengusulkan
bahwa kita dapat mencapai garis seperti ini.
Kami tidak akan menghitung orang satu, dua, tiga, empat.
Kami tidak akan pergi dua, empat, enam, delapan.
Kami akan melakukan yang lebih baik fundamental dengan mengkaji ulang masalah, dan dalam hal ini
kasus, memanfaatkan sebaliknya kurang dimanfaatkan sumber daya.
>> Dalam sesaat, saya harap Anda akan memaafkan dan humor kami dengan berdiri di
tempat, di mana titik kita akan meminta Anda masing-masing untuk mengambil di Anda
pikiran nomor 1.
Anda kemudian akan semakin canggung, dengan berjalannya waktu, cari
orang lain yang berdiri, menggabungkan nomor Anda bersama-sama
dengan menambahkan mereka.
Salah satu dari kalian kemudian akan berlomba untuk duduk pertama turun, dan orang lain
akan mengulangi.
>> Jadi dengan kata lain, dengan pembenihan semua Anda dengan nomor 1, dan kemudian
menggabungkan mereka ke dalam 1s 2s dan mereka 2s ke 4s, dengan semua orang semakin
duduk, kita harus, di akhir algoritma ini, hanya memiliki satu pinjaman
jiwa yang tidak duduk cukup cepat tetapi yang memiliki seluruh jumlah penonton
dalam pikirannya.
>> Jadi, jika Anda akan, mari kita pergi ke depan dan - langkah satu - berdiri di tempat.
Dan mengeksekusi.
>> [Banyak membisikkan]
>> DAVID Malan: Apakah Anda tahu mana Lauren?
729?
>> [Banyak membisikkan]
>> DAVID Malan: Baiklah?
>> [Banyak membisikkan]
>> DAVID Malan: Baiklah, kita harus akan mendekati akhir.
Kami melihat satu rekan berdiri di sini masih.
Siapa lagi yang perlu dipasangkan?
Jika kalian ingin berpasangan.
Seseorang di bagian atas.
Mengapa saya tidak meminjamkan tangan di sini.
Untuk sangat sedikit orang yang masih berdiri, apa nomor yang Anda
ada dalam pikiran Anda?
>> SISWA: 78.
>> DAVID Malan: 78 plus -
siapa yang berdiri di sini?
>> SISWA: 39.
>> DAVID Malan: Ditambah 39.
Ditambah siapa lagi yang masih berdiri?
81?
OK, siapa lagi?
81 lain?
Wow.
Dan kemudian apa yang ada di belakang?
>> SISWA: 49.
>> DAVID Malan: 49, ditambah?
>> SISWA: 98.
>> DAVID Malan: 98 plus?
Apakah itu orang lain?
12?
Good job.
>> [Tertawa]
>> DAVID Malan: Oh, 112 -
oh.
Good job!
>> [Tertawa]
>> [Tepuk Tangan]
>> DAVID Malan: Orang lain masih berdiri?
Maaf?
>> SISWA: 99.
>> DAVID Malan: 99.
Orang lain masih berdiri?
Dan jumlah siswa di sini sebenarnya, menurut -
Anda punya nomor?
Oh, jumlah sebenarnya orang di kamar, menurut account yang
rekan-rekan mengajar lakukan di jalan semua orang di, 729.
Begitu keluar dari sebuah ruangan penuh mahasiswa Harvard yang dihitung sendiri,
Jawabannya adalah 637.
>> [Tertawa]
>> DAVID Malan: Begitu dekat.
Tapi tetap.
OK, jadi itu suatu ajaran saat, kan?
Ini sekarang adalah apa yang kita gambarkan sebagai bug.
Di suatu tempat di sepanjang jalan, kami melakukan beberapa aritmatika yang salah, atau seseorang duduk,
atau kiri, atau sesuatu yang tidak beres.
Tapi itu baik-baik saja.
Karena bahkan masih, kami mendapat cukup dekat.
Dan aku berpendapat bahwa kita harus salah menjawab jauh lebih cepat dari saya akan
menggunakan pendekatan saya lebih linear.
>> Jadi mari kita asumsikan kita sebenarnya mendapatkan bahwa benar, tapi pikirkan sekarang tentang apa yang
yang terjadi setiap kali, dibandingkan saya sendiri naif menunjuk algoritma.
Satu, dua, tiga.
Jika memang ada 729 atau 637 orang di sini, yang akan membawaku
harfiah 637 atau 729 pointings dari jari dan
incrementing jumlah total saya.
Dan aku bisa melakukan sedikit lebih baik dengan akan dua, empat, enam, delapan, dan
dua kali lipat kecepatan itu, bahkan mungkin tiga atau quadruple, tergantung seberapa baik aku bisa
melakukan itu menghitung dalam kepala saya.
>> Tetapi pendekatan ini bahwa kalian mengambil secara fundamental berbeda.
Karena pada awalnya, kalian semua berdiri.
Jadi semua 729.
Dan kemudian secara harfiah setengah Anda duduk.
Dan setelah itu, yang lain setengah dari Anda duduk.
>> Dan jumlah waktu yang Anda orang bisa duduk kira-kira
delapan atau sembilan atau sepuluh kali jumlah, tergantung pada apa jumlah total kita.
Dan kita bisa melakukan semacam ini cara lain.
Jika kita memiliki 1.024 orang di ruangan, jumlah kali Anda bisa
membagi 1.024 orang adalah 10.
>> Sekarang pikirkan tentang hal itu dalam arah lain.
Misalkan, ridiculously, yang kita miliki, katakanlah empat miliar orang di ruangan ini,
atau ruang yang lebih besar.
Berapa kali kita harus pergi melalui algoritma ini, seperti setengah
kelas yang duduk?
Ini hanya akan mengambil 32 seperti operasi, bahkan dalam kelas ukuran
empat miliar.
Kenapa?
Karena empat miliar pergi ke dua miliar, pergi ke satu juta, pergi ke
500 juta, pergi ke 250 juta, titik, titik, titik.
Saya hanya bisa melakukan pembagian bahwa beberapa 32 kali, di mana titik, semua orang kecuali
satu orang akan dibiarkan berdiri.
>> Dan itu juga, adalah semacam kuat gagasan bahwa semakin kita akan mencoba untuk
leverage dalam kursus ini, dan dalam pemrograman dan ilmu komputer lebih
umumnya, ini kuman dari sebuah ide dengan yang kemudian kita bisa memecahkan masalah banyak,
jauh lebih kuat.
Jadi kami mulai cukup sederhana dengan pseudocode dan seorang pria dalam sebuah ruangan, tetapi
sekarang dengan seluruh ruangan penuh orang telah kita lakukan secara fundamental lebih baik.
>> Nah, mari kita transisi dari pseudo untuk beberapa kode yang sebenarnya.
Bahasa ini Anda akan melihat terjadi untuk disebut JavaScript, dan
kita akan kembali ke arah ini akhir semester.
Ini adalah bahasa pemrograman yang Anda gunakan untuk membuat website dan lain seperti
perangkat lunak hari ini.
Dan kami telah menggunakannya, berkat teman dari kami di Stanford, untuk mengkodekan
beberapa informasi tersembunyi di sini.
Ini adalah seni steganografi, sehingga untuk berbicara, di mana Anda dapat menyembunyikan
informasi apa yang sebaliknya tampaknya ada kebisingan atau sama sekali berbeda
gambar sama sekali.
Tapi tertanam dalam gambar ini khususnya memang pesan rahasia macam.
>> Jadi biarkan aku pergi ke depan dan menarik gambar yang sama di sini, ini
waktu dalam browser web.
Dan aku akan melambaikan tangan saya di beberapa rincian untuk saat ini, terutama
bagi anda yang ini tampak seperti tidak hanya JavaScript tetapi Yunani, sebagai
benar bahasa asing.
Tapi ini adalah contoh bahasa pemrograman.
>> Dan untuk saat ini, mengambil keyakinan bahwa ini baris pertama dari kode -
dan menurut kode, saya hanya berarti teks.
Teks yang saya bisa benar-benar mengetik ke Microsoft Word, jika aku punya
perangkat lunak yang tepat untuk kemudian melakukan sesuatu dengan itu.
Kode sumber pemrograman, pemrograman kode, benar-benar hanya teks, dan
terlihat berbeda berdasarkan bahasa apa Anda menggunakan, tidak seperti bahasa Inggris dan
Spanyol dan Rusia semua terlihat berbeda saat Anda mengetikkannya di keyboard Anda.
>> Jadi baris pertama ini, untuk saat mengambil iman, hanya membuka grafik dari
internet, yang bising grafis kita hanya melihat.
Baris ini berikutnya di sini adalah contoh dari lingkaran, dan kita benar-benar melihat bahwa sama
jargon dalam video TED.
Sebuah lingkaran adalah sesuatu yang terjadi lagi dan lagi, dan meskipun ini
benar-benar terlihat samar, dengan kata kunci untuk, dan beberapa tanda kurung, dan
beberapa titik koma.
Kami akan datang kembali ke sebelum lama, tetapi loop yang ada pada dasarnya adalah
mengatakan program, iterate atas semua dari titik-titik berisik, dari kiri ke
kanan, atas ke bawah.
>> Karena pada akhir hari, gambar seperti ini - dan Anda dapat benar-benar
jenis melihatnya pada proyektor ini -
benar-benar hanya grid titik.
Jadi kita dapat mengidentifikasi masing-masing titik oleh koordinat, x, y, dan dengan ini
Program, sekarang dapat kita mulai melakukan sesuatu untuk titik-titik.
>> Jadi apa yang saya akan pergi ke depan di sini dan lakukan adalah saya akan membuat beberapa perubahan.
Pertama aku akan pergi ke depan dan menyingkirkan dari semua itu kehijauan dan kebiruan
kebisingan, dan aku akan pergi ke depan dan ketik berikut
diakui samar sintaks.
im untuk gambar.
mengatur biru di lokasi x, koma, lokasi y, untuk 0.
Dengan kata lain, saya ingin hanya matikan semua dari biru
titik di foto itu.
>> Aku akan pergi ke depan sekarang lalu klik Run ini / tombol Simpan, dan Anda akan
perhatikan di sisi kanan, gambar yang dihasilkan muncul.
Sekarang hijau super, tapi itu tidak mengejutkan, karena saya benar-benar berubah
off, dengan membuat 1 0, semua biru di foto itu.
>> Nah, sekarang mari kita lakukan sedikit lebih.
im untuk gambar, dot setGreen, x, y.
Dan itu hanya berarti iterate dari kiri ke kanan dan kemudian atas ke bawah.
Menghidupkan yang mati dengan nilai 0, juga.
Simpan.
Dan pada proyektor, Anda tidak bisa benar-benar benar-benar melihat apa-apa sama sekali.
>> Pada layar laptop saya, jika saya mengintip hanya dengan cara yang benar, aku bisa melihat sedikit
gambar, karena mereka masih beberapa merah di sana.
Jika Anda pernah mendengar singkatan RGB -
merah, hijau, biru -
itu mengacu pada komposisi ini dari suatu gambar dengan menggunakan
hanya tiga warna.
Dan sekarang, kami telah dibuang semua hijau, biru semua, tapi
tidak ada banyak merah.
>> Jadi biarkan aku mendongkrak merah.
Bagaimana saya bisa melakukannya?
Yah, pertama, aku akan meminta Program daftarnya.
Aku akan pergi ke depan dan sebut saja variabel, seperti dalam aljabar.
Anda dapat memiliki x atau y atau z.
Aku akan mendeklarasikan variabel dan berkata, dimasukkan ke dalam variabel ini,
sementara, nilai dari gambar getRed nilai pada x, y.
>> Dan lagi, kami akan kembali ke semua detail ini di masa depan.
Tapi untuk saat ini, hanya mengambil pada iman bahwa baris ini meminta program, apa
adalah nilai merah pada x, y?
Pada saat itu titik tertentu?
>> Lalu aku akan melakukan sesuatu untuk itu.
Lalu aku akan melakukan gambar dot set red pada x, y, y tapi kali ini aku akan
meningkatkan dengan melakukan kali merah, katakanlah, 10.
Jadi meningkatkan dengan faktor 10.
Mari saya zoom out sekarang dan klik bisa Jalankan / Simpan.
Dan voila, yang ada di sana seluruh waktu, meskipun mata manusia
tak bisa melihatnya.
>> Jadi sekali lagi, ini sekarang adalah kode nyata, sebuah contoh bahasa yang kita akan datang
kembali ke sebelum lama.
Tapi menyadari, terutama bagi Anda tanpa pengalaman seperti itu, itu cukup
segera bahwa kita sendiri akan menulis kode seperti itu ada.
Bahkan, alat dengan mana Anda semua agak akrab, mungkin, adalah CS50 ini
sendiri alat kursus-belanja, yang sebenarnya reboot musim panas ini oleh beberapa
mantan mahasiswa CS50 sendiri, kini giliran TF.
>> Jadi ini terjadi untuk menjadi sebuah website yang dibangun dalam bahasa yang disebut PHP.
Ini menggunakan database yang disebut MySQL, hal dengan yang kita akan mendapatkan tangan kami
kotor kemudian dalam semester.
Tapi percaya atau tidak, bahkan sesuatu seperti ini pada akhirnya mengurangi ke
sederhana dan kondisi loop dan cabang, seperti yang kita lihat hanya
saat yang lalu dalam video TED.
>> Apa yang saya pikir saya akan lakukan sekarang adalah berbagi tidak hanya sesuatu yang kita staf telah membuat
untuk kampus, melainkan sesuatu mantan mahasiswa - tiga
siswa, pada kenyataannya -
membuat ini tahun lalu, Sierra, Daniel, dan Sam, yang terakhir di antaranya tidak memiliki sebelum
Pengalaman programing ketika ia mengambil CS50.
Dan untuk proyek akhir mereka, mereka dipamerkan, di CS50 Adil, sebuah
aplikasi bernama wrdly, yang merupakan program berbasis web yang mereka buat
video ini yang saya pikir saya akan berbagi dengan memberikan rasa apa yang
mungkin pada akhir istilah itu.
>> [MUSIC PLAYING]
>> DAVID Malan: Itu dari Nol Minggu Week 12 tahun terakhir ini.
>> [Tepuk Tangan]
>> DAVID Malan: Sebagai teaser, juga, benar-benar untuk merangsang selera Anda adalah apa yang
mungkin, Anda mungkin telah melihat sudah, atau akan segera melihat, market.cs50.net, sebuah
alat baru bahwa tim tentu memiliki telah bekerja pada, kali ini di
bekerjasama dengan Harvard Mahasiswa Agen, sehingga mulai tahun ini
dan mudah-mudahan terus ke ini datang musim panas Anda akan memiliki standar
kesempatan di kampus untuk membeli dan menjual sesuatu yang menarik bagi Anda.
Dan dengan kemitraan melalui HSA, Anda akan juga bisa drop item off
di salah satu toko fisik HSA ini di beberapa titik di masa depan, sehingga
hal proxy, terutama karena Anda lulus dan tidak selalu ingin
membuang hal, tapi benar-benar membayar meneruskan kepada orang-orang yang mungkin mengikuti Anda
di kampus.
Jadi lebih pada datang.
>> Tapi sedikit lebih konkret, alat yang keluar dari CS50 di akhir
tahun, dengan mana sebagian dari Anda mungkin akrab dan orang lain Anda mungkin
googling sekarang, CS50.net/2x, Anda akan menemukan link ke sebuah ekstensi Chrome
yang demonstratif tentang bagaimana Anda bisa menggunakan JavaScript, bahwa bahasa yang sama kita
digunakan dengan menara Eiffel saat yang lalu, untuk menerapkan kecepatan pemutaran 2x
untuk semua Harvard video iSites.
Ini adalah sesuatu yang dibangun ke CS50 itu pemutar video sendiri.
Tapi ini, juga, jika Anda mulai menggali ke kode sumber, yang kita akan
dengan senang hati membuat tersedia, Anda akan melihat bagaimana Anda bahkan dapat memecahkan masalah seperti itu,
mempercepat widget di website dengan yang Anda sudah baik akrab.
>> Jadi kata sekarang di lapangan dan harapan dan apa yang ada di depan.
Secara umum, kami memang akan berkumpul di sini pada hari Senin dan Rabu - meskipun
Jumat ini, kita akan berkumpul karena Belanja Minggu -
1:00-2:00, meskipun kadang-kadang sampai 2:30.
Mengingat bahwa Anda mungkin karena ingin atau harus mengambil beberapa kelas di 02:00
seterusnya, atau bahkan sebelumnya, jangan menyadari tentu saja mendukung apa yang disebut
pendaftaran simultan, dimana kita akan mendukung petisi kepada Dewan Iklan dan
penduduk Anda dekan atas nama Anda jika Anda memiliki konflik di suatu tempat di
1:00-2:30 jangkauan.
Kepala ke URL online untuk rincian tambahan.
>> Namun dalam hal struktur penyangga yang mencirikan CS50, bagi siswa
lebih dan kurang nyaman sama, kita menawarkan trek yang berbeda bagian.
Dan ini adalah beberapa minggu off, tapi tak lama, Anda akan diminta untuk
tingkat kenyamanan Anda.
Apakah Anda termasuk orang yang kurang nyaman, lebih nyaman, atau
suatu tempat di antara?
>> Dan kita akan memiliki tiga berbeda trek yang melayani
justru mereka penonton.
Jadi tanpa titik dalam istilah harus Anda bahkan merasa seperti Anda bersaing
terhadap setiap siswa dengan lebih atau latar belakang kurang dari Anda.
Memang, tentu saja ini dimaksudkan untuk menjadi jauh lebih kolaboratif dan banyak
lebih terbuka dari itu.
>> Dalam hal set masalah, Anda akan menemukan, juga, bahwa di samping
edisi standar masalah setiap minggu ditetapkan, sering ada "hacker
edisi "yang dimaksudkan untuk ditargetkan pada 5% sampai 10% atau lebih dari
demografis siapa di antara mereka memang lebih nyaman dan ingin lebih
dari tantangan daripada standar edisi pset yang mengharapkan.
Rincian lebih lanjut tentang orang-orang untuk menjadi ditemukan dalam silabus.
>> Tapi juga dalam ada dapat menemukan rincian pada kursus hari terlambat.
Biasanya masalah set akan jatuh tempo pada hari Kamis.
Namun, Anda dapat memperpanjang banyak Anda tenggat waktu ini jatuh dari Kamis sampai
Jumat hanya dengan pertemuan kita di tengah jalan, sehingga untuk berbicara, menjawab pemanasan beberapa
pertanyaan dalam beberapa masalah minggu set, yang akan secara otomatis
kemudian memberikan Anda tambahan 24 jam.
Kami juga akan turun terendah Anda skor, sesuai silabus.
>> Untuk memberikan rasa apa masalahnya set adalah - karena itu memang
masalah saja dandanan yang akhirnya menentukan hampir setiap
Pengalaman siswa, lebih dari kuliah, lebih daripada bagian, lebih
daripada kebanyakan lainnya aspek saja.
Tahun lalu, misalnya, kami mulai, seperti kami akan mulai tahun ini, dengan Scratch.
Terutama hari Jumat ini, kita akan menggunakan, untuk waktu hanya satu hari, sebuah grafis
bahasa pemrograman, dengan mana kita akan memulai pemrograman dengan menyeret dan
menjatuhkan potongan puzzle yang hanya merakit secara fisik jika masuk akal
untuk melakukannya secara logis.
>> Minggu depan, kami akan cepat transisi ke C, yang cukup tua tapi sangat kecil dan
bahasa yang sederhana yang akan memungkinkan kita untuk benar-benar pergi dari 0 hingga 60 selama kursus
hanya beberapa minggu, dan kemudian Parlay keterampilan dan pengetahuan yang sama
konstruksi pemrograman dasar menjadi bahasa tingkat tinggi seperti PHP,
JavaScript, dan yang lain masih.
>> Tahun lalu, pset ketiga dalam kursus adalah bahwa kriptografi, sebuah
aplikasi domain-spesifik dimana kita siswa ditantang untuk mengimplementasikan
jumlah cipher, program dengan mana untuk berebut atau menguraikan informasi,
untuk mengenkripsi itu.
Untuk edisi hacker, sebaliknya, kami memberikan siswa hacker file
dari komputer Unix standar yang mengandung nama pengguna dan password,
yang terakhir yang dienkripsi, dan kami menantang hacker tersebut
siswa untuk mendekripsi, sebisa mungkin, mereka password, masih itu
domain yang sama.
>> Perebutan, permainan dengan yang beberapa dari Anda mungkin familiar.
Sepotong forensik, di mana kami meminta siswa untuk memulihkan data yang telah
jika tidak dihapus dari digital saya sendiri kartu compact flash kamera, dengan
sebenarnya menulis perangkat lunak untuk mencari tahu, di mana adalah nol dan yang di
bahwa kamera digital yang sebelumnya terdiri grafis JPEG?
>> Sebuah tantangan macam tahun lalu melibatkan menulis tercepat
pemeriksa ejaan mungkin, bersaing terhadap teman-teman dan teman sekelas jika
mereka ingin.
Menerapkan Huff 'n Puff, program kompresi.
Dan kemudian mengakhiri semester dengan CS50 Keuangan, sebuah aplikasi berbasis web dengan
mana Anda membuat sebuah website Etrade seperti untuk membeli dan menjual saham, sehingga untuk
berbicara, dengan benar-benar menarik hampir real-time quotes Yahoo!
Keuangan.
>> Apa yang kita tidak lakukan tahun lalu adalah satu masalah set yang tetap
tetap menjadi favorit.
Jika Anda belum pernah pergi ke shuttle.cs50.net, Anda akan melihat pengguna
antarmuka sedikit seperti ini.
Tapi dua tahun yang lalu, kelas diimplementasikan, menggunakan Google Maps dan
Google Earth plug-in dan sedikit dari cerdas dengan mengemudi di sekitar kampus,
sehingga tujuan dari permainan ini adalah, karena Anda dapat melihat beberapa wajah,
adalah untuk berkeliling kampus mencari staf, rekan pengajar dan CA, dan
ketika Anda melakukannya, menempatkan mereka ke shuttle bus Anda.
Tak satu pun dari mereka benar-benar tampaknya berada di sini, jadi kita akan memasukkan kode cheat.
>> [Tertawa]
>> DAVID Malan: Di sana kami pergi.
Baik.
Dan di sini sekarang adalah staf dicampur seluruh kampus.
Dan seperti yang Anda lihat, di kanan sisi layar, shuttle bus
memiliki kursi kosong.
Dan tujuannya adalah untuk menulis kode yang dapat digunakan untuk mensimulasikan ini
mengemudi dan mengambil dan mengantar off penumpang.
Yang satu itu, juga menggunakan bahasa disebut JavaScript.
Jadi menyadari bahwa program-program seperti itu akan berada di lintasan yang sama kami ini
tahun, juga.
>> Dalam istilah sekarang, dukungan tambahan, kami memiliki jam kantor.
Seperti Anda mungkin telah melihat di rumah Anda sendiri ruang makan atau di Annenberg,
kami akan berada di rumah makan ruang empat malam dalam seminggu -
Leverett, Pfoho, Eliot dan Annenberg tahun ini, 20:00-23:00.
Dan apa yang kami pikir kami akan lakukan tahun ini adalah sesuatu yang sedikit berbeda.
>> Jika Anda mendengar kabar burung tahun lalu yang itu agak terlalu stres, hal ini
jam kantor tahun ini, seperti yang kita akan menjelaskan minggu depan, akan lebih organik,
dimana pada saat kedatangan, Anda akan dikirim ke satu meja tertentu
di mana beberapa anggota staf menunggu, dan kami akan melakukan hal-hal yang jauh lebih
organik.
Tidak ada lagi antrian, tidak ada lagi iPad, namun suka memiliki lebih intim
percakapan di sekitar meja hanya delapan atau lebih siswa, sehingga kita
perkiraan nuansa apa yang sebaliknya akan menjadi kelas jauh lebih kecil.
>> Kami menawarkan, juga, hal-hal yang kita disebut walkthrough, video difilmkan di
maju oleh salah satu pengajaran mata kuliah tersebut fellows, Zamyla, di mana dia
menuntun Anda melalui masalah minggu set, menawarkan tips dan trik untuk
tantangan yang terbentang di depan.
Dan sebaliknya, setelah set masalah yang karena, tahun ini, kita akan juga melepaskan
klip kecil sebut pasca-otopsi yang benar-benar berjalan Anda melalui
solusi perwakilan, baik dan buruk, melalui mana Anda dapat menyimpulkan bagaimana
Anda bisa memiliki atau seharusnya diimplementasikan solusi Anda sendiri.
>> Dan apa yang kami akan menawarkan untuk pertama kalinya tahun ini juga, terutama
bagi siswa yang menyediakan sendiri tentu saja yang lain
sumber daya tapi tetap berjuang semua terlalu banyak, tentu saja
sendiri akan memasangkan para siswa, sebagai sumber daya memungkinkan, dengan tutor sehingga
Anda memiliki lebih intim kesempatan daripada ruang makan rumah
memungkinkan untuk bantuan satu-satu.
>> Sekarang sekilas akhir di beberapa dari permainan akhir yang terlihat.
Anda mungkin akrab dengan yang CS50 Hackathon.
Nah, Desember mendatang ini, dari 8:00 PM sampai 7:00 pagi, pada awal
Membaca Periode, akan menjadi kesempatan untuk berkumpul dengan teman sekelas -
ini akan menjadi sekitar 9:00 -
selama Anda menyelam ke akhir Anda pelaksanaan proyek bersama
teman sekelas, teman, dan makanan.
Ini akan menjadi sekitar 01:00, ketika batch pertama dari makanan tiba.
Dan ini adalah sekitar 4:00 bahwa tahun tertentu di CS50 Hackathon.
>> Tapi klimaks benar tentu saja adalah dimaksudkan untuk Fair CS50, kampus-lebar
pameran proyek akhir Anda sendiri, yang keluarga dan teman-teman semua
diundang, sebagai perekrut dan teman-teman kita dari industri.
Ini, misalnya, adalah sekilas Orang 2.000-plus yang pernah menghadiri
tahun terakhir.
Ekspresi seperti ini tidak biasa, dan sama-sama lakukan Anda
teman sekelas senang dalam hal Anda capai.
>> Dan sebenarnya, untuk mencapai tujuan itu, kami telah acara start-of-panjang, juga.
Jika hal-hal seperti ini menarik bagi Anda, atau Anda setidaknya ingin tahu apa
ini, tahu bahwa tradisi baru Tentu saja disebut CS50 Hari Puzzle.
Dan ini dilembagakan pasangan dari tahun untuk benar-benar kembali sinyal ke kampus
bahwa ilmu komputer bukan tentang pemrograman, dan itu tentu saja tidak
tentang merangkul hanya mereka siswa yang memiliki pengalaman sebelumnya.
Ini benar-benar tentang pemecahan masalah lebih umum.
>> Dan Puzzle Hari, selama beberapa masa lalu tahun sekarang, telah berkembang menjadi bagus
kemitraan dengan teman-teman kita di Facebook, dimana ada akan menjadi luar biasa
hadiah dan pizza di seberang sungai di i-lab ini Sabtu mendatang.
Kepala ke URL bahwa dengan dua atau tiga teman-teman jika Anda ingin mengambil bagian
dalam tradisi baru ini.
>> Jadi saya ingin meminta Anda untuk menjaga satu hal dalam pikiran, dan kami punya hanya
dua menit klip yang untuk menutup hari ini.
73% adalah angka yang perlu diingat.
Kue, juga akan menunggu Anda di luar ini transept seperti yang kita menunda hanya dalam
beberapa saat, yang merupakan tradisi tentu saja, juga.
Tapi ini adalah kutipan kunci dari silabus untuk diingat.
Akhirnya yang terpenting dalam kursus ini tidak begitu banyak di mana Anda berakhir
relatif terhadap teman sekelas Anda, tetapi di mana Anda, dalam Minggu 12, akhirnya relatif terhadap
diri dalam Minggu 0.
>> Tapi sekilas bahwa kita akan meninggalkan Anda dengan di sini hari ini adalah yang terakhir ini di sini
oleh Daniel kami sama, yang melakukan Video wrdly beberapa saat yang lalu.
Aku meninggalkan Anda dengan ini sekilas apa yang ada di depan.
Dan seperti yang kita lakukan ini, jika kita bisa memiliki CS50 staf dari depan ruangan
untuk datang ke panggung untuk melukis semua lebih dari gambaran visual untuk
apa yang menanti Anda tahun ini -
semakin canggung.
Kami akan menyimpulkan dengan ini di sini di layar.
>> [MUSIC PLAYING]
>> DAVID Malan: Ini adalah CS50.
>> [MUSIC - MATT & KIM, "'S IT ALRIGHT"]
>> SPEAKER 1: I love CS50 lebih dari kucing.
>> SPEAKER 2: Whoaaaa!
>> [Tertawa]
>> DAVID Malan: Ini, kemudian, adalah CS50.
Kita akan melihat Anda pada hari Jumat.
>> [Tepuk Tangan DAN bersorak]
>> Narator: Pada CS50 berikutnya, sebuah panggung demo tidak berjalan seperti yang direncanakan.
>> DAVID Malan: Kami ingin mencari Mike Smith dalam buku telepon ini.
Nah, apa saja naluri Anda?
Aku mungkin melompat kasar ke tengah buku telepon, melirik, melihat bahwa
Aku di M, dan aku tahu sekarang bahwa Mike Smith tidak ke kiri.
Ia harus ke kanan.
Dan pada titik ini, kita harfiah dapat merobek -
pada titik ini, kita benar-benar bisa merobek -
pada titik ini, kita bisa kiasan merobek buku telepon di setengah.
>> [Ukelele memetik]