Struktur Data & Algoritme (
Data Structures & Algorithms)
Denny ([email protected]) Suryana Setiawan ([email protected])
Fakultas Ilmu Komputer Universitas Indonesia Semester Genap - 2004/2005
Version 2.0 - Internal Use Only
Pengantar
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
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
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];
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
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
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
SDA/TOPIC/V2.0/11
Administrasi
Dosen:
kelas A: Denny –[email protected]
kelas B: Suryana Setiawan –[email protected]
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/
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
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
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.
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
What’s Next
Pengantar Analisa Algoritme (Chapter 5)