Skip to content

LatiefDataVisionary/data-structures-and-algorithms-college-task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧮 Struktur Data & Algoritma (218202-23)

Badge Badge Badge Badge

Dosen: Fadil Indra Sanjaya, S.Kom., M.Kom
Jadwal: Selasa, 15:30-17:10 WIB | K1 - H.31
Kelas: A23

📚 Deskripsi Mata Kuliah

Repository ini berisi materi, tugas, dan implementasi untuk mata kuliah Struktur Data dan Algoritma. Fokus pembelajaran meliputi:

  • Fundamental struktur data di Python
  • Implementasi Linked List, Stack, dan Queue
  • Analisis kompleksitas algoritma
  • Penyelesaian kasus berbasis OOP

🗂️ Struktur Repository

📦 SDA-218202-23 ├── 📂 00_Administrasi │ ├── 📜 Silabus.pdf │ └── 📜 Kontrak_Kuliah.md ├── 📂 01_Dasar_Python │ ├── 📜 1.1_Collection_Types.ipynb │ └── 📜 1.2_OOP_Dasar.py ├── 📂 02_Linked_List │ ├── 📜 2.1_Single_Linked_List.py │ └── 📜 2.2_Double_Linked_List.py ├── 📂 03_Stack_Queue │ ├── 📜 3.1_Stack_Implementation.py │ └── 📜 3.2_Queue_Implementation.py ├── 📂 04_Tugas │ ├── 📂 Tugas_1_Collection_Types │ └── 📂 Tugas_2_Class_Implementation ├── 📂 05_UTS_UAS │ ├── 📜 Bank_Soal_UTS.pdf │ └── 📜 Contoh_Solusi.ipynb └── 📜 README.md 

📅 Agenda Pembelajaran

Minggu Materi Status
1 Pengenalan Matkul & Dasar Python
2 Tugas Collection Types
3 Kosong (Belajar Mandiri)
4 Tugas OOP
5 Tuple, Array, List, Set, Dict
6 Libur Puasa 🕌
7 Class Python & Persiapan UTS 📝
8-9 Materi Tambahan
10 Single & Double Linked List 🚧
11 Stack
12 Queue
13-14 Review & UAS

💻 Implementasi Kode

Contoh Single Linked List

class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None def print_list(self): current = self.head while current: print(current.data, end=" -> ") current = current.next print("None")

📊 Kompleksitas Algoritma

Struktur Data Akses Pencarian Penyisipan Penghapusan
Array O(1) O(n) O(n) O(n)
Linked List O(n) O(n) O(1) O(1)
Stack (array) O(1) - O(1) O(1)
Queue (linked list) O(1) - O(1) O(1)

🔧 Tools & Referensi

  • Python 3.10+
  • Visual Studio Code
  • Jupyter Notebook
  • Buku Referensi:
    • Data Structures and Algorithms in Python - M. Goodrich
    • Problem Solving with Algorithms - B. Miller

🤝 Kontribusi

  1. Fork repository
  2. Buat branch (git checkout -b fitur-baru)
  3. Commit perubahan (git commit -m 'Tambahkan implementasi stack')
  4. Push ke branch (git push origin fitur-baru)
  5. Buat Pull Request

© Nama Anda | 2024 | GitHub

 ### Fitur Khusus: ✅ **Diagram kompleksitas algoritma** ✅ **Contoh kode implementasi langsung** ✅ **Tracking progress pembelajaran** ✅ **Struktur folder siap pakai** ✅ **Badge interaktif** Tips: - Ganti `username` dengan GitHub Anda - Tambahkan screenshot implementasi di folder terkait - Update status materi tiap minggu Untuk versi interaktif, tambahkan diagram Mermaid: ````markdown ```mermaid flowchart LR A[Struktur Data] --> B[Linear] A --> C[Non-Linear] B --> B1[Array] B --> B2[Linked List] B --> B3[Stack] B --> B4[Queue] C --> C1[Tree] C --> C2[Graph] 

Berikut kelanjutan dari README.md yang lebih mendalam dan interaktif untuk mata kuliah Struktur Data & Algoritma:


🧠 Visualisasi Konsep

1. Perbandingan Struktur Data

mindmap root((Struktur Data)) Linear Array Linked List Single Double Stack Queue Priority Queue Non-Linear Tree Binary Tree AVL Graph Directed Undirected 
Loading

2. Alur Stack vs Queue

flowchart LR subgraph Stack A[Push] --> B[Top] B --> C[Pop] end subgraph Queue D[Enqueue] --> E[Front] E --> F[Dequeue] end 
Loading

🔥 Cheat Sheet Cepat

Operasi Dasar

Operasi Python Syntax Kompleksitas
List Append list.append(x) O(1)
List Insert list.insert(i,x) O(n)
Dict Lookup dict[key] O(1)
Set Union `set1 set2`

Template Class

class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None def insert_at_end(self, data): new_node = Node(data) if not self.head: self.head = new_node return last = self.head while last.next: last = last.next last.next = new_node

📌 Bank Soal Praktik

Level 1 (Dasar)

  1. Implementasi stack menggunakan list
  2. Reverse linked list secara in-place
  3. Hitung frekuensi elemen unik dalam list

Level 2 (Menengah)

  1. Validasi parentheses balance {[()]}
  2. Implementasi queue menggunakan 2 stack
  3. Deteksi cycle dalam linked list

Level 3 (Lanjutan)

  1. Merge k sorted linked lists
  2. Implementasi Min-Stack dengan O(1) operation
  3. Serialize & deserialize binary tree

🛠️ Development Setup

Run Python Environment

# Buat virtual environment python -m venv sda-env # Aktifkan (Windows) sda-env\Scripts\activate # Install requirements pip install -r requirements.txt

Contoh requirements.txt

numpy==1.24.3 matplotlib==3.7.1 pytest==7.4.0 

📈 Statistik Pembelajaran

gantt title Timeline Belajar dateFormat YYYY-MM-DD section Minggu 1-7 Dasar Python :done, des1, 2024-03-05, 7d Collection Types :active, des2, 2024-03-12, 14d section Minggu 8-14 Linked List : des3, 2024-04-02, 21d UTS & UAS Prep : des4, 2024-04-23, 14d 
Loading

💡 Tips Belajar Efektif

  1. 30 Menit/Hari praktik coding
  2. Feynman Technique: Jelaskan konsep ke teman
  3. Spaced Repetition: Review materi tiap minggu
  4. Rubber Duck Debugging: Debug dengan menjelaskan kode line-by-line

🚀 Next Steps

  1. Implementasikan semua struktur data dari scratch
  2. Selesaikan 1 problem LeetCode/HackerRank per hari
  3. Bangun project akhir: Visualizer Struktur Data dengan PyGame
# Contoh awal visualizer import pygame pygame.init() screen = pygame.display.set_mode((800, 600)) running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False pygame.display.flip() pygame.quit()

Dengan struktur ini, Anda memiliki: ✅ Panduan belajar terstruktur
Referensi kode siap pakai
Latihan soal bertingkat
Visualisasi konsep interaktif
Timeline progress otomatis

Untuk update lebih lanjut, silakan customisasi dengan:

  • Screenshot hasil implementasi
  • Video penjelasan konsep
  • Link notebook Google Colab