sda-course

RENCANA PEMBELAJARAN SEMESTER (RPS)

BERBASIS OUTCOME-BASED EDUCATION (OBE)


IDENTITAS MATA KULIAH

Komponen Keterangan
Nama Mata Kuliah Struktur Data dan Algoritma
Kode Mata Kuliah SDA201
Bobot SKS 3 SKS (2 SKS Teori + 1 SKS Praktikum)
Semester 2 (Dua)
Prasyarat Dasar-Dasar Pemrograman (DDP101)
Program Studi Teknik Informatika / Ilmu Komputer
Dosen Pengampu Anindito, S.Kom., S.S., S.H., M.TI., CHFI.
Tahun Akademik [Tahun Akademik]

BEBAN BELAJAR

Komponen Perhitungan Total per Minggu
Teori (2 SKS) 2 × 50 menit 100 menit
Praktikum (1 SKS) 1 × 3 × 50 menit 150 menit
Tatap Muka Total   250 menit/minggu
Belajar Mandiri 2 × (2 × 60 menit) + 1 × (3 × 60 menit) 420 menit/minggu

DESKRIPSI MATA KULIAH

Mata kuliah Struktur Data dan Algoritma merupakan mata kuliah wajib yang membangun kemampuan mahasiswa dalam mengorganisasikan, menyimpan, dan memanipulasi data secara efisien menggunakan bahasa pemrograman C++. Mata kuliah ini melanjutkan pengetahuan dari Dasar-Dasar Pemrograman dengan memperdalam pemahaman tentang pointer, array dinamis, dan penerapan rekursi, serta memperkenalkan struktur data fundamental seperti linked list, stack, queue, tree, heap, dan hash table.

Mahasiswa akan mempelajari berbagai algoritma penting termasuk algoritma sorting dan searching, serta mampu menganalisis kompleksitas algoritma menggunakan notasi Big-O. Penguasaan materi ini menjadi fondasi esensial untuk mata kuliah lanjutan yaitu Pemrograman Berorientasi Objek (Semester 3) yang akan memperdalam konsep class dan inheritance, serta Kecerdasan Artifisial (Semester 4) yang membutuhkan pemahaman struktur data untuk implementasi algoritma AI.


PRASYARAT PENGETAHUAN (DARI MATA KULIAH DDP)

Berdasarkan silabus Dasar-Dasar Pemrograman (DDP101), mahasiswa diasumsikan telah menguasai:

  1. Pemrograman Dasar C++: Tipe data, variabel, operator, I/O, percabangan, perulangan

  2. Fungsi dan Rekursi: Parameter passing, return value, fungsi rekursif dasar

  3. Array: Array 1D dan multidimensi, operasi dasar pada array

  4. Pointer: Konsep pointer, dereferencing, pointer arithmetic, dynamic memory (new/delete)

  5. Struct: Tipe data bentukan, array of struct

  6. File Handling: Operasi baca/tulis file

  7. Exception Handling: Try-catch, penanganan error

  8. Pengenalan OOP: Konsep dasar class, object, encapsulation


REFERENSI

Referensi Utama

  1. Cormen, T.H., Leiserson, C.E., Rivest, R.L., & Stein, C. (2022). Introduction to Algorithms (4th Ed.). MIT Press.

  2. Weiss, M.A. (2014). Data Structures and Algorithm Analysis in C++ (4th Ed.). Pearson.

Referensi Pendukung

  1. Hubbard, J.R. (2000). Data Structures with C++ (Schaum’s Outlines). McGraw-Hill.

  2. Goodrich, M.T., Tamassia, R., & Mount, D.M. (2011). Data Structures and Algorithms in C++ (2nd Ed.). Wiley.

  3. Sahni, S. (2019). Data Structures, Algorithms and Applications in C++. Universities Press.

  4. Sedgewick, R. & Wayne, K. (2011). Algorithms (4th Ed.). Addison-Wesley.


CAPAIAN PEMBELAJARAN LULUSAN (CPL) YANG DIBEBANKAN

Kode Capaian Pembelajaran Lulusan
CPL-1 Mampu menerapkan pemikiran logis, kritis, sistematis, dan inovatif dalam pengembangan ilmu pengetahuan dan teknologi di bidang informatika
CPL-2 Mampu menganalisis dan merancang solusi permasalahan komputasi menggunakan prinsip-prinsip ilmu komputer dan matematika
CPL-3 Mampu mengimplementasikan solusi komputasi dalam bentuk program komputer yang efisien dan dapat diandalkan
CPL-4 Mampu mengevaluasi dan mengoptimalkan kinerja sistem komputasi

CAPAIAN PEMBELAJARAN MATA KULIAH (CPMK)

Kode Capaian Pembelajaran Mata Kuliah CPL Terkait
CPMK-1 Mampu menjelaskan konsep Abstract Data Type (ADT) dan menganalisis kompleksitas algoritma menggunakan notasi asimptotik CPL-1, CPL-2
CPMK-2 Mampu mengimplementasikan struktur data linear (linked list, stack, queue) beserta operasi-operasinya dalam C++ CPL-3
CPMK-3 Mampu menerapkan teknik rekursi lanjut dan algoritma divide-and-conquer untuk menyelesaikan permasalahan komputasi CPL-2, CPL-3
CPMK-4 Mampu mengimplementasikan dan menganalisis berbagai algoritma sorting serta memilih algoritma yang optimal CPL-2, CPL-3, CPL-4
CPMK-5 Mampu mengimplementasikan struktur data non-linear (tree, binary tree, BST, heap) dan traversal-nya CPL-3
CPMK-6 Mampu menerapkan struktur data hash table dan memahami teknik collision handling CPL-2, CPL-3
CPMK-7 Mampu memilih dan menerapkan struktur data serta algoritma yang tepat untuk menyelesaikan permasalahan tertentu CPL-2, CPL-4

SUB-CAPAIAN PEMBELAJARAN MATA KULIAH (Sub-CPMK)

Kode Sub-Capaian Pembelajaran Mata Kuliah CPMK
Sub-CPMK-1.1 Mampu menjelaskan konsep ADT dan hubungannya dengan struktur data CPMK-1
Sub-CPMK-1.2 Mampu menganalisis kompleksitas waktu dan ruang menggunakan notasi Big-O, Big-Ω, Big-Θ CPMK-1
Sub-CPMK-1.3 Mampu menerapkan teknik pointer lanjut dan dynamic memory management CPMK-1
Sub-CPMK-2.1 Mampu mengimplementasikan single, double, dan circular linked list CPMK-2
Sub-CPMK-2.2 Mampu mengimplementasikan stack dengan array dan linked list serta aplikasinya CPMK-2
Sub-CPMK-2.3 Mampu mengimplementasikan queue dan deque dengan berbagai representasi CPMK-2
Sub-CPMK-3.1 Mampu menganalisis dan mengoptimalkan algoritma rekursif CPMK-3
Sub-CPMK-3.2 Mampu menerapkan paradigma divide-and-conquer dalam penyelesaian masalah CPMK-3
Sub-CPMK-4.1 Mampu mengimplementasikan algoritma sorting dasar (bubble, selection, insertion sort) CPMK-4
Sub-CPMK-4.2 Mampu mengimplementasikan algoritma sorting lanjut (merge sort, quick sort, heap sort) CPMK-4
Sub-CPMK-4.3 Mampu membandingkan dan memilih algoritma sorting berdasarkan karakteristik data CPMK-4
Sub-CPMK-5.1 Mampu mengimplementasikan tree dan binary tree beserta algoritma traversal CPMK-5
Sub-CPMK-5.2 Mampu mengimplementasikan Binary Search Tree (BST) dan operasi-operasinya CPMK-5
Sub-CPMK-5.3 Mampu mengimplementasikan heap dan priority queue CPMK-5
Sub-CPMK-6.1 Mampu memahami konsep hashing dan merancang fungsi hash CPMK-6
Sub-CPMK-6.2 Mampu menerapkan teknik collision handling (separate chaining, open addressing) CPMK-6
Sub-CPMK-7.1 Mampu menganalisis trade-off dalam pemilihan struktur data CPMK-7
Sub-CPMK-7.2 Mampu mengintegrasikan berbagai struktur data untuk menyelesaikan masalah kompleks CPMK-7

RENCANA PEMBELAJARAN SEMESTER


PERTEMUAN 1: Pengantar Struktur Data dan Review C++ Lanjut

Komponen Uraian
Sub-CPMK Sub-CPMK-1.1, Sub-CPMK-1.3
Indikator Pencapaian (1) Mahasiswa mampu menjelaskan konsep ADT dan perannya dalam pemrograman; (2) Mahasiswa mampu menggunakan pointer lanjut dan dynamic memory allocation dengan benar
Materi Pembelajaran Konsep Abstract Data Type (ADT), hubungan ADT dengan struktur data, review pointer dan referensi, operator new dan delete, memory leak dan dangling pointer, smart pointer (pengenalan), array dinamis
Bentuk & Waktu Pembelajaran Teori: 2×50 menit (100 menit); Praktikum: 3×50 menit (150 menit)
Metode Pembelajaran Ceramah interaktif, demonstrasi kode, hands-on coding
Pengalaman Belajar Mahasiswa mengimplementasikan dynamic array dengan proper memory management
Penilaian Kuis (10%), Tugas praktikum (15%)
Estimasi Waktu Belajar Mandiri 420 menit
Referensi Cormen Ch.10; Weiss Ch.1; Hubbard Ch.1-2
Sumber Praktikum C++ Reference - Memory: https://en.cppreference.com/w/cpp/memory; Visualgo - Linked List: https://visualgo.net/en/list

PERTEMUAN 2: Analisis Algoritma dan Kompleksitas

Komponen Uraian
Sub-CPMK Sub-CPMK-1.2
Indikator Pencapaian (1) Mahasiswa mampu menghitung kompleksitas waktu dan ruang algoritma; (2) Mahasiswa mampu membandingkan efisiensi algoritma menggunakan notasi asimptotik
Materi Pembelajaran Pentingnya analisis algoritma, notasi Big-O, Big-Ω, Big-Θ, analisis best case/worst case/average case, aturan penjumlahan dan perkalian, kompleksitas umum: O(1), O(log n), O(n), O(n log n), O(n²), O(2ⁿ), analisis algoritma iteratif dan rekursif, amortized analysis (pengenalan)
Bentuk & Waktu Pembelajaran Teori: 2×50 menit (100 menit); Praktikum: 3×50 menit (150 menit)
Metode Pembelajaran Ceramah, problem-based learning, latihan soal, eksperimen pengukuran waktu
Pengalaman Belajar Mahasiswa menganalisis kompleksitas berbagai algoritma dan membuktikan secara empiris melalui pengukuran waktu eksekusi
Penilaian Kuis (15%), Tugas analisis (20%)
Estimasi Waktu Belajar Mandiri 420 menit
Referensi Cormen Ch.2-3; Weiss Ch.2; Goodrich Ch.4
Sumber Praktikum Algorithm Visualizer: https://algorithm-visualizer.org/; Big-O Cheat Sheet: https://www.bigocheatsheet.com/

PERTEMUAN 3: Linked List (Bagian 1) - Single Linked List

Komponen Uraian
Sub-CPMK Sub-CPMK-2.1
Indikator Pencapaian (1) Mahasiswa mampu menjelaskan konsep linked list dan perbedaannya dengan array; (2) Mahasiswa mampu mengimplementasikan single linked list dan operasi-operasinya
Materi Pembelajaran Konsep linked list, node dan pointer, perbandingan array vs linked list, single linked list, operasi: insert (awal, akhir, tengah), delete, search, traversal, kompleksitas operasi linked list
Bentuk & Waktu Pembelajaran Teori: 2×50 menit (100 menit); Praktikum: 3×50 menit (150 menit)
Metode Pembelajaran Ceramah, demonstrasi dengan visualisasi, hands-on coding
Pengalaman Belajar Mahasiswa mengimplementasikan class SingleLinkedList dengan operasi CRUD lengkap
Penilaian Tugas praktikum (25%)
Estimasi Waktu Belajar Mandiri 420 menit
Referensi Cormen Ch.10.2; Weiss Ch.3; Hubbard Ch.7
Sumber Praktikum Visualgo - Linked List: https://visualgo.net/en/list; GeeksforGeeks - Linked List: https://www.geeksforgeeks.org/data-structures/linked-list/

PERTEMUAN 4: Linked List (Bagian 2) - Double dan Circular Linked List

Komponen Uraian
Sub-CPMK Sub-CPMK-2.1
Indikator Pencapaian (1) Mahasiswa mampu mengimplementasikan double linked list; (2) Mahasiswa mampu mengimplementasikan circular linked list; (3) Mahasiswa mampu memilih jenis linked list yang tepat untuk kasus tertentu
Materi Pembelajaran Double linked list: struktur node, operasi insert dan delete, keuntungan dibanding single linked list; Circular linked list: single circular dan double circular, aplikasi circular linked list (round-robin scheduling), sentinel node, iterator pada linked list
Bentuk & Waktu Pembelajaran Teori: 2×50 menit (100 menit); Praktikum: 3×50 menit (150 menit)
Metode Pembelajaran Ceramah, demonstrasi, project-based learning
Pengalaman Belajar Mahasiswa mengimplementasikan playlist musik menggunakan circular doubly linked list
Penilaian Tugas praktikum (25%), Kuis (10%)
Estimasi Waktu Belajar Mandiri 420 menit
Referensi Cormen Ch.10.2; Weiss Ch.3; Goodrich Ch.3
Sumber Praktikum Visualgo - Linked List: https://visualgo.net/en/list; GeeksforGeeks - Doubly Linked List: https://www.geeksforgeeks.org/doubly-linked-list/

PERTEMUAN 5: Stack

Komponen Uraian
Sub-CPMK Sub-CPMK-2.2
Indikator Pencapaian (1) Mahasiswa mampu menjelaskan konsep LIFO dan ADT stack; (2) Mahasiswa mampu mengimplementasikan stack dengan array dan linked list; (3) Mahasiswa mampu menerapkan stack untuk menyelesaikan masalah
Materi Pembelajaran Konsep LIFO, ADT stack (push, pop, peek, isEmpty, isFull), implementasi dengan array (static dan dynamic), implementasi dengan linked list, analisis kompleksitas, aplikasi stack: balanced parentheses, konversi dan evaluasi ekspresi (infix, postfix, prefix), undo mechanism, function call stack
Bentuk & Waktu Pembelajaran Teori: 2×50 menit (100 menit); Praktikum: 3×50 menit (150 menit)
Metode Pembelajaran Ceramah, demonstrasi, problem-based learning
Pengalaman Belajar Mahasiswa mengimplementasikan evaluator ekspresi postfix dan program pengecekan balanced parentheses
Penilaian Tugas praktikum (25%)
Estimasi Waktu Belajar Mandiri 420 menit
Referensi Cormen Ch.10.1; Weiss Ch.3.6; Hubbard Ch.5
Sumber Praktikum Visualgo - Stack: https://visualgo.net/en/list; GeeksforGeeks - Stack: https://www.geeksforgeeks.org/stack-data-structure/

PERTEMUAN 6: Queue

Komponen Uraian
Sub-CPMK Sub-CPMK-2.3
Indikator Pencapaian (1) Mahasiswa mampu menjelaskan konsep FIFO dan ADT queue; (2) Mahasiswa mampu mengimplementasikan queue dengan berbagai representasi; (3) Mahasiswa mampu menerapkan queue untuk menyelesaikan masalah
Materi Pembelajaran Konsep FIFO, ADT queue (enqueue, dequeue, front, rear, isEmpty), implementasi dengan array linear, circular array (circular queue), implementasi dengan linked list, deque (double-ended queue), analisis kompleksitas, aplikasi queue: BFS traversal, task scheduling, buffer, simulasi antrian
Bentuk & Waktu Pembelajaran Teori: 2×50 menit (100 menit); Praktikum: 3×50 menit (150 menit)
Metode Pembelajaran Ceramah, demonstrasi, simulasi
Pengalaman Belajar Mahasiswa mengimplementasikan simulasi antrian bank dengan multiple teller
Penilaian Tugas praktikum (25%), Kuis (10%)
Estimasi Waktu Belajar Mandiri 420 menit
Referensi Cormen Ch.10.1; Weiss Ch.3.7; Hubbard Ch.6
Sumber Praktikum Visualgo - Queue: https://visualgo.net/en/list; GeeksforGeeks - Queue: https://www.geeksforgeeks.org/queue-data-structure/

PERTEMUAN 7: Rekursi Lanjut dan Divide-and-Conquer

Komponen Uraian
Sub-CPMK Sub-CPMK-3.1, Sub-CPMK-3.2
Indikator Pencapaian (1) Mahasiswa mampu menganalisis dan mengoptimalkan algoritma rekursif; (2) Mahasiswa mampu menerapkan paradigma divide-and-conquer; (3) Mahasiswa mampu mengkonversi rekursi ke iterasi menggunakan stack
Materi Pembelajaran Review rekursi: base case, recursive case, tracing; Analisis kompleksitas rekursi dengan recurrence relation; Master theorem (pengenalan); Tail recursion dan optimasi; Memoization dan dynamic programming (pengenalan); Paradigma divide-and-conquer; Contoh: binary search, tower of Hanoi, fibonacci dengan memoization; Konversi rekursi ke iterasi dengan stack eksplisit
Bentuk & Waktu Pembelajaran Teori: 2×50 menit (100 menit); Praktikum: 3×50 menit (150 menit)
Metode Pembelajaran Ceramah, demonstrasi, tracing rekursi, hands-on coding
Pengalaman Belajar Mahasiswa mengimplementasikan Tower of Hanoi dan membandingkan Fibonacci rekursif vs memoization
Penilaian Tugas praktikum (20%), Kuis (15%)
Estimasi Waktu Belajar Mandiri 420 menit
Referensi Cormen Ch.4; Weiss Ch.1.3; Hubbard Ch.4
Sumber Praktikum Visualgo - Recursion Tree: https://visualgo.net/en/recursion; GeeksforGeeks - Recursion: https://www.geeksforgeeks.org/recursion/; CP-Algorithms: https://cp-algorithms.com/

PERTEMUAN 8: UJIAN TENGAH SEMESTER (UTS)

Komponen Uraian
Cakupan Materi Pertemuan 1-7: ADT, Analisis Algoritma, Linked List, Stack, Queue, Rekursi
Bentuk Ujian Ujian Tertulis (Teori) dan Ujian Praktikum
Waktu Ujian Teori: 100 menit; Praktikum: 150 menit
Bobot Penilaian 25% dari nilai akhir
CPMK yang Diuji CPMK-1, CPMK-2, CPMK-3

PERTEMUAN 9: Algoritma Sorting (Bagian 1) - Sorting Dasar

Komponen Uraian
Sub-CPMK Sub-CPMK-4.1
Indikator Pencapaian (1) Mahasiswa mampu mengimplementasikan algoritma sorting dasar; (2) Mahasiswa mampu menganalisis kompleksitas masing-masing algoritma sorting dasar; (3) Mahasiswa mampu menjelaskan konsep stable dan unstable sort
Materi Pembelajaran Pengantar sorting, kriteria algoritma sorting, Bubble sort: algoritma, optimasi (early termination), kompleksitas; Selection sort: algoritma, kompleksitas; Insertion sort: algoritma, kompleksitas, keunggulan untuk data hampir terurut; Konsep stable vs unstable sort; Perbandingan ketiga algoritma
Bentuk & Waktu Pembelajaran Teori: 2×50 menit (100 menit); Praktikum: 3×50 menit (150 menit)
Metode Pembelajaran Ceramah, demonstrasi dengan visualisasi, hands-on coding
Pengalaman Belajar Mahasiswa mengimplementasikan ketiga algoritma dan membandingkan performa dengan berbagai ukuran data
Penilaian Tugas praktikum (25%)
Estimasi Waktu Belajar Mandiri 420 menit
Referensi Cormen Ch.2; Weiss Ch.7.2; Hubbard Ch.13
Sumber Praktikum Visualgo - Sorting: https://visualgo.net/en/sorting; Sorting Algorithms Visualizer: https://www.sortvisualizer.com/

PERTEMUAN 10: Algoritma Sorting (Bagian 2) - Sorting Lanjut

Komponen Uraian
Sub-CPMK Sub-CPMK-4.2, Sub-CPMK-4.3
Indikator Pencapaian (1) Mahasiswa mampu mengimplementasikan merge sort dan quick sort; (2) Mahasiswa mampu menganalisis kompleksitas algoritma divide-and-conquer untuk sorting; (3) Mahasiswa mampu memilih algoritma sorting yang tepat
Materi Pembelajaran Merge sort: algoritma, divide-and-conquer, kompleksitas O(n log n), space complexity; Quick sort: algoritma, pemilihan pivot (first, last, median-of-three, random), partitioning, best/worst/average case; Perbandingan merge sort vs quick sort; Lower bound untuk comparison-based sorting: Ω(n log n); Kapan menggunakan sorting mana
Bentuk & Waktu Pembelajaran Teori: 2×50 menit (100 menit); Praktikum: 3×50 menit (150 menit)
Metode Pembelajaran Ceramah, demonstrasi, visualisasi algoritma, eksperimen
Pengalaman Belajar Mahasiswa mengimplementasikan merge sort dan quick sort, serta membandingkan performa dengan sorting dasar
Penilaian Tugas praktikum (25%), Kuis (15%)
Estimasi Waktu Belajar Mandiri 420 menit
Referensi Cormen Ch.7-8; Weiss Ch.7.4-7.7; Hubbard Ch.13
Sumber Praktikum Visualgo - Sorting: https://visualgo.net/en/sorting; GeeksforGeeks - Merge Sort: https://www.geeksforgeeks.org/merge-sort/; GeeksforGeeks - Quick Sort: https://www.geeksforgeeks.org/quick-sort/

PERTEMUAN 11: Tree dan Binary Tree

Komponen Uraian
Sub-CPMK Sub-CPMK-5.1
Indikator Pencapaian (1) Mahasiswa mampu menjelaskan terminologi dan konsep tree; (2) Mahasiswa mampu mengimplementasikan binary tree; (3) Mahasiswa mampu mengimplementasikan algoritma traversal
Materi Pembelajaran Terminologi tree: root, node, edge, parent, child, sibling, leaf, height, depth, level, subtree; Binary tree: definisi, properti, jenis (full, complete, perfect, skewed); Representasi binary tree: linked structure, array; Tree traversal: preorder, inorder, postorder (rekursif dan iteratif), level-order (BFS); Aplikasi tree: expression tree, decision tree
Bentuk & Waktu Pembelajaran Teori: 2×50 menit (100 menit); Praktikum: 3×50 menit (150 menit)
Metode Pembelajaran Ceramah, demonstrasi, visualisasi
Pengalaman Belajar Mahasiswa mengimplementasikan binary tree dengan semua algoritma traversal dan membangun expression tree
Penilaian Tugas praktikum (25%)
Estimasi Waktu Belajar Mandiri 420 menit
Referensi Cormen Ch.12 (intro); Weiss Ch.4; Hubbard Ch.9-10
Sumber Praktikum Visualgo - Binary Tree: https://visualgo.net/en/bst; GeeksforGeeks - Binary Tree: https://www.geeksforgeeks.org/binary-tree-data-structure/

PERTEMUAN 12: Binary Search Tree (BST)

Komponen Uraian
Sub-CPMK Sub-CPMK-5.2
Indikator Pencapaian (1) Mahasiswa mampu menjelaskan properti BST; (2) Mahasiswa mampu mengimplementasikan operasi search, insert, delete pada BST; (3) Mahasiswa mampu menganalisis kompleksitas BST
Materi Pembelajaran Properti Binary Search Tree, operasi search pada BST, operasi insert pada BST, operasi delete pada BST (3 kasus: leaf, 1 child, 2 children), operasi findMin dan findMax, kompleksitas BST: best case O(log n), worst case O(n), BST tidak seimbang dan dampaknya, pengenalan balanced BST (AVL tree, Red-Black tree - konsep saja)
Bentuk & Waktu Pembelajaran Teori: 2×50 menit (100 menit); Praktikum: 3×50 menit (150 menit)
Metode Pembelajaran Ceramah, demonstrasi, hands-on coding
Pengalaman Belajar Mahasiswa mengimplementasikan BST lengkap dengan operasi CRUD dan traversal inorder untuk mendapatkan data terurut
Penilaian Tugas praktikum (25%), Kuis (10%)
Estimasi Waktu Belajar Mandiri 420 menit
Referensi Cormen Ch.12; Weiss Ch.4.3; Hubbard Ch.11
Sumber Praktikum Visualgo - BST: https://visualgo.net/en/bst; GeeksforGeeks - BST: https://www.geeksforgeeks.org/binary-search-tree-data-structure/; BST Visualizer: https://www.cs.usfca.edu/~galles/visualization/BST.html

PERTEMUAN 13: Heap dan Priority Queue

Komponen Uraian
Sub-CPMK Sub-CPMK-5.3, Sub-CPMK-4.2
Indikator Pencapaian (1) Mahasiswa mampu menjelaskan konsep dan properti heap; (2) Mahasiswa mampu mengimplementasikan heap dan operasinya; (3) Mahasiswa mampu mengimplementasikan priority queue dan heap sort
Materi Pembelajaran Konsep heap: min-heap dan max-heap, properti heap (complete binary tree + heap property); Representasi heap dengan array; Operasi heap: insert (percolate up), extract-min/max (percolate down), heapify; Build heap dari array: O(n); Priority queue: ADT dan implementasi dengan heap; Heap sort: algoritma dan kompleksitas O(n log n); Perbandingan dengan sorting lain
Bentuk & Waktu Pembelajaran Teori: 2×50 menit (100 menit); Praktikum: 3×50 menit (150 menit)
Metode Pembelajaran Ceramah, demonstrasi, visualisasi
Pengalaman Belajar Mahasiswa mengimplementasikan min-heap, priority queue, dan heap sort
Penilaian Tugas praktikum (25%)
Estimasi Waktu Belajar Mandiri 420 menit
Referensi Cormen Ch.6; Weiss Ch.6; Hubbard Ch.12
Sumber Praktikum Visualgo - Heap: https://visualgo.net/en/heap; GeeksforGeeks - Heap: https://www.geeksforgeeks.org/heap-data-structure/; Heap Visualizer: https://www.cs.usfca.edu/~galles/visualization/Heap.html

PERTEMUAN 14: Hash Table

Komponen Uraian
Sub-CPMK Sub-CPMK-6.1, Sub-CPMK-6.2
Indikator Pencapaian (1) Mahasiswa mampu menjelaskan konsep hashing dan fungsi hash; (2) Mahasiswa mampu mengimplementasikan hash table dengan berbagai teknik collision handling; (3) Mahasiswa mampu menganalisis performa hash table
Materi Pembelajaran Konsep hashing dan direct addressing, fungsi hash: division method, multiplication method, universal hashing; Collision dan teknik penanganan: Separate chaining (dengan linked list), Open addressing: linear probing, quadratic probing, double hashing; Load factor dan rehashing; Analisis kompleksitas: average case O(1), worst case O(n); Aplikasi hash table: dictionary, caching, counting
Bentuk & Waktu Pembelajaran Teori: 2×50 menit (100 menit); Praktikum: 3×50 menit (150 menit)
Metode Pembelajaran Ceramah, demonstrasi, hands-on coding
Pengalaman Belajar Mahasiswa mengimplementasikan hash table dengan separate chaining dan open addressing
Penilaian Tugas praktikum (25%), Kuis (10%)
Estimasi Waktu Belajar Mandiri 420 menit
Referensi Cormen Ch.11; Weiss Ch.5; Hubbard Ch.8
Sumber Praktikum Visualgo - Hash Table: https://visualgo.net/en/hashtable; GeeksforGeeks - Hashing: https://www.geeksforgeeks.org/hashing-data-structure/; Hash Table Visualizer: https://www.cs.usfca.edu/~galles/visualization/OpenHash.html

PERTEMUAN 15: Review dan Integrasi Struktur Data

Komponen Uraian
Sub-CPMK Sub-CPMK-7.1, Sub-CPMK-7.2
Indikator Pencapaian (1) Mahasiswa mampu menganalisis trade-off dalam pemilihan struktur data; (2) Mahasiswa mampu memilih struktur data yang tepat untuk permasalahan tertentu; (3) Mahasiswa mampu mengintegrasikan berbagai struktur data
Materi Pembelajaran Review komprehensif seluruh struktur data; Perbandingan struktur data: kompleksitas waktu dan ruang, keunggulan dan kelemahan masing-masing; Kriteria pemilihan struktur data: jenis operasi, frekuensi operasi, ukuran data, memory constraint; Studi kasus: sistem manajemen data, LRU cache, text editor dengan undo/redo; Latihan soal komprehensif; Persiapan UAS
Bentuk & Waktu Pembelajaran Teori: 2×50 menit (100 menit); Praktikum: 3×50 menit (150 menit)
Metode Pembelajaran Diskusi, problem-based learning, case study
Pengalaman Belajar Mahasiswa mengerjakan mini project yang mengintegrasikan berbagai struktur data
Penilaian Mini project (30%), Kuis (10%)
Estimasi Waktu Belajar Mandiri 420 menit
Referensi Cormen (seluruh bab terkait); Weiss (seluruh bab terkait)
Sumber Praktikum Visualgo (seluruh modul): https://visualgo.net/; GeeksforGeeks - Data Structures: https://www.geeksforgeeks.org/data-structures/; CP-Algorithms: https://cp-algorithms.com/

PERTEMUAN 16: UJIAN AKHIR SEMESTER (UAS)

Komponen Uraian
Cakupan Materi Seluruh materi (Pertemuan 1-15), dengan penekanan pada Pertemuan 9-15
Bentuk Ujian Ujian Tertulis (Teori) dan Ujian Praktikum
Waktu Ujian Teori: 100 menit; Praktikum: 150 menit
Bobot Penilaian 30% dari nilai akhir
CPMK yang Diuji CPMK-1 sampai CPMK-7

MATRIKS CPMK vs PERTEMUAN

CPMK P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14 P15 P16
CPMK-1           UTS             UAS
CPMK-2       UTS             UAS
CPMK-3             UTS             UAS
CPMK-4                       UAS
CPMK-5                       UAS
CPMK-6                           UAS
CPMK-7                             UAS

EVALUASI DAN PENILAIAN

Komponen Penilaian

Komponen Bobot Keterangan
Tugas & Praktikum 25% Tugas mingguan dan laporan praktikum
Kuis 10% Kuis di beberapa pertemuan
Mini Project 10% Project integratif di pertemuan 15
Ujian Tengah Semester (UTS) 25% Teori + Praktikum
Ujian Akhir Semester (UAS) 30% Teori + Praktikum
Total 100%  

Kriteria Penilaian

Nilai Rentang Keterangan
A 85 - 100 Sangat Baik
A- 80 - 84 Hampir Sangat Baik
B+ 75 - 79 Lebih dari Baik
B 70 - 74 Baik
B- 65 - 69 Hampir Baik
C+ 60 - 64 Lebih dari Cukup
C 55 - 59 Cukup
D 40 - 54 Kurang
E 0 - 39 Sangat Kurang

Rubrik Penilaian Praktikum

Aspek Bobot Kriteria
Correctness 40% Program berjalan benar sesuai spesifikasi
Efficiency 20% Penggunaan algoritma dan struktur data yang efisien
Code Quality 20% Kode terstruktur, readable, dan terdokumentasi
Problem Solving 20% Kemampuan menganalisis dan menyelesaikan masalah

ATURAN PERKULIAHAN

  1. Kehadiran: Minimal 80% dari total pertemuan untuk dapat mengikuti UAS

  2. Keterlambatan Tugas: Pengurangan 10% per hari keterlambatan, maksimal 3 hari

  3. Plagiarisme: Pelanggaran akan dikenai sanksi sesuai peraturan akademik (nilai 0 untuk komponen terkait)

  4. Praktikum: Wajib hadir dan menyelesaikan tugas praktikum setiap pertemuan

  5. Ujian Susulan: Hanya diberikan dengan alasan yang sah dan bukti pendukung


KETERHUBUNGAN DENGAN MATA KULIAH LAIN

Mata Kuliah Prasyarat

Mata Kuliah Lanjutan


DAFTAR PUSTAKA LENGKAP

Referensi Utama

  1. Cormen, T.H., Leiserson, C.E., Rivest, R.L., & Stein, C. (2022). Introduction to Algorithms (4th Ed.). MIT Press. ISBN: 978-0262046305
  2. Weiss, M.A. (2014). Data Structures and Algorithm Analysis in C++ (4th Ed.). Pearson. ISBN: 978-0132847377

Referensi Pendukung

  1. Hubbard, J.R. (2000). Data Structures with C++ (Schaum’s Outlines). McGraw-Hill. ISBN: 978-0071353458
  2. Goodrich, M.T., Tamassia, R., & Mount, D.M. (2011). Data Structures and Algorithms in C++ (2nd Ed.). Wiley. ISBN: 978-0470383278
  3. Sahni, S. (2019). Data Structures, Algorithms and Applications in C++. Universities Press. ISBN: 978-8173716232
  4. Sedgewick, R. & Wayne, K. (2011). Algorithms (4th Ed.). Addison-Wesley. ISBN: 978-0321573513

Sumber Online

  1. Visualgo - Visualizing Data Structures and Algorithms: https://visualgo.net/
  2. GeeksforGeeks - Data Structures: https://www.geeksforgeeks.org/data-structures/
  3. CP-Algorithms: https://cp-algorithms.com/

MEDIA DAN SUMBER BELAJAR

Perangkat Keras

Perangkat Lunak

Kategori Tools Sumber
IDE Utama Code::Blocks (dengan MinGW GCC) https://www.codeblocks.org/
Compiler MinGW-w64 GCC https://www.mingw-w64.org/
Debugging Code::Blocks built-in debugger Built-in IDE
Memory Debugging Valgrind (via WSL, opsional) https://valgrind.org/

Sumber Belajar Online

Sumber Deskripsi URL
Visualgo Visualisasi interaktif struktur data dan algoritma https://visualgo.net/
GeeksforGeeks Artikel dan latihan struktur data https://www.geeksforgeeks.org/data-structures/
CP-Algorithms Referensi algoritma kompetitif https://cp-algorithms.com/
Big-O Cheat Sheet Referensi cepat kompleksitas algoritma https://www.bigocheatsheet.com/
Data Structure Visualizations Visualisasi interaktif dari USF https://www.cs.usfca.edu/~galles/visualization/

CATATAN PENTING

  1. Fondasi dari DDP: Mata kuliah ini melanjutkan langsung dari Dasar-Dasar Pemrograman (DDP101). Mahasiswa yang belum menguasai pointer, rekursi, dan struct dari DDP akan mengalami kesulitan signifikan.
  2. IDE Standar: Seluruh praktikum menggunakan Code::Blocks dengan compiler MinGW GCC. Mahasiswa diperbolehkan menggunakan IDE lain untuk belajar mandiri.
  3. Visualisasi: Mahasiswa sangat dianjurkan menggunakan Visualgo (https://visualgo.net/) untuk memahami cara kerja struktur data dan algoritma secara visual.
  4. Manajemen Memori: Perhatian khusus diberikan pada memory management (new/delete) sepanjang semester. Memory leak dan dangling pointer adalah kesalahan umum yang harus dihindari.
  5. Plagiarisme Kode: Tugas pemrograman harus dikerjakan secara mandiri. Diskusi konsep diperbolehkan, namun copy-paste kode dianggap plagiarisme.
  6. Koneksi Internet: Beberapa pertemuan memerlukan koneksi internet untuk mengakses visualisasi online dan resources.

KONTRAK PERKULIAHAN

Mahasiswa yang mengikuti mata kuliah ini dianggap telah menyetujui:

  1. Mengikuti minimal 80% pertemuan untuk dapat mengikuti UAS
  2. Mengumpulkan tugas dan laporan praktikum sesuai tenggat waktu
  3. Mengerjakan tugas secara mandiri dan tidak melakukan plagiarisme kode
  4. Wajib hadir dan menyelesaikan tugas praktikum setiap pertemuan
  5. Menyiapkan laptop dengan IDE yang telah terinstal sebelum praktikum
  6. Melakukan backup kode secara berkala

Dokumen ini disusun berdasarkan prinsip Outcome-Based Education (OBE) dan dapat direvisi sesuai kebutuhan pembelajaran.

Disusun oleh:

Anindito, S.Kom., S.S., S.H., M.TI., CHFI.

Disetujui oleh:

Ketua Program Studi

Tanggal: [Tanggal Pengesahan]


License

This repository is licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0).

Commercial use is permitted, provided attribution is given to the author.

© 2026 Anindito