What is the difference between 강사 and 선생님 ? They both mean teacher, trying to understand difference.
I'd prefer to translate "강사" as "lecturer". It refers to a person who teaches in a hagwon or a university (but not a professor). It's more like an occupation rather than a role or a person's identity. Still, you can call your teacher "강사님" (it would be rude to call someone directly "강사" without "님" which shows respect) if he/she works as a lecturer.
그는 학원에서 수학 강사로 일한다. He/she works as a math lecturer in a hagwon.
강사님 계신가요? Is our lecturer here?
"선생님" is the most general word to mean "teacher". You can call your teacher "선생님" whenever you can call them "강사님", "코치님 (coach)", "교수님 (professor)" etc., although it is more common to call a professor "교수님".
선생님, 질문 있어요. Teacher, I have a question.
선생님 계신가요? Is teacher here?
감사합니다, 선생님. Thank you, teacher.
"선생님" is more of a role, identity, or relationship with students. Personally it feels friendlier to call someone "선생님" than "강사님", "코치님", "교수님", etc. It can also refer to an occupation, though. As an occupation, "선생" or "선생님" usually means a teacher in a school or hagwon for kids. A synonym will be "교사" in this case. (The word "교사님" doesn't exist! It's not rude but weird/funny to say that.)
그는 중학교에서 선생님으로/선생으로/교사로 일한다. He/she is a teacher in a junior high school.
그는 학원에서 수학 선생님으로/선생으로/교사로 일한다. He/she works as a math teacher in a hagwon.
By the way, "선생님" can also be used to just politely call a person (especially when he/she is much older than you) showing respect. Also to call a person with some occupation, typically a doctor ("의사") with respect, we can call them "의사 선생님".