| 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] |
| 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 |
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.
Berdasarkan silabus Dasar-Dasar Pemrograman (DDP101), mahasiswa diasumsikan telah menguasai:
Pemrograman Dasar C++: Tipe data, variabel, operator, I/O, percabangan, perulangan
Fungsi dan Rekursi: Parameter passing, return value, fungsi rekursif dasar
Array: Array 1D dan multidimensi, operasi dasar pada array
Pointer: Konsep pointer, dereferencing, pointer arithmetic, dynamic memory (new/delete)
Struct: Tipe data bentukan, array of struct
File Handling: Operasi baca/tulis file
Exception Handling: Try-catch, penanganan error
Pengenalan OOP: Konsep dasar class, object, encapsulation
Cormen, T.H., Leiserson, C.E., Rivest, R.L., & Stein, C. (2022). Introduction to Algorithms (4th Ed.). MIT Press.
Weiss, M.A. (2014). Data Structures and Algorithm Analysis in C++ (4th Ed.). Pearson.
Hubbard, J.R. (2000). Data Structures with C++ (Schaum’s Outlines). McGraw-Hill.
Goodrich, M.T., Tamassia, R., & Mount, D.M. (2011). Data Structures and Algorithms in C++ (2nd Ed.). Wiley.
Sahni, S. (2019). Data Structures, Algorithms and Applications in C++. Universities Press.
Sedgewick, R. & Wayne, K. (2011). Algorithms (4th Ed.). Addison-Wesley.
| 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 |
| 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 |
| 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 |
| 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 |
| 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/ |
| 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/ |
| 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/ |
| 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/ |
| 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/ |
| 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/ |
| 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 |
| 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/ |
| 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/ |
| 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/ |
| 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 |
| 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 |
| 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 |
| 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/ |
| 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 |
| 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 |
| 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% |
| 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 |
| 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 |
Kehadiran: Minimal 80% dari total pertemuan untuk dapat mengikuti UAS
Keterlambatan Tugas: Pengurangan 10% per hari keterlambatan, maksimal 3 hari
Plagiarisme: Pelanggaran akan dikenai sanksi sesuai peraturan akademik (nilai 0 untuk komponen terkait)
Praktikum: Wajib hadir dan menyelesaikan tugas praktikum setiap pertemuan
Ujian Susulan: Hanya diberikan dengan alasan yang sah dan bukti pendukung
Pemrograman Berorientasi Objek (Semester 3): Akan memperdalam konsep class, inheritance, polymorphism yang diperkenalkan dalam implementasi struktur data
Kecerdasan Artifisial (Semester 4): Membutuhkan pemahaman struktur data (tree, graph, priority queue) untuk implementasi algoritma AI seperti search algorithms, game tree, dan lainnya
| 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 | 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/ |
Mahasiswa yang mengikuti mata kuliah ini dianggap telah menyetujui:
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]
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