Back to : snu-courses
Contents

가장 쓸 말이 많은 3설계 과목 (소개원실, 하시설, 창통설) 은 별개의 글로 남길 예정입니다.

1학년 과목

컴퓨터의 개념 및 실습

  • 2018년 1학기 (1학기차) 에 수강했습니다.
  • 굉장한 과목입니다. 들을 때는 몰랐는데, 다른 학교의 1학년 첫 컴공과 기초 과목이 보통 파이썬이나 C를 가르치는데 비해 이 과목은 무려 컴퓨터구조에 대해 배웁니다. LC-3라는 toy computer의 어셈블리는 물론, 기계어로 직접 뭔가를 짜게 합니다.
  • 이게 무슨 말이냐면, 보통 C를 배운 후 어셈블리로 넘어가서 C를 통해 어셈블리와 컴퓨터 구조를 이해하는게 일반적인 테크지만, 저희는 반대로 컴퓨터의 폰 노이만 구조와 Program counter, memory model을 먼저 배운 뒤, 어셈블리 (진짜 어셈은 아니지만) 단계에서 이를 이해해보고, 거꾸로 C를 그 위에서 쌓아 나갑니다. 이렇게 배우면 포인터가 안 어렵다는 정도? 장점이 있는것 같습니다.
  • 힘들었지만 재밌었습니다. A-인가? 받았습니다. 저는 입학하고 프로그래밍이라는걸 처음 배워본지라… 이때까지는 과고 친구들과 경쟁자체가 안 되더군요 ㅋㅋ

프로그래밍 연습

  • 2018년 2학기 (2학기차) 에 수강했습니다.
  • C언어의 기초를 배웁니다.
  • 기말프로젝트가 카드 뒤집으면서 기억력으로 페어 맞추는 게임 (게임 이름을 까먹었네요) 만드는 거였는데, 재밌었습니다.

이산수학

  • 2021년 1학기 (7학기차) 에 수강했습니다. (왜?? ㅋㅋㅋ)
  • Logic, Group, Probability, Graph, Algorithm 등 종횡무진 뛰어다니며 넓고 얕게 배웁니다.
  • 저는 CS/MATH이고 7학기차였으므로 저는 이 과목에서 배우는 모든 내용을 다른 과목에서 배워본 상태였습니다. 처음 듣는 컴공 전공이라면 증명이나 논증을 체계적으로 하는 법을 익히는 좋은 과목이라고 생각합니다. 저는 그 역할을 해석개론이 대신해 줬습니다.
  • 너무 늦게 들어서 쉬웠습니다. 1학년 때였다면 느낌이 좀 달랐을것 같습니다. A+.

2학년 과목

컴퓨터 프로그래밍

  • 2019년 1학기 (3학기차) 에 수강했습니다.
  • 객체지향 프로그래밍, 객체지향의 개념에 대해 배웁니다.
  • 기말 과제로 체스를 구현하는 과제가 있었습니다. 처음 하면서 꽤 어려웠던 기억이 있습니다.
  • 이런걸 익히려면 해보는 방법밖에 없다는 말을 체감하게 됩니다. 코딩을 하다보면 아 이게 그런 말이구나 할 때가 있습니다. A+.

논리설계

  • 2019년 1학기 (3학기차) 에 수강했습니다.
  • Boolean Algebra와 카르노 맵으로 시작해서, 논리 게이트, Adder 등 간단한 논리 회로에 대해 배웁니다. 끝부분에는 FSM을 다룹니다.
  • 마지막에는 베릴로그로 CPU 짜는 과제가 있었습니다.
  • 강의가 정말 재밌고 흡입력있었지만 저는 내용에서 고통받았습니다.
  • Verilog 3부작 중 1부인데, 저는 정말 힘들었습니다. 저는 Verilog와 진짜 안 맞는다는걸 깨달았습니다. B+.

자료구조

  • 2019년 2학기 (4학기차) 에 수강했습니다.
  • 저는 입학하자마자 SNUPS에서 kipa00님한테 PS를 배우면서 C++를 익히는 것으로 시작해서, PS를 꽤 열심히 했었기 때문에 이때는 블루~퍼플 근처의 실력이었습니다. (지금도 퍼플을 못 벗어나고 있네요 ㅋㅋ) 2년 더 이때처럼 Training했으면 제가 PS를 더 잘 했을까요? 모르겠네요…
  • 가장 집중적으로 PS를 공부했던 시점이라서 자료구조는 쉽게 공부했습니다. A+.

컴퓨터구조

  • 2019년 2학기 (4학기차) 에 수강했습니다.
  • 컴퓨터공학이 뭔지 알기 위해 딱 2개의 수업만 들을수 있다면 저는 알고리즘과 컴퓨터구조를 뽑겠습니다. 컴퓨터구조에서는 논설의 끝부분을 시작으로, CPU의 내부 구조, Pipelining, Memory Hierarchy, 멀티코어와 멀티스레드 등을 다룹니다.
  • 컴퓨터 자체에 대해 가장 많은 내용을 배울 수 있습니다. 언젠가 고급 컴퓨터 구조를 듣고 싶은데 여력이 될지 모르겠습니다.
  • Verilog로 파이프라이닝이 있는 CPU를 짜는 과제가 나왔었는데, 여기서 거의 0점에 가까운 점수를 받았습니다. 이 과제가 아니었다면 나머지는 A+를 충분히 받을 수 있는 성적이었는데 이 과제 하나 때문에 A0를 받았습니다. Verilog는 너무 어려워요…

프로그래밍 언어

  • 2019년 2학기 (4학기차) 에 수강했습니다.
  • OCaml로 함수형 프로그래밍, 메모리 관리, 재귀 호출 등 PL의 핵심 아이디어들을 배웁니다.
  • 인터프리터 만드는 과제가 꽤 많은데, 과제가 재밌지만 오래 걸렸습니다.
  • OCaml 프로그래밍이 굉장히 생소했습니다. 그후로 한번도 안써서 이제는 많이 잊어버렸습니다.
  • 과제만 잘 하면 되는, 시험 없는 꿀과목입니다만 시험이 없어서 공부를 덜 한것 같기는 합니다. 학점은 A+ 받았습니다.

전기전자회로

  • 2019년 2학기 (4학기차) 에 수강했습니다.
  • 일반적인 전기전자회로 수업입니다.
  • 힘들고 어려웠습니다. 돌이켜 생각해보면 내용이 막 어렵진 않았는데, 공부하기가 너무 힘들었습니다.
  • B+ 받았는데, 논설이랑 이건 좀 얘기가 다릅니다. 이과목은 미적분학이나 공학수학 내용 (미방 풀기) 에 대한 기본 이해가 필요하고, 수식전개를 잘 해야 합니다. 저희과는 지금 고등학교때 문과였던 / 공학수학을 이수하지 않은 복부전생들이 많아서, 이런 과목은 엄청나게 어드밴티지가 있습니다. 그럼에도 불구하고 B+를 받았다는건 제 놀라운 실력을 imply합니다.

3-4학년 과목

컴퓨터공학부의 경우, 3-4학년 과목 상당수가 선수관계에 있지 않고 난이도 면에서 큰 차이가 없다고 느껴 같이 서술합니다.
대부분의 빡센 전필 과목이 3학년 과목이라서 그렇기도 합니다.

알고리즘

  • 2020년 1학기 (5학기차) 에 수강했습니다.
  • 자료구조와 같은 이유로 비교적 편하게 들었습니다.
  • 모든 알고리즘 강의에서 강의하는 시간복잡도, 정렬, 탐색, DP, 그리디, 그래프, 최단경로, MST까지 배웁니다.
  • 그 후로는 NP-Complete 문제들과 그 환원, matroid 등 재밌는 개념들을 좀 배웠습니다. 이쪽이 주력이셨던 교수님이셨기 때문에 특히 그랬던듯 합니다.
  • 비슷한 PS 실력의 다른 사람들에 비해, 저는 이론적인 알고리즘에 관심이 많은 편입니다. 이때쯤에는 이쪽 분야 진학을 계획하기 시작했기 때문에, PS 공부를 이 이후로는 거의 못 했습니다. 그와는 별개로 알고리즘 수업은 정말 재밌게 들었습니다.
  • 그리고 뭐… 어쨌든 퍼플이면 학부 알고리즘 수업은 무난하게 들을 수 있습니다. 특히 construction에 강한 사람들보다 (PS를 진짜 잘하는건 이분들입니다) 저처럼 대학와서 PS를 시작해서 academic하게 공부한 사람은 더 그렇습니다. A+ 받았습니다.

양자 컴퓨팅의 기초

  • 2020년 1학기 (5학기차) 에 수강했습니다.
  • 물리학이라고는 1학년 1학기에 교양 B0 맞은 이후로 쳐다본적도 없는데, 갑자기 양자역학의 기초 원리들을 배우게 되어 어려웠습니다.
  • 선형대수학을 열심히 들었다면 할만하고, 그렇지 않다면 듣기 힘든 과목인것 같습니다.
  • 나머지 CSE 과목들과 아예 다른 트랙 위에 서 있어서, 이것만 들어도 들을만 합니다 (Lin Alg를 안다면)
  • 새롭고 재밌었습니다. 아예 새로운 내용을 배우는 과목은 대체로 좋아하는 편입니다. A+ 받았습니다. 코로나버프가 살짝 있었던듯 합니다.

데이터베이스

  • 2020년 1학기 (5학기차) 에 수강했습니다.
  • 제게는 학부 지도교수님이신 교수님께서 강의하시는 과목입니다. 상담때 정말 많은 조언을 받았기 때문에 항상 감사한 마음입니다.
  • 무려 JAVA로 밑바닥부터 SQL 쿼리를 파싱하고, 이를 처리하는 프로젝트가 있습니다.
  • 모든 DB 강의에서 배우는, DB의 원리들, SQL, DB가 가져야할 원칙 등을 배우는, standard한 수업입니다.
  • 공대지만 Engineering스러운 과목은 많이 듣지 못했는데, 이 과목은 좀 CS에서는 Engineering스러운 마인드의 과목이라서 나름의 재미가 있었습니다.
  • 하지만 프로젝트의 코딩량이 정말 충격적입니다. 저는 주언어가 C++이었고 JAVA 코딩은 컴프-자구 과제 해본게 다였기 때문에 정말 어려웠습니다. 솔직히 C++로 짰으면 짤 수 있었을것 같은데, 뭐 이건 제 코딩실력의 문제이므로 수업 자체의 난이도와는 좀 다른 얘기가 아닌가 싶습니다.
  • 지도교수님께서 강의하시는 과목이라서 그런지 나름 더 열심히 들었고, 재밌었지만 제 JAVA 실력에 의해 B+를 받았습니다. 그와는 별개로 여기서 배운 내용은 이후에도 많은 도움이 됩니다.

소프트웨어 개발의 원리 및 실제

  • 2020년 2학기 (6학기차) 에 수강했습니다.
  • 실제 개발의 프로세스, 디자인 패턴 등을 배우고, 팀플로 하나의 웹앱을 직접 만들어서 출시해야 하는 과목입니다.
  • 어느순간부터 머신러닝을 포함해야 한다는 요구조건이 붙었습니다.
  • 대략 5,000 단어 분량의 5부작 후기가 준비되어 있었으나, 다양한 사정으로 퇴고를 거듭한 끝에 블로그에 올리지 못했습니다.
  • 학교 다니는 중 가장 힘들었습니다. 4학점 과목이지만 체감 로드는 15학점 이상 됩니다. 저는 2020-1학기 전체 18학점과 이 과목 하나가 비교할 만 하다고 생각합니다.
  • 배우는것은 많습니다. SNULife에 있었던 강의평의 일부를 인용하며 짧은 소개를 마치겠습니다. 참고로, snulife 평점 7.8임에도 당도 1.5에 빛납니다. 이 강의평 이상으로 이 과목을 표현할 자신이 없습니다.
    “강의가 끝나고 나면 내가 이전의 나와는 다른 프로그래머가 된 것을 느낄 수 있습니다. 그런데 그건 이전의 내가 프로젝트 하다가 죽어서 그런겁니다.”
    “여튼 이걸 아직 안 들었다면 마음의 준비 단단히 하시고, 윗공대 오실 떄 왠만하면 이불이나 담요 챙겨오시길 바랍니다. 파이팅.”
  • 정말 많은 노력을 (15학점 분량 정도) 했고 A-를 받았습니다.

시스템 프로그래밍

  • 2020년 2학기 (6학기차) 에 수강했습니다.
  • 컴퓨터구조 수업에 이어서, 컴퓨터 내부의 핵심 원리들을 배웁니다. I/O로 시작해서, Virtual memory, malloc의 원리, Pipe와 프로세스간 통신, 멀티스레딩을 배웁니다. 마지막에는 네트워크 기초를 좀 배웁니다.
  • Malloc을 직접 구현하는 malloc lab이 상당히 악명 높습니다.
  • 굉장히 유익하고, 배우는게 많으며, 어렵지만 재밌습니다. 컴구와 함께 반드시 들어야 할 컴퓨터공학과 수업입니다. 크게 컴구/시프와 자구/알골 이렇게까지 4개만 들으면 컴공과의 코어 아이디어는 다 가져갔다고 생각합니다. 이후로는 다 개별 과목이라서요…
  • 소개원실 플젝이 모든것을 잡아먹어서 기말을 터트리고 A-를 받았습니다.

하드웨어 시스템 설계

  • 2021년 1학기 (7학기차) 에 수강했습니다.
  • FPGA 보드로 행렬곱셈을 가속해서 CNN을 빠르게 돌리는… 뭐 그런걸 합니다. 로직은 C++로 짜고, FPGA는 베릴로그를 씁니다.
  • 베릴로그를 정말 못 하는 제게는 너무 힘든 과목이었지만, 베릴로그 파트는 훌륭한 팀원이 멱살잡고 캐리했습니다. 그 대가로 저는 C++ 코드를 하루종일 들여다보고 포인터 연산을 열심히 해야 했지만 그래도 팀원과 제 로드 배분이 6:4 정도로 제가 조금 버스 탔다고 생각합니다. 이 은혜는 창의통합설계 때 갚아야한다고 다짐했습니다.
  • 짧은 후기를 블로그에 쓸 예정입니다.
  • 어렵지만 돌이켜보면 남은건 꽤 많습니다. 아쉬운 점은, 플젝을 한학기 내내 했음에도 실제 로드는 마지막 한주에 몰아져 있었다는 점입니다.
  • 선배들이 사람에 따라 0.2~0.4 소개원실이라고 조언했는데, 마지막 주가 되기 전까지는 전혀 이해를 못 했습니다. 마지막 주에는 왜 그런지 납득하긴 했지만, 그래도 저는 동의할 수 없습니다. 소개원실 로드의 1/10도 안 됩니다.
  • 혹시 이 글을 보는 19~학번 설컴공이라면 한번쯤 고려해보세요. FPGA같은 유망한 기술에 대해 이정도 이해를 위해 이정도 노력은 들일만한 가치가 있습니다.
  • 학점은 A0 받았습니다. 팀원이 한단계 정도는 버프해줬다고 생각합니다.

창의적 통합 설계

  • 2021년 2학기 (8학기차) 에 수강예정

대학원 과목

계산이론

  • 2021년 2학기 (8학기차) 에 수강예정