1
Struktur Data & Algoritme (
Data Structures & Algorithms)
Denny (denny@cs.ui.ac.id) Suryana Setiawan (setiawan@cs.ui.ac.id)
Fakultas Ilmu Komputer Universitas Indonesia Semester Genap - 2004/2005
Version 2.0 - Internal Use Only
Pengantar
SDA/TOPIC/V2.0/2
Tujuan Mata Kuliah
mempelajari dasar-dasar ilmu komputer agar dapat melakukan
perancangan dan pemilihan struktur data yang sesuai,
implementasi, dan
melakukan analisis secara umum pada algoritme yang dibuat.
tentunya, melatih diri dalam ‘programming’
SDA/TOPIC/V2.0/3
Arti kata (Webster)
da•ta
n.pl.
• facts or figures to be processed; evidence, records, statistics, etc. from which conclusions can be inferred;
information
struc•ture
n.
1 manner of building, constructing, or organizing 2 something built or constructed, as a building or dam 3 the arrangement or interrelation of all the parts of a whole;
manner of organization or construction [the structure of the atom, the structure of society]
4 something composed of interrelated parts forming an organism or an organization
SDA/TOPIC/V2.0/4
Arti kata (Webster)
al•go•rithm
n.
1 Math. a) any systematic method of solving a certain kind of problem b) the repetitive calculations used in finding the greatest common divisor of two numbers (called in full Euclidean algorithm)
2 Comput. a predetermined set of instructions for solving a specific problem in a limited number of steps
Contoh:
Problem: mencari sebuah integer dalam sebuah array terurut
Algoritme: binary search
SDA/TOPIC/V2.0/5
Struktur Data
Mengapa data itu disimpan?
Supaya bisa diakses/diproses di kemudian waktu
Mengapa dalam penyimpanan data diperlukan sebuah struktur?
Supaya lebih mudah/efisien dalam pengaksesan/pemrosesan data tersebut
SDA/TOPIC/V2.0/6
Mengapa kuliah ini penting?
Apakah kuliah DDP saja tidak cukup?
Perhatikan program untuk menghitung jumlah kemunculan angka 1 sampai 500 dalam sebuah file:
if (k == 1) c001++;
if (k == 2) c002++;
...
if (k == 500) c500++;
Program di atas (+- 500 baris).
Progam di atas benar walaupun tidak efesien, sangat besar (500 lines of code), dan sulit dipelihara.
Solusi sederhana: gunakanlah array integer yang terdiri dari 500 elemen
int c[500];
c[k]++;
2
SDA/TOPIC/V2.0/7
Mengapa kuliah ini penting? (2)
Moral story:
Pemilihan struktur data yang tepat, dapat membuat program lebih terstruktur (elegan) dan efesien
Tentunya, penggunaan algoritme yang baik dapat membuat program lebih efesien dan mungkin lebih elegan
Contoh Aplikasi:
Mencari jarak terpendek antara dua kota
• menggunakan struktur data Graph
Sistem basis data (Oracle, SQL Server, dll)
• menggunakan struktur data B+Tree, Hash tables
Menghitung ekspresi: (5 + 2) * 7
• menggunakan struktur data Stack/Tree
SDA/TOPIC/V2.0/8
Mengapa perlu belajar membuat struktur data, khan sudah ada di Java API?
Supaya kita dapat mengetahui struktur data yang tepat, tentunya kita harus mengetahui kelebihan dan kekurangan dari masing-masing struktur data.
Cara yang terbaik untuk benar-benar dapat memahami masing-masing struktur data adalah membuatnya.
Dalam industri, bahasa yang digunakan tidaklah selalu Java. Mungkin saja di bahasa tersebut tidak terdapat library untuk struktur data.
SDA/TOPIC/V2.0/9
Topik-Topik yang Dibahas
Pengantar analisa algoritme
Pelacakan (searching)
Pengurutan (sorting)
Tipe Data Abstrak (Abstract Data Type - ADT)
Model data linear: Array, Linked List
Stack, Queue
Model data hirarkis: Tree
Graph
Hash Tables
SDA/TOPIC/V2.0/10
Jadual Perkuliahan
Jadual Kuliah
Rabu, 14:00-15:40
Jum’at, 08:00-09:40
Tutorial:
oleh asisten, jadual akan ditentukan kemudian
Ruangan: Kelas A: 304, Kelas B: 407
Masa perkuliahan: 14 Februari 2005 – 3 Juni 2005
Mid Test:
tanggal akan ditentukan kemudian (pada jam kuliah)
Final Test:
13 Juni – 24 Juni 2005(sesuai dengan jadual sekretariat)
Total kuliah: 28x (3x Libur, 1x Midtest)
SDA/TOPIC/V2.0/11
Administrasi
Dosen:
kelas A: Denny –denny@cs.ui.ac.id
kelas B: Suryana Setiawan –setiawan@cs.ui.ac.id
Asisten Dosen: akan diumumkan kemudian
Newsgroup: news.cs.ui.ac.id - forum.iki.struktur
Homepage & resources:
http://ranau.cs.ui.ac.id/sda/
http://telaga.cs.ui.ac.id/WebKuliah/IKI10100/
Buku Acuan:
Mark Allen Weiss. Data Structures & Problem Solving Using Java. Addison Wesley, 1998.
(call code: 005.133 Wei d).
Java 1.5
http://telaga.cs.ui.ac.id/WebKuliah/java5/
SDA/TOPIC/V2.0/12
Penilaian
Komponen penilaian:
Tugas Pemrograman (4x @7.5%) 30%
Quiz/Tugas Mandiri 10%
Mid Test 20%
Final Test 40%
Presensi Tutorial bonus
Grading (subject to change)
A: 85 ke atas
B: 70 sampai dengan 84.9
C: 55 sampai dengan 69.9
D: 35 sampai dengan 54.9
E: di bawah 35
3
SDA/TOPIC/V2.0/13
Peraturan Kuliah
Presensi
minimum 70% kehadiran dari kehadiran dosen supaya dapat mengikuti ujian akhir.
bonus 5 point
• bagi yang menghadiri tutorial dan berpartisipasi aktif
SDA/TOPIC/V2.0/14
Kejujuran Akademis
Kecurangan
Setiap bentuk kecurangan akan mendapatkan sanksi dengan tegas sesuai dengan peraturan universitas
• Kecurangan saat ujian (menyontek jawaban teman atau bekerjasama)
• Kecurangan dalam tugas (menyalin & memodifikasi hasil pekerjaan yang lain)
• Kecurangan dalam pencatatan kehadiran (titip tanda tangan)
Sanksi akan dikenakan baik pada si pelaku maupun yang memberi kesempatan.
SDA/TOPIC/V2.0/15
Asistensi/Responsi
Peserta setiap kelas akan dibagi ke dalam 2 kelompok asistensi yang masing-masing akan di asuh oleh seorang asisten (asisten akan diumumkan kemudian).
Pembagian kelompok akan diumumkan pada forum.iki.struktur
Anggota kelompok beserta asistennya masing- masing dapat menentukan jadwal asistensi / responsi / pemeriksaan tugas.
SDA/TOPIC/V2.0/16
Summary
struktur data + algoritme = program
Pemilihan struktur data yang tepat, dapat membuat program lebih terstruktur (elegan) dan efesien
SDA/TOPIC/V2.0/17
Further Reading
Cari dan pelajari struktur data yang telah tersedia di Java API
http://telaga.cs.ui.ac.id/WebKuliah/java5/
docs/api/java/util/package-summary.html
Generics in Java 2 SE 5:
http://telaga.cs.ui.ac.id/WebKuliah/java5/
Java5-Generics.pdf
SDA/TOPIC/V2.0/18
What’s Next
Pengantar Analisa Algoritme (Chapter 5)