본문 바로가기

송송 DEV

송송은 뚠뚠 오늘도 뚠뚠 열심히 ~ 코딩 하네 뚠뚠

부스트코스 CS50 코칭스터디 2기 후기

2021년 1월 11일부터 2월 26일까지

부스트코스의 CS50 코칭스터디 2기에 참여했다.

나름 열심히 참여했던 기념으로

6주 간의 활동 과정과 소감을 간단하게(?) 정리해보려고 한다.

 

 

시작 당시...


들어가기 전에 내가 어떤 수준에서 공부하여 어떤 부분을 얻어갔는지 좀 더 정확히 설명하기 위해 당시 내 개발 수준에 대해 설명을 하려 한다. 디자이너 겸 퍼블리셔로 약 4년 일 함. 유지 보수 하는 사이트들의 간단한 개발 이슈는 내가 다 처리했음. if, for 등의 기본 문법은 알고 있고 코드를 제대로 잘 짤 줄은 몰라도 보고 어떻게 굴러가는지 이해할 수는 있었다. 보통 이용하는 언어는 자바스크립트.

컴퓨터 과학 쪽은 딱 컴활 1급 필기만큼의 실력을 갖고 있었음. 거의 문외한이었다.

프론트 엔드 개발 쪽으로 진로를 확 틀어서 가고 싶은데, 어떤 걸 해야 할지 잘 몰라서 헤매던 시기로 기억한다. 와중에 네이버 메인의 코칭 스터디 광고를 보고, C를 공부하는 김에 코칭 스터디에서 하게 되면 좀 더 집중해서 공부할 수 있지 않을까 하여 신청하게 되었다.

 


코칭 스터디 2기


 

CS50 코칭스터디 2기

부스트코스 무료 강의

www.boostcourse.org

신청할 때에는 코치 1인 당 소수 인원을 데리고 하는 것으로 생각했는데, 실제로는 수강인원이 어마어마했다. 코치 한 사람당 60명 내외(6명씩 10조가 코치 1명 담당이다)를 맡고 전체 인원은 1300명 내외다. 섬세한 코칭을 기대하면 아쉬울 수 있다.

 

수강 인원 특징

수강하는 사람들이 아주 다양했다. 우리 조만 해도 맨 처음 공부하는 비전공자부터 컴퓨터 공학을 전공으로 하는 대학생들, 퍼블리셔로 일하는 사람까지 다 있었다. 따라서 조 안에서도 편차가 크고, 조와 조 사이에서도 편차가 컸다. 열정적으로 모든 미션을 문서화하고, 리드 부스터가 강의 수준의 피드백을 주는 조도 있는 반면, 어떤 데는 아예 조가 와해되는 경우도 있었다.

이렇게 너무 다양한 사람들을 하나의 수업으로 묶으려 하다보니, 미션 난도 조절이나 피드백이 어려웠을 것이라 생각한다.

 


수업 진행 방식

크게 보면 3가지 부분으로 되어 있다.

  1. 모두를 위한 컴퓨터 과학 강의 수강
  2. 팀별로 주간 미션 풀이 후 게시글 작성
  3. 라이브 강의 수강

모두를 위한 컴퓨터 과학 진도에 맞추어 그에 맞는 과제를 하나씩 내주고, 목요일까지 조별로 답을 게시판에 올린다. 그리고 금요일에 저녁에 라이브 강의로 미션에 대한 해설과 우수 과제 소개를 한다.

자잘하게 할 일이 은근히 많아서 직장인이면 버거울 수도 있다고 생각한다. 지난 6주 동안 나는 아래의 스케줄대로 일주일을 살았다. 게다가 나는 CS50 강의는 몰아서 미리 들어두어 강의 듣는 스케줄을 따로 잡지 않았는데, 그렇지 않다면 여기에 강의 듣고 정리하는 시간도 필요하다..!

 

월요일 : 공개된 미션 확인

수요일 : 각자 풀이한 답 공유하고 제출할 조별과제 정리

목요일 : 과제 제출

금요일 : (오전) 코치 코멘트 확인 (오후)라이브 강의 듣기

토요일 : 라이브 강의 재방송

 

1. 모두를 위한 컴퓨터 과학, CS50 2019

열정맨 교수님

하버드에서 가르치는 컴퓨터과학 입문(일반적인 개론 강의를 101로 부르는데, 그것을 더 압축했다 하여 CS50이라고 한다) 강의. 개념을 각종 도구들과 사람들(..)을 활용하여 쉽게 풀어서 얘기하는 부분이 인상적이다.

교수님 말이 엄청나게 빠르다. 보통 강의는 1.5~2배속 돌려서 듣는데, 이 강의는 그냥 보통 속도로 들었다.

학문적으로 컴퓨터에 대해, 컴퓨터 사고에 대해 많이 배울 수 있었다. 새로운 개념(자료구조 알고리즘, 포인터 등등) 실제 프로그래밍 사고에 가까운 것들을 많이 배우게 됨. 기존에 마크업과 CSS 그리고 JS는 그냥 돌아가는 코드를 만들어내는 데 급급했다면 어떤 기준으로 코드를 바라봐야 할지 어렴풋이 개념을 알게 되었다.

 

입문 강의가 어려운 건 이게 왜 그런지 정확히 알지 못해도 그냥 그렇구나 넘어가야 하기 때문이다. 내가 이해를 하려고 하는 게 아니라 그냥 개념 그 자체를 받아들이려고 노력하는 게 좋다. 그렇게 넘어가고 나서 다시 돌아보면 어느 순간 불현듯 깨닫게 되는 것 같다.

 

강의 목록

  1. 컴퓨팅 사고
  2. C 언어
  3. 배열
  4. 알고리즘
  5. 메모리
  6. 자료구조

 

모두를 위한 컴퓨터 과학 in Boostcourse

부스트코스에서 볼 수 있는 모두를 위한 컴퓨터 과학 강의는 실제 하버드 강의와 동일하게 서비스하는 게 아니라 부스트 코스 나름대로 강의 흐름을 다시 정리한 축약본이다. 그렇기 때문에 동영상을 보다 보면 동영상 흐름이 어긋나 보이는 부분이 있다. (예를 들어 강의에서 내주는 과제 얘기하는 부분이라던가.) 실제 강의 그대로 소화하기엔 무리가 있어 그렇게 구성한 듯싶다. 너무 신경 쓰지 말고 그냥 넘어가는 게 편하다.

1강을 보통 6개 정도의 섹션으로 나누어 각각 10분 내외의 동영상으로 구성되어 있다. 강의를 내용에 맞추어 쪼개 놓은 것이기 때문에 강의 시간은 1시간~ 1시간 반 매우 유동적인 편이다. 여유시간 빼놓는 것이 좋다.

동영상 하단에 강의 내용을 정리해두어 있어 동영상과 같이 내용을 확인하기 좋다. 하나의 섹션이 끝날 때마다 간단한 퀴즈로 테스트할 수 있다.


2. 미션

우리 조는 구글 밋 화면 공유를 이용해 작성한 코드를 직접 한줄 한줄 설명했다.

C를 이용한 코딩 문제 풀이가 주요 과제였다. 강의와 직접적으로 연계된 것이 아니라 문제를 보고 초심자는 난도가 너무 높아 숨이 턱 막힐 수 있다. 빠르게 압축해서 진도를 빼기 때문에 난도 조절 실패가 아닐까 하는 생각이 들긴 한다. 그러나 문제 자체는 교육 과정 상의 기본적인 거라 문제 내용을 검색해 보면 많이 나온다.

문제에 오타가 있다던가 검수가 살짝 부족해 보이는 부분이 가끔 있어 조금 아쉬웠다.

목요일까지 과제를 제출하면 금요일 오전 중으로 피드백이 온다. 코치들이 잘 작성해서 알려주긴 하지만, 1부터 100까지 내가 짠 것이 아니라 조별로 나가는 것이기 때문에 결과물에 대한 이해도가 낮을 땐 크게 와닿지 않을 수 있다... ㅎ...

질문도 자유롭게 할 수 있었으나, 나는 내가 뭘 모르는지 모르는 상태이기 때문에 많이 이용하진 않았다.


3. 라이브

인증용 캡쳐 화면

진행자와 현업에서 일하는 개발자 한 명이 나와 전반에는 문제 내용 풀이 및 우수 과제 소개를 하고, 후반에는 미리 참가 신청서에서 받아둔 질문과 라이브 채팅을 이용해 Q&A를 진행한다.

라이브 진행은 금요일 저녁 8시였는데, 다음날 녹화본을 올려줘서 시간 제약은 덜었다. 첫 주에는 서버가 터져서 라이브 강의 수강이 불가능했는데, 그 이후에는 안정적으로 수강이 가능했다.

 


후기


강의를 끝내고 나에게는 필기노트용 노션 페이지와 수료증이 남았다.

아쉬운 점

먼저 시스템적으로 너무 아쉬웠다. 부스트코스 사이트의 기능이 부족해서 그런 것인지 몰라도 매주 수강 내역을 일일이 캡처해서 리드부스터(조장)에게 보내고, 이 조장이 내역을 취합해서 구글 스프레드시트로 정리하면 이것을 다시 코칭 스터디 운영진 측에서 다시 정리하는 과정을 거친다.

온라인 강의 플랫폼인데 왜 이런 쓸데 없는 짓을 해야 하는지. 거기서 휴먼에러로 누락당한 나는 수료 여부 및 증정품 배달 등 모든 부분을 한 번씩 다시 확인해야 했다... (친절하게 해결해주긴 했다...)

텍스트 에디터도 불완전한 건지 게시판 가독성이 너무 낮아서 보기 불편했다. 이런 부분은 지속적으로 코칭 스터디가 지속되기 위해 꼭 개편되었으면 좋겠다고 생각한다.

 

 

좋은 점

배우고 나니 나에게 필요한 과정이었다는 생각이 들었다. 좀 더 컴퓨터 공학의 기본적인 부분을 공부하고, C에서 기본적으로 배우는 (그러나 나는 모르고 있었던) 기초 개념들을 짚고 넘어가기에 아주 좋았다. 이후에 자바스크립트 강의를 들었는데, 컴퓨터 언어가 이런 부분이 발전했구나, 이런 부분이 계속 남아있구나 알 수 있었다.

또한 같은 문제를 풀고 그것을 다른 사람과 비교하니 내가 어떻게 생각하는지, 어떤 부분을 더 보완해야 할지 더 눈에 잘 들어왔다. 내가 익숙하지 않은 문법은 소극적으로 쓰기 마련인데, 다른 사람이 풀어가는 방식을 보며 다시 한번 확인해보고 되돌아보는 계기가 됐다.

그리고 다 필요 없고 무언가 꾸준히 참여해서 결과물을 남겼다는 것 자체에 큰 의미가 있다. ㅜㅠ! 우리 조는 중도 포기하는 사람 없이 빠짐없이 모두 수강을 마쳐서 더 뿌듯했다.

 


결론


(고작 6주짜리) 강의 하나 다 듣는다고, C를 이용한 코딩에 통달하겠다거나, 포인터와 메모리 개념을 완벽하게 이해할 순 없다. 절대적 시간이 부족하고, 애초에 내 목표도 그런 수준이 아니었다. 다만 다양한 개념들을 접하면서 추후에 해당 분야의 지식이 필요할 때 바로 검색해서 찾아볼 수 있도록 익숙해지는 게 목표였고, 그 목표는 잘 달성한 강의였다.

 

요즘 강의들 광고를 보면 수강만 하면 모든 것이 다 해결될 것처럼 광고하는 게 참 많은데, 그렇게 접근하면 실망할 수 있다. 새로운 개념을 혼자 끙끙대며 받아들이는 것이 아니라 다른 사람들이 하는 것을 잘 관찰하며 공부한다는 게 공부 요령이라는 걸 숙지하면 얻어갈 게 많다고 본다.