Kodningsteori är teorin om hur man på lämpligaste sätt kodar information för att komprimera, överföra eller skydda data.
Claude Shannons "A Mathematical Theory of Communication (1948)" är ursprunget till den moderna informations- och kodningsteorin. I denna utvecklar han matematiska begrepp för information, entropi och redundans hos data och grunderna för kodningssystem. Shannon tar upp två olika fall av kodning, källkodning och kanalkodning, som har var sin kodningsstrategi.
Ordet källkodning kommer från resonemanget om en symbolgenerator, en källa, som genererar symboler slumpvis och varje symbol har sin egen sannolikhet. Genom att koda om symbolerna och ge vanliga symboler korta koder och ovanliga symboler långa koder kan man spara in på antalet bitar som behövs för att representera sekvensen av genererade symboler. Denna omkodning kallas källkodning och är en datakompression som bygger på ren statistik hos symbolerna och inte på deras egenskap som informationsbärare. Sekvensen av omkodade symboler kallas inte källkod.
Kanalkodning handlar om att vissa bitar i en sekvens av bitar som ska överföras i en kommunikationskanal blir förstörda (en etta blir en nolla eller en nolla blir en etta) på grund av störningar eller brus i kanalen. I detta fall måste omkodning ske på så sätt att den ursprungliga sekvensen med stor sannolikhet kan återskapas hos mottagaren. Detta görs genom att varje symbol ges en längre kod och bitmönstret hos dessa längre symbolkoder väljs så olika som möjligt så att de kan identifieras som sin ursprungliga symbol även om vissa av bitarna längs vägen blivit förändrade. De extra bitarna som här tjänar till att separera symbolerna till varandra utgör redundans då varje bit hjälper till att upprätthålla det bitmönster som skiljer symbolen från andra symboler.