As a Korean learner newbie, one of the first few sentences that we learn would be 저는 한국어를 공부합니다. At least for me, that was one of the first sentences I have learned.
And then along the way, I learn more vocabs and I came across 배우다 which could be used in that same sentence and mean somewhat the same thing: 저는 한국어를 배웁니다. Then, I got a little confused. Is there a difference between 공부하다 and 배우다?
First things first, we shall look at the meaning of both of these verbs:
공부하다 - to study
배우다 - to learn
So, here are the definitions from the dictionary "to study" means "to read, memorize facts or attend school in order to learn about a subject."
Whereas, "to learn" means "to gain knowledge or skill by studying." Both definitions have "study" and "learn" in them...
In a nutshell, you have to learn something from someone or somewhere. Hence
선생님께 그 노래를 배웠어요. I learned that song from the teacher.
요즘 친구에게서 수영을 배우고 있어요. I am learning to swim from a friend recently.
요리 학원에서* 요리를 배웁니다. I learn cooking from the culinary school.
*In this sentence 에서 means "from" rather than "at".
There will always be an object for 배우다. You learn something or a skill.
You can just study without a source.
동생은 방에서 공부하고 있어요. Little brother is studying in the room.
내일 시험이 있으니까 공부해야 해요. There is a test tomorrow so I have to study.
저는 학교에서 공부합니다. I study at school.
In certain situations, both 공부하다 and 배우다 can be applied and the meaning is more or less the same.
한국어를 공부해요. I study Korean.
한국어를 배워요. I learn Korean.
문법을 공부하고 있어요. I am studying grammar.
문법을 배우고 있어요. I am learning grammar.
In conclusion, you learn to gain knowledge, experience, and skill from a source (eg. school, teacher, the internet); you study to enhance or improve.