Metode desain program yang sistematis dapat membantu developers untuk memastikan kebenaran dan kinerja program sambil meminimalkan biaya pengembangan. Course ini menjelaskan metode yang dimulai dengan spesifikasi komputasi yang jelas dan menghasilkan implementasi yang efisien dengan analisis dan transformasi program bertahap. Metode ini berlaku untuk masalah yang ditentukan dalam komponen perangkat lunak, jenis perangkat lunak, ruang lingkup perangkat lunak, desain dan model prototipe.
Topik yang akan dibahas adalah Perangkat Lunak dan Komponennya, Definisi Perangkat Lunak, Siklus Hidup Perangkat Lunak, Proyek Perangkat Lunak, Persyaratan Perangkat Lunak, Spesifikasi Perangkat Lunak, Desain Perangkat Lunak, Proses Desain Perangkat Lunak, Konsep Desain Modularitas, serta Desain dan arsitektur data.
Setelah menyelesaikan course ini, diharapkan student dapat mengetahui macam-macam komponen perangkat lunak serta memahami definisi, komponen dan aplikasi perangkat lunak, mengetahui alur kehidupan yang menyusun perangkat lunak, mendiskusikan tujuan, ruang lingkup dan sumber daya yang dibutuhkan dalam proyek perangkat lunak, mendiskusikan analisis kebutuhan yang dilakukan sehinggabahwa perangkat lunak yang dibuat dapat memenuhi, membahas spesifikasi perangkat lunak yang digunakan untuk memenuhi kebutuhan pengguna, membahas tentang cara membuat desain perangkat lunak dan merekayasanya, membiasakan diri dengan prinsip dan konsep desain, membahas proses desain perangkat lunak, membahas desain modular yang efektif, model desain dandesain dokumentasi, membahas pembuatan desain dan arsitektur data hingga pemrograman.