Podprogram (synonymá resp. v závislosti od programovacieho jazyka čiastočné synonymá sú procedúra, funkcia, metóda) je časť kódu vnútri väčšieho programu, ktorá vykonáva špecifickú úlohu a môže byť relatívne nezávislá od ostatného kódu. Syntax viacerých programovacích jazykov zahŕňa podporu pre vytváranie ? podprogramov a pre ich ?volanie a opakovanie.

Vo veľa prípadoch sú podobné funkciám, ale majú bočné efekty mimo? jednoduchej spätnej premennej, ktorú vracia funkcia. Niektoré programovacie jazyky majú veľmi malé syntaktické odlišnosti medzi funkciami a podprogramami.

Je veľa výhod, prečo deliť program na podprogramy:
- redukuje sa duplicita kódu v programe
- možnosť opakovania kódu?? v zložených programoch
- rozloženie komplexných problémov na jednoduchšie časti
- vylepšenie čitateľnosti programu
- skrytie alebo regulovanie časti programu

Zložky podprogramu:
- telo kódu, ktorý má byť vykonaný pri zavolaní podprogramu
- parametre, ktoré sú podané podprogramu od bodu, keď je zavolaný
- hodnota, ktorá je vrátená, keď nastane volanie

Veľa programovacích jazykov, ako Pascal, FORTRAN, Ada odlišujú funkcie a funkcionálne podprogramy (ktoré vracajú hodnoty) od podprogramov a procedúr (ktoré nevracajú). Niektoré jazyky, ako C a LISP, nerobia tieto odlišnosti?? a pokladajú tieto termíny za synonymá. Názov metóda je bežne používaný v spojení s objektovo orientovaným programovaním, špeciálne pre podprogramy ktoré sú súčasťou objektov, tiež je používaný v súvislosti s typom trieda.

Maurice Wilkes, Stanley Gill a David Wheeler sú uznávani za vynájdenie podprogramu.