12월, 2019의 게시물 표시

방통대 2019-2학기 수강내용 정리 <자료구조>

한 학기를 마친 지금, 시험에 목 메지 않고 나의 실력 향상을 위해 학교를 다니자고 다짐한 내 결심을 이행하기 위해 한 학기동안 배운 내용을 정리하고자 한다. 1. 배열 - 여기서 말하는 배열이란 순수한 동적크기의 배열이다. 배열의 모든 원소들은 메모리에 다닥다닥 붙어서 올라간다. 어렵게 이야기 하자면, 메모리에 적재되는 물리적인 위치가 연속적이다 라고 하는 것이다. 이는 공간적 지역성의 원리라고도 한다. 공간적 지역성이란 방금 접근한 메모리 주소에 또 접근할 가능성이 높고 그에 인접한 원소들도 접근할 가능성도 높음을 의미한다. 배열의 공간적 지역성은 탐색을 할 때 그 빛을 발한다. 배열 a=[1,2,3,4,5]를 저장한다고 하면 a의 각 원소들은 모두 메모리 주소에 차곡차곡 순서대로 저장된다. 따라서 배열에 있는 값들은 순회하며 꺼내려 한다면 처음 1을 찾은 메모리 주소에서부터 더 멀리 찾을 필요도 없이 순서대로 꺼내기만 하면 되므로 탐색이 쉽다. 하지만 단점은 데이터의 삽입과 삭제가 일어날 때이다. 만약 배열에 원소를 5개 넣고 싶고 각 원소는 메모리 주소를 1칸씩 차지하면, 우리는 최소한 메모리가 5칸이 되는 곳을 찾아서 그곳에 저장해야한다. 메모리 중간중간에 3칸, 4칸이 비어있어도 이를 활용할 수가 없다는 단점이 있다. 또한 이미 원소가 4개인 배열이 있을때 이 배열의 중간에 값을 추가하고 싶다면 이를 위해 배열 전체를 다른 메모리주소로 옮겨야한다. 그렇지 않으면 배열의 특징인 공간적 지역성이 유효하지 않기 때문이다. 이 때문에 배열에 값이 많아질수록 삽입과 삭제는 부담스러운 연산이 되며 성능 또한 좋지 않게 된다. 2. 연결리스트 - 배열과 가장 잘 비교 되는 자료구조일 것이다. (사실 배열과 연결리스트는 어느 자료구조 커리큘럼이나 가장 초반부에 설명하고 있기 때문에 꽤 많이 봐와서 방통대 강의보다는 그 내용을 바탕으로 이 글을 쓰게 되는게 아닌가 싶다.) 연결리스트는 배열과 달리, 원소들이 메모리에 적재되는 물리...

방통대 컴퓨터과학과 2019-2학기 자료구조 수강 후기

자료구조 2019-2학기 수강 교수: 정광식 교수님 꽤 만족스러운 강의였습니다. 저는 경영학과 출신에 프로그래밍 학원도 안 가고 독학으로 개발자가 된 케이스라 기본기가 많이 부족한 상태였는데요. (물론 지금도 어렵습니다) 인터넷에서  '비전공자들의 발목을 잡는 것은 결국엔 기본기' 라는 이야기를 많이 보곤 했었고 이에 압박감을 느껴 기본기 중 기본기라고 불리는 자료구조를 고민없이 수강했습니다. 일단 방통대 자료구조 강의는 2019년에 새로 촬영이 된 것 같습니다. 정광식 교수님의 예전 강의도 같이 볼 수 있어서 2016년 버전 강의를 1개 정도 아주 짧게 들었는데 개인적으로는 2019년에 새로 촬영하신게 더 좋았습니다. 2016년 버전은 책 내용 설명, 코드 설명이 위주였던 것 같은데 2019년 버전은 책과 코드보다는 개념과 흐름(?) 같은 것을 좀 더 짚어주신 거 같습니다. 교수님 본인도 강의 중간중간 이번에는 예전보다 본인이 좀 더 하고 싶은 이야기를 많이 하려고 한다고 하셨었구요. 그래서인지 강의하다가 텐션이 막 오르실 때가 보입니다. 부담스러운 정도는 아니구요. 집중해서 들을 수 있는 느낌이라 저처럼 책 읽어주는 남자 스타일을 싫어하는 학생들은 좋아할 것 같습니다 . 강의는 다루는 자료구조에 대한 대략적인 설명과 삽입, 삭제, 탐색을 하는 경우에 동작방식, 그리고 거기서 파생되어 나온 자료구조를 설명하는 식으로 강의하십니다. 강의 목차는 자료구조 별로 나누어져 있기 때문에 끊어서 듣기 좋습니다. 예를들면 1장 배열, 2장 연결리스트, 3장 트리 뭐 이런식으로 되어 있는거죠. 시험 난이도는 평이합니다. 많은 분들이 책, 워크북이 필수이고 거기에 나오는 연습문제 무조건 풀어야 셤 잘보는 것 처럼 이야기 하시는데 저는 돈 아까워서 책, 워크북 다 안 샀습니다. 왠지 방통대에서 판매하는 책들은 왠지 사기가 싫어서;; 책 없어도 충분히 가능합니다. 기출문제 잘 푸시고 강의만 잘 들으셔도 A+급 성적...

2019.12.10 방통대 컴퓨터과학과 첫 학기를 마쳤다.

비전공자로서 기본기에 늘 압박이 있던 나는 올해 2학기부터 방통대를 다니기 시작했다. 회사 다니면서 공부하기는 빡세지만 도움이 된다는 후기가 많아서 큰 고민없이 등록했다. 그리고 9월부터 시작 된 학기. 오랜만에 다시 대학생 신분으로 돌아갔다. 강의를 듣고 시험을 치고 평가를 받는다. 이것저것 듣고 싶은 과목들을 수강신청하고 새로운 것을 배운다는 것에 들떴다. 학기 초엔 꽤 신나게 시작했지만, 곧 빡세다는 사람들의 말을 온몸으로 이해할 수 있었다. 수강신청을 할 때 여러 과목이 있었는데 이미 알고 있는 것들을 또 듣고 싶지는 않아서 도움이 될 것 같거나, 아니면 나중에 먼 미래에 써먹을 수지도 모르는 생소한 과목들도 신청했다. 하지만 그렇게 신청한 과목들은 생소하고 어려웠다. 그리고 교수님들은 신입생 혹은 편입생의 텐션과는 달랐다. 나야 오랜만에 다시 대학생이 되어 어쩌면 처음으로(?) 학교에서 내가 하고 싶은 공부를 하는 것인데 교수님들에겐... 강의란 그냥 업이다. 열정적으로 강의하는 교수님도 있었지만 1부터 10까지 강의노트를 읽어주는 교수님의 수업은 이해하기도, 그냥 듣고 있기도 힘들었다. 그래서 '이번에 다니는 학교만큼은 성적에 목 메고 다니지 말아야지' 했는데 후반부엔 그 결심이 무색하게 점수에 연연하는 나를 다시보게 된 것 같다. (사실 과락은 면하자는 마음가짐이었는데 장학금을 받게 되어서 꽤 좋았다. 2만원짜리이긴 하지만 ㅋㅋ) 어쨌든 결론적으로 방통대 편입생의 1학기는 무사히 지나갔다. 조금 더 열심히 할 수 있었을텐데 라는 아쉬움도 남지만, 그래도 이 정도면 한 학기에 6전공을 들으며 자바스크립트 유데미 강의까지 듣고 꽤 열심히 하지 않았나 싶다. 수강했던 과목들에 대한 후기는 하나, 둘씩 올릴 예정이다.