Link Audio
Silahkan Klik DiSINI
Catatan Materi Computer Science Harvard University Week 0.
Selamat Datang di Minggu ke Nol Kelas CS50 Harvard University
1. Kelas ini lebih dari sekadar pemrograman komputer!
2. Memang, kelas ini adalah tentang pemecahan masalah dengan cara yang sangat memberdayakan! Anda mungkin akan mengambil pemecahan masalah yang Anda pelajari di sini kemungkinan besar akan langsung diterapkan pada pekerjaan Anda di luar kursus ini dan bahkan karier Anda secara keseluruhan!
3.Namun, itu tidak akan mudah! Anda akan “meminum dari Kran pemadam kebakaran” pengetahuan selama kursus ini. Anda akan kagum dengan apa yang dapat Anda capai dalam beberapa minggu mendatang.
4.Kursus ini jauh lebih tentang Anda memajukan "Anda" dari "di mana Anda hari ini" daripada mencapai standar yang dibayangkan.
5.Pertimbangan pembukaan yang paling penting dalam kursus ini: Berikan waktu yang Anda butuhkan untuk belajar melalui kursus ini. Setiap orang belajar secara berbeda. Jika sesuatu tidak berjalan dengan baik di awal, ketahuilah bahwa seiring waktu Anda akan tumbuh dan berkembang dalam keahlian Anda.
Apa yang akan kita pelajari?
Anda akan belajar minggu ini tentang Scratch, bahasa pemrograman visual.
Kemudian, di minggu-minggu mendatang, Anda akan belajar tentang C. Itu akan terlihat seperti ini:
2.Anda akan belajar tentang memori.
3.Anda akan belajar tentang kode buggy dan apa yang menyebabkan komputer crash.
4.Anda akan belajar tentang struktur data seperti tabel hash.
5.Kemudian, kita akan bertransisi ke bahasa tingkat baru yang lebih tinggi bernama Python. Kode Anda akan terlihat seperti ini:
Puzzle Day dan Pameran CS50.
Pada dasarnya, pemrograman komputer adalah tentang mengambil beberapa masukan dan membuat beberapa keluaran - dengan demikian menyelesaikan masalah. Apa yang terjadi di antara input dan output, yang bisa kita sebut kotak hitam, adalah fokus dari kursus ini.
Misalnya, kita mungkin perlu mengambil kehadiran untuk kelas. Kita bisa menggunakan sistem yang disebut unary untuk menghitung, satu jari pada satu waktu.
Komputer hanya berbicara dalam bentuk nol dan satu. Nol mewakili off. satu mewakili ON. Komputer adalah jutaan, dan mungkin miliaran, transistor yang dihidupkan dan dimatikan.
Jika Anda membayangkan menggunakan bola lampu, satu bola lampu hanya dapat menghitung dari nol hingga satu.
Namun, jika Anda memiliki tiga bola lampu, ada lebih banyak pilihan yang terbuka untuk Anda!
Menggunakan tiga bola lampu, berikut ini bisa mewakili nol:
0 0 0
Demikian pula, berikut ini akan mewakili satu:
0 0 1
Dengan logika ini, kita dapat mengusulkan bahwa yang berikut ini sama dengan dua:
0 1 0
Memperluas logika ini lebih jauh, berikut ini mewakili tiga:
0 1 1
Empat akan muncul sebagai:
1 0 0
Faktanya, kami hanya dapat menggunakan tiga bola lampu yang dihitung hingga tujuh!
1 1 1
Sebagai heuristik, kita dapat membayangkan bahwa nilai-nilai berikut mewakili setiap kemungkinan tempat dalam digit biner kita:
4 2 1
Komputer menggunakan 'basis-2' untuk menghitung. Hal ini dapat digambarkan sebagai berikut:
2^2 2^1 2^0
4 2 1
Komputer umumnya menggunakan delapan bit untuk mewakili angka. Misalnya, 00000101 adalah angka 5 dalam biner.
Karena ada tumpang tindih antara satu dan nol yang mewakili angka dan huruf, standar ASCII dibuat untuk memetakan huruf tertentu ke angka tertentu.
Misalnya, huruf A diputuskan untuk dipetakan ke angka 65.
Jika Anda menerima pesan teks, biner di bawah pesan tersebut mungkin mewakili angka 72, 73, dan 33. Memetakan ini ke ASCII, pesan Anda akan terlihat seperti berikut:
H I !
72 73 33
Syukurlah untuk standar seperti ASCII yang memungkinkan kami menyepakati nilai-nilai ini!
Berikut adalah peta nilai ASCII yang diperluas:
Jika mau, Anda dapat mempelajari lebih lanjut tentang ASCII.
KLIK DISINI
Karena tidak ada cukup digit dalam biner untuk mewakili berbagai karakter yang dapat diwakili oleh manusia, standar Unicode memperluas jumlah bit yang dapat ditransmisikan dan dipahami oleh komputer.
Ada emoji yang mungkin Anda gunakan setiap hari. Berikut ini mungkin terlihat familier bagi Anda:
Semakin banyak fitur ditambahkan ke standar Unicode untuk mewakili karakter dan emoji lebih lanjut.
Jika mau, Anda dapat mempelajari lebih lanjut tentang Unicode.
Jika mau, Anda dapat mempelajari lebih lanjut tentang emoji.
Video adalah urutan dari banyak gambar yang disimpan bersama, seperti flipbook.
Musik dapat direpresentasikan melalui data MIDI.
Bayangkan masalah mendasar mencoba menemukan satu nama di buku telepon.
Bagaimana Anda melakukannya?
Salah satu pendekatannya bisa dengan hanya membaca dari halaman satu ke halaman berikutnya hingga mencapai halaman terakhir.
Pendekatan lain bisa dengan mencari dua halaman sekaligus.
Pendekatan terakhir dan mungkin lebih baik adalah pergi ke tengah buku telepon dan bertanya, "Apakah nama yang saya cari di kiri atau di kanan?" Kemudian, ulangi proses ini, potong masalahnya menjadi setengah dan setengah.
Masing-masing pendekatan ini bisa disebut algoritma. Kecepatan masing-masing algoritma ini dapat digambarkan sebagai berikut yang disebut notasi O-besar:
Perhatikan bahwa algoritme pertama, disorot dengan warna merah, memiliki O besar n karena jika ada 100 nama di buku telepon, diperlukan hingga 100 kali percobaan untuk menemukan nama yang benar.
Kemampuan untuk membuat kodesemu adalah pusat keberhasilan seseorang di kelas ini dan dalam pemrograman komputer.
Pseudocode adalah versi kode Anda yang dapat dibaca manusia. Misalnya, dengan mempertimbangkan algoritme ketiga di atas, kami dapat menyusun kodesemu sebagai berikut:
Pseudocoding adalah keterampilan yang sangat penting setidaknya karena dua alasan.
Pertama, ketika Anda membuat pseudocode sebelum Anda membuat kode formal, ini memungkinkan Anda memikirkan logika masalah Anda terlebih dahulu. Kedua, ketika Anda mem-pseudocode, nanti Anda dapat memberikan informasi ini kepada orang lain yang ingin memahami keputusan pengkodean Anda dan cara kerja kode Anda.
Perhatikan bahwa bahasa dalam kodesemu kita memiliki beberapa fitur unik.
Pertama, beberapa baris ini dimulai dengan kata kerja seperti ambil, buka, lihat. Nanti, kita akan memanggil fungsi-fungsi ini.
Kedua, perhatikan bahwa beberapa baris menyertakan pernyataan seperti if or else if. Ini disebut kondisional.
Ketiga, perhatikan bagaimana ada ungkapan yang dapat dinyatakan sebagai benar atau salah, seperti “orang di awal buku”. Kami menyebutnya ekspresi boolean.
Terakhir, perhatikan bagaimana pernyataan seperti "kembali ke baris 3". Kami menyebutnya loop ini.
Dalam konteks Scratch, yang dibahas di bawah ini, kita akan menggunakan masing-masing blok bangunan dasar pemrograman di atas.
Scratch menggunakan blok bangunan pengkodean penting yang sama yang telah kita bahas sebelumnya dalam kuliah ini.
Scatch adalah cara yang bagus untuk masuk ke pemrograman komputer karena memungkinkan Anda untuk bermain dengan blok penyusun ini secara visual, tidak harus khawatir tentang sintaks kurung kurawal, titik koma, tanda kurung, dan sejenisnya.
Scatch IDE (lingkungan pengembangan terintegrasi) terlihat seperti berikut:
Scratch beroperasi pada sistem koordinat sebagai berikut:
Perhatikan bahwa pusat panggung berada pada koordinat (0,0). Saat ini, posisi kucing berada di posisi yang sama.
Untuk memulai, seret blok bangunan "ketika bendera hijau diklik" ke area pemrograman. Kemudian, seret blok penyusun say ke area pemrograman dan tempelkan ke blok sebelumnya.
Ini mengilustrasikan dengan baik apa yang telah kita diskusikan sebelumnya tentang pemrograman:
Perhatikan bahwa input hello world diteruskan ke fungsi say, dan efek samping dari menjalankan fungsi tersebut adalah kucing mengucapkan hello world.
Kami dapat membuat program Anda lebih interaktif dengan membuat kucing menyapa seseorang secara spesifik. Ubah program Anda seperti di bawah ini:
Sama halnya, kita dapat memodifikasi program kita sebagai berikut:
Perhatikan bahwa program ini, ketika bendera hijau diklik, meneruskan variabel yang sama, digabungkan dengan hello, ke fungsi yang disebut speak.
Abstraksi adalah tindakan menyederhanakan masalah menjadi masalah yang lebih kecil dan lebih kecil.
Misalnya, jika Anda mengadakan makan malam besar untuk teman-teman Anda, masalah karena harus memasak seluruh makanan bisa sangat membuat kewalahan! Namun, jika Anda memecah tugas memasak makanan menjadi tugas (atau masalah) yang lebih kecil dan lebih kecil, tugas besar untuk membuat makanan lezat ini mungkin terasa kurang menantang.
Dalam pemrograman, dan bahkan dalam Scratch, kita dapat melihat abstraksi beraksi. Di area pemrograman Anda, programkan sebagai berikut:
Perhatikan bahwa Anda melakukan hal yang sama berulang kali. Memang, jika Anda melihat diri Anda berulang kali mengkodekan pernyataan yang sama, kemungkinan besar Anda dapat memprogram dengan lebih terampil – mengabstraksikan kode berulang ini.
Anda dapat memodifikasi kode Anda sebagai berikut:
Perhatikan bahwa loop melakukan persis seperti yang dilakukan program sebelumnya. Namun, masalahnya disederhanakan dengan meringkas pengulangan ke blok yang mengulang kode untuk kita.
Kami bahkan dapat memajukan ini lebih jauh dengan menggunakan blok definisikan, di mana Anda dapat membuat blok Anda sendiri (fungsi Anda sendiri)! Tulis kode sebagai berikut:
Perhatikan bahwa kita mendefinisikan blok kita sendiri yang disebut meong. Fungsi memainkan suara mengeong, lalu menunggu satu detik. Di bawahnya, Anda dapat melihat bahwa ketika bendera hijau diklik, fungsi meow kita diulang tiga kali.
Kami bahkan dapat menyediakan cara dimana fungsi dapat mengambil input n dan mengulang beberapa kali:
Perhatikan bagaimana n diambil dari “meow n times.” n diteruskan ke fungsi meow melalui blok define.
Ngomong-ngomong, kucing bisa kita sebut sprite – istilah umum yang digunakan dalam pemrograman game untuk objek atau karakter di layar yang akan berinteraksi dengan pemain.
IF
persyaratan adalah blok bangunan penting dari pemrograman, di mana program mencari untuk melihat apakah kondisi tertentu telah terpenuhi. Jika suatu kondisi terpenuhi, program melakukan sesuatu.
Untuk mengilustrasikan kondisional, tulis kode sebagai berikut:
Kami dapat memodifikasi program kami sebagai berikut untuk mengintegrasikan penginderaan video:
Memperluas imajinasi Anda
Kami menunjukkan kepada Anda dalam kuliah ini sejumlah program Scratch untuk membangkitkan imajinasi Anda.
Oscartime adalah salah satu program Scratch David sendiri – meskipun musik mungkin menghantuinya karena jumlah jam dia mendengarkannya saat membuat program ini. Luangkan beberapa saat untuk bermain melalui permainan sendiri.
Membangun Oscartime sendiri, pertama-tama kami menambahkan tiang lampu.
Kemudian, tulis kode sebagai berikut:
Kemudian, ubah kode Anda sebagai berikut untuk membuat potongan sampah yang berjatuhan:
Selanjutnya, kita dapat mengimplementasikan variabel penilaian sebagai berikut:
Anda dapat mempelajari lebih lanjut dengan menjelajahi blok kode ini.
Program kami memiliki tiga komponen utama.
Pertama, tulis kode sebagai berikut:
Perhatikan bahwa ketika bendera hijau diklik, sprite kita bergerak ke tengah panggung pada koordinat (0,0) dan kemudian mendengarkan keyboard dan memeriksa dinding selamanya.
Kedua, tambahkan grup blok kode kedua ini:
Perhatikan bagaimana kami telah membuat skrip mendengarkan untuk keyboard khusus. Untuk setiap tombol panah kami di keyboard, itu akan memindahkan sprite di sekitar layar.
Terakhir, tambahkan grup blok kode ini:
Terakhir, tambahkan grup blok kode ini:
Anda dapat mempelajari lebih lanjut dengan menjelajahi blok kode ini.
Coba game lengkap Oscartime.
Menambahkan sprite lain, tambahkan blok kode berikut ke program Anda:
Perhatikan bagaimana sprite Yale tampaknya menghalangi sprite Harvard dengan bergerak bolak-balik. Saat menabrak dinding, ia berbalik hingga menabrak dinding lagi. Anda dapat mempelajari lebih lanjut dengan menjelajahi blok kode ini.
Anda bahkan dapat membuat sprite mengikuti sprite lain. Menambahkan sprite lain, tambahkan blok kode berikut ke program Anda:
Cobalah game lengkap Ivy's Hardest Game.
Beberapa siswa datang ke kelas ini dengan pengalaman coding sebelumnya!
Anda tidak sendiri! Anda adalah bagian dari komunitas.
Pemecahan masalah adalah inti dari karya ilmuwan komputer.
Kursus ini bukan hanya tentang pemrograman – kursus ini akan memperkenalkan Anda pada cara belajar baru yang dapat Anda terapkan di hampir setiap bidang kehidupan.
Bagaimana angka, teks, gambar, musik, dan video dipahami oleh komputer.
Keterampilan pemrograman dasar pseudocoding.
Bagaimana abstraksi akan berperan dalam pekerjaan Anda di masa depan dalam kursus ini.
Blok bangunan dasar pemrograman, termasuk fungsi, kondisional, loop, dan variabel.
Cara membangun proyek di Scratch.
Staf melakukan audit acak atas kiriman ke CS50x. Siswa yang ditemukan melanggar kebijakan ini akan dikeluarkan dari kursus. Siswa yang telah menyelesaikan CS50x, jika terbukti melakukan pelanggaran, akan dicabut Sertifikat CS50-nya secara permanen.
Unduh dan pasang Chrome versi terbaru, jika Anda belum memilikinya.
Terapkan proyek Scratch Anda sendiri menggunakan Chrome, sesuai spesifikasi ini.
Kapan Melakukannya
Pada hari Senin, 1 Januari 2024 pukul 06.59 GMT+7.
Project Scracth
2.Proyek Anda harus memiliki total setidaknya tiga skrip (yaitu, tidak harus tiga per sprite).
3.Proyek Anda harus menggunakan setidaknya satu kondisional, setidaknya satu loop, dan setidaknya satu variabel.
4.Proyek Anda harus menggunakan setidaknya satu blok khusus yang Anda buat sendiri (melalui Make a Block), yang harus mengambil setidaknya satu masukan.
5.Proyek Anda harus lebih kompleks daripada kebanyakan yang ditunjukkan dalam kuliah (banyak di antaranya, meskipun bersifat instruktif, cukup singkat) tetapi proyek Anda bisa jadi tidak sekompleks Oscartime dan Ivy's Hardest Game.
Untuk memenuhi persyaratan ini, proyek Anda mungkin harus menggunakan beberapa lusin potongan puzzle secara keseluruhan. Dan kode Anda idealnya tidak hanya benar (correctness) tetapi juga dirancang dengan baik (design). Jika salah satu skrip Anda agak panjang, cobalah memecahnya menjadi beberapa skrip (masing-masing skrip melakukan sesuatu yang spesifik). Dan cobalah untuk memanfaatkan "abstraksi" jika memungkinkan: jika Anda dapat membayangkan memberikan nama deskriptif ke urutan blok (mis., meong), itu mungkin dapat dipindahkan ke blok khusus!
It's Raining Men, dari kuliah CS-50.
Sepak bola, permainan.
Cookie Love Story, sebuah animasi.
Kisah roti jahe, cerita interaktif
Persimpangan, permainan
Hogwarts, permainan
Anda mungkin menganggap tutorial atau proyek awal ini bermanfaat. Dan Anda dipersilakan menjelajahi scratch.mit.edu untuk mendapatkan inspirasi. Tetapi cobalah untuk memikirkan sebuah ide sendiri, dan kemudian mulai menerapkannya. Namun, jangan mencoba mengimplementasikan keseluruhan proyek Anda sekaligus: tangani satu per satu, seperti yang kami lakukan di kuliah. Dengan kata lain, ambil langkah kecil: tulis sedikit kode (yaitu, seret dan lepas beberapa potongan teka-teki), uji, tulis sedikit lagi, uji, dan sebagainya. Dan pilih File > Simpan sekarang setiap beberapa menit agar Anda tidak kehilangan pekerjaan apa pun!
Jika, di sepanjang jalan, Anda merasa terlalu sulit untuk mengimplementasikan beberapa fitur, cobalah untuk tidak khawatir; ubah desain Anda atau selesaikan masalahnya. Jika Anda mulai menerapkan ide yang menurut Anda menyenangkan, kemungkinan besar Anda tidak akan merasa terlalu sulit untuk memenuhi persyaratan di atas.
Baiklah, pergilah, mulailah buat projek Anda sendiri. Buat kami bangga!
Setelah selesai dengan proyek Anda, pilih File > Simpan sekarang untuk terakhir kalinya. Kemudian pilih File > Simpan ke komputer Anda dan simpan file tersebut agar Anda dapat mengirimkannya. Jika diminta oleh komputer Anda untuk membuka atau menyimpan file, pastikan untuk menyimpannya.
Hello World!
Cukuplah untuk mengatakan bahwa agak sulit untuk bertemu teman sekelas saat mengikuti kursus online. Tapi, berkat teknologi, setidaknya semua orang bisa menyapa!
Jika Anda memiliki ponsel (atau kamera digital) dan ingin menyapa teman sekelas, rekam video berdurasi 1 hingga 2 menit tentang diri Anda menyapa, mungkin menyatakan di belahan dunia mana Anda berada, mengapa Anda menggunakan CS50x, dan sesuatu yang menarik tentang Anda! Cobalah untuk memulai video Anda dengan mengatakan "halo, dunia" dan akhiri dengan "nama saya..., dan ini CS50". Tapi, pada akhirnya, itu sepenuhnya terserah Anda.
Jika Anda merekam video, unggah ke YouTube (kecuali diblokir di negara Anda, dalam hal ini Anda dapat mengunggahnya di tempat lain) sehingga Anda dapat memberikan URL-nya kepada kami saat mengirimkannya!
Sampai jumpa lain waktu!