Buku Rancangan Pengajaran IKI20100 Struktur Data dan Algoritma Fakultas Ilmu Komputer Universitas Indonesia
1. INFORMASI UMUM
Nama Kuliah : Struktur Data dan Algoritma Kode Kuliah : IKI 10400
Beban Kuliah : 4 SKS (Satuan Kredit Semester)
Implementasi SKS : 4 x 50 menit per pekan kuliah tatap muka; 4 x 50 menit per pekan belajar mandiri; 4 x 50 menit per pekan praktikum & tutorial
Buku Acuan Utama : Mark Allen Weiss, Data Structures and Problem. Solving Using Java (3rd edition), Addison Wesley, 2006.
Pengajar : Suryana Setiawan, Ruang 3215, [email protected] Tisha Melia, Ruang 1232, [email protected]
Jadwal Kelas: Kelas A: Selasa, 13.00-14.40 di 2.2304 Kamis, 13.00-14.40 di 2.2304 Kelas B: Selasa, 08.00-09.40 di 2.2404 Kamis, 08.00-09.40 di 2.2404 Kelas C: Selasa, 13.00-14.40 di 2.2404 Kamis, 13.00-14.40 di 2.2404 Kelas D: Selasa, 08.00-09.40 di 2.2303 Kamis, 08.00-09.40 di 2.2303
Asisten : tim asisten dengan koordinator Ricky Suryadharma ([email protected]) Ruang Konsultasi : Lab Babe, Gedung A Lantai 1 Ruang: 1110
2. TUJUAN PEMBELAJARAN
Deskripsi Mata Kuliah: Matakuliah ini mengajarkan teknik-teknik dasar untuk abstraksi data, algoritma-algoritma akses dan manipulasi struktur-struktur abstraksi tersebut; serta pengantar analisis kompleksitas pemakaian storage dan waktu dalam eksekusi algoritma-algoritma tersebut.
Tujuan Perkuliahan:
a) Mahasiswa memahami pentingnya representasi data.
b) Mahasiswa dapat memilih struktur data yang tepat untuk permasalahan yang diberikan. c) Mahasiswa memahami perbedaan kinerja algoritma.
d) Mahasiswa mengenal dan memahami Struktur data yang umum seperti list, stack, queue, tree, hash table dan graph.
e) Mahasiswa memahami algoritma dasar dari permasalahan “searching” dan “sorting”
f) Mahasiswa mengenal dan memahami variasi struktur data dari struktur data yang dasar. Misalnya variasi struktur data tree yaitu AVL Tree, dan B-Tree.
h) Mahasiswa memahami dan dapat mengimplementasikan algoritma sesuai dengan struktur data yang digunakan.
3. MATERI PEMELAJARAN
No Pokok Bahasan Subpokok bahasan Rujukan Tugas/WS/Q 1-3 Review Java dan
DPBO (Topik saat e-learning)
Tipe dan Variabel Flow Control Array
Eksepsi
Class dan Object Inheritance
Abstract Class dan Interface Polymorphism
Pengertian ADT
Pemisahan spesifikasi dan implementasi, Pengenalan ADT: list, stack, queue,
map, set dan priority queue Pengertian collections
Application Programming Interface (API) Generic di Java
Penggunaan Java Collection API Iterator
Contoh menggunakan API
Buku teks Bab: 1,2,3,4, dan 6 Tugas#0: Coba Submission Tugas#1: Penggunaan Generics dengan obyektif menguasai generics dan collections 4 Analisa Algoritma
Pengertian Analisa Algoritma Cara Mengukur Algoritma Notasi
Perbandingan Orde Fungsi
Contoh: Max. Contiguous Subsequence Sum
Algoritma Logaritme dan contoh
Buku teks Bab: 5 Worksheet#1: mengukur performance keempat algoritma CSS 5 Rekursif (review) Pengertian rekursif
Model eksekusi algoritma rekursif Aturan Rekursif
Pembuktian dengan induksi Efisiensi pada rekursif algoritma
Contoh: Fibonacci Divide and conquer Backtracking
Contoh: Maze, N-Queen Problem, MCSS Buku teks Bab: 7 Quiz#1: Pilihan berganda dan/atau jawaban singkat: analisis algoritma, rekursif dan sorting 5 Sorting (partly review)
Pengertian umum sorting, ide dasar algoritma, contoh eksekusi, analisa dari
metode sorting:
Bubble sort, Selection sort, insertion
Buku teks Bab: 8
sort, shell sort, merge sort, quick sort (fokus pada insertion & quicksort) 6 Implementasi:
List, Stack & Queue:
ArrayList
Linked-list Based Stack, Queue Double ended queue
Buku teks Bab: 15,16,17
Tugas#2: stack URL
7 Trees Pengertian Tree Rekursif pada tree
Tree traversal (inorder, preorder, postorder, levelorder)
Aplikasi Tree: Huffman Code
Buku teks Bab: 12,18
Worksheet#2: tree traversal.
Tutorial Pra UTS & UTS 9 Binary Search
Tree
Pengertian dan motivasi Binary Search Tree (insert & delete)
AVL Tree (insert)
Buku teks Bab: 19 Worksheet#3: melengkapi method BST 10 Binary Search Tree (2)
AVL Tree (delete)
B Tree Buku teks Bab: 19
Quiz#2: pen & paper quiz on AVL tree & B+Tree 11 Graf Representasi graf
Algoritma pada graf: BFS, DFS
Buku teks Bab: 14 Worksheet#4: BFS/DFS 11-12
Graf (2) Minimum Spanning Tree (Kruskal, Prim) Shortest path (Dijkstra, Floyd-Warshall) Maximum Flow (netflow)
Buku teks Bab: 14
Tugas# 3:graph problem 13 Binary Heap Pengertian dan motivasi
Implementasi Binary Heap Priority Queue Heapsort Buku teks Bab: 21 Worksheet#5: antrian berprioritas sederhana 14 Hash Table Pengertian dan motivasi
Hash Function Linear Probing Quadratic probing Analisa perbandingan Buku teks Bab: 17 Quiz#3: implementasi hash table 15 Review 16 UAS Worksheet:
Worksheet/Latihan dapat berbentuk latihan pemrograman yang dikerjakan pada waktu tutorial dan dikumpulkan saat tutorial berakhir. Latihan dapat juga berbentuk tertulis (melengkapi lembar kerja) yang dikerjakan pada waktu kuliah dan dikumpulkan setelah kuliah berakhir. Selama pengerjaan latihan, mahasiswa dapat bertanya dan berdiskusi kepada dosen, tutor atau teman. Namun pengerjaan/penulisan tetap dilakukan secara individu.
Quiz:
Kuis pemrograman dijadwalkan pada waktu tutorial. Mahasiswa akan diberikan sebuah permasalahan pemrograman yang harus dapat diselesaikan sendiri dalam waktu dua jam. Selama pengerjaan kuis,
mahasiswa dapat melihat buku, dokumentasi dan lain-lain, namun tidak diperkenankan bertanya atau berdiskusi dengan siapa pun. Pengumpulan Kuis pemrograman dilakukan terhadap system online grader pada mesin ranau.cs.ui.ac.id. Setiap peserta kuliah akan diberikan account khusus. Untuk kuis tertentu, setelah batas waktu berakhir mahasiswa yang tertarik masih dapat melakukan submission untuk latihan dan evaluasi diri. Walaupun evaluasi kebenaran program dapat dilakukan secara otomatis (menggunakan online grader) penilaian terhadap kuis pemrograman juga memperhatikan komponen lain yaitu: Kerapihan penulisan program (termasuk penamaan variable), efisiensi algoritma, kesesuaian struktur data yang digunakan, dan kejelasan komentar program.
Tugas:
Tugas Pemrograman dapat dikerjakan dalam rentang waktu beberapa hari secara individu. Mahasiswa akan diberikan permasalahan pemrograman yang relatif lebih besar dari kuis pemrograman. Selama pengerjaan mahasiswa dapat bertanya dan berdiskusi dengan orang lain namun pengerjaan/penulisan pada tetap dilakukan secara individu dan dituliskan dengan kalimat sendiri. Pada tugas pemrograman tertentu selain memiliki komponen penilaian seperti kuis, mahasiswa juga dilatih untuk membuat dokumentasi program dalam berkas terpisah (bukan bagian dari penulisan komentar didalam program).
Aturan Umum Penilaian Kuis atau Tugas Pemrograman: Automatic Grader score : 50%
White box review: 25%
Komentar dan dokumentasi : 25% Aturan anti-plagiarism dalam pemrograman:
- Mahasiswa diperbolehkan diskusi dan tukar ide (garis besar algoritma) tetapi coding dilakukan secara individu.
- Mengutip source code hanya boleh dari textbook, slide, template atau materi yang diberikan (source code hasil kerja orang lain selain dari sumber yang disebutkan di atas, sama sekali tidak boleh disalin ke dalam source code anda).
- Yang melanggar aturan di atas baik pelaku penyontekan maupun pemberi contekan (kesempatan mencontek) akan dikenakan hukuman dengan pemberian nilai 0 untuk tugas/quiz/worksheet tersebut., dan jika dilakukan lebih dari satu kali akan mendapat sanksi ketidaklulusan di kuliah ini.
4. SATUAN ACARA PERKULIAHAN Metode pemelajaran:
Belajar yang dilaksanakan dalam perkuliahan ini melalui tatap mukan yang dilengkapi dengan praktikum dan belajar mandiri.
1. Tatap Muka (TM)
Perkuliahan interaktif atau tatap muka dilakukan di kelas secara langsung. dalam perkuliahan ini metode yang dilakukan antara lain:
a. Ceramah; dosen menjelaskan mengenai materi tertentu. Dan, metode ini dapat dikombinasikan dengan tanya jawab secara langsung.
b. Diskusi kelas; mahasiswa membahas topik-topik tertentu yang ada dalam materi dengan sebelumnya melakukan belajar mandiri dan diskusi kelompok kecil (melalui SCeLE). Diskusi kelas ini dapat dilakukan secara online melalui fasilitas SceLE dengan pengarahan dosen dan tutor.
2. Belajar Mandiri (BM )
Belajar mandiri atau self-learning dilakukan tidak secara langsung bertatap muka melainkan dengan memanfaatkan fasilitas belajar elektronik SCeLE. Dengan SCeLE, pemelajaran akan melibatkan kegiatan-kegiatan sebagai berikut:
a. Akses materi (A); mahasiswa dapat mengakses materi langsung yang telah disediakan di SceLE dan di buku acuan.
b. Diskusi (D); mahasiswa dapat melakukan diskusi materi dan studi kasus dalam bentuk aktifitas forum yang ada di SCeLE.
c. Chat (C); mahasiswa dapat pula berkomunikasi dengan pengajar dan teman-teman sekelas dalam kurun waktu yang telah ditentukan.
3. Praktikum dan Tutorial (PT)
Praktikum dan Tutorial dilakukan mahasiswa dipandu oleh Tutor. Mahasiswa akan mempraktikan materi yang dipelajari nya dan bentuk latihan atau tugas pemrograman. Tutor akan membantu mahasiswa menghadapi permasalahan nyata yang dihadapi ketika mempraktikan materi yang telah diberikan. Media Instruksional
1. Internet (I)
2. Presentasi Multimedia (M)
3. Perangkat Lunak Simulasi dan Animasi (SA) 4. White board, beamer (WB)
5. Diktat dan Lembar Kerja (LK)
Tutor:
Akan disediakan seorang tutor untuk setiap kelompok tutorial yang terdiri dari 20 peserta kuliah. Peran Tutor adalah:
1. Memandu sesi tutorial membahas soal-soal atau mengulang materi perkuliahan untuk mempersiapkan peserta menghadapi ujian.
2. Membantu kesulitan yang dihadapi oleh peserta ketika mengerjakan latihan. Membahas latihan setelah
3. Memeriksa tugas & quiz (baik programming maupun tertulis) untuk anggota kelompok tutorialnya.
4. Membantu menjawab pertanyaan mahasiswa mengenai kuliah Struktur Data & Algoritma di SCeLE, termasuk mengenai tools dan bahasa pemrograman yang digunakan.
5. Membantu persiapan teknis worksheet, quiz, ataupun tugas pemrograman.
EVALUASI HASIL PEMELAJARAN Bentuk/jenis instrumen:
1. Latihan – Individu (5 kali) 2. Kuis– Individu (3 kali)
3. Tugas Pemrograman – Individu (3 kali)
4. Ujian Tertulis – Individu (2 kali, UTS dan UAS)
Masing-masing penilaian untuk tiap instrumen dalam skala 0-100. Pemetaan menjadi nilai huruf secara tentative akan mengikuti acuan umum tabel berikut:
Nilai Huruf Rentang Nilai Keterangan Huruf Rentang Nilai
A 85 ≤ .. A- 80 – 84 B+ 75 -79 B 70 -74 B- 65 – 69 C+ 60 – 64 C 55 - 59 Batas Lulus C- 50 - 54 Tidak Lulus D 40 - 49 Tidak Lulus E .. ≤ 39 Tidak Lulus
Persentase kontribusi nilai: Lima Worksheet @ 2% 10% Tiga Kuis @ 5% 15.00%
Tiga Tugas Pemrograman @ 10% 30.00% Ujian Tengah Semester 20.00%
Ujian Akhir Semester 25.00%
6 TATA TERTIB PERKULIAHAN Kehadiran:
1. Kuliah: Minimal kehadiran mengikuti aturan yang berlaku. (75% minimum kehadiran tatap muka di kelas) Bila sakit atau berhalangan hadir kuliah, harus disertai surat dan penjelasan dan
pemberitahuan sebelum kuliah dimulai. Peserta yang persentasi kehadiran-nya kurang, tidak diperkenankan mengikuti ujian akhir semester.
2. Tutorial: kehadiran mengikuti tutorial akan dicatat, dan akan menjadi pertimbangan pemberian nilai bonus untuk nilai yang diperbatasan.
3. Worksheet/Quiz: mahasiswa harus mengikuti pengerjaan worksheet/quiz di lab yang telah ditentukan, keikutsertaan dari tempat lain selain lab tersebut pengerjaan worksheet/quiz ybs tidak akan dinilai.
Keterlambatan:
Keterlambatan hadir saat kuliah mengikuti aturan yang berlaku. Seluruh kuis, latihan dan tugas wajib dikerjakan dikumpulkan pada waktunya. Pengumpulan yang terlambat tidak dinilai. Evaluasi latihan, kuis atau tugas diharapkan dapat diberikan kepada mahasiswa dalam waktu 2 pekan.
Kejujuran Akademis:
Seluruh mahasiswa harus memahami dan menerapkan kejujuran akademis. Pelanggaran seperti mencontek, plagiat dalam skala apapun akan ditindak tegas dan tercatat dalam daftar pelanggaran akademis.
7 CONTOH SOAL Contoh Latihan:
IKI20100 2008/2009 (Gasal): Struktur Data & Algoritma Fakultas Ilmu Komputer, Universitas Indonesia
Worksheet 03 23 Oktober 2008 Template : WS03_Tree.java Submission : WS03_Tree.java (melalui ranau.cs.ui.ac.id) Deskripsi :
Pada worksheet ini anda akan berlatih untuk membuat program rekursif pada tree. Sebagai latihan kita akan mencoba membuat program yang dapat memberikan informasi sebuah tree. Informasi yang diinginkan adalah:
6. Jumlah data 7. Tinggi tree
8. Jumlah data pada tiap level tinggi dimulai dari root (level 0).
Contoh, untuk tree berikut:
output yang diharapkan adalah: 9 3 1 2 4 2
Baris pertama berisi angka 9 yang menyatakan ada 9 data pada tree tersebut. Baris kedua, berisi angka 3 menyatakan tinggi tree tersebut adalah 3 (root berada pada tinggi 0). Sebanyak tinggi + 1 baris selanjutnya, adalah banyaknya data pada tiap level dimulai dari root yang berada pada level 0, yaitu ada 1 elemen, pada level 1 ada 2 elemen, pada level 2 ada 4, dan pada level 3 ada 2 elemen. Informasi mengenai bentuk dan isi sebuah tree dinyatakan dalam formal XML. XML (eXtensible Markup Language) adalah sebuah format standar untuk menyimpan informasi yang kini sangat banyak digunakan di industri, dan bisa dikatakan merupakan contoh baik pengaplikasian struktur data tree yang sudah kita pelajari di kuliah. Pada contoh diatas isi file XML adalah sebagai berikut:
<?xml version='1.0'?> <root data="salak"> <left data="rambutan"> <left data="jeruk"> <right data="manggis"/> </left> <right data="apel"/> </left> <right data="durian">
<left data="mangga"> <left data="nangka"/> </left> <right data="pisang"/> </right> </root>
Untuk membantu anda, telah disediakan class yang sudah mendefinisikan struktur data binary node dan binary tree, serta cara untuk membaca XML (dari input maupun dari file) dan membuat binary tree dari dokumen XML tersebut. Anda tak perlu mengubah class tersebut.
Template program : WS03_Tree.java
Telah disediakan template program dengan nama file WS03_Tree.java. Anda hanya perlu melengkapi dan memperbaiki bagian program yang kosong saja. Bagian tersebut telah ditandai dengan tulisan:
///////////////////////////// // PERBAIKI METHOD INI // /////////////////////////////
Ada 4 method yang perlu anda lengkapi dan perbaiki, termasuk signature dari method nya bila perlu. Method tersebut tidak perlu terlalu panjang isinya, tambahan antara 3-9 baris pada tiap methodnya sudah cukup. Anda dapat mencoba program anda dengan menjalankan perintah:
java WS03_Tree < binarytree1.xml Sebelum program ini anda perbaiki outputnya hanyalah: 9
Silahkan perbaiki sehingga outputnya seperti yang diharapkan, dan submit dengan nama file yang sama ke ranau.cs.ui.ac.id.