본문 바로가기
스터디 하드/방통대 컴퓨터과학과

15-2 방통대 컴퓨터과학과 프로그래밍언어론 수강후기

by 피타칩스 2015. 12. 11.

방통대 편입 첫학기가 끝나가고 있습니다~~ 저는 이번 학기에 1학점 필수교양인 원격대학교육의 이해와 컴퓨터과학과 전공과목 6개(C++프로그래밍, 컴퓨터과학개론, 자료구조, 프로그래밍언어론, 컴퓨터구조, JSP프로그래밍)을 들었는데요, 이번에 남길 후기는 프로그래밍 언어론입니다. 


방통대 공부는 주로 교과서와 인강을 통해 이루어지고(제 생각엔 교과서가 메인, 인강이 서브), 평가는 중간평가(30%)와 기말평가(70%)가 전부입니다. 따라서 이 네가지를 중심으로 이야기 해볼게요.


제 개인적인 소감인만큼 후기가 주관적일 수 있다는 점 고려해서 읽어주시길 바랍니다^^



<2015-2 방통대 컴퓨터과학과 프로그래밍언어론>


1. 강의방식 요약


멀티미디어(인터넷강의) / 출석수업시험 또는 출석수업대체시험 / 기말시험 / 2 학년 2 학기(2-2) / 전공 / 3학점




2. 과목 목표 (강의계획서 펌)


프로그래밍 언어는 인간과 컴퓨터간의 의사 전달의 도구이다. 프로그램 언어의 개념을 이해함으로써 새로운 프로그래밍 언어의 설계와 이를 실행하는 컴퓨터에 대한 이해를 돕고자 한다. 




3. 과목 소개


선수강 과목: 프로그래밍언어 아무거나 (권장. 필수는 아님)


프로그래밍 언어론은 특정한 프로그래밍 언어를 다룬다기보다, 프로그래밍 언어의 구조, 설계기준과 설계방식에 대해 다룹니다. 언어들이 공통적으로 어떤 방식으로 기억장치와 상호작용하는지도 중요한 주제입니다. 그렇기 때문에 코딩을 전혀 할 줄 몰라도 되긴 하지만, 언어 하나를 알고 있으면 그 언어를 기준으로, 언어의 구조와 설계, 메모리할당 등에 대해 더 잘 이해할 수 있습니다. 


프로그래밍 언어론 수업에서 인상깊었던 내용 


저는 Barron의 표기법을 배운 게 가장 큰 수확이었습니다. 변수의 속성 네가지를 표현하는 진짜 간단한 도식인데, 이 간단한 도식을 머리속에 가지고 있으면, 더 어려운 개념들을 아주 명료하게 이해할 수 있습니다.




진짜 별거 아니지 않나요? 이 별거아닌 표기법 덕분에 정적 바인딩, 동적 바인딩, 변수의 메모리 정적할당 ~ 동적할당, 함수 매개변수의 참조호출, 값호출 등, 프로그래밍 언어의 코드를 조금 더 폭넓은 시각에서 볼 수 있게 되었습니다.


예를 들어, 정적 바인딩은 컴파일시간에 각 속성블록에 내용이 채워지는 거고, 동적 바인딩은 실행시간에 내용이 채워지는 것이라고 이해할 수 있습니다. 메모리의 정적할당 ~ 동적할당도 결국엔 어느 시점에 맨 오른쪽 네모칸 위에 있는 주소값이 확정되느냐의 문제로 인식할 수 있죠. 참조호출과 값호출은? 저런 Barron 체인이 하나인 상태에서 이름을 공유하느냐, 별도로 하나 더 생기느냐의 문제입니다. 


음... 제가 이 수업을 들으면서 느낀 명쾌함이 잘 전달되고 있는지 모르겠네요. 어떻게 말로 표현하기 어려운데, 간단히 말하자면 머리속에 얼기설기 비구조화되어있던 코딩 잡지식들이 체계화되는 느낌입니다.


그런점에서 프로그래밍언어론은 꼭 한번 들어볼만한 강의라고 생각합니다. 




4. 교재



4.1 교과서


프로그래밍언어론 교과서 기본정보: 정광식, 원유헌, 유헌창 저 / 2009년 1월 제작 / 214p / 9,100원



좀 됐지만 괜찮은 책


프로그래밍언어론은 제가 이번 학기에 들은 과목 중 유일하게 2000년대에 제작된 교재를 사용한 과목입니다. 2000년대 책이라서 그런지 총 214 페이지, 가격도 9,100원밖에 되지 않습니다.


방통대 교재들 두께나 가격이 거의다 그게 그거지만, 프로그래밍언어론이 이번 학기 교재 중에서 제일 싸고 제일 얇았던 책이네요. 디자인은 아무래도 떨어질 수 밖에 없지만 내용적 측면에서는 크게 이상했던 점이 없었습니다. 오타도 크게 문제될 수준은 아니었고요.


교재내용은 상대적으로 적은 느낌


교과서가 얇은건 장점이기도 하지만 단점이기도 합니다. 프로그래밍언어론은 2학년 2학기 수업인데, 동일하게 2학년 2학기 수업인 자료구조와 비교해봤을 때 그 내용량 차이가 꽤 나는거 같습니다. 


프로그래밍언어에 대한 논의가 조금밖에 없어 방통대 교재가 얇은거라고는 생각하지 않습니다. 조금 어려운 내용은 제외시켜버려서 프로그래밍언어론 책이 가벼워진거라고 생각하는데, 개인적으론 조금만 더 어려운 내용도 교과서에 넣으면 좋을거 같다고 생각합니다.


비록 중간고사나 기말고사에는 현재와 비슷한 수준의 문제를 낸다고 하더라도, 더 공부하고 싶은 사람은 더 공부할 수 있도록 교과서에 깊이를 조금만 더 주었으면 합니다. 마치 자료구조에서 다익스트라 알고리즘과 이행적 폐쇄행렬을 소개는 하되, 기출에선 한 번도 등장하지 않는 것처럼요.


교재 속 목차입니다. 


제1장 프로그래밍 언어의 소개 / 제2장 프로그래밍 언어의 구조 및 해석 / 제3장 변수, 바인딩, 식 및 제어문 / 제4장 자료형 / 제5장 영역과 수명 / 제6장 기억장소 할당 / 제7장 부프로그램 / 제8장 추상자료형





4.2 워크북


프로그래밍언어론 워크북 기본정보: 정광식 저 / 2010년 7월 제작 / 84p / 교과서 사면 무료로 제공


2009년 워크북은 사이즈가 크네요


가장 눈에 띄는건 워크북 사이즈입니다. 다른 방통대 교재는 교과서나 워크북이나 똑같이 B5사이즈(더 정확히는 크라운판)인데, 프로그래밍언어론 워크북은 혼자 A4사이즈입니다. 오래된 교재라 그런가봅니다... 별거 아니지만 눈에 확 띄어요. 그리고 책 키 안맞으면 책장에 넣을 때 안 예쁘죠.


적절한 요약 + 문제 구성


프로그래밍언어론 워크북은 시험전 딱 30분 전에 휘리릭 넘겨보기에 딱 좋은 구성입니다. 제가 기본적으로 문제가 많은 구성을 좋아하긴 하는데, 프로그래밍언어론 워크북 정도의 요약수준과 분량이라면 되게 괜찮은거같아요.


워크북이 2010년에 만들어졌기 때문에 워크북에 실린 문제들이 2005년, 2006년, 가장 빠른게 2009년 기출문제들입니다. 하필이면 문제번호 바로 옆에 몇년도 기출이라고 명시되어 있어서 문제 풀다보면 시간여행하는 느낌이 들긴하지만 문제 퀄리티가 좋아서 그런것쯤은 그냥 웃고 지나갈 수 있어요.



5. 인터넷 강의


절대 1시간을 넘지 않는다! 김진욱 교수님


교재의 내용이 적어서일까요, 김진욱 교수님의 설명도 간단명료합니다. 불필요한 얘기 하지 않고 핵심만 콕콕 설명하고 이해시켜주고 넘어갑니다. 그런데 강의시간을 보면 거의다 50분 - 55분 사이에서 끝나요. 아마 한 강의가 딱 1시간 수업했던거 같네요. (잘 기억안나지만) 진짜 짱입니다.


티비보면서 가는 10분은 큰게 아닌데 인강 보는 동안의 10분은 왜 이렇게 긴 걸까요. 한 강의가 50분인 강의는 빨리 듣고 끝낼 수 있겠다는 도전정신이 드는 반면, 60분이 넘어가는 강의는 인강 시작하기 버튼을 누르기가 겁납니다. 그래서 김진욱 교수님처럼 50분대에 수업을 마쳐주는 분들은 정말 최고라고 생각합니다. 최고임.



내용 부실하지 않습니다 


강의가 짧다고 설명을 날림으로 하는 것도 아니에요. 교수님이 중요하게 생각하는 부분, 그렇지 않은 부분 강약을 조절하면서 쉬운곳은 빠르게, 어려운곳은 자세히 설명해줍니다. 막히는 부분이 있을 때에도 강의 속에서 힌트를 얻는 경우도 있었습니다. 준동적변수에서 조금 헤매고 있었는데, 그 때 강의에서 "배열의 명세서 상에 시작주소가 명시되기 때문에~~" 라는 문장을 듣고, 준동적변수에 대한 간접접근의 의미를 이해했던 게 생각납니다.


그리고 교수님이 교재보다는 자신의 강의와 강의PPT를 기준으로 중간평가와 기말고사를 출제하기 때문에 어떤 이유든 간에 강의는 듣는 게 좋은거 같습니다. 바쁘면 강의 ppt라도 뽑아보는게 좋을것 같아요. 



6. 중간평가: 출석수업(출석수업대체시험) 


프로그래밍언어론은 시험공부하기 수월한 과목입니다. 지금까지 쌓여온 기출을 보면 문제 유형이 비슷해서 뭘 공부해야하는지 한 눈에 보입니다. 최근 3년간 기출을 보면 폰노이만 문제 하나, 언어 역사 하나, 언어 종류 하나, 컴파일/인터프리트 하나, BNF(EBNF) 문제 하나, 등등 항상 등장하는게 있어서 공부의 초점을 잡기가 쉽습니다.


시험범위는 1장, 2장, 3장으로 혁신적으로 짧은 범위였습니다. 책이 안 그래도 얇은데 3개 챕터만 시험범위라니 너무 잘하셨어요 교수님. 감사합니다.


각 인터넷 강의 기준으로 출제 문항수는 다음과 같았습니다. 1강-3문항, 2강-1문항, 3강-4문항, 4강-1문항, 5강-3문항, 6강-3문항.



7. 기말고사


2학년 수업이었기에 기말고사는 12월 6일 일요일에 치뤄졌습니다. 저는 이 날 시험을 4과목 봤는데, 프로그래밍언어론은 오후 2교시 시험이었습니다. 이날 본 마지막 시험이었죠.


교수님 힌트


교수님이 힌트를 올려주시면서 이런 말을 남겼습니다. 


" 기말시험 준비하실 때 멀티미디어 강의와 강의록을 중심으로 공부하시기 바라며 내용이 부족한 부분은 교재와 워크북을 참고하시면 되겠습니다. 그래도 해소되지 않는 궁금증은 이곳에 질문을 남겨주세요. 그리고 아래 내용들은 좀 더 집중해서 보시기 바랍니다. "


이 말은 곧 교재 혼자 읽지 말고, 강의와 강의ppt를 잘 보라는 말이죠. ㅎ 

그리고 집중해서 봐야하는 부분은 아래와 같았습니다.


1.1 프로그래밍 언어란 무엇인가 / 1.3 프로그래밍 언어의 설계기준

2.1 언어구문 / 2.2 프로그래밍 언어 구현 기법

3.1 변수 / 3.4 할당문

4.1 자료형과 형 선언 / 4.4 배열 / 4.6 레코드 / 4.7 포인터 자료형 / 4.8 자료형 변환 

5.2 정적 영역과 동적 영역 / 5.4 변수의 수명

6.2 단위 프로그램 / 6.3 정적 기억장소 할당 / 6.4 스택 기반 동적 기억장소 할당

7.1 부프로그램의 개요 / 7.2 매개변수 전달 기법

8.1 추상자료형의 개요 / 8.3 C++의 추상자료형


출제 문항수: 객관식 25문항(4점x3문항, 3점x14문항, 2점x8문항, 총 70점 만점)

교재 각 장 별 출제 문항수: 1장-3문항, 2장-6문항, 3장-2문항, 4장-5문항, 6장-2문항, 6장-3문항, 7장-2문항, 8장-2문항





프로그래밍언어론 후기 요약

  • 교재: 오래됐으나 평타이상
  • 강의: 듣는게 훨씬 나음
  • 중간평가: 기출과 유사하게 나옴
  • 기말고사: 교수님 힌트있음. 기출과도 유사.



공감♥은 제게 큰 힘이 됩니다. 감사합니다.


댓글