Struktur Data & Algoritma Pengantar Suryana Setiawan, Ruli Manurung & Ade Azurat
Download ReportTranscript Struktur Data & Algoritma Pengantar Suryana Setiawan, Ruli Manurung & Ade Azurat
Struktur Data & Algoritma Pengantar Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) Fasilkom UI SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 1 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 algoritma yang dibuat. Melatih pemrograman Skala lebih besar “Programming to an interface” Prinsip-prinsip dasar RPL: abstraksi, modularitas, dst. SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 2 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 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 3 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 Algoritma: binary search SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 4 Struktur Data Semua program berurusan dengan data Mengapa data itu disimpan? Sistem informasi: informasi, laporan, user, … Game: posisi & status pemain, musuh, skor, … Search engine: URL, isi, hyperlink, bobot, … Supaya bisa diakses/diproses di kemudian waktu Mengapa dalam penyimpanan data diperlukan sebuah struktur? Supaya lebih mudah/efisien dalam pengaksesan/pemrosesan data tersebut SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 5 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 efisien, sangat besar (500 lines of code), dan sulit dipelihara. Solusi sederhana: gunakanlah array integer yang terdiri dari 500 elemen int c[500]; c[k]++; SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 6 Mengapa kuliah ini penting? (2) Moral of the story: Pemilihan struktur data maupun algoritma yang tepat dapat membuat program lebih: efisien, mudah, elegan Contoh Aplikasi: Mencari jarak terpendek antara dua kota • menggunakan struktur data Graph Sistem basis data (Oracle, SQL Server, dll) • menggunakan struktur data BTree, Hashtable Menghitung ekspresi: (5 + 2) * 7 • menggunakan struktur data Stack/Tree SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 7 Mengapa Belajar Implementasi Struktur Data? 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. Melatih berpikir tentang efisiensi SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 8 Topik-Topik yang Dibahas Analisis algoritma Abstract Data Type + Java Collections API Pemrograman secara rekursif Pengurutan (sorting) Implementasi struktur data linear: List, Stack, Queue Struktur data hirarkis: Tree Binary Search Tree, AVL Tree, BTree Hashtable Graph SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 9 Jadwal Perkuliahan Masa perkuliahan: 01 September – 12 Desember 2008 Jadwal Kuliah Program Studi Ilmu Komputer • Senin, 8:00-10:40 • Rabu, 8:00-10:40 Program Studi S1 - Sistem Informasi & S2 Ilmu Komputer • Senin, 10:00-11:40 • Rabu, 10:00-11:40 Tutorial Lab (Worksheet, Quiz, atau Persiapan Ujian) WAJIB ! Rabu, 15:30 - 17:00 (S1 IK Kelas A) Kamis, 15:30 - 17:00 (S1 IK Kelas B) Kamis, 13:30 – 15:00 (S1 SI & S2 IK) Ujian: UTS : Pekan ke-7 (Rabu, 22 Okt 2008) UAS : Jadwal UAS Fasilkom (15 – 24 Des 2008) SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 10 Rencana Perkuliahan (1) (2) (3) (4) Hari Materi Labs + Tutorial Senin, 01-09 Overview & Intro to SDA, Rabu, 03-09 Java review (+ generics) WS 01 - Uji coba automatic grader Senin, 08-09 Algorithm Analysis Rabu, 10-09 Algorithm Analysis Senin, 15-09 Abstract Data Types Rabu, 17-09 Java Collections API Senin, 22-09 Recursion Rabu, 24-09 Recursion Senin, 29-09 (6) (7) (8) WS 02 Tugas 01 Libur Hari Raya Iedul Fithri (Lebaran) (29 Sept- 3 Okt 2008) Rabu, 01-10 (5) Quiz 01 Senin, 06-10 Sorting Rabu, 08-10 Sorting Senin, 13-10 Implementation: List, Stack & Queue Rabu, 15-10 Implementation: List, Stack & Queue Senin, 20-10 Trees Rabu, 22-10 Senin, 27-10 SUR – HMM – AA WS 03 Ujian Tengah Semester Trees Tutorial Persiapan Ujian. WS 04 Quiz 02 Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 11 Rencana Perkuliahan Senin, 03-11 Binary Search Trees Rabu, 05-11 AVL Tree Senin, 10-11 AVL Tree (+ quiz tree) (9) WS 05 (10) Tugas 02 Rabu, 12-11 AVL Tree + B-Tree Senin, 17-11 B-Tree (11) WS 06 Rabu, 19-11 Binary Heap Senin, 24-11 Huffman Code (12) Quiz 03 Rabu, 26-11 Hash table Senin, 01-12 Hash table (13) WS 07 Rabu, 03-11 Senin, 08-12 Representasi Graph Libur Idul Adha (Hari Raya Kurban) (14) Tutorial Persiapan Ujian. Rabu, 10-12 Senin, 15-12 SUR – HMM – AA Algoritma Graph Periode Ujian Akhir Semester Tentative, Senin 15 Desember 2005 Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 12 Tim Pengajar Dosen: Suryana Setiawan – [email protected] Ruli Manurung – [email protected] Ade Azurat – [email protected] Asisten Dosen: SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 13 Materi Ajar Homepage & resources: https://scele.cs.ui.ac.id/s1 http://telaga.cs.ui.ac.id/WebKuliah/IKI20100 Google, Wikipedia, http://java.sun.com Buku Acuan: Mark Allen Weiss Data Structures & Problem Solving Using Java (3rd Edition) Addison Wesley, 2006. Tersedia di Perpustakaan Fasilkom dengan Call Number: 005.133 Wei d SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 14 Bobot Penilaian UTS UAS Tugas Programming (2 tugas) Quiz Programming & Tertulis 25% 25% 20% 15% • 3x Programming (waktu tutorial lab) • 3x Tertulis (waktu jam kuliah) Worksheet (7x) 15% • Masing-masing worksheet 2%, bonus 1% bagi yang mengerjakan seluruh worksheet. SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 15 Peraturan Peserta diwajibkan mengikuti kuliah dan tutorial (worksheet, quiz, persiapan ujian). Selama pengerjaan worksheet, peserta masih diperkenankan untuk bertanya dan berdiskusi dengan asisten atau rekan kuliah. Quiz, tugas dan ujian, harus dikerjakan sendiri tanpa bantuan pihak lain sama sekali. Peserta dengan kehadiran kurang dari 75% tidak diperkenankan mengikuti ujian. Peserta telah siap diruang kuliah sebelum kuliah dimulai. Peserta yang terlambat tidak diperkenankan masuk ruang kuliah kecuali pada kondisi khusus. SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 16 Kejujuran Akademis Setiap bentuk kecurangan akan mendapatkan sanksi dengan tegas sesuai dengan peraturan universitas. Contoh kecurangan: Kecurangan saat ujian: menyontek jawaban teman, bekerjasama, menginformasikan soal atau jawaban dengan pihak lain. Kecurangan dalam makalah: menyalin (quote) dari makalah lain tanpa menginformasikan sumber-nya Kecurangan dalam tugas: menyalin & memodifikasi hasil kerja orang lain tanpa menginformasikan sumber-nya. Berdiskusi dalam mengerjakan tugas sangat disarankan, namun tugas yang dikumpulkan haruslah ditulis dengan kalimat sendiri (tidak menyalin). Kecurangan dalam pencatatan kehadiran (titip tanda tangan) Sanksi akan dikenakan baik kepada si pelaku maupun yang membantu kecurangan tersebut. SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 17 Summary Struktur data + Algoritma = Program Pemilihan struktur data dan algoritma yang tepat dapat membuat program lebih efisien, mudah, dan elegan SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P 2008/2009 – Ganjil – Minggu 1 18