Topic outline

  • Pertemuan 1 - Sejarah, Konsep, Contoh, dan Studi Kasus

    Pada pertemuan ini, saya akan membahas materi-materi berikut:

    1. Kontrak Perkuliahan
    2. Sejarah Algoritma dan Konsep Dasarnya
    3. Struktur Data dan Fungsinya
    4. Asosiasi antara Algoritma dan Struktur Data
    5. Perbedaan dan Interaksi Algoritma dan Struktur Data
    6. Contoh Implementasi Algoritma pada Perangkat Lunak
    7. Contoh Implementasi Struktur Data pada Perangkat Lunak
    8. Studi Kasus: Menggunakan Algoritma dan Struktur Data dalam Perangkat Lunak

    Pertemuan ini akan memperkenalkan kontrak perkuliahan sebagai panduan untuk kursus ini. Saya akan mengulas sejarah algoritma dan konsep dasarnya, memberikan pemahaman tentang struktur data dan bagaimana struktur data berperan dalam pengembangan perangkat lunak. Selain itu, saya akan menjelaskan hubungan antara algoritma dan struktur data serta menyoroti perbedaan dan interaksi di antara keduanya. Selama sesi ini, saya juga akan memberikan contoh konkret implementasi algoritma dan struktur data pada perangkat lunak. Sesi ini akan diakhiri dengan studi kasus yang memungkinkan Anda untuk menjelaskan dan menggunakan algoritma serta struktur data dalam konteks perangkat lunak yang sebenarnya. Dengan demikian, Anda akan memiliki pemahaman yang kuat tentang konsep-konsep dasar ini dan bagaimana mengaplikasikannya dalam pengembangan perangkat lunak.
  • Pertemuan 2 - IPO, Deskriptif, Flowchart, dan Psedeucode

    Ringkasan Materi Pembelajaran:

    1. Pengenalan Konsep Input, Process, dan Output
    2. Penggunaan Input untuk Mendapatkan Data Masukan
    3. Proses Pengolahan Data dalam Algoritma
    4. Menghasilkan Output sebagai Hasil Akhir
    5. Notasi Algoritma dalam Kalimat Deskriptif
    6. Menerjemahkan Algoritma ke dalam Flowchart
    7. Menggunakan Pseudocode untuk Menyusun Algoritma Sederhana

    Pada pertemuan ini, saya akan membahas sejumlah konsep penting dalam pemrograman dan algoritma. Kita akan memulai dengan pengenalan konsep Input, Process, dan Output, yang merupakan dasar dari setiap algoritma. Anda akan belajar cara menggunakan input untuk mendapatkan data masukan dari pengguna atau sumber lainnya. Selanjutnya, kita akan menjelajahi proses pengolahan data dalam algoritma, di mana Anda akan memahami bagaimana data diolah dan diproses untuk menghasilkan output yang diinginkan.

    Saya juga akan membahas notasi algoritma dalam kalimat deskriptif, yang membantu Anda menggambarkan algoritma secara verbal. Selain itu, kita akan mempelajari cara menerjemahkan algoritma ke dalam flowchart, yang adalah representasi visual dari algoritma. Terakhir, kita akan mengeksplorasi penggunaan pseudocode, bahasa deskriptif yang digunakan untuk menyusun algoritma sederhana. Dengan pemahaman mendalam tentang materi ini, Anda akan siap untuk merancang algoritma yang efisien dan efektif dalam pemrograman.

  • Pertemuan 3 - Bahasa Pemrograman Python

    Ringkasan Materi Pembelajaran:

    1. Jenis-jenis Bahasa Pemrograman dan Perbedaannya
    2. Fokus pada Bahasa Pemrograman Python
    3. Langkah-langkah Instalasi Lingkungan Python
    4. Menulis Kode Pertama dalam Bahasa Python

    Pertemuan ini akan memperkenalkan Anda pada dunia bahasa pemrograman, dengan penekanan khusus pada bahasa pemrograman Python. Pertama-tama, kita akan menjelaskan jenis-jenis bahasa pemrograman yang ada dan perbedaannya. Ini akan membantu Anda memahami berbagai bahasa pemrograman yang digunakan dalam pengembangan perangkat lunak dan proyek teknologi. Selanjutnya, kita akan fokus pada bahasa pemrograman Python. Anda akan belajar mengapa Python menjadi bahasa yang populer dan bagaimana ia digunakan dalam berbagai jenis proyek. Kami juga akan membahas langkah-langkah instalasi lingkungan Python di komputer Anda untuk memulai pemrograman dengan Python.

    Sesi ini akan diakhiri dengan latihan praktis, di mana Anda akan menulis kode pertama Anda dalam bahasa Python. Ini akan memberi Anda pengalaman langsung dalam menulis dan menjalankan program Python sederhana. Dengan pemahaman tentang jenis bahasa pemrograman, fokus pada Python, instalasi lingkungan Python, dan kode pertama, Anda akan memiliki landasan yang kuat untuk memulai perjalanan Anda dalam pemrograman dengan bahasa Python.


  • Pertemuan 4 - Dasar Pemrograman Python

    Ringkasan Materi Pembelajaran:

    1. Dasar-dasar Sintaksis Python
    2. Menjalankan dan Menguji Kode Python
    3. Praktik Penggunaan Bahasa Pemrograman Python dalam Beberapa Kasus Sederhana

    Pada pertemuan ini, kita akan membahas dasar-dasar sintaksis Python, yang merupakan aturan dan struktur dasar yang harus diikuti saat menulis kode Python. Ini termasuk penggunaan indentasi, tipe data, variabel, dan operasi dasar dalam bahasa Python. Setelah memahami sintaksis dasar, kita akan melanjutkan dengan cara menjalankan dan menguji kode Python. Anda akan mempelajari cara menggunakan lingkungan pengembangan Python atau IDE untuk menulis, menjalankan, dan menguji program Python Anda. Kami akan membahas debugging dan pengujian sederhana untuk memastikan kode Anda berjalan dengan baik.

    Selanjutnya, kita akan melakukan praktik penggunaan bahasa pemrograman Python dalam beberapa kasus sederhana. Ini mungkin termasuk mencetak teks ke layar, menghitung operasi matematika sederhana, atau mungkin mengolah data masukan sederhana. Praktik ini akan membantu Anda memahami bagaimana menerapkan pengetahuan sintaksis Python dalam situasi nyata. Dengan pemahaman tentang dasar-dasar sintaksis Python, keterampilan menjalankan dan menguji kode, serta pengalaman praktis dalam penggunaan Python dalam kasus sederhana, Anda akan siap untuk terus membangun kemampuan pemrograman Python Anda.
  • Pertemuan 5 - Tipe Data, Operator, dan Variabel Python

    Ringkasan Materi Pembelajaran:

    1. Konsep Tipe Data dalam Pemrograman
    2. Jenis-jenis Tipe Data dalam Bahasa Pemrograman Python
    3. Operasi Dasar dan Operator dalam Python
    4. Penggunaan Variabel untuk Menyimpan Data
    5. Nilai dan Pengenalannya dalam Bahasa Python
    6. Penerapan Tipe Data, Operator, dan Variabel dalam Kode
    7. Kasus Penggunaan Tipe Data dan Variabel dalam Bahasa Python

    Pertemuan ini akan memperkenalkan konsep tipe data dalam pemrograman, yang merupakan cara untuk mewakili berbagai jenis informasi dalam kode komputer. Kami akan fokus pada bahasa pemrograman Python dan membahas jenis-jenis tipe data yang tersedia dalam Python, seperti integer, float, string, dan lainnya. Selanjutnya, kita akan menjelaskan operasi dasar dan operator dalam Python, yang memungkinkan Anda untuk melakukan manipulasi data. Ini termasuk operasi matematika, perbandingan, dan logika yang dapat Anda terapkan pada tipe data.

    Anda akan memahami penggunaan variabel untuk menyimpan data dalam program Python, serta konsep nilai dan pengenalannya dalam bahasa Python. Variabel adalah wadah yang digunakan untuk menyimpan data yang dapat digunakan dan dimanipulasi dalam kode. Setelah memahami dasar-dasar tersebut, kita akan menggabungkan konsep tipe data, operator, dan variabel dalam beberapa contoh kode. Ini akan membantu Anda memahami bagaimana mengaplikasikan pengetahuan ini dalam pemrograman sehari-hari. Terakhir, kita akan melihat beberapa kasus penggunaan konkret tipe data dan variabel dalam bahasa Python, seperti penghitungan, manipulasi string, atau interaksi dengan pengguna. Dengan pemahaman yang mendalam tentang tipe data, operator, dan variabel dalam bahasa Python, Anda akan memiliki dasar yang kuat untuk mengembangkan kode yang lebih kompleks dalam bahasa ini.

  • Pertemuan 6 - Algoritma Peruntutan, Percabangan, dan Perulangan

    Ringkasan Materi Pembelajaran:

    1. Konsep Algoritma Runtutan dan Keperluannya
    2. Analisis Percabangan (if-else) dalam Algoritma
    3. Penggunaan Percabangan untuk Keputusan Logis
    4. Konsep Perulangan (Loop) dan Manfaatnya
    5. Algoritma Perulangan Menggunakan Looping (for, while)
    6. Penerapan Algoritma Percabangan dan Perulangan dalam Python
    7. Studi Kasus: Penggunaan Algoritma Runtutan, Percabangan, dan Perulangan

    Pertemuan ini akan memulai dengan memahami konsep algoritma runtutan dan mengapa algoritma runtutan penting dalam pemrograman. Anda akan memahami bahwa algoritma runtutan adalah urutan langkah-langkah yang harus diikuti dalam menyelesaikan tugas tertentu. Selanjutnya, kita akan fokus pada analisis percabangan (if-else) dalam algoritma. Anda akan mempelajari cara menggunakan percabangan untuk membuat keputusan logis dalam program, seperti mengevaluasi kondisi tertentu dan mengambil tindakan yang sesuai. Setelah itu, kita akan mendalami konsep perulangan (loop) dan manfaatnya. Perulangan memungkinkan Anda untuk menjalankan serangkaian instruksi berulang kali, yang sangat berguna dalam pengulangan tugas-tugas tertentu.

    Kita akan memahami cara mengimplementasikan algoritma perulangan menggunakan berbagai jenis looping, seperti for dan while, dalam bahasa pemrograman Python. Ini akan memungkinkan Anda untuk mengotomatiskan tugas yang berulang. Sesi ini akan mencakup penerapan algoritma percabangan dan perulangan dalam kode Python yang praktis, sehingga Anda dapat mengaplikasikannya dalam pengembangan perangkat lunak sehari-hari. Terakhir, kita akan menjelajahi studi kasus yang menggabungkan semua konsep yang telah diajarkan, termasuk algoritma runtutan, percabangan, dan perulangan. Ini akan memberikan pemahaman yang lebih mendalam tentang bagaimana algoritma ini digunakan dalam konteks pengembangan perangkat lunak yang lebih kompleks.

  • Pertemuan 7 - Array, Tupple, dan Linked List

    Ringkasan Materi Pembelajaran:

    1. Pengertian dan Keperluan Struktur Data
    2. Konsep Struktur Data Array dan Fungsinya
    3. Penggunaan Array di Bahasa Pemrograman Python
    4. Mengenal Konsep Linked List dan Jenisnya
    5. Memahami Struktur Data Tuple dan Kelebihannya
    6. Pengolahan Data Array, Tuple, dan Linked List di Python
    7. Implementasi Praktis Pengolahan Data Menggunakan Python

    Pertemuan ini memperkenalkan konsep-konsep dasar struktur data dalam pemrograman, mulai dari pengertian dan kebutuhannya hingga aplikasinya dalam bahasa pemrograman Python. Kami menjelaskan peran array sebagai cara efisien untuk menyimpan koleksi data serupa, memberikan panduan tentang penggunaan array di Python, dan menyelami konsep linked list dan jenisnya. Kami juga memahami manfaat struktur data tuple. Sesuai dengan pengenalan ini, sesi ini membahas pengolahan data dalam berbagai jenis struktur data, seperti array, tuple, dan linked list, dengan implementasi praktis dalam bahasa Python, memungkinkan pemahaman yang kuat tentang bagaimana mengaplikasikan konsep-konsep struktur data dalam pengembangan perangkat lunak.

  • Pertemuan 8 - Ujian Tengah Semester

    Materi yang akan diuji dalam ujian tengah semester mencakup pemahaman dasar-dasar pemrograman dan struktur data dalam bahasa pemrograman Python. Berikut adalah panduan untuk persiapan ujian:

    1. Dasar Pemrograman Python (20%): Pahami dasar-dasar sintaksis Python, termasuk tipe data, variabel, dan operasi dasar. Pastikan Anda mengerti cara menulis kode Python yang valid dan efisien.
    2. Pengendalian Aliran (20%): Kuasai konsep percabangan (if-else) dan perulangan (looping) dalam Python. Praktekkan penggunaan if-else untuk membuat keputusan logis, dan gunakan looping (for dan while) untuk mengulang tugas-tugas tertentu.
    3. Struktur Data (30%): Pelajari penggunaan array, tuple, dan linked list dalam Python. Pahami bagaimana mengolah dan memanipulasi data dalam struktur data ini, serta kapan sebaiknya menggunakannya dalam konteks pemrograman.
    4. Penerapan dalam Kode (20%): Siapkan diri Anda untuk menerapkan konsep-konsep yang telah Anda pelajari dalam kode Python. Ini dapat mencakup penyelesaian masalah, pembuatan program sederhana, atau manipulasi data dengan menggunakan struktur data.
    5. Studi Kasus (10%): Terakhir, kami akan menyertakan studi kasus yang menguji pemahaman Anda tentang penggunaan algoritma runtutan, percabangan, perulangan, dan struktur data dalam situasi nyata.


    Pastikan Anda memahami semua materi di atas dan berlatih dengan beberapa contoh soal yang relevan sebelum ujian. Semoga berhasil dalam ujian tengah semester Anda!


  • Pertemuan 9 - Struktur Data Stack dan Queue

    Ringkasan Materi Pembelajaran:

    1. Konsep Struktur Data Stack dan Fungsinya
    2. Implementasi dan Operasi pada Stack
    3. Pengolahan Data Menggunakan Stack dalam Python
    4. Memahami Konsep Struktur Data Queue
    5. Fungsi dan Penggunaan Queue dalam Pemrograman
    6. Aplikasi Pengolahan Data Menggunakan Queue
    7. Penerapan Struktur Data Stack dan Queue dalam Python

    Saya akan memulai dengan menjelaskan konsep dasar struktur data stack dan perannya dalam pemrograman. Stack adalah struktur data yang digunakan untuk menyimpan data dengan prinsip LIFO (Last-In, First-Out). Saya akan mengajarkan cara mengimplementasikan stack dan operasi-operasi kunci seperti push dan pop. Kemudian, kita akan membahas cara mengolah data menggunakan stack dalam bahasa pemrograman Python. Saya akan mengajarkan bagaimana stack dapat digunakan untuk pemecahan masalah dan pengolahan data yang efisien. Selanjutnya, kita akan memahami konsep struktur data queue, yang beroperasi berdasarkan prinsip FIFO (First-In, First-Out). Saya akan menjelaskan fungsinya dalam pemrograman dan bagaimana queue digunakan untuk mengatur antrian data.

    Sesi ini akan melanjutkan dengan diskusi tentang penggunaan queue dalam pemrograman dan aplikasi pengolahan data yang relevan. Saya akan memberikan contoh konkret untuk membantu Anda memahami penggunaan queue dalam skenario nyata. Terakhir, kita akan fokus pada penerapan struktur data stack dan queue dalam bahasa pemrograman Python. Saya akan memberikan contoh implementasi dan operasi-operasi dasar menggunakan Python. Dengan pemahaman tentang konsep stack, queue, dan cara mengimplementasikannya dalam Python, Anda akan siap untuk menguasai struktur data ini dan menggunakannya dalam pengembangan perangkat lunak Anda.

  • Pertemuan 10 - Algoritma Pencarian

    Ringkasan Materi Pembelajaran:

    1. Konsep Algoritma Pencarian (Searching)
    2. Jenis-Jenis Algoritma Pencarian (Linear, Binary, dan Hashing)
    3. Keperluan dan Situasi Penggunaan Algoritma Pencarian
    4. Implementasi Algoritma Pencarian Linear di Python
    5. Penerapan Algoritma Pencarian Binary di Python
    6. Penerapan Algoritma Pencarian Hashing di Python

    Pertemuan ini akan dimulai dengan pemahaman konsep dasar algoritma pencarian (searching) dalam pemrograman, yang merupakan proses mencari elemen tertentu dalam kumpulan data. Kami akan memahami mengapa algoritma pencarian diperlukan dan dalam situasi apa mereka digunakan. Kemudian, kita akan mengulas jenis-jenis algoritma pencarian, termasuk pencarian linear (linear search), pencarian biner (binary search), dan pencarian dengan hashing. Saya akan menjelaskan bagaimana masing-masing algoritma bekerja dan kapan sebaiknya digunakan.

    Sesi ini akan melanjutkan dengan implementasi algoritma pencarian linear dalam bahasa pemrograman Python. Anda akan memahami cara mencari elemen dalam daftar menggunakan metode ini dan bagaimana mengimplementasikannya dalam kode Python. Selanjutnya, kita akan fokus pada penerapan algoritma pencarian binary, yang bekerja dalam daftar yang terurut. Saya akan menjelaskan langkah-langkah untuk mengimplementasikan algoritma pencarian binary dalam Python.

    Terakhir, kita akan mempelajari penerapan algoritma pencarian dengan hashing dalam bahasa Python, yang melibatkan penggunaan fungsi hash untuk mengindeks dan mencari data. Dengan pemahaman tentang konsep algoritma pencarian dan kemampuan untuk mengimplementasikannya dalam Python, Anda akan memiliki pengetahuan yang kuat tentang bagaimana mencari data dalam berbagai situasi pemrograman.

  • Pertemuan 11 - Algoritma Pencarian (Lanjutan)

    Ringkasan Materi Pembelajaran:

    1. Jenis-Jenis Algoritma Pencarian (Interpolation, KMP, Boyer-Moore, Jump Search, Exponential)
    2. Implementasi Algoritma Pencarian Menggunakan Python
    3. Membuat Aplikasi Pencarian Sederhana Menggunakan Python
    4. Studi Kasus: Aplikasi Pencarian dalam Kehidupan Sehari-Hari

    Pertemuan ini akan memperkenalkan berbagai jenis algoritma pencarian, termasuk interpolasi, algoritma Knuth-Morris-Pratt (KMP), Boyer-Moore, Jump Search, dan pencarian eksponensial. Kami akan membahas cara kerja masing-masing algoritma dan kapan sebaiknya menggunakannya dalam skenario pencarian tertentu. Selanjutnya, kita akan melanjutkan dengan implementasi algoritma pencarian menggunakan bahasa pemrograman Python.

    Anda akan memahami bagaimana mengkodekan setiap algoritma dan bagaimana mengaplikasikannya dalam pencarian data dalam daftar atau string. Sesi ini akan mencakup pembuatan aplikasi pencarian sederhana menggunakan Python, yang akan memberikan Anda pengalaman langsung dalam mengintegrasikan algoritma pencarian ke dalam program komputer. Terakhir, kita akan menjelajahi studi kasus tentang aplikasi pencarian dalam kehidupan sehari-hari. Ini akan membantu Anda memahami relevansi algoritma pencarian dalam konteks dunia nyata, seperti pencarian di internet atau aplikasi pencarian lainnya. Dengan demikian, Anda akan memiliki pemahaman yang lebih mendalam tentang peran algoritma pencarian dalam pemrograman dan aplikasinya dalam kehidupan sehari-hari.

  • Pertemuan 12 - Algoritma Pengurutan

    Ringkasan Materi Pembelajaran:

    1. Konsep Algoritma Pengurutan (Sorting) dan Keperluannya
    2. Jenis-Jenis Algoritma Pengurutan (Bubble, Insertion, Selection)
    3. Penggunaan Masing-Masing Algoritma Pengurutan
    4. Analisis Efisiensi dan Kecepatan Algoritma Pengurutan
    5. Implementasi Algoritma Pengurutan Menggunakan Python

    Pertemuan ini akan memulai dengan pemahaman tentang konsep dasar algoritma pengurutan (sorting) dalam pemrograman dan mengapa pengurutan diperlukan dalam pemrosesan data. Kami akan menjelaskan mengapa algoritma pengurutan penting dalam berbagai aplikasi komputasi. Kemudian, kita akan menjelajahi jenis-jenis algoritma pengurutan, seperti algoritma bubble sort, insertion sort, dan selection sort. Saya akan membahas cara kerja masing-masing algoritma dan kapan sebaiknya menggunakannya berdasarkan kebutuhan pengurutan data.

    Selanjutnya, kita akan membahas analisis efisiensi dan kecepatan algoritma pengurutan. Anda akan memahami bagaimana mengukur dan membandingkan performa algoritma pengurutan dalam hal waktu eksekusi dan penggunaan sumber daya.

    Sesi ini akan dilanjutkan dengan implementasi algoritma pengurutan menggunakan bahasa pemrograman Python. Saya akan memberikan contoh konkret tentang bagaimana mengkodekan setiap algoritma pengurutan dan bagaimana mengaplikasikannya untuk mengurutkan data dalam berbagai bentuk. Dengan pemahaman tentang konsep algoritma pengurutan, jenis-jenisnya, analisis performa, dan kemampuan untuk mengimplementasikannya dalam Python, Anda akan memiliki pengetahuan yang kuat tentang pengurutan data dan kemampuan untuk menerapkannya dalam pengembangan perangkat lunak Anda.


  • Pertemuan 13 - Algoritma Pengurutan (Lanjutan)

    1. Jenis-Jenis Algoritma Pengurutan (Quick, Circle, Counting, Heap, dan Bucket Sort)
    2. Penggunaan Masing-Masing Algoritma Pengurutan
    3. Analisis Efisiensi dan Kecepatan Algoritma Pengurutan
    4. Implementasi Algoritma Pengurutan Menggunakan Python
    5. Studi Kasus: Aplikasi Pengurutan dalam Konteks Nyata

    Pertemuan ini akan memulai dengan eksplorasi berbagai jenis algoritma pengurutan yang lebih lanjut, termasuk quick sort, circle sort, counting sort, heap sort, dan bucket sort. Kami akan membahas cara kerja masing-masing algoritma dan situasi di mana mereka paling efektif dalam pengurutan data. Selanjutnya, kita akan membahas penggunaan praktis dari setiap algoritma pengurutan. Anda akan memahami bagaimana mengimplementasikan dan mengaplikasikan algoritma pengurutan ini dalam berbagai kasus pengurutan data yang berbeda.

    Sesi ini akan dilanjutkan dengan analisis efisiensi dan kecepatan algoritma pengurutan. Anda akan belajar cara mengukur dan membandingkan performa algoritma pengurutan dalam hal waktu eksekusi dan penggunaan sumber daya. Kemudian, kita akan melakukan implementasi algoritma pengurutan menggunakan bahasa pemrograman Python. Saya akan memberikan contoh konkret tentang bagaimana mengkodekan setiap algoritma pengurutan dan bagaimana mengaplikasikannya untuk mengurutkan data dalam berbagai bentuk. Terakhir, kita akan menjelajahi studi kasus tentang aplikasi pengurutan dalam konteks dunia nyata. Ini akan membantu Anda memahami relevansi algoritma pengurutan dalam berbagai aplikasi dan pengembangan perangkat lunak. Dengan pemahaman yang lebih mendalam tentang berbagai algoritma pengurutan, Anda akan siap untuk menghadapi berbagai tantangan pengurutan data dalam dunia pemrograman.
  • Pertemuan 14 - Big-O, Greedy, dan Backtracking

    Ringkasan Materi Pembelajaran:

    1. Definisi dan Pentingnya Analisis Kompleksitas Algoritma
    2. Perbedaan antara Waktu Eksekusi dan Kompleksitas Algoritma
    3. Memilih Algoritma yang Tepat untuk Suatu Permasalahan
    4. Pengertian Notasi Big-O sebagai Cara Mengukur Pertumbuhan Laju Waktu Eksekusi Algoritma
    5. Konsep Dasar Algoritma Greedy dan Filosofi di Baliknya
    6. Contoh Aplikasi Algoritma Greedy dalam Pemecahan Masalah Optimisasi
    7. Prinsip Dasar Backtracking dan Penggunaannya dalam Pemecahan Masalah
    8. Contoh Aplikasi Backtracking dalam Permasalahan Pencarian dan Optimisasi

    Pertemuan ini akan dimulai dengan pemahaman tentang definisi dan pentingnya analisis kompleksitas algoritma dalam pemrograman. Kami akan menjelaskan perbedaan antara waktu eksekusi dan kompleksitas algoritma serta mengapa ini menjadi hal penting dalam pengembangan perangkat lunak. Selanjutnya, kita akan membahas bagaimana memilih algoritma yang tepat untuk suatu permasalahan. Anda akan memahami bagaimana mengevaluasi berbagai faktor, seperti waktu eksekusi dan kebutuhan sumber daya, dalam pemilihan algoritma yang sesuai.

    Sesi ini akan melanjutkan dengan pengenalan notasi Big-O sebagai cara mengukur pertumbuhan laju waktu eksekusi algoritma. Kami akan membahas konsep dasar algoritma greedy dan filosofi di baliknya, yang melibatkan pengambilan keputusan lokal yang optimal untuk mencapai solusi global. Kemudian, kami akan memberikan contoh konkret tentang aplikasi algoritma greedy dalam pemecahan masalah optimisasi, yang memungkinkan Anda untuk memahami implementasi nyata dari konsep ini. Sesi berikutnya akan menjelaskan prinsip dasar backtracking dan bagaimana ia digunakan dalam pemecahan masalah. Anda akan belajar cara mengembangkan solusi langkah demi langkah dengan menguji setiap kemungkinan.

    Terakhir, kita akan mengeksplorasi contoh aplikasi backtracking dalam permasalahan pencarian dan optimisasi, yang akan memberikan Anda wawasan tentang penggunaan algoritma ini dalam pemrograman sehari-hari. Dengan pemahaman yang mendalam tentang analisis kompleksitas, pemilihan algoritma, algoritma greedy, dan backtracking, Anda akan memiliki dasar yang kuat dalam pengembangan perangkat lunak yang efisien dan efektif.

  • Pertemuan 15 - Dynamic Programming, A*, Knapsack

    Ringkasan Materi Pembelajaran:

    1. Konsep Dynamic Programming sebagai Pendekatan untuk Mengatasi Permasalahan Besar dengan Memecahnya Menjadi Submasalah Lebih Kecil.
    2. Konsep Dasar Algoritma A* dan Filosofi di Baliknya.
    3. Perbedaan antara Pendekatan Rekursif dan Pendekatan Dynamic Programming.
    4. Contoh Aplikasi Divide and Conquer dalam Pengurutan, Pencarian, dan Permasalahan Optimisasi.
    5. Definisi Masalah Knapsack dan Variasi-variasinya.
    6. Pendekatan Brute Force dan Pendekatan Dinamis untuk Memecahkan Masalah Knapsack.

    Pertemuan ini akan dimulai dengan memahami konsep dynamic programming sebagai pendekatan untuk mengatasi permasalahan besar dengan memecahnya menjadi submasalah lebih kecil, yang kemudian akan memberikan solusi secara efisien. Kemudian, kita akan menjelaskan konsep dasar algoritma A* dan filosofi di baliknya, yang digunakan dalam pemecahan masalah pencarian jalur atau rute terpendek dalam graf atau peta. Sesi ini akan melanjutkan dengan membandingkan perbedaan antara pendekatan rekursif dan pendekatan dynamic programming dalam penyelesaian masalah. Anda akan memahami kelebihan dan kekurangan masing-masing pendekatan.

    Selanjutnya, kita akan memberikan contoh aplikasi divide and conquer dalam pengurutan, pencarian, dan permasalahan optimisasi. Ini akan memberikan Anda pemahaman tentang bagaimana konsep ini diterapkan dalam berbagai konteks pemrograman. Sesi berikutnya akan mengenalkan masalah knapsack dan variasi-variasinya. Kami akan membahas pendekatan brute force dan pendekatan dinamis untuk memecahkan masalah knapsack, yang akan memberikan Anda alat tambahan dalam pemecahan masalah optimisasi dalam pengembangan perangkat lunak. Dengan pemahaman yang mendalam tentang dynamic programming, algoritma A*, divide and conquer, serta pemecahan masalah knapsack, Anda akan memiliki pengetahuan yang kuat dalam mengatasi permasalahan kompleks dalam pemrograman.

  • Pertemuan 16 - Ujian Akhir Semester

    Materi Ujian Akhir Semester: Struktur Data Stack dan Queue, Algoritma Pencarian, Algoritma Pengurutan, Dynamic Programming, A*, Knapsack

    1. Struktur Data Stack dan Queue (20%):

      • Pahami konsep dasar dan fungsionalitas dari struktur data stack dan queue.
      • Kuasai implementasi stack dan operasi seperti push dan pop.
      • Praktekkan pengolahan data menggunakan stack dalam bahasa pemrograman Python.
      • Memahami prinsip FIFO (First-In, First-Out) dalam queue dan aplikasinya.


    2. Algoritma Pencarian (20%):

      • Mengerti konsep algoritma pencarian, jenis-jenisnya (linear, binary, hashing), dan kapan harus menggunakannya.
      • Implementasikan algoritma pencarian linear dan binary dalam Python.
      • Pahami penggunaan algoritma pencarian hashing.
      • Praktekkan aplikasi pencarian dalam skenario nyata.

    3. Algoritma Pengurutan (20%):

      • Pelajari jenis-jenis algoritma pengurutan seperti bubble sort, insertion sort, selection sort, quick sort, dll.
      • Pahami kapan dan bagaimana menggunakan masing-masing algoritma pengurutan.
      • Implementasikan algoritma pengurutan dalam bahasa pemrograman Python.
      • Analisis efisiensi dan kecepatan algoritma pengurutan.

    4. Dynamic Programming, A, Knapsack (20%):

      • Memahami konsep dynamic programming sebagai pendekatan pemecahan masalah besar menjadi submasalah kecil.
      • Pelajari algoritma A* dan aplikasinya dalam pemecahan masalah pencarian jalur.
      • Perbedaan antara pendekatan rekursif dan dynamic programming.
      • Pahami masalah knapsack dan variasi-variasinya.
      • Implementasikan pendekatan brute force dan dynamic programming untuk knapsack.

    5. Penerapan dalam Kode (10%):

      • Siapkan diri Anda untuk menerapkan konsep-konsep yang telah Anda pelajari dalam kode Python.
      • Praktekkan penyelesaian masalah, pembuatan program sederhana, atau manipulasi data menggunakan struktur data.

    6. Studi Kasus (10%):

      • Bersiap untuk studi kasus yang menguji pemahaman Anda tentang penggunaan algoritma runtutan, percabangan, perulangan, dan struktur data dalam situasi nyata.