4 poin oleh GN⁺ 2025-10-25 | 1 komentar | Bagikan ke WhatsApp
  • Tulisan ini mengusulkan mata kuliah ilmu komputer yang realistis sekaligus satir, yang seharusnya dipelajari para pengembang perangkat lunak, meskipun sebenarnya tidak ada
  • Setiap mata kuliah secara kritis menyingkap masalah dalam budaya pengembangan modern dan pola pikir yang bias
  • Misalnya, dibahas keyakinan berlebihan pada paradigma berorientasi objek, pengabaian UX pada alat baris perintah, dan kesalahpahaman tentang performa bahasa yang lambat
  • Juga mencakup mata kuliah yang membahas obsesi psikologis dan kebiasaan tidak produktif para pengembang
  • Secara keseluruhan, tulisan ini secara humoris menunjukkan keterbatasan pendidikan ilmu komputer dan perlunya refleksi diri dalam budaya pengembangan

CSCI 2100: Melupakan Pemrograman Berorientasi Objek

  • Mata kuliah ini mempelajari konsep variabel dan fungsi yang tidak termasuk dalam hierarki objek
    • Keluar dari pola pikir yang berpusat pada object-oriented, lalu mengeksplorasi fleksibilitas dan kesederhanaan dari pemrograman fungsional
    • Memperkenalkan “fungsi (function)” sebagai konsep yang lebih umum dan dapat digunakan ulang dibanding “metode (method)”
  • Prasyaratnya adalah mata kuliah apa pun yang pernah menggunakan istilah “abstract base class”
  • Tujuannya adalah membongkar ketergantungan berlebihan pada paradigma berorientasi objek dan menata ulang cara berpikir yang lebih mendasar tentang pemrograman

CSCI 3300: Studi Perangkat Lunak Klasik

  • Kelas ini menganalisis dan mendiskusikan produk-produk perangkat lunak yang penting secara historis
    • Contoh yang dibahas mencakup VisiCalc, AppleWorks, Robot Odyssey, Zork, MacPaint
  • Fokusnya tertuju pada antarmuka pengguna (UI) dan pengaruh keterbatasan perangkat keras terhadap kreativitas
  • Melalui inovasi yang lahir dari berbagai keterbatasan masa lalu, mata kuliah ini menyoroti kembali prinsip-prinsip dasar desain perangkat lunak modern

CSCI 4020: Menulis Kode Cepat dalam Bahasa yang Lambat

  • Membahas cara menulis kode berperforma tinggi bahkan dengan bahasa interpreter (seperti Python)
    • Mengeksplorasi strategi untuk melakukan analisis performa di tingkat tinggi sekaligus mencapai efisiensi setara C++
  • Secara bersamaan mengejar pengurangan kerapuhan kode dan tetap terjaganya kesenangan dalam pengembangan
  • Mata kuliah ini mematahkan anggapan bahwa “bahasa yang lambat memang lambat”, sambil menunjukkan potensi optimasi dalam desain bahasa dan lingkungan eksekusi

CSCI 2170: Pengalaman Pengguna (UX) untuk Alat Baris Perintah

  • Mata kuliah pengantar yang membahas prinsip-prinsip desain pengalaman pengguna untuk program berbasis baris perintah
    • Relevansi, keterbacaan, dan minimalisme dalam output menjadi topik utamanya
  • Menggunakan perintah UNIX ls sebagai studi kasus untuk menganalisis masalah opsi yang berlebihan dan antarmuka yang terlalu kompleks
  • Menekankan bahwa alat baris perintah pun, seperti UI grafis, memerlukan desain yang berpusat pada pengguna

PSYC 4410: Psikologi Obsesi Programmer

  • Mengeksplorasi obsesi tidak produktif dan pola pikir kompulsif yang sering menjerat pengembang perangkat lunak
    • Contoh: pemformatan kode, taksonomi, sistem tipe, pemecahan file yang berlebihan, dan sebagainya
  • Menganalisis secara psikologis reaksi kritik spontan (knee-jerk criticism) yang muncul saat menghadapi sistem yang tidak familier
  • Kelas ini membantu memahami bias kognitif dan kecenderungan perfeksionis para pengembang, serta mencari keseimbangan antara kolaborasi dan kreativitas

Konteks Keseluruhan

  • Daftar ini bukan rencana kuliah sungguhan, melainkan kritik satir terhadap pendidikan ilmu komputer dan budaya pengembangan
  • Setiap mata kuliah menyingkap titik buta dalam cara berpikir yang terlalu berpusat pada teknologi, sambil mendorong pengembang untuk memiliki keluwesan berpikir dan refleksi diri
  • Meski dipublikasikan pada 2015, tulisan ini memuat keprihatinan yang tetap relevan hingga hari ini

1 komentar

 
GN⁺ 2025-10-25
Opini Hacker News
  • CSCI 3300: Kajian Perangkat Lunak Klasik
    Hal yang telah ditekankan Alan Kay selama beberapa dekade adalah bahwa kita terus menemukan kembali konsep-konsep yang sebenarnya sudah mapan sejak akhir 1970-an
    Saya memahami kekecewaannya bahwa programmer juga perlu mempelajari sejarah ilmu komputer, sebagaimana seniman mempelajari sejarah seni

    • Saat saya kuliah di RIT, ada mata kuliah pilihan bernama ‘History of Computing’. Isinya membahas mulai dari sempoa hingga mainframe dan jaringan, dan catatan kuliahnya masih ada sampai sekarang
    • Sejarah seni atau filsafat membentang ribuan tahun, tetapi sejarah komputasi baru sekitar satu generasi atau dua-tiga generasi saja
      Rasanya sulit membandingkan komputasi yang bergantung pada performa perangkat keras fisik dengan seni
      Menganggap cara menyelesaikan masalah pada 1970 bisa diterapkan begitu saja pada 2025 berarti mengabaikan realitas
    • Saya pernah melihat di GitHub pertanyaan “apa bedanya ini dengan Ansible?” dijawab dengan “saya baru pertama kali dengar Ansible”
      Menarik melihat pengulangan penemuan ulang ketika tiap generasi mengira merekalah yang pertama menemukannya
    • Saat bekerja dengan para founder, sering kali saya melihat konsep yang sebenarnya sudah ada dipasarkan seolah-olah sebagai hal baru
      Mempelajari masalah dan solusi masa lalu sama sekali bukan pemborosan waktu
    • Di masa kuliah, saya pernah mendapat tugas ‘esai sejarah sistem operasi’, dan saya memilih OS X (Snow Leopard)
      Melalui proses itu saya jadi sangat memahami evolusi Unix dan perangkat lunak komersial, dan sepenuhnya setuju dengan Alan Kay
  • CSCI 3240: Mengabaikan Hype
    Ini adalah mata kuliah untuk belajar mengabaikan tren platform atau library terbaru
    Lalu CSCI 3120: Novelty Driven Development justru membahas cara mengikuti tren agar tetap tertarik dan termotivasi
    Kedua mata kuliah ini tidak bisa diambil bersamaan
    Mata kuliah lain yang serupa mencakup keterampilan rapat (PSYC 4870), menerima friksi organisasi (PSYC 5630), dan lain-lain,
    yang membahas komunikasi dan motivasi di tempat kerja secara realistis

  • CSCI 4810: The Refusal Lab
    Mata kuliah laboratorium yang mensimulasikan permintaan produk yang tidak etis dan tekanan tenggat, dan hanya bisa lulus jika mampu menolaknya dengan standar profesional

    • CSCI 4812: The Career Lab membahas realitas harus membereskan pekerjaan yang tersisa setelah rekan kerja menerima tuntutan tidak etis lalu pergi
    • Faktanya, banyak program gelar memang sudah memasukkan mata kuliah terkait etika
    • Namun pada akhirnya universitas tetap memprioritaskan kemampuan kerja lulusannya
  • Usulan mata kuliah debugging
    Akan bagus jika ada mata kuliah untuk mempelajari cara menemukan akar penyebab bug dan menggunakan berbagai alat

    • Seperti praktikum kimia, bentuknya bisa berupa memberi mahasiswa codebase legacy yang penuh bug, lalu kelas selesai ketika semua pengujian berhasil dilewati
    • Membaca kode orang lain, serta belajar untuk tidak sembarangan merobohkan struktur yang sudah ada (Chesterton’s fence), juga harus diajarkan
    • Bahkan banyak engineer senior masih melakukan debugging dengan print
      Perlu ada waktu untuk membahas penyelamat bernama interactive debugging
  • CSCI 0001: Functional programming and type theory
    Istilah dan rumus akademis yang sulit dipahami telah lama menghambat popularisasi functional programming
    Sekarang saatnya belajar langsung mengapa monad adalah monoid dalam kategori endofunctor

    • Fungsi murni bekerja sangat alami bahkan di dalam context window
  • CSCI 4020: Menulis Kode Cepat dalam Bahasa yang Lambat
    Mata kuliah yang mengajarkan kompleksitas algoritma lewat bahasa yang lambat (VB, Ruby, dan sebagainya), sambil menunjukkan bahwa O(N) di Ruby bisa mengalahkan O(N²) di C++

    • Saya ingat sebuah buku yang saya baca waktu kecil membandingkan bubble sort di FORTRAN dan quicksort di BASIC,
      dan saya terkejut karena BASIC ternyata menunjukkan hasil yang lebih cepat
    • Saya pernah melakukan praktik mengubah loop Python menjadi operasi vektor numpy dan operasi tensorflow sambil mengukur selisih kecepatannya
      Dari situ saya bisa benar-benar merasakan mengapa Python berguna dalam AI
    • Akan sangat bagus jika engineer yang memakai Python setiap hari benar-benar memahami mengapa kodenya lambat
    • Sering kali pemanfaatan hardware membuat perbedaan yang lebih besar daripada kompleksitas algoritma
      Kode tervectorisasi pada memori linear jauh lebih cepat daripada data yang tersebar di heap
    • Bacaan rujukan: Visual Basic Algorithms Ready-to-Run
  • Kumpulan seri sebelumnya
    Seri “Computer science courses that don't exist, but should” berlanjut dalam
    edisi 2015 (247 comments),
    edisi 2017,
    edisi 2018

  • Saya teringat mata kuliah Software Archaeology yang pernah saya ambil saat kuliah
    Itu adalah kelas yang mengimplementasikan ulang soal latihan compiler dari tahun 1970-an,
    dan walaupun saat itu terasa tidak berguna, belakangan sangat membantu dalam memahami desain sistem

    • Dalam praktiknya, kerja detektif digital sangat penting di codebase skala besar
      Kemampuan menelusuri bug lama, wiki, riwayat versi, dan riwayat tim adalah hal yang esensial
  • Saat ini banyak program ilmu komputer pada dasarnya telah berubah menjadi sekolah kejuruan coding
    Mahasiswa bisa memakai framework, tetapi tidak memahami filosofi perancangan bahasa atau evolusi sistem
    Kita tidak boleh lupa bahwa komputasi bukan hanya soal implementasi, tetapi juga disiplin tentang gagasan dan ide

    • Namun beberapa universitas negeri besar masih mempertahankan susunan mata kuliah inti yang sama seperti 25 tahun lalu
      Karena standar akreditasi, kurikulum sulit menyimpang jauh
  • CSCI 3210: Encoding dan pemrosesan teks modern
    Kelas untuk mempelajari Unicode dan UTF-8, serta meninggalkan gagasan bahwa ‘1 karakter = 1 byte’
    Tidak hanya encoding, tetapi juga mencakup pencarian, pengurutan, rendering font, dan pemrosesan emoji
    Dasarnya penting, tetapi hanya sedikit orang yang benar-benar memahaminya