Buku Rancangan Pengajaran IKI20100 Struktur Data dan

advertisement
Buku Rancangan Pengajaran
IKI20100 Struktur Data dan Algoritma
Fakultas Ilmu Komputer Universitas Indonesia
1. INFORMASI UMUM
Nama Kuliah :
Kode Kuliah :
Beban Kuliah :
Implementasi SKS :
Buku Acuan Utama :
Pengajar :
Jadwal Kelas:
Asisten :
Ruang Konsultasi :
Struktur Data dan Algoritma
IKI 10400
4 SKS (Satuan Kredit Semester)
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
Mark Allen Weiss, Data Structures and Problem. Solving Using Java (3rd
edition), Addison Wesley, 2006.
Suryana Setiawan, Ruang 3215, [email protected]
Tisha Melia, Ruang 1232, [email protected]
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
tim asisten dengan koordinator Ricky Suryadharma ([email protected])
Lab Babe, Gedung A Lantai 1 Ruang: 1110
2. TUJUAN PEMBELAJARAN
Deskripsi Mata Kuliah: Matakuliah ini mengajarkan teknik-teknik dasar untuk abstraksi data, algoritmaalgoritma akses dan manipulasi struktur-struktur abstraksi tersebut; serta pengantar analisis kompleksitas
pemakaian storage dan waktu dalam eksekusi algoritma-algoritma tersebut.
Tujuan Perkuliahan:
a)
b)
c)
d)
Mahasiswa memahami pentingnya representasi data.
Mahasiswa dapat memilih struktur data yang tepat untuk permasalahan yang diberikan.
Mahasiswa memahami perbedaan kinerja algoritma.
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.
g) Mahasiswa dapat mengimplementasikan struktur data yang dibutuhkannya.
h) Mahasiswa memahami dan dapat mengimplementasikan algoritma sesuai dengan struktur data yang
digunakan.
3. MATERI PEMELAJARAN
No
1-3
Pokok Bahasan
Review Java dan
DPBO (Topik
saat e-learning)
4
Analisa
Algoritma
5
Rekursif
(review)
5
Sorting (partly
review)
Subpokok bahasan
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
 Pengertian Analisa Algoritma
 Cara Mengukur Algoritma
 Notasi
 Perbandingan Orde Fungsi
 Contoh: Max. Contiguous Subsequence
Sum
 Algoritma Logaritme dan contoh
 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
 Pengertian umum sorting, ide dasar
 algoritma, contoh eksekusi, analisa dari
metode sorting:
 Bubble sort, Selection sort, insertion
Rujukan
Buku teks
Bab:
1,2,3,4, dan
6
Tugas/WS/Q
Tugas#0: Coba
Submission
Buku teks
Bab: 5
Worksheet#1:
mengukur
performance
keempat
algoritma CSS
Buku teks
Bab: 7
Quiz#1: Pilihan
berganda
dan/atau
jawaban singkat:
analisis
algoritma,
rekursif dan
sorting
Buku teks
Bab: 8
Tugas#1:
Penggunaan
Generics dengan
obyektif
menguasai
generics dan
collections
6
7
9
10
sort, shell sort, merge sort, quick sort
(fokus pada insertion & quicksort)
Implementasi:
 ArrayList
List, Stack &
 Linked-list Based Stack, Queue
Queue:
 Double ended queue
Trees
 Pengertian Tree
 Rekursif pada tree
 Tree traversal (inorder, preorder,
postorder, levelorder)
 Aplikasi Tree: Huffman Code
Tutorial Pra UTS & UTS
Binary Search
 Pengertian dan motivasi Binary Search
Tree
Tree (insert & delete)
 AVL Tree (insert)
Binary Search
 AVL Tree (delete)
Tree (2)
 B Tree
11
Graf
1112
Graf (2)
13
Binary Heap
14
Hash Table
15
16
Review
UAS














Representasi graf
Algoritma pada graf: BFS, DFS
Minimum Spanning Tree (Kruskal, Prim)
Shortest path (Dijkstra, Floyd-Warshall)
Maximum Flow (netflow)
Pengertian dan motivasi
Implementasi Binary Heap
Priority Queue
Heapsort
Pengertian dan motivasi
Hash Function
Linear Probing
Quadratic probing
Analisa perbandingan
Buku teks
Bab:
15,16,17
Buku teks
Bab: 12,18
Tugas#2: stack
URL
Buku teks
Bab: 19
Worksheet#3:
melengkapi
method BST
Quiz#2: pen &
paper quiz on
AVL tree &
B+Tree
Worksheet#4:
BFS/DFS
Tugas# 3:graph
problem
Buku teks
Bab: 19
Buku teks
Bab: 14
Buku teks
Bab: 14
Buku teks
Bab: 21
Buku teks
Bab: 17
Worksheet#2:
tree traversal.
Worksheet#5:
antrian
berprioritas
sederhana
Quiz#3:
implementasi
hash table
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.
2.
3.
4.
5.
Internet (I)
Presentasi Multimedia (M)
Perangkat Lunak Simulasi dan Animasi (SA)
White board, beamer (WB)
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.
2.
3.
4.
Latihan – Individu (5 kali)
Kuis– Individu (3 kali)
Tugas Pemrograman – Individu (3 kali)
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
A
AB+
B
BC+
C
CD
E ..
Rentang Nilai
85 ≤ ..
80 – 84
75 -79
70 -74
65 – 69
60 – 64
55 - 59 Batas Lulus
50 - 54 Tidak Lulus
40 - 49 Tidak Lulus
≤ 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.
- Selamat Berlatih -
Download