PENGEMBANGAN SISTEM MANAJEMEN PEMBELAJARAN PEMROGRAMAN BAHASA SCHEME, JAVA, PHP, DAN PERL ALFA NUGRAHA PRADANA DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2012 PENGEMBANGAN SISTEM MANAJEMEN PEMBELAJARAN PEMROGRAMAN BAHASA SCHEME, JAVA, PHP, DAN PERL ALFA NUGRAHA PRADANA Skripsi sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer pada Departemen Ilmu Komputer DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2012 ABSTRACT ALFA NUGRAHA PRADANA. Development of Programming Learning Management System for Scheme, Java, PHP, and Perl Language. Supervised by JULIO ADISANTOSO. In conventional manner, learning process is done in the form of discussion or direct delivery of learning materials in a class or lecture. Programming is not easily applied to a conventional learning process. In this condition, LMS has an important role to improve the process of learning for programming. TOKI LC has been developed to identify the programming in Pascal, C, and C++ languages. However, this system has not been equipped with a programming language that is often used by student majoring in computer science or informatics. Therefore, this research aims to analyze and develop four other programming languages into learning management systems in the field of programming. LMS for programming was analyzed according to the concepts of e-learning, storyboard, and grading model. The system was developed with the prototype model on method of development grader, and then tested. Analysis shows that the system is adopting asynchronous learning with several main functional components, namely portal, baseline LMS features, and LCMS. Development of grader generates the Java programming language as a language with run time performance and memory space usage greater than the other programming languages, namely Pascal, C, C++, Scheme, PHP, and Perl. Keywords: learning management system, programming, grader Judul Skripsi Nama NIM : Pengembangan Sistem Manajemen Pembelajaran Pemrograman Bahasa Scheme, Java, PHP, dan Perl : Alfa Nugraha Pradana : G64080068 Menyetujui: Pembimbing Ir. Julio Adisantoso, M.Kom NIP 19620714 198601 1 002 Mengetahui: Ketua Departemen Ilmu Komputer Dr. Ir. Agus Buono, M.Si, M.Kom NIP 19660702 199302 1 001 Tanggal Lulus: KATA PENGANTAR Alhamdulillahirabbil ‘alamin, puji syukur penulis panjatkan ke hadirat Allah subhanahu wata’ala yang telah memberikan rahmat dan karunia-Nya sehingga tugas akhir dengan judul Sistem Manajemen Pembelajaran Pemrograman dapat diselesaikan. Shalawat dan salam penulis sampaikan kepada Nabi Muhammad shallallahu ‘alaihi wassalam beserta keluarga, sahabat dan para pengikutnya yang selalu berpegang teguh kepada Al-Quran dan As-Sunnah. Penulis menyadari bahwa tugas akhir ini tidak akan terselesaikan tanpa bantuan dari berbagai pihak. Pada kesempatan ini penulis ingin mengucapkan terima kasih kepada: 1 Ayahanda Rahimallahu Yajirwan, Ibunda Zahara Murni, serta adik-adik Riandi Kadwi Nugraha, Lani Florian Tri Nugraha, dan Nuryadin Ricky Nugraha atas doa, nasihat, semangat, dukungan, dan kasih sayang yang luar biasa kepada penulis. 2 Bapak Ir. Julio Adisantoso, M.Kom selaku dosen pembimbing yang telah memberi banyak ide, saran, bantuan, serta dukungan sampai selesainya penelitian ini. 3 PT. Perusahaan Gas Negara (Persero) Tbk. sebagai salah satu donatur beasiswa Karya Salemba Empat yang telah memberi banyak bantuan materil. 4 Arief, Abrar, Isnan, Oki, Aly, Icha, dan rekan-rekan seperjuangan di Ilmu Komputer IPB angkatan 45 atas segala kebersamaan, bantuan, dukungan, serta kenangan bagi penulis selama menjalani masa studi. Semoga kita berjumpa kembali kelak sebagai orang-orang sukses. 5 Rekan-rekan satu bimbingan, Rizky Utama Pramudia, Meriska Defriani, Susi Handayani, Putri Dewi Purnama Sari, Meri Marlina, Anita, Nofel Saputra, Fania Rahmanawati Karimah, dan khususnya Hafizhia Dhikrul Anugrah yang selalu memberi dukungan dan semangat untuk segera menyelesaikan studi. 6 Rekan-rekan satu tim basket UKM Agric Basketball IPB, sebagai pelatih Mas Hengky, Pandu, Anas, Alan, Adi, Hanif, Nanda, Bedil, dan serta rekan-rekan lain yang telah memberi tekad pantang menyerah baik dalam olahraga maupun pendidikan. 7 Rekan-rekan satu tempat tinggal di Pondok AA, Uda Roni, Bang Aat, Bang Aan, Bang Bono, Hadi, Fandi, Wido, Rilan, dan rekan-rekan lain. 8 Anggi Maniur dan Andini Sekar Pamungkas sebagai sahabat dan juga sesama penerima beasiswa Karya Salemba Empat, Rizky, Erna, Rima, Sobich, Hendra, serta rekan-rekan lain. 9 Teman-teman di jejaring sosial yang telah bersedia menjadi responden sebagai salah satu bagian dari penelitian. Penulisan tugas akhir ini masih terdapat banyak kekurangan dan kelemahan dalam berbagai hal karena keterbatasan kemampuan penulis. Penulis menerima adanya masukan berupa saran atau kritik yang bersifat membangun. Semoga penelitian ini memberikan manfaat dalam proses perkuliahan baik sekarang maupun di masa mendatang. Bogor, Mei 2012 Alfa Nugraha Pradana RIWAYAT HIDUP Penulis dilahirkan di Jakarta pada tanggal 16 Desember 1989. Penulis merupakan anak pertama dari pasangan Yajirwan dan Zahara Murni. Penulis merupakan lulusan dari SMA Negeri 78 Jakarta pada tahun 2008. Pada tahun yang sama melalui jalur Undangan Seleksi Masuk IPB, penulis diterima sebagai mahasiswa di Departemen Ilmu Komputer, Fakultas Matematika dan Ilmu Pengetahuan Alam. Selama menjadi mahasiswa, penulis aktif menekuni kegiatan di Unit Kegiatan Mahasiswa AGRIC Basketball. Berbagai prestasi salah satunya menjadi Juara III Liga Basket Mahasiswa Divisi II Jawa Barat dan beberapa memperoleh Juara I di pertandingan basket antar departemen dan fakultas. Penulis juga menjadi asisten praktikum pada mata kuliah Rangkaian Digital (2010), Rekayasa Perangkat Lunak (2011), dan Penerapan Komputer (2012). Selain itu, penulis melaksanakan kegiatan Praktik Kerja Lapangan di PT Bakrie Toll Road pada tahun 2011. DAFTAR ISI Halaman DAFTAR TABEL ................................................................................................................................viii DAFTAR GAMBAR ...........................................................................................................................viii DAFTAR LAMPIRAN ........................................................................................................................viii PENDAHULUAN Latar Belakang .................................................................................................................................. 1 Tujuan ............................................................................................................................................... 2 METODE PENELITIAN Analisis.............................................................................................................................................. 2 Metode Pengembangan ..................................................................................................................... 3 Communication ................................................................................................................................. 3 Quick Plan and Modeling Quick Design ........................................................................................... 3 Construction of Prototype ................................................................................................................. 3 Deployment Delivery and Feedback ................................................................................................. 3 Kinerja............................................................................................................................................... 3 HASIL DAN PEMBAHASAN Analisis.............................................................................................................................................. 4 Portal ................................................................................................................................................ 4 Fitur LMSP ....................................................................................................................................... 4 Evaluasi LCMS ................................................................................................................................. 4 Learning Objects ............................................................................................................................... 4 Storyboard ......................................................................................................................................... 5 Evaluasi Hasil Kuesioner .................................................................................................................. 5 Deskripsi Umum Sistem ................................................................................................................... 7 Analisis Kebutuhan Sistem ............................................................................................................... 7 Grading Model .................................................................................................................................. 8 Lingkungan Implementasi ................................................................................................................. 8 Pengembangan Grading Model ......................................................................................................... 8 Implementasi Grader ...................................................................................................................... 10 Pengujian Grader ............................................................................................................................ 11 Pengujian Program Komputer ......................................................................................................... 11 Perbandingan Kinerja antar Bahasa Pemrograman ......................................................................... 12 KESIMPULAN DAN SARAN Kesimpulan ..................................................................................................................................... 12 Saran ............................................................................................................................................... 12 DAFTAR PUSTAKA............................................................................................................................ 12 LAMPIRAN ......................................................................................................................................... 14 vii DAFTAR TABEL Halaman 1 2 3 4 5 6 7 Hasil perbandingan fitur LMS ........................................................................................................... .4 Hasil evaluasi komponen dasar LCMS ............................................................................................... 5 Persentase penggunaan bahasa pemrograman .................................................................................... 6 Persentase pemahaman materi pemrograman ..................................................................................... 6 Persentase cara belajar pemrograman ................................................................................................. 7 Karakteristik pengguna ....................................................................................................................... 7 Hasil pengujian sistem secara black-box .......................................................................................... 11 DAFTAR GAMBAR Halaman 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Arsitektur e-learning (Peer3 2001) ................................................................................................... 2 The Prototyping Model (Pressman 2005) ......................................................................................... 3 Portal LMSP ..................................................................................................................................... 4 Contoh modul LMSP ........................................................................................................................ 5 Contoh sub modul LMSP.................................................................................................................. 5 Deskripsi objektif pembelajaran ....................................................................................................... 6 Contoh soal LMSP ............................................................................................................................ 6 Ilustrasi model test case .................................................................................................................... 9 Struktur modul grader ...................................................................................................................... 9 Perintah instalasi compiler ................................................................................................................ 9 Path compiler.................................................................................................................................... 9 Variabel implementasi grader ........................................................................................................ 10 Implementasi grader Scheme ......................................................................................................... 11 Implementasi grader Java ............................................................................................................... 11 Implementasi grader PHP............................................................................................................... 11 Implementasi grader Perl. .............................................................................................................. 11 Skema pengujian grader ................................................................................................................ .11 DAFTAR LAMPIRAN Halaman 1 2 3 4 5 6 7 8 Analisis pengembangan fitur ............................................................................................................ 15 Kuesioner online ............................................................................................................................... 16 Daftar soal untuk pengujian kinerja bahasa pemrograman ............................................................... 17 Hasil evaluasi LCMS ........................................................................................................................ 20 Ilustrasi learning objects LMSP ....................................................................................................... 21 Persentase kebutuhan dalam belajar pemrograman .......................................................................... 22 Kode program hasil uji ..................................................................................................................... 23 Perbandingan pengujian program komputer ..................................................................................... 29 viii 1 PENDAHULUAN Latar Belakang Learning Management System (LMS) atau sistem manajemen pembelajaran adalah sistem yang memudahkan proses administrasi, pengelolaan, dokumentasi, penelusuran, dan pelaporan untuk suatu program pembelajaran seperti e-learning (Hall 2000). Secara konvensional proses pembelajaran dilakukan dalam bentuk diskusi ataupun penyampaian materi di dalam suatu kelas atau perkuliahan. Proses pembelajaran seperti ini sulit diterapkan pada bidang pemrograman terutama untuk kelas besar. Penerapan proses pembelajaran pemrograman tidak cukup hanya dengan menyampaikan materi ataupun diskusi satu arah. Pemrograman adalah salah satu cabang ilmu komputer yang mempelajari proses menulis, menguji, memperbaiki dan memelihara source code dengan menggunakan suatu bahasa tertentu yang dimengerti oleh komputer. Keterampilan dalam membuat suatu algoritme, logika, bahasa pemrograman, dan pengetahuanpengetahuan lain seperti matematika juga sangat diperlukan dalam membuat suatu program komputer. Keterampilan tersebut perlu diasah sesuai tingkatan materi pemrograman yang disampaikan. Pada kondisi ini, LMS memiliki peranan penting dalam melengkapi dan memperbaiki proses pembelajaran konvensional di bidang pemrograman. Pelatihan dan pembelajaran pemrograman secara online yang diterapkan pada LMS diberikan untuk mendukung proses belajar mengajar biasa dikenal dengan istilah Learning Center (LC) (Khalife 2009). Terdapat banyak aplikasi LMS pemrograman, antara lain Sphere Online Judge (SPOJ), TopCoder, International Olympiad in Informatics (IOI), dan TOKI (Tim Olimpiade Komputer Indonesia) LC. Namun, aplikasi ini lebih banyak digunakan untuk kontes pemrograman. Barus (2009) mengembangkan sistem pelatihan kompetisi pemrograman komputer TOKI LC untuk memfasilitasi pelatihan serta manajemen kontes pemrograman bagi pelajar sekolah menengah di Indonesia. Colton et al. (2005) mengembangkan GradeBot, grader atau sistem penilai program komputer untuk tugas perkuliahan pemrograman yang dapat mengevaluasi beberapa bahasa, yaitu C, C++, Java, Perl, Python, Tcl, dan MIPS assembler. Namun, semua interaksi GradeBot hanya dilakukan melalui e-mail. Pengembangan GradeBot lebih lanjut, yaitu WebBot, program grader otomatis berbasis web (Colton et al. 2006). Sistem ini memperbaiki GradeBot dengan menambahkan antarmuka untuk mengurangi interaksi penggunaan e-mail dan grader yang berjalan secara otomatis. Namun, penambahan fitur sistem tersebut tidak memberikan laporan kepada pengajar sejauh mana kemajuan proses belajar mahasiswa dan tidak memenuhi konsep LMS dimana terdapat fitur yang menghubungkan learner dengan sumber pembelajaran (Peer3 2001). Patil (2010) mengadopsi konsep LMS pada sistem grader otomatis untuk tugas pemrograman, Javabrat. Sistem ini tidak hanya memfasilitasi pelajar dalam mengakses sumber pembelajaran, tetapi juga memfasilitasi pengajar untuk melihat perkembangan mahasiswa dalam menguasai suatu bahasa pemrograman. Kelemahan Javabrat adalah hanya mengenal bahasa pemrograman Java dan Scala. Pengembangan grader di universitas lain di Indonesia dalam bidang studi ilmu komputer atau informatika hanya mengenal beberapa bahasa pemrograman. Berdasarkan penelusuran di internet, Universitas Indonesia, Institut Teknologi Bandung, dan Institut Teknologi Sepuluh November memiliki grader untuk bahasa pemrograman Pascal, C, dan C++. Oleh karena itu, grader perlu ditambahkan beberapa pengenalan bahasa lain yang dapat digunakan sebagai pembelajaran pada materi perkuliahan pemrograman dan diuji kinerja masing-masing bahasa tersebut. TOKI LC merupakan salah satu platform grader yang telah dikembangkan dengan fitur: antarmuka yang lebih baik dibanding WebBot, penilaian program secara otomatis melalui sistem, registrasi, manajemen user, pelaporan, dan dapat mengenali bahasa pemrograman Pascal, C, dan C++. Namun, sistem ini belum dilengkapi dengan bahasa pemrograman yang sering digunakan untuk mahasiswa bidang studi ilmu komputer atau informatika, antara lain Scheme pada aspek pemrograman fungsional, Java pada aspek pemrograman berorientasi objek, PHP pada aspek pemrograman prosedural, dan Perl sebagai bahasa yang dikembangkan dengan mencampur fitur terbaik dari beberapa bahasa menjadi satu (Al-Qahtani et al. 2010). Selain itu, analisis pada pengguna tingkat mahasiswa belum pernah dilakukan pada sistem ini. 2 Oleh karena itu, penelitian ini akan menganalisis TOKI LC dan mengembangkan sistem manajemen pembelajaran agar dapat mendukung dan melengkapi proses pembelajaran di bidang pemrograman untuk mahasiswa bidang studi ilmu komputer atau informatika dengan menambahkan sistem penilaian bahasa Scheme, Java, PHP, dan Perl dan menguji kinerja masing-masing bahasa. Tujuan Tujuan penelitian ini adalah menganalisis TOKI LC dan mengimplementasikan sistem manajemen pembelajaran pada bidang pemrograman untuk mahasiswa bidang studi ilmu komputer atau informatika dengan menambahkan pengenalan bahasa pemrograman Scheme, Java, PHP, dan Perl dan menguji kinerja masing-masing bahasa. METODE PENELITIAN LMS pemrograman selanjutnya disebut LMSP dilaksanakan dalam tiga tahap, yaitu analisis, metode pengembangan, dan kinerja. Sebagai pengembangan lebih lanjut, ketiga tahap tersebut dilakukan pada sistem TOKI LC. Analisis E-learning merujuk kepada penggunaan jaringan teknologi informasi secara intensional dalam pengajaran dan pembelajaran (Naidu 2006). LMSP termasuk ke dalam asynchronous learning, dimana proses pembelajaran tidak memerlukan komunikasi satu sama lain. Instruktur membuat materi pembelajaran sedangkan learner mengakses materi tersebut secara online. Pada tahap ini, dilakukan analisis terhadap komponen fungsional asynchronous learning pada sistem. Komponen fungsional utama tersebut dalam perkembangan arsitektur e-learning menurut Peer3 (2001), antara lain: 1 Portal, akses penghubung learner dengan lingkungan e-learning. 2 Learning Management Systems (LMS), penghubung antara learner dan sumber atau isi pembelajaran yang terdiri atas fitur yang mendukung proses belajar mengajar. Analisis untuk fitur LMSP yang akan dikembangkan terlampir pada Lampiran 1. 3 Learning Content Management Systems (LCMS), lingkungan tempat pengembang dapat membuat, menyimpan, menggunakan kembali, dan mengirim sumber pembelajaran dari pusat penyimpanan objek, biasanya database. LCMS umumnya bekerja dengan isi atau sumber berdasarkan model 2008). learning object (Abazi-Bexheti Gambaran umum arsitektur tercantum pada Gambar 1. e-learning Analisis selanjutnya yaitu learning objects dan storyboard. Learning objects adalah unitunit terpisah yang berisi objektif pembelajaran, isi, penilaian objektif, fasilitas pencarian, pengindeksan dan penggunaan kembali objek pembelajaran (Peer3 2001). Storyboard sebagai salah satu bagian dalam pengembangan learning objects harus mengandung instruksi dan deskripsi secara detail, spesifik, dan terurut (Mustaro et al 2005). Kedua analisis tersebut berhubungan dan dilakukan dengan mengidentifikasi ciri-ciri tersebut. Analisis terakhir dilakukan survei melalui kuesioner online berbasis web yang disebar di situs jejaring sosial dengan target responden mahasiswa tahun 2007 hingga tahun 2011 yang masih aktif dan pernah mengikuti perkuliahan pemrograman. Kuesioner ini terlampir pada Lampiran 2. Tujuan survei ini adalah untuk mengetahui dan mengevaluasi sejauh mana mahasiswa mengenal, memahami dan menguasai pemrograman yang diberikan pada perkuliahan. Hasil survei dari kuesioner ini dianalisis dan digunakan sebagai bahan evaluasi dalam tahap metode pengembangan LMSP. Gambar 1 Arsitektur e-learning (Peer3 2001). 3 Tahap analisis yang dilakukan ini bertujuan mengadopsi konsep e-learning pada LMSP dengan menunjukkan dan mengoptimalkan konsep e-learning yang telah dibangun pada penelitian sebelumnya dan yang belum dikembangkan. Metode Pengembangan Sistem penilai program bahasa Scheme, Java, PHP, dan Perl pada LMSP dikembangkan menggunakan model prototyping. Model ini dibagi menjadi beberapa tahapan yang membentuk suatu siklus, dimulai dari communication, quick plan and modeling quick design, construction of prototype dan deployment delivery and feedback (Pressman 2005) (Gambar 2). dalam suatu bahasa pemrograman yang dapat dikenali oleh komputer. Deployment Delivery and Feedback Pengujian terhadap grader bahasa pemrograman Scheme, Java, PHP, dan Perl dilakukan menggunakan metode black-box. Black-box testing dikenal sebagai behavioral testing yang fokus pada kebutuhan fungsional perangkat lunak. Metode ini memungkinkan pengembang perangkat lunak menurunkan sekumpulan kondisi input yang dapat memenuhi seluruh kebutuhan fungsional (Pressman 2005). Pada model pengujian ini input adalah program bahasa Scheme, Java, PHP, dan Perl yang dikumpulkan oleh learner. Proses yang terjadi di dalam sistem tidak diperhatikan, hanya mempertimbangkan hasil keluaran yaitu status penilaian program tersebut. Kinerja Terdapat dua kinerja yang diuji, yaitu kinerja program komputer, dan perbandingan eksekusi program komputer terhadap tujuh bahasa pemrograman pada grader LMSP. Gambar 2 The Prototyping Model (Pressman 2005). Communication Pada tahap ini, dilakukan metode diskusi dengan dosen pembimbing sebagai pihak customer untuk mendefinisikan tujuan dan mengidentifikasi kebutuhan yang diperlukan pada perangkat lunak. Hasil dari tahap ini digunakan sebagai deskripsi umum sistem dan analisis kebutuhan sistem. Quick Plan and Modeling Quick Design Pada proses ini, dibangun perancangan model grader tahap awal, dan diperbaiki sesuai permintaan customer. Rancangan sistem penilai program ini selanjutnya akan digunakan pada tahap implementasi. Construction of Prototype Implementasi dan pengembangan model grader dilakukan pada tahap ini sebagai penerjemahan rancangan analisis sistem ke Kinerja program komputer dilakukan pada program yang menggunakan bahasa pemrograman Scheme, Java, PHP dan Perl. Program tersebut telah dikumpulkan oleh learner dan dinilai oleh grader. Kemudian program dikumpulkan dan dinilai juga oleh sistem grader online Ideone. Ideone (IDEONE 2010) disebut juga online IDE & Debugging Tool sebagai salah satu riset yang dikembangkan oleh Sphere yang banyak digunakan oleh para programmer untuk mengukur kinerja program dengan mengenal lebih dari 40 bahasa pemrograman. Hasil kinerja program komputer digunakan untuk membandingkan konsumsi memori dan waktu eksekusi program pada grader dan Ideone. Pada pengujian, selanjutnya diberikan lima soal, yaitu Hello World!, Menuliskan Bilangan, Menghitung Rataan Ujian, Menghitung Bilangan, dan Menghitung Kata yang terlampir pada Lampiran 3. Untuk masing-masing soal, dibuat solusi pada program yang menggunakan bahasa pemrograman Pascal, C, C++, Scheme, Java, PHP, dan Perl. Untuk setiap solusi, kinerja run time dalam satuan detik dan penggunaan memory space dalam ukuran MB untuk setiap bahasa pemrograman diukur. Hasil pengujian ini digunakan untuk membandingkan rata-rata kinerja setiap bahasa pemrograman pada setiap solusi. 4 menunjukkan bahwa fitur pelaporan dalam bentuk statistik telah dikembangkan, dan LMSto-Content API, serta LMS sebagai alat pembelajaran kolaboratif belum dikembangkan. HASIL DAN PEMBAHASAN Analisis Hasil analisis e-learning ditunjukkan pada portal, fitur LMSP, evaluasi LCMS, learning objects, storyboard, dan evaluasi kuesioner. Evaluasi LCMS Analisis LCMS dilakukan dengan mengevaluasi komponen dasar dan beberapa kriteria evaluasi LCMS menurut Peer3 (2001), untuk menunjukkan sejauh mana konsep LCMS dapat digunakan untuk mengadopsi konsep elearning pada LMSP. Portal Pada hasil analisis tahap awal, untuk mengakses lingkungan e-learning sistem ini telah dikembangkan suatu portal berupa halaman login yang tercantum pada Gambar 3. Learner yang telah terdaftar dalam suatu perkuliahan pemrograman akan diberikan username/email dan password untuk mengikuti proses pembelajaran yang telah tersedia. Hasil evaluasi untuk tiga komponen dasar LCMS yang dimiliki LMSP tercantum pada Tabel 2. Hasil evaluasi untuk kriteria LCMS yang dipenuhi terlampir pada Lampiran 4. Learning Objects Evaluasi untuk konsep learning object pada LMSP diberikan pada setiap latihan dasar pembelajaran pemrograman. Latihan tersebut terdiri atas unit-unit terpisah yang memiliki peranan penting dalam proses pembelajaran pemrograman. Di dalam latihan ini terdapat modul atau sub-sub modul pemrograman yang harus diselesaikan learner sebelum menuju ke modul berikutnya. Pada modul atau sub modul inilah terdapat informasi penting yang di dalamnya berisi tentang deskripsi dari objektif pembelajaran dan soal pemrograman yang sudah tersedia sesuai materi dan tingkatannya. Semakin tinggi tingkatan modul, semakin sulit tingkatan pemrograman yang dikuasai learner. Gambar 3 Portal LMSP. Fitur LMSP Sebelum dilakukan analisis pada komponen LMS, fitur yang dimiliki empat sistem, yaitu TOKI LC, WebBot, Javabrat, dan Ideone dibandingkan dengan fitur yang disebutkan oleh Peer3 (2001) dan Naidu (2006). Perbandingan keempat fitur LMS pada sistem tersebut dan LMSP yang telah dikembangkan tercantum pada Tabel 1. Hasil analisis komponen LMSP Tabel 1 Hasil perbandingan fitur LMS Fitur LMS 1 Peer3 (2001): 1 Registrasi 2 Manajemen user 3 Rencana Pembelajaran 4 Pelaporan 5 LMS-to-Content API 2 Naidu (2006): 1 Pengiriman materi perkuliahan 2 Manajemen transaksi kelas online 3 Penilaian hasil pembelajaran 4 Penelusuran dan pelaporan perkembangan learner 5 Pelaporan prestasi dan kemajuan penyelesaian tugas 6 Alat pembelajaran kolaboratif (perangkat portabel dan mobile) 7 Mengumpulkan, mengatur, dan melaporkan seluruh aktivitas pembelajaran learner TOKI LC (2009) WebBot (2006) Javabrat (2010) Ideone (2010) LMSP (2012) √ √ √ √ - √ √ √ - √ √ √ √ - √ √ √ √ √ √ √ - √ √ √ √ √ √ √ - √ √ √ √ √ - √ √ √ √ √ - √ - √ - - - √ - - - √ √ √ 5 Tabel 2 Hasil evaluasi komponen dasar LCMS Komponen dasar Hasil Evaluasi Pusat penyimpanan learning object Database yang sudah terpasang pada komputer server yang tersedia di Gedung Rektorat IPB Alat pembuatan dan penyusunan learning object Media pembelajaran dibuat dalam format HTML Database pada lingkungan pembelajaran berbasis web Database sudah dikembangkan pada lingkungan berbasis web dan disesuaikan dengan materi Konstruksi learning objects diilustrasikan pada Lampiran 5. pada Gambar 4 Contoh modul LMSP. LMSP Terdapat empat latihan yang telah dibuat, yaitu Latihan Dasar Pemrograman, Praktikum Algoritme dan Pemrograman, Latihan Ujian Praktikum Algoritme dan Pemrograman, dan Praktikum Bahasa Pemrograman. Sebagai contoh, pada latihan Praktikum Algoritme dan Pemrograman telah dibuat enam modul, lima submodul, dan 55 soal. Penerapan konsep learning object untuk, modul tercantum pada Gambar 4, sub modul pada Gambar 5, dan deskripsi objektif pembelajaran tercantum pada Gambar 6. Storyboard Storyboard pada LMSP diterapkan pada setiap soal pembelajaran pemrograman. Materi pada soal pemrograman dibuat sesuai skenario. Skenario tersebut digambarkan ke dalam situasi yang sering terjadi kehidupan nyata berbentuk suatu cerita atau narasi yang memiliki konteks, plot, karakter, dan parameter yang saling berhubungan. Cerita ini berisi kasus atau masalah yang memiliki suatu solusi yang dapat diselesaikan oleh learner. Konsep ini diterapkan pada salah satu contoh soal Menghitung Detik pada Gambar 7 dengan konteks cerita Pak Algor sebagai seorang karakter memiliki aktivitas sehari-hari. Untuk memudahkan aktivitas tersebut, pada akhir cerita, learner diminta memberikan solusi dengan membuat suatu program dengan format masukan, keluaran, dan bahasa pemrograman tertentu. Gambar 5 Contoh sub modul LMSP. Evaluasi Hasil Kuesioner Dari hasil kuesioner, didapatkan sebanyak 98 variasi jawaban. Persentase hasil yang diperoleh dari beberapa pertanyaan yang diberikan, antara lain: 1 Persentase tertinggi untuk pertanyaan bahasa pemrograman yang pernah digunakan oleh mahasiswa adalah bahasa pemrograman C++ sebesar 81% dan yang paling jarang digunakan adalah bahasa pemrograman Perl sebesar 12%. Bahasa lainnya yaitu Visual Basic, Python, Matlab, Clips, Prolog, ASP .NET, dan ActionScript. Secara keseluruhan persentase penggunaan bahasa pemrograman tercantum pada Tabel 3. Hasil ini menunjukkan bahwa diperlukan pembelajaran lebih lanjut dalam pengenalan beberapa bahasa pemrograman yang kurang populer. Selain itu, diperlukan sistem penilai program terhadap bahasa yang banyak digunakan oleh mahasiswa. 6 Sebagai perkenalan pertama dengan program C, ketikanlah kode-kode berikut ini dalam file bernama 'programku.c'. #include <stdio.h> int main() { writeln("Welcome World!\n"); return 0; } Program ini akan mencetak keluaran ke standard output, yaitu layar monitor, sebaris teks Welcome World! Pada bagian awal, terdapat pernyataan #include <stdio.h> yang menandakan bahwa program ini akan memanggil header file bernama stdio.h yang berisi library untuk keperluan input dan output program C. Penjelasan detil tentang program C akan diberikan pada bab-bab berikutnya. Setelah diketik, lakukan proses kompilasi untuk memeriksa sintaks program yang ditulis. Selanjutnya, jalankan program dengan mengetikkan perintah pada command prompt: programku Jika program mengeluarkan keluaran yang sama dengan yang diminta, maka program Anda sudah berjalan dengan benar. Selesailah program pertama Anda! Selanjutnya cobalah berlatih dengan setiap soal pada sub bab yang berada di bagian ini. Tabel 3 Bahasa Pemrograman C C++ Java Pascal Perl PHP Lainnya Gambar 6 Deskripsi objektif pembelajaran. Menghitung Detik Pak Algor memiliki kebiasaan tepat waktu dalam menghadiri suatu acara. Sebagai contoh, jika ada acara di hari ini pukul 19:00:00 (jam 7 malam), maka sejak pagi hari Pak Algor sudah memasang stopwatch untuk menghitung mundur berapa detik jarak antara pukul 19:00:00 dengan saat sekarang. Misalnya sekarang adalah pukul 12:00:00, maka Pak Algor akan memasang stopwatch hitung mundur dimulai dari angka 25200 karena dari pukul 12:00:00 sampai dengan pukul 19:00:00 adalah selama 25200 detik. Untuk memudahkan, bantulah Pak Algor dengan membuat program untuk menentukan berapa nilai awal dari stopwatch untuk melakukan hitung mundur dari saat sekarang sampai waktu acara yang akan dihadiri Pak Algor. Format Masukan Data masukan terdiri atas dua baris dimana baris pertama menunjukkan jam sekarang, dan baris kedua adalah jam dimana acara yang akan dihadiri oleh Pak Algor. Setiap baris berisi tiga bilangan bulat, masingmasing menunjukkan nilai jam, menit, dan detik yang dipisahkan oleh satu spasi. Format Keluaran Output program adalah sebuah bilangan bulat yang menunjukkan lamanya (dalam detik) dari jam sekarang hingga jam acara yang akan dihadiri oleh Pak Algor. Gambar 7 Contoh soal LMSP. Persentase 67% 81% 24% 52% 12% 58% 13% 2 Persentase pertanyaan sejauh mana mahasiswa memahami materi pemrograman yang pernah diikuti di perkuliahan dengan ukuran “Tidak Mengerti“ dan “Mengerti” pada rentang 1 hingga 5 tercantum pada Tabel 4. Pemahaman materi pemrograman rata-rata untuk jawaban keduanya diperoleh rata-rata 42%. Hasil ini menunjukkan bahwa proses pembelajaran konvensional tidak memberikan dukungan lebih dalam pembelajaran pemrograman sehingga diperlukan LMS pemrograman. Tabel Selamat berlatih. Persentase penggunaan bahasa pemrograman 4 Persentase pemahaman pemrograman Pemahaman Materi Pemrograman 1 Tidak Mengerti 2 3 4 5 Mengerti materi Persentase 5% 13% 42% 32% 8% 3 Persentase tertinggi terhadap perilaku mahasiswa untuk belajar menguasai dan mendalami suatu bahasa pemrograman adalah mengerjakan latihan materi dan soal yang diberikan pada perkuliahan secara mandiri sebesar 80%, selanjutnya membaca buku pemrograman 71%, belajar mandiri dengan mengikuti tutorial online 54%, dan lainnya seperti mencari solusi di forum diskusi, dan bertanya antar sesama mahasiswa sebesar 26%. Proses belajar mandiri dalam pemrograman secara tidak langsung kurang membantu untuk pembelajaran pemrograman. Secara keseluruhan persentase cara mahasiswa untuk menguasai bahasa pemrograman tercantum pada Tabel 5. 4 Persentase mahasiswa yang pernah mengikuti kegiatan pembelajaran 7 pemrograman secara online adalah 63% dan yang tidak pernah sebesar 37%. Tabel 5 Persentase cara belajar pemrograman Cara Belajar Mengerjakan latihan materi dan soal yang diberikan Mengikuti tutorial online Membaca buku pemrograman Lainnya Persentase 80% 54% 71% 26% sistem ini adalah untuk memperbaiki proses pembelajaran pemrograman. LMSP merupakan sistem berbasis web dan implementasi grader menggunakan framework PHP Yii. Analisis Kebutuhan Sistem 1 Karakteristik pengguna Pengguna sistem dibagi menjadi tiga tingkatan, yaitu administrator, supervisor, dan learner. Tabel 6 menjelaskan karakteristik pengguna sistem. Tabel 6 Karakteristik pengguna 5 Kebutuhan apa saja yang diperlukan mahasiswa dalam belajar pemrograman. Pertanyaan tersebut telah disediakan lima jawaban, yaitu: a b c d e penjelasan konsep pemrograman, contoh kode program, materi pemrograman tingkat lanjut, latihan membuat program, dan feedback dari dosen. Jawaban diisi responden dengan empat ukuran, yaitu “Tidak Perlu”, “Perlu”, “Cukup Perlu”, dan “Sangat Perlu”. Ukuran “Perlu” menjadi persentase tertinggi dari semua jawaban tersebut. Persentase dari kelima jawaban terlampir pada Lampiran 6. Dari hasil persentase jawaban secara keseluruhan, terlihat bahwa dalam proses pembelajaran pemrograman secara konvensional, sebagian besar mahasiswa kurang menguasai pemrograman dan lebih banyak belajar secara mandiri dengan mengerjakan soal dan latihan, membaca buku pemrograman maupun mengikuti tutorial secara online. Selain itu, penjelasan konsep, contoh-contoh, materi, dan latihan pemrograman serta feedback merupakan kebutuhan yang sangat diperlukan untuk menguasai pemrograman. Oleh karena itu, LMS pemrograman dikembangkan sebagai solusi dengan sistem penilai bahasa yang banyak digunakan dan fitur yang dapat membantu mahasiswa dalam mengikuti proses pembelajaran pemrograman. Deskripsi Umum Sistem Sistem ini sudah ada sebelumnya dan hingga saat ini digunakan sebagai sistem pelatihan kompetisi pemrograman komputer. Sistem ini sendiri merupakan bagian dari TOKI LC versi IPB yang memiliki grader bahasa pemrograman Pascal, C, dan C++ dan pada penelitian ini dikembangkan kembali dengan menambah grader untuk bahasa pemrograman Scheme, Java, PHP dan Perl. Tujuan pengembangan Kategori pengguna Administrator Supervisor Learner Aksi Mengelola seluruh data dalam sistem dan memiliki akses penuh dalam LMSP Mengelola pembelajaran dan membuat soal serta berperan sebagai author dalam LMSP Melihat soal, mengumpulkan soal, mengikuti materi, melihat nilai, dan mengajukan klarifikasi 2 Batasan-batasan Sistem Batasan-batasan sistem yang dikembangkan adalah sistem mengenal tiga bahasa pemrograman bawaan TOKI LC yaitu, Pascal, C, C++ dan empat bahasa tambahan yang telah dikembangkan yaitu Scheme, Java, PHP dan Perl. 3 Lingkup operasi Sistem yang dikembangkan akan ditempatkan di server Rektorat IPB yang berada pada jaringan intranet, sedangkan client berada di sisi peneliti. Lingkup operasi sistem sebagai berikut: Server: komputer PC dengan prosesor Intel Core 2 Duo yang tersambung ke jaringan LAN, sistem operasi: Fedora 15, web server: Apache HTTP Server, Scipting language: PHP 5, dan DBMS: MySQL. Client: prosesor Intel® Centrino Core™2 Duo P8600 2.4 GHz, sistem operasi Ubuntu versi 11.04, 8 web server Apache 2.2.17, DBMS MySQL 5.0.7, memori 3 GB, dan hard disk 100 GB. 4 Compiler Grader LMSP yang dijalankan menggunakan instalasi paket compiler Scheme, Java, PHP dan Perl. Pada bahasa pemrograman Scheme digunakan Guile versi 2.0.5, Java digunakan Java Development Kit 6.24, PHP digunakan PHP versi 5.3.10, dan Perl digunakan Perl versi 5.10.2. Grading Model Model grader untuk bahasa pemrograman Scheme, Java, PHP dan Perl hampir sama dengan model grader pada bahasa sebelumnya. Model yang digunakan adalah model test case. Test case adalah pertanyaan yang diberikan dalam suatu program (Kaner 2003). Grader menilai secara otomatis saat ada program yang dikumpulkan. Nilai tersebut berupa angka dan status. Terdapat enam kriteria status nilai yang dihasilkan, yaitu: 1 Compile Error (CE). Status yang terjadi saat program gagal dikompilasi oleh compiler karena kesalahan syntax, operator, tanda baca, dan kata kunci dalam masing-masing bahasa pemrograman. 2 Run Time Error (RTE). Kesalahan dalam logika atau aritmatika yang teridentifikasi pada waktu proses eksekusi program. 3 Time Limit Exceeded (TLE). Program yang dieksekusi melebihi batas waktu yang ditentukan. 4 Memory Limit Exceeded (MLE). Program yang dieksekusi melebihi batas memori yang ditentukan. 5 Wrong Answer (WA). Status ini terjadi jika satu atau lebih output eksekusi program tidak sesuai dengan satu atau lebih output standar yang ditentukan. 6 Accepted (AC). Status ini berlaku jika seluruh output pada program hasil eksekusi sesuai dengan seluruh output standar yang ditentukan. Untuk bahasa Java, program dikompilasi terlebih dahulu oleh compiler, sedangkan Scheme, PHP, dan Perl langsung menuju ke proses eksekusi. Penggunaan syntax, operator, tanda baca, dan kata kunci diperiksa. Jika hasil kompilasi gagal, program diberi status CE. Jika tidak, dilanjutkan proses berikutnya yaitu proses eksekusi oleh interpreter. Pada proses ini, program dijalankan dan diuji dengan pertanyaan. Pertanyaan ini berupa serangkaian standar input yang sudah ditentukan untuk menghasilkan output dari program tersebut. Selama proses eksekusi batas waktu dan memori yang disediakan juga menjadi kriteria penilaian program. Jika pada waktu proses eksekusi program terdapat kesalahan logika atau aritmatika, status nilai adalah RTE. Selanjutnya, jika program melebihi batas waktu, status nilai TLE dan jika program melebihi batas memori, status nilai adalah MLE. Program yang telah berhasil dieksekusi dan memenuhi kriteria sebelumnya akan menghasilkan output. Kemudian, output ini dibandingkan dengan standar output yang telah ditentukan juga. Penilaian diberikan sesuai dengan banyaknya jumlah hasil output pada program yang cocok dengan hasil pada standar output. Untuk hasil program dengan sedikit output yang cocok, diberikan status nilai WA, sebaliknya jika seluruhnya cocok, status nilai adalah AC. Ilustrasi penerapan model test case pada LMSP tercantum pada Gambar 8. Lingkungan Implementasi Lingkungan pengembangan grader bahasa pemrograman Scheme, Java, PHP dan Perl menggunakan bahasa pemrogaman PHP. Spesifikasi perangkat lunak dan perangkat keras yang digunakan pada pengembangan sebagai berikut: sistem operasi Ubuntu versi 11.04, web server Apache 2.2.17, DBMS MySQL 5.0.7, bahasa Pemrograman PHP versi 5.3.6 dengan framework Yii, lingkungan pengembangan NetBeans versi 7.1, prosesor Intel® Centrino Core™2 Duo P8600 2.4 GHz, memori 3 GB, dan hard disk 100 GB. Pengembangan Grading Model Pengembangan grading model dilakukan di dalam struktur modul pada sistem TOKI LC. Struktur modul grader tercantum pada Gambar 9. Prosedur pengembangan grading model dijelaskan pada langkah-langkah berikut. Prosedur ini harus dilakukan secara berurutan. 1 Instalasi compiler Pengembangan model penilaian pada sistem TOKI LC diperlukan instalasi compiler Scheme, Java, PHP, dan Perl pada sistem operasi Ubuntu kemudian menyertakan path 9 Gambar 8 Ilustrasi model test case. Scheme apt-get install guile Java apt-get install sun-java6-jdk sun-java6-jre PHP apt-get install php5 Perl apt-get install perl Gambar 9 Struktur modul grader. sebagai lokasi compiler pada file config.php untuk mengenali dan menilai program dengan menggunakan bahasa pemrograman tersebut. Perintah instalasi dan path compiler Scheme, Java, PHP, dan Perl tercantum pada Gambar 10 dan Gambar 11. 2 Penyorotan syntax bahasa Kode program hasil pengumpulan harus ditampilkan dan disoroti sesuai syntax masing-masing bahasa. Tampilan bahasa ini diimplementasikan pada class CSyntaxHighlighter pada modul components helpers. 3 Penambahan perintah compile Penambahan perintah compile untuk masing-masing bahasa dilakukan pada class Compiler pada modul components Gambar 10 Perintah instalasi compiler. /usr/bin/guile /usr/bin/javac /usr/bin/php /usr/bin/perl => Scheme => Java => PHP => Perl Gambar 11 Path compiler. evaluators dengan fungsi untuk mengkompilasi program yang telah dikumpulkan. Ekstensi file program diidentifikasi untuk membedakan perintah compile. Ektensi file untuk Scheme, Java, PHP, dan Perl secara terurut yaitu *.ss, *.java, *.php, *.pl. 4 Penambahan fungsi execute Penambahan fungsi execute untuk masingmasing bahasa dilakukan pada class Sandbox pada modul components evaluators 10 dengan fungsi untuk mengeksekusi program yang telah dikompilasi. Fungsi yang ditambahkan untuk Scheme, Java, PHP, dan Perl secara terurut yaitu fungsi schemeExecute, javaExecute, phpExecute, dan perlExecute. 5 Penanganan error Penanganan error pada proses compile dan execute untuk Java sama seperti penanganan bahasa sebelumnya yaitu Pascal, C, dan C++. Namun, untuk penanganan error pada Scheme, PHP, dan Perl ditambahkan “Exited with error status 255” pada class Sandbox di dalam fungsi getErrors untuk mengidentifikasi status penilaian RTE. 6 Pengubahan fungsi evaluate Pengubahan fungsi evaluate dilakukan pada modul extensions evaluator tipe simplebatch pada class SimplebatchEvaluator. Class ini memanggil class lain yang berada di modul components evaluators, yaitu class Compiler, Sandbox, dan Comparator. Fungsi ini sebelumnya hanya memanggil fungsi compile dan execute untuk bahasa Pascal, C, dan C++. Oleh karena itu, fungsi ini diubah untuk memanggil seluruh fungsi compile dan execute pada class Sandbox termasuk fungsi execute pada bahasa Scheme, Java, PHP, dan Perl. Untuk pemanggilan class Comparator yang berfungsi membandingkan output program dengan standar output yang telah ditentukan, tidak dilakukan pengubahan karena pemanggilan proses ini untuk semua bahasa adalah sama. Prosedur ini diimplementasikan menggunakan bahasa pemrograman PHP. Implementasi prosedur ini untuk menambahkan sistem penilaian bahasa Scheme, Java, PHP, dan Perl. Implementasi Grader Beberapa variabel diperlukan dalam implementasi grader. Salah satu variabel tersebut adalah variabel yang berisi path file evaluator. File evaluator ini adalah file biner berekstensi *.exe yang memiliki fungsi, yaitu: mengatur batas waktu compile dan eksekusi, mengatur batas waktu compile dan eksekusi, mengatur batas memori, memasukkan file input untuk menguji program, menulis hasil eksekusi program ke dalam file output, dan menulis hasil compile yang tidak sesuai atau error. Untuk menjalankan seluruh fungsi tersebut secara lengkap, file evaluator memiliki pilihan yang digunakan sebagai parameter, antara lain: -a <level>, mengatur tingkat akses file (0=tidak ada, 1=cwd, 2=/etc,/lib,..., 3=seluruh akses, 9=tidak diperiksa), -e, menurunkan seluruh lingkungan compile bahasa pemrograman ke dalam proses, -i <file>, mengalihkan standar input ke suatu file, -m <size>, batas ruang alamat memori dalam satuan KB, -o <file>, mengalihkan standar output ke suatu file, -r <file>, mengalihkan standar error ke suatu file, dan -w <time>, mengatur batas waktu yang disediakan. Variabel lain yang diperlukan dalam proses implementasi, yaitu variabel pengatur batas waktu dan memori, variabel yang berisi file temporary compile error yang berfungsi untuk mencatat standar error ke dalam file, dan variabel perintah compile. Seluruh variabel untuk proses implementasi grader secara lengkap tercantum pada Gambar 12. $moeval_path $parameter $tmperr -- $command -r $moeval_path = file evaluator, $parameter = parameter batas waktu dan memori compile, $tmperr = file temporary compile error, $command = perintah compile. Gambar 12 Variabel implementasi grader. Implementasi keseluruhan untuk menkompilasi dan menjalankan program Scheme, Java, PHP, dan Perl secara terurut tercantum pada Gambar 13, Gambar 14, Gambar 15, dan Gambar 16. /bin/mo-evalbox -e -f -a 2 -w [batas waktu] -m [batas memori] –i [file input] -o [file output] -r [file temporary] -– /usr/bin/guile [nama file program] Gambar 13 Implementasi grader Scheme. 11 Perintah compile: /bin/mo-evalbox -e -m [batas memori] -w [batas waktu] -r [file temporary] -- /usr/bin/javac [nama file program] Perintah eksekusi: /bin/mo-evalbox -e -a 2 -w [batas waktu] -m [batas memori] –i [file input] -o [file output] -r [file temporary] -– /usr/bin/java – classpath /tmp/ [file hasil kompilasi] yang dikumpulkan dengan bahasa Scheme, PHP, dan Perl karena penilaian program oleh grader langsung dieksekusi oleh interpreter tanpa perlu dikompilasi terlebih dahulu seperti bahasa Java sehingga hasil uji program tersebut menjadi RTE. Untuk hasil pengujian pada kriteria status yang lain didapatkan bahwa seluruh fungsi telah berjalan sesuai kebutuhan baik pada compiler Scheme, Java, PHP maupun Perl. Hasil output tersebut sesuai dengan input program yang dinilai. Detail pengujian tercantum pada Tabel 7. /bin/mo-evalbox -e -f -a 2 -w [batas waktu] -m [batas memori] –i [file input] -o [file output] -r [file temporary] -– /usr/bin/php [nama file program] Pada kode program yang diuji coba, kriteria status MLE didapatkan hanya dengan memberikan batas memori yang rendah tanpa harus membandingkan dengan status AC. Kode program hasil uji coba dan perbandingannya sesuai kriteria status terlampir pada Lampiran 7. Gambar 15 Implementasi grader PHP. Tabel 7 Hasil pengujian sistem secara blackbox Gambar 14 Implementasi grader Java. /bin/mo-evalbox -e -f -a 2 -w [batas waktu] -m [batas memori] –i [file input] -o [file output] -r [file temporary] -– /usr/bin/perl [nama file program] Gambar 16 Implementasi grader Perl. Pengujian Grader Setelah grader diimplementasikan, dilakukan pengujian untuk mengetahui kecocokan sistem dan fungsi compiler yang telah dibuat. Pengujian dilakukan dengan metode black-box dengan memberikan input dan melihat output yang muncul. Input yang digunakan adalah program dengan bahasa Scheme, Java, PHP, dan Perl. Program tersebut diuji coba untuk menghasilkan seluruh kriteria status penilaian pada sistem yang telah disebutkan sebelumnya yaitu Compile Error (CE), Run Time Error (RTE), Time Limit Exceeded (TLE), Memory Limit Exceeded (MLE), Wrong Answer (WA), dan Accepted (AC). Kriteria status CE, RTE, TLE, MLE, dan WA dibandingkan dengan kriteria status AC sebagai perbandingan terhadap program yang berhasil dengan program yang gagal dinilai oleh grader. Skema pengujian grader tercantum pada Gambar 17. Gambar 17 Skema pengujian grader. Dari hasil pengujian didapatkan bahwa kriteria status CE tidak berlaku untuk program Status CE RTE TLE MLE WA AC Scheme RTE RTE TLE MLE WA AC Compiler Java PHP CE RTE RTE RTE TLE TLE MLE MLE WA WA AC AC Perl RTE RTE TLE MLE WA AC Pengujian Program Komputer Pengujian dilakukan dengan memilih 37 program komputer pada 10 soal pemrograman yang telah dikumpulkan dan dinilai oleh grader. Program tersebut terdiri atas 17 program menggunakan bahasa pemrograman Java dengan 11 program memiliki status penilaian AC, dua program memiliki status penilaian CE, dan masing-masing satu program dengan status penilaian RTE, TLE, MLE, dan WA. Sebanyak 10 program menggunakan bahasa pemrograman Perl dengan enam status penilaian seluruhnya AC, dan masing-masing satu program dengan status penilaian RTE, TLE, MLE, dan WA. Lima program Scheme dan PHP dengan masing-masing satu program dengan status penilaian RTE, TLE, MLE, WA, dan AC. Pemilihan program tersebut berdasarkan tingkat kemampuan learner yang berbeda-beda dalam menguasai pemrograman dan statistik peringkat yang diperoleh. Program komputer yang telah dipilih tersebut dinilai kembali pada sistem grader online Ideone berikut dengan seluruh test case 12 program. Hasil yang diperoleh pada Ideone terhadap rata-rata konsumsi memori (dalam KB) dan rata-rata waktu eksekusi program (dalam detik) lebih kecil dibandingkan dengan penilaian pada grader LMSP. Tabel hasil perbandingan grader LMSP dan grader online Ideone terlampir pada Lampiran 8. Perbandingan Pemrograman Kinerja antar Bahasa Dari hasil pengujian, diperoleh run time solusi program paling lama pada bahasa pemrograman Java dengan rata-rata waktu selama 0.0663 detik, selanjutnya Scheme selama 0.0208 detik, selanjutnya PHP selama 0.0120 detik, selanjutnya Perl selama 0.0018 detik, selanjutnya C++ selama 0.0015, dan terakhir Pascal dan C selama 0 detik. Pada penggunaan memory space, bahasa Java menggunakan memori paling besar untuk menjalankan setiap program dengan rata-rata sekitar 986.399 MB, selanjutnya PHP sekitar 20.744 MB, selanjutnya Scheme sekitar 8.512 MB, selanjutnya Perl sekitar 6.224 MB, selanjutnya C++ sekitar 3.292 MB, dan terakhir Pascal dan C sekitar 2.132 MB. Secara keseluruhan, grader mampu mengkompilasi dan menjalankan program dengan bahasa pemrograman Scheme, Java, PHP dan Perl. Untuk Java sebagai bahasa dengan run time solusi dan penggunaan memory space yang cukup besar, dapat ditambahkan perangkat keras dengan spesifikasi yang lebih tinggi agar memperoleh waktu yang lebih cepat. KESIMPULAN DAN SARAN Kesimpulan Hasil penelitian ini menunjukkan bahwa: 1 Telah ditambahkan grader otomatis untuk empat bahasa pemrograman yaitu Scheme, Java, PHP, dan Perl. 2 LMSP telah memenuhi konsep asynchronous e-learning didukung oleh komponen fungsional Portal, LMS, dan LCMS. 3 Rata-rata konsumsi memori (dalam KB) dan rata-rata waktu eksekusi program (dalam detik) pada Ideone lebih kecil dibandingkan dengan penilaian pada grader LMSP. 4 Kinerja run time pada bahasa pemrograman Java menggunakan waktu yang lebih lama sedangkan penggunaan memory space, bahasa Java menggunakan memori yang cukup besar untuk menjalankan setiap program dibandingkan bahasa pemrograman lain. Saran Saran untuk penelitian selanjutnya adalah: 1 Sistem penilai bahasa pemrograman dapat ditambahkan dengan bahasa lain yang digunakan sebagai pembelajaran pada materi perkuliahan. 2 LMSP dapat ditambahkan fitur plagiarism detection, yang mendeteksi dan melaporkan adanya kecurangan dari interaksi learner dalam pengumpulan kode program, khususnya tindakan plagiat. DAFTAR PUSTAKA Abazi-Bexheti L. 2008. Development of a learning content management systems. International Journal of Systems Applications, Engineering & Development 2:1-5. Al-Qahtani SS, Arif R, Guzman LF, Pietrzynski P, Tevoedjre A. 2010. Comparing selected criteria of programming languages Java, PHP, C++, Perl, Haskell, AspectJ, Ruby, COBOL, Bash Scripts and Scheme. http://arxiv.org/ftp/arxiv/papers/1008/1008.3 434.pdf [6 Juli 2012]. Barus PN. 2009. TOKI Learning Center: sistem pelatihan kompetisi pemrograman komputer [skripsi]. Bandung: Departemen Teknik Informatika, Institut Teknologi Bandung. Colton D, Fife L, Winters R. 2005. Building a computer program grader. Information System Education Journal 3(6). Colton D, Fife L, Thompson A. 2006. A webbased automatic program grader. Information System Education Journal 4(114):1-9. Hall B. 2000. Learning Management Systems: How to Choose the Right System for Your Organization. Sunnyvale: Brandonhall.com. [IDEONE]. Ideone Contributors. 2010. Online IDE & debugging tool for programming language. http://ideone.com/ [12 Mei 2012]. Kaner C. 2003. What is a good test case?. Di dalam: Software Testing Analysis & Review Conference (STAR) EAST; Orlando, FL, 1216 Mei 2003. USA: Florida Institute of Technology. 13 Khalife JT. 2009. Novice programmers difficulties alleviated: surpassing the threshold of learning how to program. Di dalam: Proceedings of the first regional conference on Program and Learning Assessment in Higher Education; Beirut, 6-7 November 2009. Lebanon: Lebanese American University. hlm 20-29. Mustaro PN, Silveira IF, Omar N, Stump SMD. 2007. Structure of storyboard for development of interactive learning objects. Di dalam: Proceedings of the 2005 Informing Science and IT Education Joint Conference; Flagstaff, 16-19 Juni 2007. Sao Paulo, Brazil: Universidade Presbiteriana Mackenzie. Naidu S. 2006. E-Learning: A Guidebook of Principles, Procedures, and Practices. Ed ke-2. New Delhi: Commonwealth Educational Media Center for Asia. Pressman RS. 2005. Sofware Engineering: A Practitioner’s Approach. Ed ke-6. Singapore: McGraw-Hill International Edition. Patil A. 2010. Automatic grading of programming assignments [tesis]. San Jose: The Faculty of the Departement of Computer Science, San Jose State University. [Peer3] Peer3 Author. 2001. Evaluating learning content management systems. http://www.jeffcaton.com/PDF_files/Peer3_ LCMS.pdf [12 Mei 2012]. LAMPIRAN 15 Lampiran 1 Analisis pengembangan fitur Fitur LMS Peer3 (2001): 1 Registrasi LMSP* √ 2 Manajemen user √ 3 Rencana Pembelajaran √ 4 Pelaporan √ 5 LMS-to-Content API - Naidu (2006): 1 Pengiriman materi perkuliahan √ Deskripsi Learner didaftarkan ke dalam perkuliahan pemrograman dan diberikan akses untuk portal sistem. Pengguna baru dapat ditambahkan ke sistem, dihapus, disimpan, dan dapat diubah karakteristiknya pada database. Rencana pengadaan materi, tugas, maupun kuis diberitahukan melalui pengumuman pada sistem agar pengguna tidak bingung untuk berinteraksi dengan sistem pertama kali. Laporan penilaian hasil pembelajaran pemrograman baik latihan, materi, kuis, dan aktivitas penggunaan sistem dapat dilihat secara langsung pada sistem ataupun diunduh dengan format CSV. Memulai dan mencatat proses perkuliahan. Materi perkuliahan pemrograman dapat diunggah dari supervisor ke dalam sistem dengan format ZIP. 2 Manajemen transaksi kelas √ Dalam mengikuti kelas online, learner dapat online mencoba latihan pemrograman, mengikuti tugas dan kuis yang telah tersedia. 3 Penilaian hasil pembelajaran √ Hasil pembelajaran pemrograman dinilai dalam bentuk angka. 4 Penelusuran dan pelaporan √ Mencari dan menelusuri jawaban learner yang perkembangan learner sudah dinilai. 5 Pelaporan prestasi dan kemajuan √ Penyelesaian tugas pemrograman ditampilkan penyelesaian tugas dalam bentuk tabel secara keseluruhan. 6 Alat pembelajaran kolaboratif Pembelajaran dilakukan dengan perangkat portable dan wireless (mobile-learning). 7 Mengumpulkan, mengatur, dan + Aktivitas yang dilakukan learner, misalnya melaporkan seluruh aktivitas berapa kali learner login, berapa banyak soal pembelajaran learner yang yang sudah dinilai dan bagaimana statistik nilai learner disajikan dalam bentuk laporan statistik. *( √ ) = sudah dikembangkan, ( - ) = belum dikembangkan, dan ( + ) = akan dikembangkan 16 Lampiran 2 Kuesioner online 17 Lampiran 3 Daftar soal untuk pengujian kinerja bahasa pemrograman Hello World! Time limit 1s Memory limit 64mb Description Diberikan sebuah n, keluarkan "Hello World!" sebanyak n baris. Input Format Sebuah bilangan n, 0 < n < 100 Output Format "Hello World!" sebanyak n baris Sample Input 2 Sample Output Hello World! Hello World! Menuliskan Bilangan Batas Waktu 1 detik Batas Memori 8 MB Deskripsi Setelah sebelumnya belajar menuliskan teks ke layar, sekarang cobalah menuliskan dan membaca tiga bilangan bulat yang masingmasing disimpan ke variabel bernama a, b, dan c. Variabel a dan b menyimpan bilangan bulat yang kecil (+ 35000), sedangkan variabel c menyimpan bilangan bulat yang sangat besar. bisa sampai 2 milyard. Buatlah program C++ untuk membaca dan menuliskan ketiga bilangan tersebut sesuai dengan format keluaran yang ditentukan di bawah ini. Format Masukan Tiga buah bilangan sesuai ketentuan di atas, dalam satu baris, masing-masing dipisahkan oleh satu spasi. Format Keluaran Baris pertama adalah nilai dari variabel a dan b yang dipisahkan oleh satu spasi, dimana nilai variabel a di sebelah kiri sedangkan nilai variabel b di sebelah kanan. Baris kedua adalah nilai dari variabel c. Setiap baris selalu diakhiri dengannewline. Contoh Masukan 10 15 1789123000 Contoh Keluaran 10 15 1789123000 18 Lampiran 3 Lanjutan Menghitung Rataan Ujian Batas Waktu 1 detik Batas Memori 8 MB Buat program menghitung nilai rata-rata dari dua ujian (UTS dan UAS) dan satu tugas. Ujian UTS dan UAS masing-masing diberi bobot 40%, sedangkan tugas diberi bobot 20%. Format Masukan Input data berupa tiga nilai berturut-turut uts, uas, dan tugas yang semuanya bilangan bulat dengan selang -25 sampai dengan 100. Masing-masing nilai dipisahkan oleh satu spasi. Format Keluaran Sebuah bilangan pecahan (dua angka di belakang koma) hasil rata-rata dari nilai uts, uas, dan tugas dengan bobot sesuai ketentuan di atas. Output program selalu diakhiri dengan newline Contoh Masukan 80 80 90 Contoh Keluaran 82 Menghitung Bilangan Batas Waktu 1 detik Batas Memori 8 MB Buatlah program untuk membaca n buah pasangan bilangan bulat a, b, dan c, dan menghitung banyaknya pasangan bilangan yang memenuhi syarat a≤b≤c, tetapi tidak satupun dari tiga bilangan tersebut yang bernilai 0. Format Masukan Baris pertama adalah bilangan bulat n, 1≤n≤5000, yang menyatakan banyaknya pasangan bilangan masukan, dan n baris berikutnya adalah pasangan bilangan bulat berturut-turut a, b, dan c yang masing-masing dipisahkan oleh satu spasi, dimana a,b, dan c dapat bernilai +2Milyard. Format Keluaran Sebuah bilangan bulat banyaknya pasangan bilangan seperti yang diminta oleh soal. Output program selalu diakhiri dengannewline Contoh Masukan 4 2 2 4 -100 20 25 0 13 287 0 -6 0.00 Contoh Keluaran 2 19 Lampiran 3 Lanjutan Menghitung Kata Batas Waktu 1 detik Batas Memori 16 MB Author JAS Buatlah program untuk menghitung kata "aku" (tanpa tanda kutip) dari suatu kalimat. Kata yang dihitung tidak memperhatikan huruf besar atau kecil, sehingga kata-kata "aku", "Aku", "AKU" dianggap sama. Tetapi kata "aku" dan "mengaku" adalah dua kata yang berbeda (tidak sama). Sedangkan kata "aku" dengan "aku," (diikuti dengan tanda baca titik atau koma), adalah dua kata yang sama. Yang disebut kata adalah deretan karakter yang dipisahkan oleh spasi, tanda baca titik, atau tanda baca koma. Format Masukan Masukan program adalah sebuah kalimat dengan panjang maksimum 250 karakter. Tanda baca yang ada dalam kalimat masukan hanyalah titik atau koma. Format Keluaran Sebuah bilangan bulat yang menyatakan banyaknya kata "aku" (tanpa tanda kutip) yang terdapat di dalam kalimat masukan. Output program diakhiri dengan newline. Contoh Masukan Aku mengaku salah, walaupun semua yang melakukan bukan aku. Contoh Keluaran 2 Keterangan Terdapat 2 (dua) kata "aku" pada kalimat masukan, yaitu "Aku" (kata pertama), dan "aku" (pada kata terakhir). 20 Lampiran 4 Hasil evaluasi LCMS No. 1 Kriteria (Peer3 2001) Ukuran objek 2 Format dan media 3 Fitur manajemen materi pembelajaran Penggunaan kembali komponen learning object 4 5 6 Penggunaan fitur pencarian dan temu kembali Object design controls 7 User interface 8 Fleksibilitas model penilaian 9 Fleksibilitas import/eksport materi pembelajaran Fleksibilitas pengaturan tampilan materi Fleksibilitas runtime services configuration Dukungan SCORM/AICC 10 11 12 13 Peronalisasi, keputusan dan penilaian Hasil Evaluasi Ukuran objek yang digunakan baik dalam program yang dikumpulkan maupun soal yang dibuat hampir tidak lebih dari 1 MB. Format materi berupa HTML, laporan berupa CSV, dan format program sesuai dengan masing-masing bahasa yang digunakan. Soal materi pemrograman yang diberikan dapat dibuat, diubah, dan diberi konfigurasi evaluator. Kriteria ini diterapkan dalam suatu pelatihan yang di dalamnya diberikan materi yang dapat digunakan berkalikali. Kriteria ini diterapkan pada pencarian pengguna, soal dan jawaban. Pada kriteria ini, modifikasi dan rancangan pada format soal telah disediakan dan dibuat sesuai yang diinginkan si pembuat soal. Antarmuka soal dibuat sesuai kreasi si pembuat soal dengan format HTML. Penilaian program dilakukan oleh grader secara otomatis. Materi dapat di-import dalam format ZIP dan pelaporan di-eksport dalam format CSV. Soal dapat diubah dan diberi teks sesuai bahasa pemrograman yang digunakan dan gambar. Konfigurasi grader diatur agar berjalan otomatis menggunakan framework Yii pada server. Proses pembuatan pelatihan tidak didukung oleh SCORM/AICC. Pengguna dapat mengubah profil. Keputusan untuk mengumpulkan, menghapus, dan menilai ulang program dapat dilakukan pada sistem. 21 Lampiran 5 Ilustrasi learning objects LMSP 22 Lampiran 6 Persentase kebutuhan dalam belajar pemrograman Jawaban Penjelasan konsep pemrograman Contoh kode program Materi pemrograman tingkat lanjut Latihan membuat program Feedback dari dosen Tidak Perlu 0% 0% 4% 0% 2% Perlu 21% 20% 29% 17% 22% Persentase Cukup Perlu 15% 16% 32% 14% 30% Sangat Perlu 63% 63% 36% 68% 46% 23 Lampiran 7 Kode program hasil uji Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 0 dari 5 Bahasa : Scheme Nilai : 0 Uji Status : CE Hasil Uji : RTE Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 5 dari 5 Bahasa : Scheme Nilai : 100 Uji Status : AC Hasil Uji : AC (define (hello n) (do ((i 1 (+ i 1))) (> i n) (display "Hello World!") (newline) ) ) (hello (rad)) (define (hello n) (do ((i 1 (+ i 1))) ((> i n)) (display "Hello World!") (newline) ) ) (hello (read)) Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 0 dari 5 Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 5 dari 5 Bahasa : Scheme Nilai : 0 Uji Status : RTE Hasil Uji : RTE Bahasa : Scheme Nilai : 100 Uji Status : AC Hasil Uji : AC (defin (hello n) (do ((i 1 (+ i 1))) (> i n) (display "Hello World!") (newline) ) ) (hello (read)) (define (hello n) (do ((i 1 (+ i 1))) ((> i n)) (display "Hello World!") (newline) ) ) (hello (read)) Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 0 dari 5 Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 5 dari 5 Bahasa : Scheme Nilai : 0 Uji Status : TLE Hasil Uji : TLE Bahasa : Scheme Nilai : 100 Uji Status : AC Hasil Uji : AC (define (hello n) (do ((i 1 (+ i 1))) (> i n) (display "Hello World!") (newline) ) ) (hello (read)) (define (hello n) (do ((i 1 (+ i 1))) ((> i n)) (display "Hello World!") (newline) ) ) (hello (read)) Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 1 dari 5 Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 5 dari 5 Bahasa : Scheme Nilai : 20 Uji Status : WA Hasil Uji : WA (define (hello n) (do ((i 1 (+ i 2))) ((< i n)) (display "Hello World!") (newline) ) ) (hello (read)) Soal : Hello World! Waktu : 1s Memori : 0.01 MB Test case benar: 0 dari 5 Bahasa : Scheme Nilai : 0 Uji Status : MLE Hasil Uji : MLE (define (hello n) (do ((i 1 (+ i 2))) ((< i n)) (display "Hello World!") (newline) ) ) (hello (read)) Bahasa : Scheme Nilai : 100 Uji Status : AC Hasil Uji : AC (define (hello n) (do ((i 1 (+ i 1))) ((> i n)) (display "Hello World!") (newline) ) ) (hello (read)) 24 Lampiran 7 Lanjutan Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 0 dari 5 Bahasa : Java Nilai : 0 Uji Status : CE Hasil Uji : CE Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 5 dari 5 Bahasa : Java Nilai : 100 Uji Status : AC Hasil Uji : AC import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { String input=""; BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.)); try{ input = dataIn.readLine(); } catch(IOException e) { System.out.println("Error!"); } int n = Integer.parseInt(input); for (int i = 0; i < n; i++){ System.out.println("Hello World!"); } }} import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { String input=""; BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in)); try{ input= dataIn.readLine(); } catch(IOException e) { System.out.println("Error!"); } int n = Integer.parseInt(input); for (int i = 0; i < n; i++){ System.out.println("Hello World!"); } } } Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 0 dari 5 Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 5 dari 5 Bahasa : Java Nilai : 0 Uji Status : TLE Hasil Uji : TLE import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { String input=""; BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in)); try{ input = dataIn.readLine(); } catch(IOException e) { System.out.println("Error!"); } int n = Integer.parseInt(input); for (int i = 0; ; i++){ System.out.println("Hello World!"); } } } Bahasa : Java Nilai : 100 Uji Status : AC Hasil Uji : AC import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { String input=""; BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in)); try{ input= dataIn.readLine(); } catch(IOException e) { System.out.println("Error!"); } int n = Integer.parseInt(input); for (int i = 0; i < n; i++){ System.out.println("Hello World!"); }}} 25 Lampiran 7 Lanjutan Soal : Jumlah Elemen Baris Matriks Segi Waktu : 1s Memori : 16 MB Test case benar: 0 dari 5 Bahasa : Java Nilai : 0 Uji Status : RTE Hasil Uji : RTE import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { String inp=""; BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in)); Integer[][] A =new Integer[100][100]; int n; try{ inp = dataIn.readLine(); n = Integer.parseInt(inp); for(int i=0;i<n;i++){ int tot=0; for(int j=0;j<n;j++){ inp = dataIn.readLine(); A[i][j] = Integer.parseInt(inp); tot+=A[i][j]; } A[i][i]=tot; } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(i==j) Soal : Jumlah Elemen Baris Matriks Segi Waktu : 1s Memori : 16 MB Test case benar: 5 dari 5 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { String inp=""; String delim="[ ]+"; String[] temp; BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in)); Integer[][] A =new Integer[100][100]; try { inp = dataIn.readLine(); int n Integer.parseInt(inp); System.out.print(" "); else System.out.println(); } } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(i==j) System.out.format("%d",A[i][j]); else System.out.print("0"); if(j<(n-1)) System.out.print(" "); else } catch(IOException e) { System.out.println("Error!"); } } = for(int i=0;i<n;i++){ int tot=0; inp = dataIn.readLine(); temp = inp.split(delim); for(int j=0;j<n;j++){ A[i][j] = Integer.parseInt(temp[j]); tot+=A[i][j]; } A[i][i]=tot; } System.out.format("%d",A[i][j]); else System.out.print("0"); if(j<(n-1)) Bahasa : Java Nilai : 100 Uji Status : AC Hasil Uji : AC System.out.println(); } } } catch(IOException e) { } System.out.println("Error!"); } } } 26 Lampiran 7 Lanjutan Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 1 dari 5 Bahasa : Java Nilai : 20 Uji Status : WA Hasil Uji : WA import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { String input=""; BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in)); try{ input = dataIn.readLine(); } catch(IOException e) { System.out.println("Error!"); } int n = Integer.parseInt(input); for (int i = 0; i<n; i++){ System.out.println("Hello World!"); i++; } } } Soal : Hello World! Waktu : 1s Memori : 9 MB Test case benar: 0 dari 5 Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 5 dari 5 Bahasa : Java Nilai : 100 Uji Status : AC Hasil Uji : AC import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { String input=""; BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in)); try{ input= dataIn.readLine(); } catch(IOException e) { System.out.println("Error!"); } int n = Integer.parseInt(input); for (int i = 0; i < n; i++){ System.out.println("Hello World!"); }}} Bahasa : Java Nilai : 0 Uji Status : MLE Hasil Uji : MLE import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { String input=""; BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in)); try{ input = dataIn.readLine(); } catch(IOException e) { System.out.println("Error!"); } int n = Integer.parseInt(input); if(n > 0 && n < 100){ for (int i = 0; i<n; i++){ System.out.println("Hello World!"); } } } } Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 0 dari 5 Bahasa : PHP Nilai : 0 Uji Status : CE Hasil Uji : RTE <?php $n = fgets(STIN); for($i=1; $i <= $; $i++){ print "Hello World!\n"; } exit(); ?> Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 5 dari 5 Bahasa : PHP Nilai : 100 Uji Status : AC Hasil Uji : AC <?php $n = fgets(STDIN); for($i=1; $i <= $n; $i++){ print "Hello World!\n"; } exit(0); ?> 27 Lampiran 7 Lanjutan Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 0 dari 5 Bahasa : PHP Nilai : 0 Uji Status : RTE Hasil Uji : RTE <?php $n = fgets(STDIN); for($i=1; $i <= $n; $i++){ print "Hello World!\n"; exit(); ?> Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 0 dari 5 Bahasa : PHP Nilai : 0 Uji Status : TLE Hasil Uji : TLE Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 5 dari 5 Bahasa : PHP Nilai : 100 Uji Status : AC Hasil Uji : AC <?php $n = fgets(STDIN); for($i=1; $i <= $n; $i++){ print "Hello World!\n"; } exit(0); ?> Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 5 dari 5 Bahasa : PHP Nilai : 100 Uji Status : AC Hasil Uji : AC <?php $n = fgets(STDIN); for($i=1; ; $i++){ print "Hello World!\n"; } exit(0); ?> <?php $n = fgets(STDIN); for($i=1; $i <= $n; $i++){ print "Hello World!\n"; } exit(0); ?> Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 1 dari 5 Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 5 dari 5 Bahasa : PHP Nilai : 20 Uji Status : WA Hasil Uji : WA <?php $n = fgets(STDIN); for($i=1; ; $i++){ print "Hello World!\n"; $i++; } exit(0); ?> Soal : Hello World! Waktu : 1s Memori : 0.01 MB Test case benar: 0 dari 5 Bahasa : PHP Nilai : 100 Uji Status : AC Hasil Uji : AC <?php $n = fgets(STDIN); for($i=1; $i <= $n; $i++){ print "Hello World!\n"; } exit(0); ?> Bahasa : PHP Nilai : 0 Uji Status : MLE Hasil Uji : MLE <?php $n = fgets(STDIN); for($i=1; $i <= $n; $i++){ print "Hello World!\n"; } exit(0); ?> Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 0 dari 5 Bahasa : Perl Nilai : 0 Uji Status : CE Hasil Uji : RTE #!/usr/bin/perl $n=<; for ($i=1;$i<$n ; $i++) { print "Hello World!\n";} Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 5 dari 5 Bahasa : Perl Nilai : 100 Uji Status : AC Hasil Uji : AC #!/usr/bin/perl $n=<>; for ($i=1;$i<$n ; $i++) { print "Hello World!\n"; } 28 Lampiran 7 Lanjutan Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 0 dari 5 Bahasa : Perl Nilai : 0 Uji Status : RTE Hasil Uji : RTE Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 5 dari 5 Bahasa : Perl Nilai : 100 Uji Status : AC Hasil Uji : AC #!/usr/bin/perl $n=<>; for ($i=1;$i<$n ; $i++) { print "Hello World!\n"; #!/usr/bin/perl $n=<>; for ($i=1;$i<$n ; $i++) { print "Hello World!\n"; } Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 0 dari 5 Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 5 dari 5 Bahasa : Perl Nilai : 0 Uji Status : TLE Hasil Uji : TLE Bahasa : Perl Nilai : 100 Uji Status : AC Hasil Uji : AC #!/usr/bin/perl $n=<>; for ($i=1; ; $i++) { print "Hello World!\n";} #!/usr/bin/perl $n=<>; for ($i=1;$i<$n ; $i++) { print "Hello World!\n"; } Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 1 dari 5 Soal : Hello World! Waktu : 1s Memori : 16 MB Test case benar: 5 dari 5 Bahasa : Perl Nilai : 20 Uji Status : WA Hasil Uji : WA #!/usr/bin/perl $n=<>; for ($i=1; $i<$n ; $i++) { print "Hello World!\n";$i++} Soal : Hello World! Waktu : 1s Memori : 0.01 MB Test case benar: 0 dari 5 Bahasa : Perl Nilai : 0 Uji Status : MLE Hasil Uji : MLE #!/usr/bin/perl $n=<>; for ($i=1; $i<$n ; $i++) { print "Hello World!\n";$i++} Bahasa : Perl Nilai : 100 Uji Status : AC Hasil Uji : AC #!/usr/bin/perl $n=<>; for ($i=1;$i<$n ; $i++) { print "Hello World!\n"; } 29 Lampiran 8 Perbandingan pengujian program komputer Soal Hello World! #207851 Hello World! #207489 Hello World! #207959 Hello World! #207491 Menuliskan Bilangan #207835 Menghitung Rataan Ujian #207836 Menghitung Bilangan #207911 Menghitung Kata #207840 Pengenalan Program Java #207961 Pengenalan Program Java #208472 Pengenalan Program Java #209182 Pengenalan Program Java #209167 Pengenalan Class dalam Java #208081 Pengenalan Class dalam Java #208718 Rata-rata Garis #208794 Rata-rata Garis #209463 Rata-rata Garis #209243 Rata-rata Garis #209240 Pewarisan #208457 Pewarisan #208994 Jumlah Elemen Baris Matrik Segi Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Bahasa Java Perl Java Perl Waktu (detik) LMSP Ideone 0.031 0.030 0.002 0 0.075 0.030 0.001 0 Memori (kB) LMSP Ideone 986399 245632 6224 4552 986399 245632 6224 4566.6 Status LMSP Ideone AC success AC success AC success AC success Perl 0.002 0 6224 4574 AC success Perl 0.002 0 6224 4582.8 AC success Perl 0.002 0 6224 4552 AC success Perl 0.002 0 6224 4552 AC success Java 0.092 0.047 986750 246096 AC success Java 0.094 0.055 986750 246080 AC success Java 0.093 0.050 986750 237096 AC success CE CE Java - - - - Java 0.095 0.045 986750 246080 AC success Java 0.095 0.050 986750 237138 AC success Java 0.086 0.046 986399 246016 AC success Java 0.088 0.046 986399 246387.2 AC success Java 0.087 0.044 986399 246412.8 AC success - - CE CE 0.045 0.052 986884 - 245952 246189.5 AC WA success success Java Java Java 0.104 - - Java - 0.030 - 245632 RTE RTE Java Java Perl Perl Perl Perl PHP PHP PHP PHP - 0.110 0.030 0 0 0 0 0.020 0.040 0.020 0.020 - 245952 245632 4552 4552 4552 4552 13616 13624 13616 13616 TLE MLE RTE TLE MLE WA RTE TLE MLE WA RTE success RTE RTE success success RTE RTE success success 30 Lampiran 8 Lanjutan Soal Bahasa Hello World! Hello World! PHP Scheme Hello World! Scheme Hello World! Hello World! Hello World! Scheme Scheme Scheme Waktu (detik) LMSP Ideone 0.017 0.020 0.030 0.014 Memori (kB) LMSP Ideone 20744 13616 4176 0.020 - 4176 0.020 0.020 0.020 8512 4176 4176 4176 Status LMSP Ideone AC success RTE RTE success TLE no ouput MLE success WA success AC success