Il codice sorgente e il codice oggetto si riferiscono alle versioni "prima" e "dopo" di un programma per computer che viene compilato (vedere compilatore) prima di essere pronto per essere eseguito su un computer. Il codice sorgente è costituito dalle istruzioni di programmazione che vengono create da un programmatore con un editor di testo o uno strumento di programmazione visuale e quindi salvate in un file. Ad esempio, un programmatore che utilizza il linguaggio C digita una sequenza desiderata di istruzioni in linguaggio C utilizzando un editor di testo e quindi le salva come file con nome. Si dice che questo file contenga il codice sorgente. Ora è pronto per essere compilato con un compilatore C e l'output risultante, il file compilato, viene spesso definito codice oggetto. Il file di codice oggetto contiene una sequenza di istruzioni che il processore può comprendere ma che è difficile da leggere o modificare per un essere umano. Per questo motivo e poiché anche i programmi sottoposti a debug necessitano spesso di miglioramenti successivi, il codice sorgente è la forma più permanente del programma.
Quando si acquista o si riceve il sistema operativo o il software applicativo, di solito è sotto forma di codice oggetto compilato e il codice sorgente non è incluso. I fornitori di software proprietario di solito non vogliono che tu provi a migliorare il loro codice poiché ciò potrebbe creare loro costi di servizio aggiuntivi. Ultimamente c'è un movimento per sviluppare software (Linux è un esempio) che è aperto a ulteriori miglioramenti da parte di chiunque voglia migliorarlo, e qui viene fornito il codice sorgente.
Negli ambienti di sviluppo di programmi di grandi dimensioni, ci sono spesso sistemi di gestione che aiutano i programmatori a separare e tenere traccia dei diversi stati e livelli dei file di codice. Per i linguaggi di programma script (non compilati o interpretati), come JavaScript, i termini codice sorgente e codice oggetto non si applicano poiché esiste una sola forma del codice.