Project Semester Antara

Project Semester Antara

SOAL TUGAS AKHIR SEMESTER ANTARA (SA)

FAKULTAS TEKNOLOGI INFORMASI

Periode Pelaksanaan: 17 Juni – 27 Juni 2026

Dosen Pengampu: Alimin, M.Kom

Sifat Tugas: Mandiri / Individu

Petunjuk Umum Pengerjaan:

  1. Mahasiswa wajib mengerjakan tugas untuk setiap mata kuliah yang ditempuh pada Semester Antara ini.

  2. Tugas format berupa Review Paper Jurnal + Implementasi Kode Program Sederhana.

  3. Output tugas dikumpulkan dalam bentuk Laporan PDF (Maksimal 3 Halaman per mata kuliah) dengan format penamaan file: NIM_Nama_MataKuliah_SA2026.pdf. Kirim Ke Email (alimin@itbyadika.ac.id)

  4. Batas akhir pengumpulan adalah 27 Juni 2027 melalui sistem akademik kampus.

BENTUK DAN STRUKTUR SOAL PER MATA KULIAH

1. Mata Kuliah: Keamanan Sistem Informasi

  • A. Instruksi Review Paper:

    • Carilah 1 Jurnal/Paper (Nasional/Internasional) terbitan 5 tahun terakhir dengan tema: "Penerapan Algoritma Kaining/Hashing (MD5 / SHA-256 / AES) untuk Keamanan Autentikasi/Password".

    • Tulis resume singkat yang mencakup: Masalah utama siber yang diangkat, Metode enkripsi yang diajukan, dan Hasil efektivitasnya.

  • B. Instruksi Implementasi (Coding):

    • Buatlah sebuah fungsi/skrip kode pendek (menggunakan Python/PHP/Java) untuk mengubah sebuah string teks biasa (Plaintext) menjadi string terenkripsi (Hash SHA-256 atau MD5).

  • C. Output Laporan: Screenshot potongan kode program dan hasil terminal yang menampilkan teks sebelum dan sesudah di-hash.

2. Mata Kuliah: Pemrograman Database Berbasis Desktop

  • A. Instruksi Review Paper:

    • Carilah 1 Jurnal/Paper dengan tema: "Arsitektur Konektivitas Aplikasi Desktop dengan Database Management System (DBMS) Menggunakan JDBC/ODBC".

    • Tulis resume singkat mengenai: Kendala koneksi data yang sering terjadi pada aplikasi desktop dan solusi arsitektur database yang ditawarkan oleh paper tersebut.

  • B. Instruksi Implementasi (Coding):

    • Buatlah skrip koneksi database (menggunakan pustaka seperti PyMySQL, Connector/J, atau sejenisnya) yang berfungsi mendeteksi status jaringan ke database lokal.

  • C. Output Laporan: Screenshot kode koneksi serta pop-up / teks indikator di layar yang memunculkan pesan "Koneksi ke Database Berhasil!".

3. Mata Kuliah: Praktikum Pemrograman Berbasis Desktop

  • A. Instruksi Review Paper:

    • Carilah 1 Jurnal/Paper dengan tema: "Implementasi Desain Pattern CRUD (Create, Read, Update, Delete) pada Aplikasi Desktop Mandiri".

    • Tulis resume singkat mengenai: Bagaimana struktur kode atau fungsi manipulasi data diatur agar aplikasi tidak mengalami crash saat memproses data.

  • B. Instruksi Implementasi (Coding):

    • Buatlah sebuah fungsi spesifik untuk "Insert" (Simpan Data) atau "Delete" (Hapus Data) ke dalam satu tabel database (boleh menggunakan SQLite agar ringan tanpa instalasi server).

  • C. Output Laporan: Screenshot visual GUI/aplikasi sebelum tombol aksi diklik, dan kondisi data di database setelah tombol ditekan.

4. Mata Kuliah: Pengolahan Citra (Image Processing)

  • A. Instruksi Review Paper:

    • Carilah 1 Jurnal/Paper dengan tema: "Metode Pre-processing Citra Digital (Grayscale / Thresholding / Canny Edge Detection) untuk Identifikasi Objek".

    • Tulis resume singkat mengenai: Mengapa kualitas gambar asli perlu diubah ke hitam-putih/fitur tepi sebelum diproses oleh sistem utama.

  • B. Instruksi Implementasi (Coding):

    • Buatlah program pendek memanfaatkan library pengolahan citra (seperti OpenCV / Pillow) untuk memanipulasi 1 file gambar berwarna menjadi gambar grayscale (abu-abu) atau mendeteksi garis tepinya.

  • C. Output Laporan: Screenshot baris kode operasi piksel gambar, serta lampiran foto Before (Berwarna) dan After (Grayscale/Edge) berdampingan.

5. Mata Kuliah: Blockchain

  • A. Instruksi Review Paper:

    • Carilah 1 Jurnal/Paper dengan tema: "Konsep Struktur Data Ledger Berantai (Blockchain) dalam Menjaga Integritas Data".

    • Tulis resume singkat mengenai: Bagaimana mekanisme hash blok sebelumnya (Previous Hash) dapat mencegah manipulasi atau pemalsuan data digital.

  • B. Instruksi Implementasi (Coding):

    • Buatlah simulasi kelas (Class) objek Block sederhana di pemrograman yang memiliki komponen: Data, Timestamp, Previous Hash, dan Current Hash. Sambungkan minimal 2 atau 3 blok data terikat.

  • C. Output Laporan: Screenshot struktur objek kode dan hasil print-out terminal yang membuktikan nilai hash Blok 1 menjadi landasan Previous Hash di Blok 2.

STRUKTUR SISTEMATIKA LAPORAN (MAKSIMAL 3 HALAMAN PER MATKUL)

  • Halaman 1: Identitas & Review Paper

    • Judul Paper, Nama Jurnal, Tahun, Penulis.

    • Ringkasan (Masalah, Metode, Hasil).

  • Halaman 2: Kode Sumber (Source Code)

    • Screenshot potongan kode penting/inti yang menjawab soal implementasi.

  • Halaman 3: Hasil Pengujian (Output)

    • Screenshot bukti program berjalan sukses di laptop/komputer masing-masing mahasiswa

Template Kode Berbasis Python - Semester Antara

Berikut adalah template kode berbasis Python untuk kelima mata kuliah. Bahasa ini dipilih karena mudah dipahami dan proses instalasi library-nya cepat untuk kebutuhan praktikum mahasiswa.

1 Keamanan Sistem Informasi (Template Hashing Password)

Mahasiswa hanya perlu mengganti teks "isi_password_di_sini" dan mencoba algoritma lain jika ingin bereksperimen.

import hashlib

def amankan_password():
    # TODO: Mahasiswa diminta mengganti teks password di bawah ini
    password_asli = "isi_password_di_sini" 
    
    # Proses Hashing menggunakan SHA-256
    hash_object = hashlib.sha256(password_asli.encode())
    password_terenkripsi = hash_object.hexdigest()
    
    print("========== KELOMPOK KEAMANAN SISTEM ==========")
    print(f"Password Teks Biasa : {password_asli}")
    print(f"Hasil Enkripsi SHA-256: {password_terenkripsi}")
    print("==============================================")

# Jalankan fungsi
amankan_password()

2 Pemrograman Database Berbasis Desktop (Template Koneksi Database)

Template ini menggunakan SQLite agar mahasiswa tidak perlu menginstal MySQL/XAMPP yang berat jika terkendala spek laptop. Namun jika tetap menggunakan MySQL, tinggal menyesuaikan library-nya.

import sqlite3

def cek_koneksi_database():
    try:
        # Mencoba membuka/membuat file database lokal bernama 'kampus_sa.db'
        koneksi = sqlite3.connect('kampus_sa.db')
        
        print("========== CEK KONEKSI DATABASE ==========")
        print("Status: KONEKSI BERHASIL!")
        print("Database 'kampus_sa.db' siap digunakan.")
        print("==========================================")
        
        koneksi.close()
    except Exception as error:
        print(f"Status: KONEKSI GAGAL! Alasan: {error}")

# Jalankan fungsi
cek_koneksi_database()

3 Praktikum Pemrograman Berbasis Desktop (Template Fungsi Tambah Data/Insert)

Melanjutkan database di atas, mahasiswa diminta melengkapi bagian logika untuk memasukkan data mahasiswa baru ke dalam tabel.

import sqlite3

def tambah_data_mahasiswa():
    koneksi = sqlite3.connect('kampus_sa.db')
    cursor = koneksi.cursor()
    
    # Membuat tabel jika belum ada
    cursor.execute('''CREATE TABLE IF NOT EXISTS mahasiswa (nim TEXT, nama TEXT)''')
    
    # Data yang akan dimasukkan
    # TODO: Mahasiswa diminta mengubah NIM dan Nama mereka sendiri di sini
    nim_mhs = "20260001"
    nama_mhs = "Nama Mahasiswa SA"
    
    # Logika SQL Query untuk Tambah Data
    try:
        cursor.execute("INSERT INTO mahasiswa (nim, nama) VALUES (?, ?)", (nim_mhs, nama_mhs))
        koneksi.commit()
        print("Status: DATA BERHASIL DISIMPAN KE DATABASE!")
    except Exception as e:
        print(f"Status: GAGAL MENYIMPAN DATA. Alasan: {e}")
        
    koneksi.close()

# Jalankan fungsi
tambah_data_mahasiswa()

4 Pengolahan Citra / Image Processing (Template Konversi Grayscale)

Mahasiswa cukup menyiapkan satu file gambar bernama input.jpg di folder yang sama, lalu menjalankan skrip ini menggunakan library OpenCV (pip install opencv-python).

import cv2

def proses_gambar():
    # Ambil gambar berwarna
    # TODO: Pastikan mahasiswa menyediakan file 'input.jpg' di folder yang sama
    gambar_asli = cv2.imread('input.jpg')
    
    if gambar_asli is None:
        print("Error: File 'input.jpg' tidak ditemukan! Taruh foto di folder yang sama.")
        return

    # TODO: Mahasiswa menuliskan baris kode konversi ke Grayscale di bawah ini
    gambar_abu = cv2.cvtColor(gambar_asli, cv2.COLOR_BGR2GRAY)
    
    # Simpan hasil gambar baru
    cv2.imwrite('output_grayscale.jpg', gambar_abu)
    
    print("========== PROSES CITRA SELESAI ==========")
    print("Gambar 'output_grayscale.jpg' berhasil dibuat!")
    print("==========================================")

# Jalankan fungsi
proses_gambar()

5 Blockchain (Template Pembuatan Blok Berantai Sederhana)

Mahasiswa diberikan struktur dasar pembuatan Blok. Mereka diminta melengkapi logika penyambungan blok ke-2 agar mengambil nilai hash dari blok ke-1.

import hashlib
import time

class Block:
    def __init__(self, data, previous_hash):
        self.timestamp = time.time()
        self.data = data
        self.previous_hash = previous_hash
        self.hash = self.hitung_hash()

    def hitung_hash(self):
        # Menggabungkan komponen data menjadi satu string hash
        payload = str(self.timestamp) + str(self.data) + str(self.previous_hash)
        return hashlib.sha256(payload.encode()).hexdigest()

# --- PROSES PEMBUATAN RANTAI (CHAIN) ---
print("========== SIMULASI BLOCKCHAIN ==========")

# 1. Membuat Blok Pertama (Genesis Block)
genesis_block = Block("Data Transaksi Awal Kampus", "0")
print(f"Blok 1 (Genesis) Berhasil Dibuat!")
print(f"-> Hash Blok 1: {genesis_block.hash}\n")

# 2. Membuat Blok Kedua yang terikat dengan Blok Pertama
# TODO: Mahasiswa diminta mengisi argumen second_parameter dengan hash dari genesis_block
blok_kedua = Block("Data Transaksi Mahasiswa SA", genesis_block.hash)
print(f"Blok 2 Berhasil Dibuat!")
print(f"-> Previous Hash Blok 2: {blok_kedua.previous_hash}")
print(f"-> Hash Blok 2        : {blok_kedua.hash}")
print("=========================================")