입문
챕터 8개 · 18시간 41분
한국어 · 영어 · 일본어|오디오 한국어

혹시 프로그래밍에 관심 있으신가요?

📍프로그래밍, 피할 수 없으면 즐겨야 합니다.

개발을 전문적으로 할 생각이 아니더라도 프로그래밍 능력은 사회 전 분야에서 유용하게 사용되고 있습니다. 공학 분야는 물론이고 디자인/경영/마케팅 등 모든 분야에서 프로그래밍적인 소양을 갖춘 사람과 그렇지 못한 사람의 차이는 매우 클 수 밖에 없죠.

왜냐면 정말로 모든 분야에 컴퓨터가 사용되고 있어서, 자신이 직접 프로그램을 개발하지 않더라도 개발 파트와 협업해야 하는 경우가 많기 때문입니다. 이때 컴퓨터나 프로그램에 대한 소양을 갖추고 있다면 거칠 것이 없을 겁니다.


그중에서도 C언어를 배워야 하는 이유

📍컴퓨터를 전공하고 싶거나, 앞으로 배울 예정이라면 C언어는 필수입니다.

컴퓨터 관련 분야의 일을 계속하다 보면 C를 포함한 여러 프로그래밍 언어를 사용하게 됩니다. 사람에 따라 다를 수 있겠지만 다른 언어들을 먼저 익히고 C언어를 익히는 것보다, C를 먼저 익히고 다른 언어를 익히는 것이 더 빠르다는 특징이 있어요.

"매도 먼저 맞는 게 낫다"라는 말처럼 가장 습득하기 어려운 C언어를 익힌 후에는 다른 언어들에 접근하기가 상대적으로 수월하여 달리듯이 진입하게 됩니다.

저도 그랬습니다. C만 사용하다가 다른 언어를 사용하게 되니까 이렇게 편한 세상도 있었구나 싶더라고요.


그럼 아예 C를 안 배워도 되지 않나요? 왜 굳이..

📍C언어를 건너뛰시겠다고요? 그건 권하고 싶지 않아요.

컴퓨터 구조에 대해서 너무 모르는 전문가는 다양한 일에 직면할 때 해결 능력이 떨어질 수밖에 없거든요.

제가 말씀드리고 싶은 결론은, 컴퓨터 관련 분야에 종사할 계획이라면 C언어를 필수적으로 하시기를 권하며, 그 외의 경우는 본인이 여기까지 욕심내 보겠다고 선택하신 분들이 도전하시면 되겠습니다.

단, 비전공자라고 이 강의를 못 따라오시는 것은 아닙니다. 이 강의는 어떤 기반 지식 없이도 C언어를 배우실 수 있게 정말 쉽게 만들었습니다.


C언어의 특장점

📍자유도가 높다!

C언어는 작업을 수행 중인 프로그래머에게 "직접 결정하라" 말하는 부분이 많기 때문입니다. 예를 들어, 옷을 제작한다고 생각해 봅시다. 디자인과 색상 등 몇몇 옵션만 선택하면 자동으로 옷이 나오는 경우가 있겠죠.

반대로 커스텀 주문 제작 하는 곳을 생각해 봅시다. 그곳은 어떤 옷감을 할 지, 박음질 방법은 어떻게 할지 까지 주문하는 사람이 다 정하는 것입니다. 그게 가능하려면 어떻게 해야 할까요? 맞습니다. 옷과 관련된 공부를 해야 가능합니다.

C언어도 마찬가지입니다. 많은 자유도를 주는 만큼 그것을 이용하려면 컴퓨터의 원리에 대해서 더 많은 것을 알아야 하고, 그것이 장점이 되는 것입니다. 반강제적으로 C언어를 습득하면서 컴퓨터 동작에 대한 이해가 깊어진다는 것이지요.


C언어는 그 어떤 언어보다도 작고 효율적인 프로그램 작성이 가능합니다. C언어로 작성한 프로그램은 컴퓨터가 곧바로 이해할 수 있는 '기계어 형태'로 만들어져서 제공되기 때문에 상당히 적은 메모리를 사용하면서도 빠른 수행 속도를 낼 수 있습니다.

그렇기 때문에 '자원이 풍부하지 않은 환경', 이를테면 임베디드 시스템이나 사물인터넷(IoT) 분야에서 필수적인 언어가 된 것입니다. 또한 '속도가 중요한 환경', 다시 말해서 칩 내부 코드를 작성할 때나 정보 보안 분야의 암호모듈 구현 시에는 필수적으로 사용하게 되죠.

그러면 반대로 '자원이 풍부한 편인 PC 프로그램' 경우에는 C언어를 쓰지 않느냐 하면 그렇지 않습니다. PC 프로그램도 빠른 속도와 효율성이 중요할 때는 개발 인력을 더 투입해서 C언어로 (정확히는 C++을 사용해서) 작성합니다.

(단, 속도나 자원보다는 개발 노력을 줄이는 것이 더 중요할 때는일정 부분 효율성을 희생하면서 다른 언어를 선택한다고 보시면 되겠네요.)



C언어는 알겠는데, 자료구조도 꼭 배워야 하나요?

📍네, 꼭 같이 배우길 권해 드립니다.

자료구조(Data Structure)는 컴퓨터가 자료를 표현하는 방법에 대해 배우는 것입니다. 프로그래밍 언어에서는 (1) 기본적으로 지원되는 자료 표현 방법이 있고, (2) 이를 활용해서 프로그래머가 직접 만들어 사용하는 자료 표현 방법이 있습니다.

(1)은 지원되는 것이니 있는 그대로를 이해하고 활용하는 방법을 배우고요, (2)는 지금까지 프로그래머들이 다양하게 연구했던 자료 표현 방법들을 배우고 활용해 보는 것입니다.

이렇게 자료 표현 방법까지 알게 되면 앞으로 프로그램을 할 때 상황에 맞는 자료 표현을 할 수 있게 되는 것입니다!


자료구조를 모를 때 당신이 맞닥뜨릴 위기

📍비효율적으로 개발을 하게 됩니다.

자료구조 같은 이론적 기반이 없으면, 프로그램을 작성할 때 자료를 어떻게 표현하는 것이 그 상황에 맞는 것인지 몰라요. 그리고 어렵게 구현한 내용도 비효율적으로 만들 가능성이 크겠지요.

많은 시행착오를 겪다 보면 효율적인 자료 구성을 할 수 있게 되겠지만, 우리가 바퀴를 새로 발명할 필요는 없잖아요 ^^? 검증된 자료 구조를 배워서 활용하는 것이 현명합니다. (그래서 컴퓨터 관련 전공자들은 학부 과정 1~2학년에서 이 내용을 필수로 배웁니다.)


📍자료구조 파트에서는 이런 것들을 배울거예요.

  • 동일한 형태의 많은 데이터들을 다루는 방법
  • 서로 다른 형태의 데이터들을 하나로 묶어서 다루는 방법
  • 일렬로 늘어선 형태의 데이터를 관리하는 방법
  • 계층형 데이터를 관리하는 방법
  • 그물망 형태로 보이는 데이터를 관리하는 방법

이러한 것들을 배우고 나면, 계층형 데이터의 정렬/검색 작업을 상당히 효율적으로 할 수 있다거나, 그물망 형태의 도로망 건설 계획도에서 가장 작은 비용으로 전체 도시를 연결하기 위해 어느 지점에 도로를 만들면 된다거나 하는 비즈니스적인 해법을 찾을 수 있게 됩니다.

여기까지가 이번 클래스의 영역이고요, 그 이후에는 'C++ & 알고리즘'으로 연결되어 보다 복잡한 문제 해결의 길로 접어들게 됩니다. (그 주제들은 2차 클래스에서 만나는 걸로 해요!)


여러분께 C언어와 자료구조를 알려드릴 크리에이터,

초이스 프로그래밍입니다.

📍성이 최(Choi) 씨여서 초이스(Choi's)..

저는 대학교를 졸업하고 바로 사회생활을 시작했습니다. "잠시 일하다가 다시 공부해야지" 하고 생각만 하면서 계속 일을 했는데, 결국엔 한참 지나서야 정보보호 석사과정을 마칠 수 있었네요.


👩🏻‍🎓학력

  • 서강대학교 컴퓨터공학과 학사
  • 세종사이버대학교 정보보호학과 석사

📚개발이력

대학교를 졸업한 이후로 지금까지 한 번도 개발 업무에서 손을 놓은 시기가 없었습니다. PC 프로그램부터 시작해서 임베디드 시스템의 펌웨어, 안드로이드 앱, 웹 등 다양한 분야에서 개발 경력을 쌓고 있습니다.

그리고 그중 C 또는 C++을 활용한 부분이 80% 이상 되는 것 같습니다. 그 이유는 제가 웹이나 앱 쪽보다는 임베디드용 펌웨어나 성능이 우선시 되는 PC 프로그램들을 주로 개발했기 때문입니다.


🏆주요 경력 및 프로젝트

  • (주) 한컴리눅스 : Linux 용 spreadsheet 개발완료 (리눅스 환경)
  • (주) 링크랩 : Divx player(HDivx) 개발완료 (임베디드 리눅스 환경)
  • (주) 미디어디바이스 : 한국도로공사 터널 내 방송장비 펌웨어 (임베디드 리눅스 환경), 해당 장비관리 NMS(Network management system) 프로그램 (윈도우 환경)
  • 지투지솔루션 (주) : 블랙박스 펌웨어 프로그램. (임베디드 리눅스 환경), 블랙박스용 PCViewer 프로그램 (윈도우 환경)
  • 맥스이팩트소프트 : <매일가계부> 출시 (안드로이드 앱)

👩🏻‍💻강의경력

저는 강의경력이 풍부합니다. 대학교 IT 관련 학과에 산업체 겸임교수로서 출강 중입니다. 전체 강의 경력은 올해로 10년 차에요.

  • 2011.09 ~ 현재: 동양미래대학교 산업체 겸임교수
  • 2017.03 ~ 현재: 부천대학교 산업체 겸임교수

여러분이 C언어를 어려워한다는 거 잘 알고 있어요. 그래서 정말 쉽게 준비했으니 차근차근 따라와보세요!



다른 C언어, 자료구조 강의에 비해 차별점은 무엇인가요?

📍현업 20년 이상의 개발이력과 10년의 강의경력이 보장합니다.

저는 현업에서 C/C++를 20년 넘게 활용한 경험을 갖고 있으며, 동시에 대학에서 1~2학년 학생들에게 관련된 강의를 10년째 진행하고 있습니다.

신입생 중 극소수는 고등학교에서 코딩을 해 보고 오는 경우도 있으나, 대부분은 전혀 기반이 없이 입학하게 됩니다. 그런 학생들과 함께 프로그래밍 언어로 C와 C++, 그리고 자료구조와 알고리즘을 오랫동안 강의했다는 게 증거입니다.

그런 만큼 입문자, 초보자분들과 함께 하는 것에 자신 있으며 특히 컴퓨터 관련 분야로 진출할 예정인 경우, 프로그래밍의 기본기를 확실히 만들어 드릴 수 있습니다.


수업 진행 방식은 어떻게 되나요?

📍동시에 배우는 커리큘럼답게!

커리큘럼을 보시면 본 강의의 챕터 이름에 <C언어> 부분인지 <자료구조> 부분인지를 구분해 놓았습니다. C언어를 배우는 부분에서는 '구문 위주'로 해당 구문 또는 기능이 어떤 경우에 필요한지 설명하고, C언어 구문을 이해한 후 이를 이용한 예제 프로그램을 만들어 봅니다.

한편 자료구조 부분에서는 새로운 개념이므로 '개념 위주'로 먼저 이해한 후 C언어로 구현해 봅니다.

매 강의마다 'C언어의 구문만' 또는 '자료구조의 개념만' 설명하는 것이 아닙니다. 구문을 배웠다면 활용하는 예제를, 개념을 알았다면 구현하는 예제를 동시에 진행합니다. 강의에 나오는 예제 프로그램들을 완벽히 이해하며 따라가는 것이 중요하며 이로써 확실한 실력 향상을 얻어갈 수 있습니다.


필요한 도구와 개발환경은 무엇인가요?

📍비주얼 스튜디오, 무료에요!

제가 강의 영상에서 사용하는 도구는 Visual Studio Community라는 무료 개발 도구입니다. 이것을 각자의 PC에 설치하는 과정도 강의 영상에 포함될 것이고요, C언어를 사용하는 다른 개발 환경을 사용하셔도 상관없습니다.



이 강의를 완강하면 찾아올 변화와 향후 로드맵

📍완강하고 나면 프로그래밍 기초를 다진거나 다름없어요.

여러분은 프로그래밍 언어 중 가장 마스터하기 힘든 C언어에 성공적으로 입문하게 될 것이고, 또한 자료구조도 이해했으니 프로그래밍 분야 이론의 기초를 마련하게 됩니다.

처음 코딩을 시작하는 단계에서는 “어렵기만 한 자료구조 꼭 배워야 하나”, “나는 그것 모르고도 이미 코딩 잘 하고 있는데..”라고 생각할 수 있습니다.

하지만 3년, 5년 경력이 쌓여갈수록 기반 지식의 한계를 느끼고 자료구조, 알고리즘 공부를 시작하는 경우가 많습니다. 실생활에서 자료를 관리하는 방법과 컴퓨터 내부에서 자료를 관리하는 방법에는 확연히 차이가 있으며, 컴퓨터 내부에서의 자료 처리 방법을 이해해야만 개발 분야에서 한계를 느끼지 않고 롱-런하는 개발자가 될 수 있습니다.


📍IT 대기업, 유니콘 스타트업으로 취업하는 기회가 될 수도?!

IT 관련 기업에서 알고리즘 테스트를 하는 이유도 이러한 자료 구조를 이해하고 활용할 수 있는지, 한 발 더 나아가 논리적인 사고를 하고 프로그래밍 원리에 대한 이해가 있는지를 보는 것인데요, 그러한 '알고리즘' 분야의 기본이 바로 '자료구조'입니다.

C언어와 자료구조에 대한 이해를 이번 강의를 통해 배웠으니, 다음 단계로는 객체 지향 언어인 C++을 배울 수 있고, C++ STL을 이용하여 알고리즘을 배울 수 있습니다. 또한 알고리즘을 배우면 각종 기업에서 진행하는 알고리즘 테스트에 C++ 언어를 이용해서 응시할 수 있습니다.

가장 밀접하게 연관된 다음 주제로서 C++와 알고리즘을 소개해 드렸는데요, 단순히 이 2개 분야뿐 아니라 C언어와 자료구조를 마치면 프로그래밍 분야 전반에 대한 기반을 닦으신 것으로 생각할 수 있습니다.

자, 그러면 천리길도 한 걸음부터 아시죠? 이제 C와 자료구조에 매진해 봅시다!

그럼 <C언어와 자료구조, 동시에 입문하기> 클래스에서 뵙겠습니다 :)

커리큘럼

크리에이터

초이스 프로그래밍

초이스 프로그래밍

여러분께 C언어와 자료구조를 알려드릴 크리에이터,

초이스 프로그래밍입니다.

📍성이 최(Choi)씨여서 초이스(Choi's)..

저는 대학교를 졸업하고 바로 사회생활을 시작했습니다. "잠시 일하다가 다시 공부해야지" 하고 생각만 하면서 계속 일을 했는데, 결국엔 한참 지나서야 정보보호 석사과정을 마칠 수 있었네요.

👩🏻‍🎓학력

  • 서강대학교 컴퓨터공학과 학사
  • 세종사이버대학교 정보보호학과 석사

📚개발이력

대학교를 졸업한 이후로 지금까지 한 번도 개발 업무에서 손을 놓은 시기가 없었습니다. PC 프로그램부터 시작해서 임베디드 시스템의 펌웨어, 안드로이드 앱, 웹 등 다양한 분야에서 개발 경력을 쌓고 있습니다.

그리고 그중 C 또는 C++을 활용한 부분이 80% 이상 되는 것 같습니다. 그 이유는 제가 웹이나 앱 쪽보다는 임베디드용 펌웨어나 성능이 우선시 되는 PC 프로그램들을 주로 개발했기 때문입니다.

🏆주요 경력 및 프로젝트

  • (주) 한컴리눅스 : Linux 용 spreadsheet 개발완료 (리눅스 환경)
  • (주) 링크랩 : Divx player(HDivx) 개발완료 (임베디드 리눅스 환경)
  • (주) 미디어디바이스 : 한국도로공사 터널 내 방송장비 펌웨어 (임베디드 리눅스 환경), 해당 장비관리 NMS(Network management system) 프로그램 (윈도우 환경)
  • 지투지솔루션 (주) : 블랙박스 펌웨어 프로그램. (임베디드 리눅스 환경), 블랙박스용 PCViewer 프로그램 (윈도우 환경)



👩🏻‍💻강의경력

저는 강의경력이 풍부합니다. 대학교 IT 관련 학과에 산업체 겸임교수로서 출강 중입니다. 전체 강의 경력은 올해로 10년 차에요.

  • 2011.9~현재: 동양미래대학교 산업체 겸임교수
  • 2017.3~2020.2: 부천대학교 산업체 겸임교수



C언어와 자료구조 클래스를 준비한 이유

📍C언어! 배우면 좋겠지만 어려울 거라고 합니다.

하지만 갓 고등학교를 졸업한 대학생들과 그 산을 여러 차례 넘어 보니 저에게도 얼마큼의 자신감이 생겼습니다. 이제 쉽지는 않지만 대부분의 사람들과 같이 넘을 수 있는 산이라고 여겨집니다.

다년간 C언어와 자료구조 강의를 진행하면서 쌓은 경험을 바탕으로 여러 입문자분들과 함께하고 싶어 준비한 클래스입니다.

이제 고민은 그만하세요!

그럼, 클래스에서 뵙겠습니다.

초이스 프로그래밍

초이스 프로그래밍

이 클래스와 비슷한 추천 클래스

C언어 기초에서 활용까지 제대로 배우기 초∙중∙고급 마스터 클래스프로그래밍언어  |  IT백과사전
고객센터오전 10시 ~ 오후 6시 (주말, 공휴일 제외)
주식회사 클래스101
대표 공대선
서울특별시 강남구 테헤란로 415, 4층(삼성동, 엘7강남타워)
대표전화 : 1800-2109
이메일 : ask@101.inc
사업자등록번호 : 457-81-00277
통신판매업신고 : 2022-서울강남-02525
클라우드 호스팅 : Amazon Web Services Korea LLC
사업자 정보 자세히 보기
클래스101은 통신판매중개자로서 중개하는 거래에 대하여 책임을 부담하지 않습니다.