Daybreakin Things

Posted
Filed under 살아가기, 생각하기
시험도 끝났고 하니(...) 간만에 말림성 포스팅을 좀 해봐야겠다;

일단 내가 있는 과는 전산과. 보통 다른 대학에서는 컴퓨터공학과라고 해서 전자공학이랑 전산학이랑 같이 섞어서 배우는 경우가 많은데 우리학교는 둘이 엄연히 다르다. 2학년 전공 과목 중에 디지털 시스템 및 실험이나, 3학년 전공인 전산기구조(일명 architecture) 과목은 내용이 비슷하게 겹치지만, 그 외는 상당히 다르다.

※ 내가 비교적 잘 아는 과목 위주로 적었음.

[1학년(무학과) 과목]
CS101 기초프로그래밍 -_-
과목의 존재 이유를 잘 알 수 없는 과목. 프로그래밍을 좀 해본 사람들한테는 귀찮을 정도로 쉽고, 프로그래밍을 전혀 안 해본 사람들한테는 매우 어렵게 느껴지는 과목이다. 이 과목을 듣는다고 해서 프로그래밍에 대한 이해가 높아진다거나 하는 것 같진 않다; 나는 프로그래밍을 배우고 싶다는 사람이 있으면 CS101 듣느니(어차피 기초필수라 다 듣지만-_-) 2학년 전공인 데이터구조를 들으라고 권한다.

[2학년 과목]
CS204 이산구조
전산학에서 다루는 다양한 이론들을 맛보기 형식으로 배우는 과목이다. 전산과 전공이 아니더라도 들어두면 도움이 될 때가 있는 것 같다. 수학과의 이산수학과 학점교환이 되는데, 이산수학은 훨씬 빡쎄다;; 주로 다루는 내용은 집합, Logic, Graph, 재귀수열, Bool 대수, 알고리즘 기초, Relation, Tree 등의 수학과 관련된 것들이다.

CS206 데이터구조(Data Structure; DS)
프로그래밍을 하는 데 있어서 뼈와 살이 되는 것들을 배우는 과목으로, 본격적인 전산과 코딩을 시작하게 된다. (코딩 스킬을 어느 정도 확립할 수 있기 때문에 타과생들도 많이 듣는 편이다) Stack, Queue, Tree, Recursion 등과 함께 Java의 object와 reference에 관한 개념도 같이 배운다. 내가 수강한 Otfried 교수님 수업 프로젝트는 변수와 함수 선언이 가능한 계산기 짜기나 간단한 게임 만들기, 한자 패턴 인식 알고리즘 개발이 있었다. (....) 다른 교수님들의 경우는 상대적으로 프로젝트가 널럴하다.

CS202 문제해결기법(Problem Solving; PS)
전공선택 과목으로, 말 그대로 정보경시에 나오는 문제들만 죽어라 숙제로 푸는 과목이다. 정보경시를 했던 아이들이나 수학적 머리가 뛰어난 사람들이 가장 기를 펼 수 있는 과목(...)이기도 하다.; (이번 학기에 듣고 있는데, 물리과에서 온 분이 거의 관광하다시피 하고 있는 듯? -_-) 자연히 숙제 로드가 상당히 세지만 그만큼 재미도 있다. 5번 숙제를 제출하기도 전에 7번 숙제까지 나오는 압박스러움이 좀 있지만;

CS230 시스템 프로그래밍(System Programming; SP)
누가 말했던가. '어둠의 마법 방어술'이라고 비유할 수 있을 정도로 교수님에 따른 편차가 심한 과목. K모 교수님과 S모 교수님 두 분이 번갈아 가며 강의하시는데 그 난이도 차이는 상상을 초월한다. -_-;;; S모 교수님은 우선 '당구는 이론으로 치지 않는다'라는 사상과 함께 철학적인 토론 수업 + 스스로 학습하는 실전 삽질 코딩(체감로드 9학점 이상)을 가르치시는 반면 K모 교수님은 성경이라고 불릴 정도로 잘 정리된 수업 자료와 물 흐르듯 흘러가는 명강의로 유명하다. 배우는 내용은 Linux에서 system call이라 불리는 API를 사용해 프로그래밍하는 것이고 주로 shell을 기본적으로 짜게 된다.
나는 지난 학기에 S모 교수님 강의를 들었는데 역대 최고의 로드를 자랑했다. 이제 리눅스에서 프로그램 짜는 거 두렵지 않아~라는 말이 나올 정도.; 전공선택임에도 사실상 전공필수로서 전산과의 문턱이 되는 과목으로, 잘만 통과하면 확실히 전산과에 적응할 자격이 주어진다고들 말한다.

[3학년 과목]
CS300 알고리즘
2학년 때 PS로 삽질했던 것을 체계적인 이론과 함께 배우는 수업이다. Introduction to Algorithms를 교재로 쓴다. 로드가 좀 있는 편이지만 확실히 익혀두면 두고두고 써먹는 과목인만큼 전공 필수. 배우는 내용은 Divide & Conquer, Recursion, Search & Matching, Dynamic Programming, Backtracking 등의 알고리즘 설계 기법과 알고리즘의 시간복잡도나 공간복잡도를 분석하는 방법들이다.

CS311 전산기조직(Architecture of Computer;아키)
CPU에 들어가는 명령어 set이 어떻게 구성되는가라든지, 기초적인 전자회로를 이용하여 원하는 operation을 구현하는 방법, 연산/제어/입출력 장치 등을 배운다. 전자과적인 면이 짙지만 잘 알아두면 프로그래밍을 할 때 두고두고 도움이 되는 내용들이다. 임베디드 관련 계통을 할 생각이 있다면 정말로 중요한 과목. 전산과 과목 중에 유일하게 코딩을 하지 않아도 되는 과목이다.;

CS320 프로그래밍 언어(Programming Language; PL)
Prolog, Lisp, ML 등 함수형 언어 등 평상시 잘 접하지 않게 되는 다양한 프로그래밍 언어를 배운다. 또한 프로그래밍 언어를 설계하는 데 있어서 필요한 개념이나 자료 구조에는 어떤 것들이 있는지, 각 패러다임(functional인지 object-oriented인지 등)에 따라 어떤 issue들이 있는지를 개괄적으로 배운다. 전산과 과목 중 가장 코딩이 적은 과목 중 하나. 컴파일러의 선수과목이라고 볼 수 있다.

CS322 형식 언어 및 오토마타
프로그래밍 언어의 구성을 좀더 이론적으로(집합이라든가) 배우고, 이산구조 때 맛보기로 했던 오토마타를 본격적으로 다룬다. 오토마타는 쉽게 설명하자면 입력에 따라 자동으로 자신의 상태를 바꾸어가며 문제를 해결하는 자동 기계 정도로 생각하면 되겠다.; (가장 대표적인 예로 한글입력기를 들 수 있겠다)

CS330 운영체제 및 실험(OS)
전산과 전공필수 중 가장 고비가 되는 과목이다. 실습용 프레임워크 위에서 SP에서 사용했던 다양한 system call들, thread manager, virtual memory manager, filesystem 등을 직접 구현한다. 이 과목을 들을 때는 15학점 이하를 권장하고 있다.;; 다만 조별 프로젝트이기 때문에 학점이 반드시 실력과 비례하지는 않는다.;

CS360 데이터베이스 개론(Introduction to Database Systems; DB)
이건 H모 교수님과 K모 교수님(위와 다른 분)이 번갈아 강의하시는데 역시 어느 분이냐에 따라 수업 내용이 완전히 다르다.; 일명 황DB라고 불리는 H모 교수님 수업은 SQL Parser부터 시작하여 직접 DBMS를 구현하는 것이 한 학기의 목표고, K모 교수님은 SQL을 어떻게 하면 잘 사용할 수 있을까에 관한 수업이다. -_-; (이로부터 전자는 프로젝트가 빡세고, 후자는 숙제와 시험이 귀찮다는 것을 알 수 있다)

[4학년 과목]
CS420 컴파일러 설계
전산과 과목 중 가장 빡센 과목이다. 말 그대로 소스코드를 컴파일해 실행파일을 만드는 컴파일러를 만든다. Lexical analysis부터 시작해서 optimization에 이르기까지.. 정확히는 모르지만 C/Java를 변형한 스타일의 고유한 언어를 컴파일하게 된다고 한다.

CS441 전산망 개론(Network)
TCP/IP를 구성하는 각 네트워크 레이어에 대해서 차례로 배운다. 전산과 과목이 언제나 그렇듯 프로젝트의 압박이 좀 있는 과목.

CS480 컴퓨터 그래픽스
3D 그래픽을 DirectX 등을 쓰지 않고 직접 구현해보기도 하고, 간단한 지형 표현 엔진이나 미니 게임 등을 만들기도 한다. 꼭 들어보고 싶은 과목이나 로드가 만만치 않다. 기계과의 CAD/CAM과 학점교환이 된다고 알고 있다.

...

자, 이 정도면 대충 내가 아는 과목들은 소개한 것 같다. 물론 이 외에도 유명한 과목들이 더러 있기는 하지만, 전산과에서 대충 이러한 내용을 배운다는 것을 알 수는 있을 것이다.

근데, 다른 사람들 얘기 들어보면 울학교가 제일 빡신 것 같다. ㄱ-;
Posted
Filed under 살아가기, 생각하기
오늘부로 중간고사가 끝났다.;
이번 시험 기간의 총평 : 시험기간엔 IRC 켜지 말자. ㅠ_ㅠ

그러니까, 주말에는 뭐 이것저것 밀린 일거리도 좀 처리하고 말려준 다음(...) 월요일부터 착실하게 공부를 할 생각이었는데, IRC창에 뜬 Supreme Commander Beta Client가 돌돌 말아버렸던 것이다. 무려 룸메 컴퓨터에까지 설치해가며(아쉽게도 내 노트북에서는 그래픽 카드 호환 문제로 실행조차 되지 않음.. orz) 말려준 덕분에, 오늘 아침 8시까지 확률통계 공부하느라 밤새고(중간에 2시간 정도 자주긴 했지만)... 그나마 다행인 건 밤잠을 많이 못 잤음에도 시험 볼 때 컨디션은 나쁘지 않았다는 것. 긴장하면 역시 잠재력(?)이 발휘되는 것 같다.;;

확률통계 및 응용
이번 확률통계 시험은 시험지 앞장은 쉽고, 뒷장이 어려웠는데 책이나 숙제에 나오지 않았던 형태의 증명 문제가 있어서 곤혹스러웠다. 그 문제를 못 푼 사람이 상당히 많았던 것 같고, 나머지 유도 2문제는 살짝 공부 부족. 그나마 Central Limit Theorem을 이용한 30점짜리 증명문제는 풀어서 다행이다. (그러나 위에서 말한 3문제는 40점씩이라는 거-_- 참고로 만점은 300점) 결국 반타작인 셈이다.;

영어II
아침에 봤던 영어2는 완전..-_- 실력으로 푸는 게 아니라 말 그대로 닥치고 본문을 외워야 풀 수 있는 유형이었다. 문제는 '다음 중 문법 상 맞지 않는 것을 골라 바르게 고치시오'라지만 빈칸 뻥뻥은..... 매너염.

데이터베이스개론
마지막으로 봤던 김 교수님의 데이터베이스 개론은 완전 노가다였다. 프로그램 짤 때 레퍼런스 보면서 짜지 누가 그걸 다 외워서 짜나? 근데 그걸 100% 손코딩. -_-;;; 문제가 어렵진 않은데 일일이 쓰느라 시간 맞추기가 힘들 정도였다. (특히나 copy&paste가 가능할 정도면서 미묘하게 다른 Java JDBC와 C#.NET OLEDB 코드를 둘 다 쓰라는 건... 헷갈려서 꽤나 고생했다) 게다가 확률통계 공부하느라 며칠 전에 ppt 한 번 훑은 거 외에는 별도로 암기를 하지 않았으니... PL-SQL쪽의 stored procedure에서 예외 처리 부분은 완전 안드로메다로 가버렸다.;

심리학개론
어제 봤던 심리학개론은... 어찌된 게 인지과학입문의 주관식 서술형 문제보다 더 어려운 객관식 + 단답식 암기문제들 위주였다. 게다가 문제 수도 많아서 원래 같으면 1시간 반이면 여유있게 끝날 만한 시험이 아슬아슬하게 꽉 채워야 할 정도였다. 족보를 보진 않았지만 기존에 문제를 내던 방식을 완전히 뒤집는다고 하셨던 게 바로 이런 것인 모양이다. -_-

결국, 이번 시험에서 제대로 건진 과목은 선형대수학개론 하나 뿐인 것 같다. 나머지는 혼전이라 결과가 나와봐야 알 수 있을 듯하다. 과목 특성에 따른 공부 방법을 적용하지 못했다는 점이 가장 큰 실패(라고 아직 단정지을 순 없지만) 요인인 것 같다. 기말고사 때는 닥치고 다 외워주마! (...)