Interaksi manusia dan computer adalah ilmu yang mempelajari tentang bagaimana mendesain, mengevaluasi, dan mengimplementasikan system computer yang interaktif sehingga dapat digunakan oleh manusia dengan mudah. Sedangkan pengertian interaksi sendiri adalah komunikasi dua arah antara manusia(user) dan system komputer.

Definisi interaksi manusia dan computer adalah sebuah hubungan antara manusia dan computer yang mempunyai karakteristik tertentu untuk mencapai suatu tujuan tertentu dengan menjalankan sebuah system yang bertopengkan sebuah antarmuka(interface).

Dalam IMK kurang lebih terdapat tujuh disiplin ilmu, yaitu :
1. Teknik Elektronika dan Ilmu Komputer.
Memberikan kerangka kerja untuk dapat merancang system HCI.
2. Psikologi.
Memahami sifat dan kebiasaan, persepsi dan pengolahan kognitif, ketrampilan motorik pengguna.
3. Desain Grafis dan Tipografi.
Sebuah gambar dapat bermakna sama dengan seribu kata. Gambar dapat digunakan sebagai sarana dialog cukup efektif antara manusia dan komputer.
4. Ergonomik.
Berhubungan dengan aspek fisik untuk mendapatkan lingkungan kerja yang nyaman, misal: bentuk meja dan kursi kerja, layar tampilan, bentuk keyboard, posisi duduk, pengaturan lampu, kebersihan tempat kerja.
5. Antropologi.
Ilmu pengetahuan tentang manusia, member suatu pandangan tentang cara kerja berkelompok yang masing–masing anggotanya dapat memberikan konstribusi sesuai dengan bidangnya.
6. Linguistik.
Merupakan cabang ilmu yang mempelajari tentang bahasa. Untuk melakukan dialog diperlukan sarana komunikasi yang memadai berupa suatu bahasa khusus, misal bahasa grafis, bahasa alami, bahasa menu, bahasa perintah.
7. Sosiologi.
Studi tentang pengaruh sistem hubungan manusia-komputer dalam struktur sosial, misal adanya PHK karena adanya otomasi kantor.

Prinsip utama dalam mendesain interface yang baik ada sebelas, yaitu :
1. User Compatibility.
Desainer harus mencari dan mengumpulkan berbagai karakteristik serta sifat dari user karena antarmuka harus disesuaikandengan user yang jumlahnya bisa jadi lebih dari satu dan mempunyai karakter yang berbeda.
2. Product Compatibility.
Sebuah aplikasi yang bertopengkan antarmuka harus sesuai dengan sistem aslinya. Seringkali sebuah aplikasi menghasilkan hasil yang berbeda dengan sistem manual atau sistem yang ada.
3. Task Compatibility.
Sebuah aplikasi yang bertopengkan antarmuka harus mampu membantu para user dalam menyelesaikan tugasnya. Semua pekerjaan serta tugas-tugas user harus diadopsi di dalam aplikasi tersebut melalui antarmuka.
4. Work Flow Compatibility.
Sebuah aplikasi sistem sudah pasti mengapdopsi sistem manualnya dan didalamnya tentunya terdapat urutan kerja dalam menyelesaikan pekerjaan.

5. Consistensy.

Sebuah sistem harus sesuai dengan sistem nyata serta sesuai dengan produk yang dihasilkan. Banyak perusahaan dalam menjalankan sistemnya menggunakan aplikasi sistem yang berbeda di setiap divisi dalam perusahaan tersebut.
6. Familiarity.
Sifat manusia mudah mengingat dengan hal-hal yang sudah sering dilihatnya atau didapatkannya. Secara singkat disebut dengan familiar. Antarmuka sebisa mungkin didesain sesuai dengan antarmuka pada umumnya, dari segi tata letak, model, dsb.
7. Simplicity.
Kesederhanaan perlu diperhatikan pada saat membangun antarmuka. Tidak selamanya antarmuka yang memiliki menu banyak adalah antarmuka yang baik.
8. Direct Manipulation.
User ingin sekali aplikasi yang dihadapannya bisa disesuaikan dengan kebutuhan, sifat dan karakteristik user tersebut. Selain itu, sifat dari user yang suka merubah atau mempunyai rasa bosan.
9. Control.
Prinsip control ini berkenaan dengan sifat user yang mempunyai tingkat konsentrasi yang berubah-ubah. Hal itu akan sangat mengganggu proses berjalannya sistem. Prinsip control ini berkenaan dengan sifat user yang mempunyai tingkat konsentrasi yang berubah-ubah. Hal itu akan sangat mengganggu proses berjalannya sistem.
10. WYSIWYG.
WYSIWYG = what you see is what you get = apa yang didapat adalah apa yang dilihatnya. Contoh : apa yang tercetak di printer merupakan informasi yang terkumpul dari data-data yang terlihat di layar monitor pada saat mencari data.

11. Flexibility.
Fleksibel merupakan bentuk dari dari solusi pada saat menyelesaikan masalah. Software engineer dapat membuat berbagai solusi penyelesaian untuk satu masalah.