Kembali ke Kursus
AI036 Undergraduate

Pemrograman Python: Pengantar Ilmu Komputer

Buku teks tingkat perguruan tinggi ini dirancang untuk mengajarkan prinsip dasar ilmu komputer menggunakan Python sebagai bahasa pemrograman utama. Fokusnya adalah pada pemecahan masalah, desain, dan pemrograman melalui pendekatan model spiral dan pendekatan berbasis grafik.

4.9
39.0h
793 siswa
0 suka
Kecerdasan Buatan

Gambaran Umum Kursus

📚 Ringkasan Konten

Buku teks tingkat perguruan tinggi ini dirancang untuk mengajarkan prinsip dasar ilmu komputer menggunakan Python sebagai bahasa pemrograman utama. Buku ini berfokus pada pemecahan masalah, desain, dan pemrograman melalui model pembelajaran spiral dan pendekatan berbasis grafik.

Pengantar yang lembut dan komprehensif tentang seni ilmu komputer melalui lensa Python.

Penulis: John M. Zelle

Ucapan Terima Kasih: Guido van Rossum (Kata Pengantar), Jim Leisy, serta rekan-rekan akademik dari Wartburg College dan berbagai universitas termasuk Owen Astrachan, Cay Horstmann, dan Nell Dale.

🎯 Tujuan Pembelajaran

  1. Membedakan antara perangkat keras/perangkat lunak dan algoritma/program.
  2. Menjelaskan bagaimana interpreter Python menerjemahkan kode tingkat tinggi menjadi instruksi eksekusi melalui byte code.
  3. Mendefinisikan dan memanggil fungsi Python sederhana menggunakan parameter dan argumen.
  4. Menyebutkan dan menjelaskan enam tahap dalam Proses Pengembangan Perangkat Lunak.
  5. Menerapkan aturan sintaks Python untuk membuat identifikasi yang valid dan ekspresi matematis dengan prioritas operator yang benar.
  6. Membedakan antara model variabel "Kotak" dan "Sticky Note" serta menjelaskan proses evaluasi dan penugasan.
  7. Membedakan tipe data int dan float, serta menerapkan konversi tipe secara eksplisit.
  8. Menerapkan pola akumulator untuk menyelesaikan masalah matematis seperti faktorial.
  9. Menggunakan pustaka Python math untuk menyelesaikan persamaan aljabar, termasuk rumus kuadrat.
  10. Mendefinisikan dan menerapkan konsep inti OOP: objek, metode, aksesors, mutators, dan aliasing.

🔹 Pelajaran 1: Pengantar Ilmu Komputer dan Dasar-Dasar Python

Ringkasan: Pelajaran ini memperkenalkan ilmu komputer sebagai studi tentang proses komputasi, bukan hanya studi tentang mesin fisik. Siswa akan mengeksplorasi konsep "Mesin Universal," di mana perangkat lunak memberikan kekuatan untuk mengubah perangkat keras menjadi alat apa pun yang dapat dibayangkan. Sesi diakhiri dengan pengantar teknis tentang dasar-dasar Python, termasuk eksekusi berbasis interpreter, definisi fungsi, serta perbedaan antara sintaks dan semantik.

Hasil Pembelajaran:

  • Membedakan antara perangkat keras/perangkat lunak dan algoritma/program.
  • Menjelaskan bagaimana interpreter Python menerjemahkan kode tingkat tinggi menjadi instruksi eksekusi melalui byte code.
  • Mendefinisikan dan memanggil fungsi Python sederhana menggunakan parameter dan argumen.

🔹 Pelajaran 2: Proses Pengembangan Perangkat Lunak dan Program Sederhana

Ringkasan: Pelajaran ini memperkenalkan pendekatan sistematis dalam menciptakan perangkat lunak melalui proses pengembangan enam tahap, serta blok bangunan dasar pemrograman Python. Siswa akan mengeksplorasi sintaks dasar, termasuk identifikasi, ekspresi, dan penugasan, sambil membandingkan model variabel "sticky note" dengan konsep tradisional. Pelajaran diakhiri dengan implementasi loop pasti menggunakan fungsi range() untuk menangani perhitungan berulang.

Hasil Pembelajaran:

  • Menyebutkan dan menjelaskan enam tahap dalam Proses Pengembangan Perangkat Lunak.
  • Menerapkan aturan sintaks Python untuk membuat identifikasi yang valid dan ekspresi matematis dengan prioritas operator yang benar.
  • Membedakan antara model variabel "Kotak" dan "Sticky Note" serta menjelaskan proses evaluasi dan penugasan.

🔹 Pelajaran 3: Representasi Data Numerik dan Pustaka Math

Ringkasan: Pelajaran ini mengeksplorasi bagaimana komputer merepresentasikan dan memanipulasi data numerik, membedakan antara bilangan bulat diskret (integer) dan pendekatan bilangan real (floating-point). Siswa akan belajar melakukan perhitungan kompleks menggunakan operator bawaan Python dan pustaka math, sambil memahami keterbatasan dan ketepatan representasi biner.

Hasil Pembelajaran:

  • Membedakan tipe data int dan float, serta menerapkan konversi tipe secara eksplisit.
  • Menerapkan pola akumulator untuk menyelesaikan masalah matematis seperti faktorial.
  • Menggunakan pustaka Python math untuk menyelesaikan persamaan aljabar, termasuk rumus kuadrat.

🔹 Pelajaran 4: Grafik Berbasis Objek dan GUI Interaktif

Ringkasan: Pelajaran ini mengalihkan siswa dari pemrograman berbasis teks ke Antarmuka Pengguna Grafis (GUI) menggunakan pendekatan Berbasis Objek (OO). Siswa akan belajar memanipulasi objek grafis (titik, garis, bentuk), mengelola sistem koordinat, serta membuat program interaktif yang merespons klik mouse, tekanan tombol keyboard, dan entri teks.

Hasil Pembelajaran:

  • Mendefinisikan dan menerapkan konsep inti OOP: objek, metode, aksesors, mutators, dan aliasing.
  • Membuat dan menampilkan objek grafis seperti Titik, Garis, Lingkaran, Persegi Panjang, Oval, dan Poligon.
  • Menerapkan transformasi koordinat dan elemen interaktif (mouse/keyboard/kotak masukan) untuk membuat GUI fungsional.

🔹 Pelajaran 5: Urutan: String, List, dan I/O File

Ringkasan: Pelajaran ini mengeksplorasi bagaimana ilmu komputer merepresentasikan dan memanipulasi urutan data, khususnya string dan list. Siswa akan belajar mekanisme pengindeksan dan slicing, perbedaan penting antara objek yang dapat diubah (mutable) dan tidak dapat diubah (immutable), serta cara berinteraksi dengan data eksternal melalui pemrosesan file. Selain itu, pelajaran juga membahas enkoding data melalui Unicode dan prinsip dasar kriptografi menggunakan sandi dasar.

Hasil Pembelajaran:

  • Melakukan manipulasi string dan list lanjutan menggunakan indeks, slicing, dan metode bawaan (split, join, upper, lower).
  • Merancang dan menerapkan algoritma enkripsi/dekripsi dasar serta sandi kriptografi (Caesar dan Substitusi).
  • Mengembangkan program pemrosesan batch yang membuka, membaca, memproses, dan menutup file data eksternal.

🔹 Pelajaran 6: Mendefinisikan Fungsi dan Lingkup Variabel

Ringkasan: Pelajaran ini mengeksplorasi transisi dari menulis skrip monolitik menjadi membuat program modular menggunakan fungsi. Pelajaran mencakup sintaks mendefinisikan dan memanggil fungsi, mekanisme mentransfer informasi melalui parameter formal dan aktual, serta bagaimana fungsi mengirim hasil kembali melalui nilai balik (termasuk nilai ganda dan objek None). Siswa juga akan belajar tentang lingkup variabel—khususnya perbedaan antara variabel lokal dan global—dan bagaimana fungsi dapat mengubah parameter mutable untuk memengaruhi status program.

Hasil Pembelajaran:

  • Menunjukkan bagaimana mendefinisikan dan memanggil fungsi untuk mengurangi duplikasi kode dan meningkatkan struktur program.
  • Membedakan antara parameter formal dan aktual serta menjelaskan pencocokan parameter posisional.
  • Menerapkan fungsi yang mengembalikan satu nilai, beberapa nilai, atau default ke objek None.

🔹 Pelajaran 7: Struktur Keputusan dan Penanganan Kesalahan

Ringkasan: Pelajaran ini memperkenalkan struktur keputusan, yang memungkinkan program mengeksekusi urutan instruksi yang berbeda berdasarkan kondisi tertentu. Siswa akan belajar membuat ekspresi Boolean menggunakan operator relasional, menerapkan keputusan satu arah, dua arah, dan banyak arah, serta menggunakan penyisipan logika untuk struktur kompleks. Pelajaran juga mencakup eksekusi modular dengan variabel __name__ dan manajemen kesalahan yang andal melalui penanganan exception.

Hasil Pembelajaran:

  • Menerapkan struktur keputusan sederhana, dua arah, dan banyak arah menggunakan if, else, dan elif.
  • Membuat dan mengevaluasi ekspresi Boolean menggunakan operator relasional dan urutan leksikografis untuk string.
  • Menerapkan pola try-except untuk menangani kesalahan runtime dan mencegah kegagalan program.

🔹 Pelajaran 8: Loop Tak Tentu dan Logika Boolean

Ringkasan: Pelajaran ini berpindah dari loop "dihitung" yang pasti ke loop tak tentu, yang dieksekusi berdasarkan kondisi daripada urutan tetap. Siswa akan menguasai pernyataan while dan berbagai pola desain untuk pemrosesan data, termasuk loop interaktif, sentinel, dan berbasis file. Selain itu, pelajaran juga membahas Logika Boolean, menyediakan alat aljabar yang diperlukan untuk membuat dan menyederhanakan struktur pengambilan keputusan kompleks dalam kode.

Hasil Pembelajaran:

  • Merancang dan menerapkan loop tak tentu menggunakan pernyataan while Python.
  • Menerapkan pola loop umum, termasuk loop interaktif, loop sentinel, dan pola baca awal (priming read).
  • Menyederhanakan kondisi logika kompleks menggunakan Aljabar Boolean dan Hukum DeMorgan.

🔹 Pelajaran 9: Simulasi, Desain, dan Refinemen Bertahap

Ringkasan: Pelajaran ini mengeksplorasi proses sistematis dalam mengembangkan program komputer kompleks melalui Desain Top-Down dan Refinemen Bertahap. Siswa akan belajar memecah masalah besar menjadi bagian-bagian kecil yang dapat ditangani menggunakan abstraksi dan modularisasi, memvisualisasikan hierarki program melalui Diagram Struktur, dan menerapkan simulasi menggunakan teknik Monte Carlo. Kurikulum juga mencakup strategi pengembangan iteratif seperti Prototyping dan Pengembangan Spiral, serta metode pengujian yang kuat seperti Uji Unit.

Hasil Pembelajaran:

  • Memecah masalah kompleks menjadi sub-masalah yang lebih kecil dan dapat diselesaikan menggunakan Desain Top-Down.
  • Membuat dan menafsirkan Diagram Struktur yang menggambarkan aliran data (parameter dan nilai balik) antar modul.
  • Menerapkan teknik simulasi Monte Carlo untuk memodelkan peristiwa probabilistik menggunakan pustaka random Python.

🔹 Pelajaran 10: Mendefinisikan Kelas dan Pemrograman Berbasis Peristiwa

Ringkasan: Pelajaran ini berpindah dari desain prosedural berbasis fungsi ke desain berbasis objek menggunakan kelas Python. Siswa akan belajar mengekapsulasi data (variabel instans) dan perilaku (metode) dalam satu unit, membuat widget antarmuka pengguna grafis (GUI) interaktif, serta mengelola alur program melalui pemrograman berbasis peristiwa dan loop animasi sinkron.

Hasil Pembelajaran:

  • Membedakan antara desain program berbasis fungsi dan berbasis objek.
  • Mendefinisikan kelas Python kustom menggunakan konstruktor (__init__), variabel instans, dan parameter self.
  • Menerapkan pengkapsulan dan dokumentasi menggunakan docstrings.

🔹 Pelajaran 11: Kumpulan Data: List Lanjutan dan Dictionaries

Ringkasan: Pelajaran ini mengeksplorasi teknik pengumpulan data lanjutan di Python, dengan fokus pada sifat serbaguna list dan dictionary. Siswa akan belajar membedakan list dengan array tradisional, melakukan operasi list lanjutan seperti slicing dan pengurutan rekaman, serta menerapkan pemetaan non-sekuensial melalui dictionary. Modul diakhiri dengan penerapan struktur-struktur ini dalam analisis statistik dan algoritma klasik seperti Sieve of Eratosthenes.

Hasil Pembelajaran:

  • Membandingkan list dinamis Python dengan array berukuran tetap dan homogen.
  • Melakukan manipulasi list lanjutan termasuk slicing, penghapusan selektif, dan pengurutan rekaman objek secara kustom.
  • Menerapkan algoritma statistik (Rata-rata, Median, Deviasi Standar) dan desain berbasis tabel menggunakan koleksi.

🔹 Pelajaran 12: Prinsip Desain Berbasis Objek (OOD)

Ringkasan: Pelajaran ini mengeksplorasi transisi dari desain fungsional top-down ke Desain Berbasis Objek (OOD), pendekatan berbasis data di mana sistem digambarkan sebagai kumpulan "kotak hitam" yang saling berinteraksi (objek). Siswa akan belajar mengidentifikasi objek dan metode potensial, menerapkan simulasi multi-kelas seperti Racquetball dan Dice Poker, serta menerapkan tiga pilar OOP: Pengkapsulan, Polimorfisme, dan Pewarisan. Pelajaran diakhiri dengan mengelola interaksi GUI kompleks melalui subclassing dan override metode.

Hasil Pembelajaran:

  • Identifikasi kelas dan metode potensial dari deskripsi masalah dengan menganalisis kata benda dan kata kerja.
  • Implementasi simulasi kompleks multi-objek menggunakan kelas terstruktur (misalnya Player, Game, Stats).
  • Membedakan dan menerapkan konsep dasar pengkapsulan, polimorfisme, dan pewarisan.

🔹 Pelajaran 13: Desain Algoritma, Rekursi, dan Efisiensi

Ringkasan: Pelajaran ini mengeksplorasi teknik dasar yang digunakan untuk menyelesaikan masalah komputasi secara efisien. Pelajaran mencakup strategi pencarian, mekanisme pemecahan masalah rekursif (kasus dasar dan langkah rekursif), serta perbandingan algoritma pengurutan seperti Selection Sort dan Merge Sort untuk memahami bagaimana desain algoritma memengaruhi kinerja.

Hasil Pembelajaran:

  • Membandingkan dan menerapkan strategi Pencarian Linear dan Pencarian Biner.
  • Merancang fungsi rekursif menggunakan kasus dasar dan langkah rekursif untuk masalah seperti pembalikan string dan eksponensiasi cepat.
  • Menganalisis trade-off kinerja antara rekursi dan iterasi, serta antara algoritma pengurutan yang berbeda (n^2 vs. n \log n).