LISTING PROGRAM. 1. Module SkripsiUmri.py. import sys, operator, codecs, time. class Timer(object): def init (self): self.t1= time.

Similar documents
LAMPIRAN A LISTING PROGRAM

LISTING PROGRAM. a = b; b = c; c = a + b; } fibs.reverse(); for (int i = 0; i < fibs.count; i++) { if (n >= fibs[i]) { n = n - fibs[i];

A-1 LISTING PROGRAM. 1. Form1.cs. Universitas Sumatera Utara

LISTING PROGRAM. private void filetoolstripmenuitem_click(object sender, EventArgs e) { this.hide(); Form2 fr = new Form2(); fr.

LISTING PROGRAM. % UIWAIT makes pertama wait for user response (see UIRESUME) % uiwait(handles.figure1);

LAMPIRAN A : LISTING PROGRAM

LISTING PROGRAM. mainform.vb A-1. Universitas Sumatera Utara

LAMPIRAN A : LISTING PROGRAM

LISTING PROGRAM. namespace vigenere_des { public partial class MainPage : PhoneApplicationPage { public MainPage() { InitializeComponent(); }

LISTING CODE A-1. Indo_to_jawa_Fragments.java. package studio.arti.kamusjawaindonesia;

LISTING PROGRAM. // // TODO: Add constructor code after the InitializeComponent()

LISTING PROGRAM. void KOMPRESIToolStripMenuItemClick(object sender, EventArgs e) { Kompresi k = new Kompresi(); k.show(); this.

LISTING PROGRAM. // // TODO: Add constructor code after the InitializeComponent()

% --- Executes on button press in btn_gsn. function btn_gsn_callback(hobject, eventdata, handles) GaussianSpeckleNoise close AiSoftware;

Listing Progam. Universitas Sumatera Utara

A-1 LAMPIRAN A LISTING PROGRAM. Kode Program Form Main: Universitas Sumatera Utara

LISTING PROGRAM. // // TODO: Add constructor code after the InitializeComponent() call. //

Lampiran 2 MASTER TABEL

LISTING PROGRAM. void FilteringToolStripMenuItemClick(object sender, EventAr s e) { Filtering a = new Filtering(); this.hide(); a.

LAMPIRAN. Private Sub FrmSkinDetect_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load IndikatorHandle(False) End Sub

SEBARAN MATAKULIAH PROGRAM STUDI SARJANA TEKNIK SIPIL (S1) DI JURUSAN TEKNIK SIPIL UNIVERSITAS LAMPUNG

LISTING PROGRAM. if nargout [varargout{1:nargout}] = gui_mainfcn(gui_state, varargin{:}); else gui_mainfcn(gui_state, varargin{:}); end

Listing Program. private void exittoolstripmenuitem_click(object sender, EventArgs e) { Application.Exit(); }

LAMPIRAN 1 PENGARUH KETERSEDIAAN KOLEKSI PERPUSTAKAAN TERHADAP MINAT BACA SISWA SMP NEGERI 30 MEDAN

DAFTAR ISI. ABSTRAK... Error! Bookmark not defined. ABSTRACT... Error! Bookmark not defined. KATA PENGANTAR... Error! Bookmark not defined.

INFORMATION SYSTEM OF LIBRARY AT PONDOK PESANTREN DARUL IHSAN MUHAMMADIYAH SRAGEN

Pengenalan Sistem Maklumat Dalam Pendidikan

A-1 LISTING PROGRAM. Halaman Koneksi. Universitas Sumatera Utara

LAMPIRAN FORM 1 Universitas Sumatera Universitas Utara

LAMPIRAN A : LISTING PROGRAM

Visualization of Information Based on Tweets from Meteorological, Climatological, and Geophysical Agency: BMKG

LAMPIRAN LISTING PROGRAM

UNIVERSITI SAINS MALAYSIA. CPT103/ CPM211 Struktur Data & Paradigma Pengaturcaraan

LISTING PROGRAM. com.example.jessicatamara.myapplication4;

LISTING PROGRAM. % Edit the above text to modify the response to help cover. % Last Modified by GUIDE v Jun :24:43

Final Exam Practice Questions

LAMPIRAN A PROGRAM FLOWSTONE

privateint m, n, smithitemcount, raitaitemcount;

Panduan Guru Maker UNO/ Arduino

End Sub. Sub Kunci() Dim i As Integer For i = 0 To 4 Txtfield(i).Locked = True Next i grddatagrid.enabled = False End Sub

Comparison of Text Data Compression Using Run Length Encoding, Arithmetic Encoding, Punctured Elias Code and Goldbach Code

UNIVERSITI SAINS MALAYSIA. CST131 Computer Organisation [Organisasi Komputer]

LAMPIRAN. Universitas Sumatera Utara

An Implementation of RC4 + Algorithm and Zig-zag Algorithm in a Super Encryption Scheme for Text Security

belajar html5 158E7F2D743EA866244C3EE391F064DC Belajar Html5 1 / 6

Send to: MM Irfan Subakti CC to Muhammad Ryanda Nugraha M with the. IF184401_DAA(F)_MID_NRP_Name.

KARTU BIMBINGAN TUGAS AKHIR MAHASISWA PEMBAHASAN PADA ASISTENSI MENGENAI, PADA BAB

Panduan Menggunakan Autoresponder FreeAutobot.com

Registration of Supplier (ROS) TM Supplier Registration Renewal via SUS Portal (Pembaharuan Pendaftaran Pembekal TM melalui SUS Portal)

LISTING PROGRAM. 1. Tampilan Awal. 2. Menu Login. Public Class Awal

2018/2/5 话费券企业客户接入文档 语雀

Cosine Similarity Measurement for Indonesian Publication Recommender System

Modul Asas JavaServer Pages

Application of Binary And Hexadesimal Conversion Conservation in Motif Design Weaving

LAMPIRAN 1 TATA CARA PENGGUNAAN SOFTWARE ALGORITMA GENETIKA

MSS 317 Coding Theory [Teori Pengekodan]

Pertandingan Abilympics Kemahiran Hidup dan Leisure

Analysis of System Requirements of Go-Edu Indonesia Application as a Media to Order Teaching Services and Education in Indonesia

INSTRUCTION: This section consists of FOUR (4) questions. Answer ALL questions. ARAHAN: Bahagian ini mengandungi EMPAT (4) soalan. Jawab SEMUA soalan.

Jaringan Komputer (IF8505) Pengamanan jaringan komputer. Cryptography

Tutorial, Source code, Request Program Visual Basic

MICROSOFT EXCEL. Membina Hamparan Elektronik Fungsi Hamparan Elektronik

Final Exam(sample), Fall, 2014

DAFTAR ISI. HALAMAN JUDUL... Error! Bookmark not defined. LEMBAR PERSETUJUAN... Error! Bookmark not defined.

Written by Mazuki Izani Thursday, 02 August :00 - Last Updated Tuesday, 03 February :54

Comparative Analysis of Sequitur Algorithm with Adaptive Huffman Coding Algorithm on Text File Compression with Exponential Method

BerbaktidanBerkaryaUntukIndonesia

CIS192 Python Programming

DAFTAR PUSTAKA. [2] Prof.Dr. Richard Sethmann Access Control Lists CCNA 2 (ACLs).German.

Python review. 1 Python basics. References. CS 234 Naomi Nishimura

Indexing. UCSB 290N. Mainly based on slides from the text books of Croft/Metzler/Strohman and Manning/Raghavan/Schutze

Registration of Supplier (ROS) TM Supplier Registration Renewal via SUS Portal (Pembaharuan Pendaftaran Pembekal TM melalui SUS Portal)

Pengguna akan diberikan Username dan Password oleh Administrator untuk login sebagai admin/conference Manager bagi conference yang akan diadakan.

LISTING PROGRAM. frmmenu.vb. frmlogin.vb. Universitas Sumatera Utara. Public Class frmmenu

Getting started with Java

COMBINING TABLES. Akademi Audit Negara. CAATs ASAS ACL / 1

Pattern Matching. Dr. Andrew Davison WiG Lab (teachers room), CoE

Universitas Sumatera Utara A-1 LISTING PROGRAM. Menu Enkripsi. package com.example.program;

PART A SULIT (EKT 221) BAHAGIAN A. Answer ALL questions. Question 1. a) Briefly explain the concept of Clock Gating.

Analysis of Algorithms 1 / 18

LISTING PROGRAM. Source Code Tampilan Awal. Source Code Menu Utama

LAMPIRAN LIST PROGRAM

UNIVERSITI SAINS MALAYSIA. CST131 Computer Organisation [Organisasi Komputer]

L1/L2 NETWORK PROTOCOL TESTING

Arrays and Basic Algorithms

Part 1 (80 points) Multiple Choice Questions (20 questions * 4 points per question = 80 points)

LAMPIRAN A LISTINGPROGRAM

ICT SPM 2011 SUGGESTION ANSWER. Section A

Pemrograman Jaringan Web Client Access PTIIK

Semasa buku ini ditulis XAMPP mengandungi empat versi:

CS Programming Languages: Python

PERU BAHAN PERKHIDMATAN KREDIT DAN PERBANKAN ARAHAN KERJA UNIT KOMPUTER. Tatacara Proses AGM03. BPKP/KJAK-104 Bilangan Semakan : 0 Tarikh :

UNIVERSITI SAINS MALAYSIA. CPT113 Programming Methodology & Data Structures [Metodologi Pengaturcaraan & Struktur Data]

Cara Login Ke CPanel Hosting.

Lecture 27. Lecture 27: Regular Expressions and Python Identifiers

Midterm Exam II MCS 275 Programming Tools 14 March 2017

Midterm 1 Review. Important control structures. Important things to review. Functions Loops Conditionals

FILE HANDLING AND EXCEPTIONS

Files. Files need to be opened in Python before they can be read from or written into Files are opened in Python using the open() built-in function

PENGELUARAN PERAKUAN KEKOMPETENAN DAN PERAKUAN KECEKAPAN BARU MENGIKUT STCW 1978, SEPERTI PINDAAN

Transcription:

A1 LISTING PROGRAM 1. Module SkripsiUmri.py import sys, operator, codecs, time class Timer(object): def init (self): self.t1= time.time() def getelapsedltime(self): # gets total elapsed from class initialsation self.delta=time.time()-self.t1 return '{0:.3f'.format(self.delta) def tobin(x): return "{0:b".format(x) def getfrequence(string): karakter = [] for elemen in string: if elemen not in karakter: karakter.append(elemen) frekuensi = [] for elemen in karakter: hitung = 0 for e in string: if e == elemen: hitung += 1 frekuensi.append(hitung) pairing = [] for i in range(len(karakter)): pairing.append((karakter[i], frekuensi[i])) pairing.sort(key=operator.itemgetter(1), reverse=true) return karakter, frekuensi, pairing def levensteincode(n): nbin = tobin(n) kiri = nbin[0] kanan = nbin[1:] i = 1 M = len(kanan) C = kanan while(m!= 0): nbin = tobin(m) kiri = nbin[0] kanan = nbin[1:] kanan = '0' C = kanan + C M = len(kanan)

A2 i += 1 C = '0' + C for x in range(i): C = '1' + C return C def generatorkodelevenstein(jumlahvariasi): LCode = [] for i in range(1, jumlahvariasi+1): LCode.append(levensteinCode(i)) return LCode def levenstein(pairing): lenlcode = len(pairing) LCode = generatorkodelevenstein(lenlcode) sortedchar = [] for i in range(len(pairing)): sortedchar.append(pairing[i][0]) return LCode, sortedchar def readtxt(path): f = codecs.open(path, 'r', encoding = 'UTF-8') data = f.read() return data #print("\ngagal membaca file.") return False def readtxt2(path): '''if (".txt" not in path): path += ".txt"''' f = open(path, 'r') data = f.read() return data #print("\ngagal membaca file.") return False def encodelevenstein(pesan): measure = Timer() karakter, frekuensi, pairing = getfrequence(pesan) LCode, sortedchar = levenstein(pairing) #LCode = LCode[:7] #print(lcode) encoding = [] for e in Pesan: i = sortedchar.index(e) encoding.append(lcode[i]) kode = ''.join(encoding) i = 0 while len(kode) % 7!= 0: kode = kode + '0' i += 1 if i!= 0:

A3 bitflag = tobin(i) while len(bitflag) % 7!= 0: bitflag = '0' + bitflag kode = kode + bitflag else: kode = kode + '0000000' charkompresi = '' awal = 0 for i in range(7, len(kode)+1, 7): charkompresi += chr(int(kode[awal:i],2)) awal = i elapsedtime = measure.getelapsedltime() return sortedchar, charkompresi, elapsedtime def tulishasilencode(path, encode, listkarakter): # encode = char hasil kompresi # listkarakter = karakter yang sudah tersusun encode = "#*#" + encode for i in range(len(listkarakter)-1, -1, -1): encode = listkarakter[i] + encode with codecs.open(path, "w", encoding = "utf-8") as file: file.write(encode) file.close() #print(path) return len(encode) #print("kesalahan: hasil encode tidak dapat disimpan.") return False def decodelevenstein(karakter, charkompresi): measure = Timer() LCode = generatorkodelevenstein(len(karakter)) biner = '' for e in charkompresi: e = tobin(ord(e)) while len(e) < 7: e = '0' + e biner += e jumlahpenambahan = int(biner[len(biner)-7:],2) biner = biner[:len(biner)-7] if jumlahpenambahan!= 0: for i in range(jumlahpenambahan): biner = biner[:len(biner)] kemungkinan = '' hasil = '' for e in biner: kemungkinan += e if kemungkinan in LCode: hasil += karakter[lcode.index(kemungkinan)] kemungkinan = '' elapsedtime = measure.getelapsedltime() return hasil, elapsedtime

A4 def bacafiletext(path, tampilkan): f = open(path, 'r') data = f.read() if(tampilkan == True): print("-------------------------------------------------- FOF--------------------------------------------------") print(data) print("-------------------------------------------------- EOF--------------------------------------------------") return data print("\ngagal membaca file.") def bacatext(): path = str(input("nama file = ")) '''if ('\\' not in path): path = "D:\\K U L I A H\\Skripsi\\Belajar\\program python\\kriptografi\\plaintext\\" + path''' '''if (".txt" not in path): path += ".txt"''' return bacafiletext(path, True) pass def readtxtcodec(path): f = codecs.open(path, 'r', encoding = 'UTF-8') data = f.read() return data print("\ngagal membaca file.") def elias_split(value): binary = tobin(value) highest_bit = len(binary) - 1 remaining_bits = binary[1:] return highest_bit, remaining_bits #1-7 def eliasdeltacode(rank): biner = tobin(rank) c = biner [1:] rank = len(biner) biner = tobin(rank) c = biner + c rank = len(biner) - 1 for i in range(rank): c = '0' + c return c

A5 def generatorkodeelias(jumlahvariasi): Code = [] for i in range(1, jumlahvariasi+1): Code.append(eliasDeltaCode(i)) return Code def elias(pairing): lencode = len(pairing) #if lencode > 7: # lencode = 7 Code = generatorkodeelias(lencode) sortedchar = [] for i in range(len(pairing)): sortedchar.append(pairing[i][0]) return Code, sortedchar def encodeelias(pesan): measure = Timer() karakter, frekuensi, pairing = getfrequence(pesan) Code, sortedchar = elias(pairing) #print(code) encoding = [] for e in Pesan: i = sortedchar.index(e) encoding.append(code[i]) kode = ''.join(encoding) #print(kode) i = 0 while len(kode) % 7!= 0: kode = '0' + kode i += 1 if i!= 0: bitflag = tobin(i) while len(bitflag) % 7!= 0: bitflag = '0' + bitflag kode = kode + bitflag else: kode = kode + '0000000' #print(kode) charkompresi = '' awal = 0 for i in range(7, len(kode)+1, 7): charkompresi += chr(int(kode[awal:i],2)) awal = i elapsedtime = measure.getelapsedltime() return sortedchar, charkompresi, elapsedtime #underconstruction def decodeelias(karakter, charkompresi): measure = Timer() Code = generatorkodeelias(len(karakter)) #print(code) #print(karakter) biner = ''

A6 for e in charkompresi: e = tobin(ord(e)) while len(e) < 7: e = '0' + e biner += e #print(biner) #print() jumlahpenambahan = int(biner[len(biner)-7:],2) biner = biner[:len(biner)-7] #print(biner, jumlahpenambahan) #print() #print(jumlahpenambahan) if jumlahpenambahan!= 0: biner = biner[jumlahpenambahan:] #print() #print(biner) kemungkinan = '' hasil = '' for e in biner: kemungkinan += e if kemungkinan in Code: hasil += karakter[code.index(kemungkinan)] kemungkinan = '' elapsedtime = measure.getelapsedltime() return hasil, elapsedtime def tulishasildecode(path, hasil): with codecs.open(path, "w", encoding = "utf-8") as file: file.write(hasil) file.close() return hasil #print("kesalahan: hasil encode tidak dapat disimpan.") return False def dekompres(path): f = codecs.open(path, 'r', encoding = 'UTF-8') data = f.read() #print(data) #f = open(path, 'r') #data = f.read() for i in range(len(data)): if data[i] == '#' and data[i+1] == '*' and data[i+2] == '#': karakter = data[:i] charkompresi = data[i+3:] #print(karakter) break algoritma = path[len(path)-3:] if algoritma == 'lev': hasil, elapsedtime = decodelevenstein(karakter, charkompresi) return hasil, elapsedtime elif algoritma == 'eld': hasil, elapsedtime = decodeelias(karakter, charkompresi)

A7 return hasil, elapsedtime #print("\ngagal membaca file.") return False def gerbang(f): if f == 'encodelev': data = readtxt(a) if data == False: data = A sizedata = len(data)/1024 sortedchar, charkompresi, elapsedtime = encodelevenstein(data) sizeafter = tulishasilencode(b, charkompresi, sortedchar) #print(sizeafter) sizeafter = sizeafter/1024 #print(len(data), sizedata, sizeafter) RC = sizedata / sizeafter CR = sizeafter / sizedata * 100 R = 100 - CR hasil = str(elapsedtime) + '/' + str(round(rc,3)) + '/' + str(round(cr,3)) + '/' + str(round(r,3)) print(hasil) elif f == 'encodeelias': data = readtxt(a) if data == False: data = A sizedata = len(data)/1024 sortedchar, charkompresi, elapsedtime = encodeelias(data) sizeafter = tulishasilencode(b, charkompresi, sortedchar) sizeafter = sizeafter/1024 RC = sizedata / sizeafter CR = sizeafter / sizedata * 100 R = 100 - CR hasil = str(elapsedtime) + '/' + str(round(rc,3)) + '/' + str(round(cr,3)) + '/' + str(round(r,3)) print(hasil) elif f == 'decode': hasil, elapsedtime = dekompres(a) teks = tulishasildecode(b, hasil) decode = hasil + '/' + elapsedtime print(decode) global f f = str(sys.argv[1]) global A A = str(sys.argv[2]) global B B = str(sys.argv[3]) gerbang(f) 2. Fungsi Kompresi Levenstein pada MainForm.cs public void runpythonkompreslevenstein(string data, string lokasisimpan){

A8 ProcessStartInfo p = new ProcessStartInfo(); p.filename = "c:\\python33\\python.exe"; p.redirectstandardoutput = true; p.useshellexecute = false; // make sure we can read the output from stdout p.arguments = "skripsiumri.py "+ "encodelev " + "\"" + data + "\" " + "\"" + lokasisimpan + "\""; // start the python program with two parameters try{ using(process exeproc = Process.Start(p)){ StreamReader s = exeproc.standardoutput; String output = s.readtoend(); string r = output; // get the parameter string hasil = r.tostring(); string[] parts = hasil.split('/'); string waktu = parts[0]; string rc = parts[1]; string cr = parts[2]; string redudancy = parts[3]; textboxtimeofcompression.text = waktu + " detik"; textboxcompressionratio.text = cr + " %"; textboxratioofcompression.text = rc; textboxredudancy.text = redudancy + " %"; catch{ //log //throw; MessageBox.Show("Kesalahan melakukan kompresi", "Kesalahan", MessageBoxButtons.OK, MessageBoxIcon.Error); 3. Fungsi Kompresi Elias Delta Code pada MainForm.cs public void runpythonkompreselias(string data, string lokasisimpan){ ProcessStartInfo p = new ProcessStartInfo(); p.filename = "c:\\python33\\python.exe"; p.redirectstandardoutput = true; p.useshellexecute = false; // make sure we can read the output from stdout p.arguments = "skripsiumri.py "+ "encodeelias " + "\"" + data + "\" " + "\"" + lokasisimpan + "\""; // start the python program with two parameters try{ using(process exeproc = Process.Start(p)){ StreamReader s = exeproc.standardoutput; String output = s.readtoend(); string r = output; // get the parameter string hasil = r.tostring(); string[] parts = hasil.split('/'); string waktu = parts[0];

A9 detik"; string rc = parts[1]; string cr = parts[2]; string redudancy = parts[3]; textboxtimeofcompression.text = waktu + " textboxcompressionratio.text = cr + " %"; textboxratioofcompression.text = rc; textboxredudancy.text = redudancy + " %"; catch{ //log //throw; MessageBox.Show("Kesalahan melakukan kompresi", "Kesalahan", MessageBoxButtons.OK, MessageBoxIcon.Error); /* * Ratio of Compression : Sebelum / Sesudah * Compession Ratio : ukuran data sebelum / sesudah * 100% * Redudancy : 100% dikurang compression ratio atau 1 - RC (pake percent) * * */ 4. Fungsi Kompres pada MainForm.cs void ButtonKompresiClick(object sender, EventArgs e) { if(string.isnullorwhitespace(textboxsavekompresi.text)){ MessageBox.Show("Destinasi penyimpanan file belum dipilih.", "Kesalahan Kompresi", MessageBoxButtons.OK, MessageBoxIcon.Error); else{ string filesourcepath = textboxfilepath.text.tostring(); string filedestinationpath = textboxsavekompresi.text.tostring(); if(radiobuttonkompresilevenstein.checked){ string ekstensifile = ".lev"; filedestinationpath += ekstensifile; //filedestinationpath = "teslev.txt"; //MessageBox.Show(fileDestinationPath); //runpythonkompres(richtextbox1.text.tostring(), filedestinationpath); runpythonkompreslevenstein(filesourcepath, filedestinationpath); else if(radiobuttonkompresieliasdelta.checked){ string ekstensifile = ".eld"; filedestinationpath += ekstensifile;

A10 runpythonkompreselias(filesourcepath, filedestinationpath); else{ MessageBox.Show("Jenis kompresi belum dipilih.", "Kesalahan Kompresi", MessageBoxButtons.OK, MessageBoxIcon.Error); 4. Fungsi Dekompres pada MainForm.cs public void runpythondekompresi(string file, string lokasisimpan){ ProcessStartInfo p = new ProcessStartInfo(); p.filename = "c:\\python33\\python.exe"; p.redirectstandardoutput = true; p.useshellexecute = false; // make sure we can read the output from stdout p.arguments = "skripsiumri.py "+ "decode " + "\"" + file + "\" " + "\"" + lokasisimpan + "\""; // start the python program with two parameters try{ using(process exeproc = Process.Start(p)){ StreamReader s = exeproc.standardoutput; String output = s.readtoend(); string r = output; // get the parameter string hasil = r.tostring(); //MessageBox.Show(hasil); string waktu = hasil.split('/').last(); textboxtimedecode.text = waktu + " detik"; richtextboxdecode.text = hasil.remove(hasil.length - 8, 8); //File.WriteAllText(lokasiSimpan, hasil.remove(hasil.length - 8, 8)); catch{ //log //throw; MessageBox.Show("Kesalahan melakukan dekompresi", "Kesalahan", MessageBoxButtons.OK, MessageBoxIcon.Error);

B1 CURRICULUM VITAE umri.erdiansyah umriye -------------------------------------------------------------------------------------------------------- Data Pribadi Nama : Umri Erdiansyah Tempat/Tanggal Lahir : Binjai / 13 Oktober 1992 Tinggi/Berat Badan : 174 cm / 88 kg Agama : Islam Kewarganegaraan : Indonesia Alamat Sekarang : Jl. GB Yosua No. 82 A Jati Karya Binjai 20746 Alamat Orang Tua : Jl. GB Yosua No. 82 A Jati Karya Binjai 20746 Telp/ Hp : 0896 1322 1112 Email : umrierdiansyah13@gmail.com -------------------------------------------------------------------------------------------------------- Riwayat Pendidikan [2010 2014] : S1 Ilmu Komputer, Medan [2007 2010] : SMA Negeri 1 Binjai [2004 2007] : SMP Negeri 1 Binjai [1998 2004] : SD Negeri 023898 Binjai -------------------------------------------------------------------------------------------------------- Keahlian/Kursus Keahlian Bahasa : [2007 2009] : Kursus Bahasa Inggris GETS Keahlian Komputer : Pemrograman : Python, C# Database : MysQL

B2 Perkantoran : Microsoft Office -------------------------------------------------------------------------------------------------------- Pengalaman Organisasi [2008 2009] OSIS SMA Negeri 1 Binjai [2007 2009] Bengkel Sastra Bianglala SMA Negeri 1 Binjai [2010 2011] Anggota Kewirausahaan BKM Al-Khuwarizmi 2010-2011 [2012 2013] Anggota Kemahasiswaan IMILKOM 2012-2013 -------------------------------------------------------------------------------------------------------- Pengalaman Kepanitiaan [2010] Ketua Buka Bersama dan Sahur on the Road BKM Al-Khuwarizmi [2012] Anggota Acara PORSENI IMILKOM 2012 [2012] Anggota Acara PMB IMILKOM 2012 -------------------------------------------------------------------------------------------------------- Seminar [2014] Seminar Nasional Literasi Informasi SENARAI