Pengantar 2007/2008 – Ganjil – Minggu 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. 2007/2008 – Ganjil – Minggu 1
Arti kata (Webster) da•ta struc•ture n.pl. n. 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 2007/2008 – Ganjil – Minggu 1
Arti kata (Webster) al•go•rithm n. Contoh: 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 2007/2008 – Ganjil – Minggu 1
Struktur Data Semua program berurusan dengan data Sistem informasi: informasi, laporan, user, … Game: posisi & status pemain, musuh, skor, … Search engine: URL, isi, hyperlink, bobot, … 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 2007/2008 – Ganjil – Minggu 1
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]++; Tidak efesien karena harus mengeksekusi 500 baris program butuh waktu pengembangan yang lebih lama 2007/2008 – Ganjil – Minggu 1
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 2007/2008 – Ganjil – Minggu 1
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 2007/2008 – Ganjil – Minggu 1
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 2007/2008 – Ganjil – Minggu 1
Jadwal Perkuliahan Jadwal Kuliah Senin, 10:00-11:40 Rabu, 10:00-11:40 Tutorial Lab (Worksheet, Quiz, atau Persiapan Ujian) Kamis, 16:00-17:00 (Kelas A) Rabu, 16:00-17:00 (Kelas B) Masa perkuliahan: 27 Agustus – 12 Desember 2007 Ujian: Ujian 1: Minggu 7 (8 Okt?) Ujian 2: Minggu 13 (19 Nov?) Ujian 3: Jadwal UAS Fakultas 2007/2008 – Ganjil – Minggu 1
Jadwal Perkuliahan Minggu Materi kuliah Tutorial 1 Overview & Intro to SDA, Java review (+ generics) WS 2 Algorithm Analysis 3 Abstract Data Types + Java Collections API Q 4 Recursion 5 Sorting 6 Sorting + UJIAN1 PREP 7 Implementation: List 8 Implementation: Stack & Queue 9 Trees 10 Binary Search Trees 11 AVL Tree, B-Tree 12 AVL Tree, B-Tree + UJIAN2 13 Binary Heap, Huffman Coding 14 Hashtable 15 Graph 16 UAS UJIAN3 2007/2008 – Ganjil – Minggu 1
Tim Pengajar Kelas A: Dosen: Ruli Manurung – maruli@cs.ui.ac.id Asisten: Arudea Mahartianto Bayu Distiawan Charles Christian Hansel Tanuwijaya Kelas B Dosen: Ade Azurat – ade@cs.ui.ac.id Asisten Dosen: Refly Hadiwijaya Renggo Pribadi Ricky Suryadharma Teddy Wijaya 2007/2008 – Ganjil – Minggu 1
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. (005.133 Wei d) 2007/2008 – Ganjil – Minggu 1
Bobot Penilaian Tugas Programming (3 tugas) 20% Quiz Programming & Tertulis 20% 5x Programming (pas tutorial lab) 3x Tertulis (pas kuliah) Ujian 1 20% Ujian 2 20% Ujian 3 20% 2007/2008 – Ganjil – Minggu 1
Kejujuran Akademis 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. 2007/2008 – Ganjil – Minggu 1
Summary Struktur data + Algoritma = Program Pemilihan struktur data dan algoritma yang tepat dapat membuat program lebih efisien, mudah, dan elegan 2007/2008 – Ganjil – Minggu 1