황현석 일지

충남대학교 2025 1학기를 마치며... 본문

황현석 어록

충남대학교 2025 1학기를 마치며...

황현석 2025. 6. 18. 17:01

역사와 리더십 (오지해 교수님)

☆ 자료구조 (박정희 교수님)

☆ 컴퓨터 프로그래밍 3 (조은선 교수님)

★ 계산이론 (이은주 교수님)

★ ★ 기초프로젝트랩 (김도헌 교수님)

★ ★ ★ ★  논리회로 (김형식 교수님)

   ★ ★   확률 및 통계 (조승범 교수님)

 

나는 2025 1학기 2학년에, 위의 7개의 과목, 총 21학점을 들었다.

역사와 리더십은 Don't care다. ppt를 달달 외워가긴 했는데.. 점수가 잘 나오는 것은 힘들 것 같다...

 

위에 과목들은 내가 느끼기에 난해하거나, 종합적으로 비중을 많이 잡아먹은 순서대로 배치했다.

 

졸업필수 과목인 자바로 배우는 자료구조에서는 초반에 ArrayList, LinkedList, Stack, Queue 등 익숙한 자료구조를 다뤄서 큰 어려움 없이 수업을 따라 갔다. 사실 잤다. Tree(AVL, RB, BTree)에 들어서면서 비로소 학습 의욕이 생겼고, 비로소 조금 어려운 자료구조와 시간 복잡도 얘기가 나와 집중하게 된 편이다.

특히 기억에 남는 경험은 BTree를 직접 구현해보는 과정이었다. split과 merge 연산을 코드로 구현하면서, 내가 이해한 트리의 형성과정의 정당성을 검토 할 수 있었다. 삭제 연산, 이동 연산이 불가능할 때의 통합 연산, 부모 노드의 키 수가 미달일 때 재귀적으로 부모 노드의 키를 삭제하는 절차 등 복잡한 과정을 하나씩 구현해보며 시간복잡도까지 몸소 느낄 수 있었다. 이 과정을 통해 처음 백준에서 자료구조를 배웠을 때의 그 설렘과 도전의식이 살짝 수면위로 떠올랐다.

 

주변 친구들과 선배들도 대체로 쉽다는 평이 많았다. 나는 자만심 때문에 PPT를 꼼꼼히 보지 않아, ArrayQueue의 resize 호출 방식 등 세부 구현을 제대로 숙지하지 못해 중간고사에서 실수가 있었다. 이론 시험에서 실수를 좀해서... 성적은 A0 정도로 예상한다.

 

컴퓨터 프로그래밍3에서는 C언어의 포인터, 작동 원리, 컴파일 과정, 자료형, 메모리 저장 방식, 그리고 리틀-엔디언 등 기초적인 내용부터 언어의 내부 원리까지 폭넓게 배울 수 있었다. 특히 포인터의 응용과 메모리 구조를 직접 다뤄보면서, C언어가 어떻게 저수준에서 동작하는지 이해하는 데 큰 도움이 됐다.

수업을 통해 데이터가 이진수로 메모리에 저장되고, 리틀엔디언 방식으로 저장된다는 점, 그리고 결국 타입이라는 것은 데이터를 해석하는 방법에 불과하다는 사실을 깨달았다. 깨달음 덕분에 포인터를 자유롭게 캐스팅하고, 평소라면 시도하지 않았을 다양한 실험을 하면서 새로운 개념과 내가 익힌 내용들을 검증하는 방식으로 공부했던 것 같다. 앞으로 컴파일러 수업에서 이러한 데이터 해석 방식을 직접 구현하고 더 깊이 이해할 수 있을 것 같아 기대가 크다.

 

계산이론... 확률과 통계 다음으로 어렵고 난해하다고 느낀 과목이다. 중간에 포기하는 학생이 많을 정도로 난이도가 높았지만, 그만큼 시험은 비교적 쉽게 출제되는 경향이 있었다.

다양한 학생들의 창의적인 답안을 교수님이 모두 이해하고 반증하며 채점하는 과정이 상당히 고될 것 같다는 생각이 들었다.

 

기초프로젝트랩은 쉽지 않았다. 좋은 아이디어를 내지 못해 기능 위주로 개발했고, UX에 집중해 LLM을 적극적으로 활용해 앱을 만들었다. UI와 Backend 모두 기본 뼈대를 갖췄다. 나중에 시간이 된다면 Swift를 배워 앱 개발에 관심 있는 친구들과 완성까지 도전 하려고 한다.

 

논리회로는 굉장히 힘든 과목이었다... 물리적으로 가장 힘들었던 과목이었다.

실습 시간에 시간 압박이 크기 때문에, 실수를 최대한 줄여야 했다. 첫번 째 실습 때, XOR칩이 고장나 있을 줄은 진짜 상상도 못했다. 그래서, 같은 회로를 다시 설계해서 다른 곳에 여러 번 다시 꽃았던 기억이 아직도 새록새록 하다.. ㅠㅠ

매주 20~40개 분량의 과제가 주어져 일주일에 2~4시간은 과제에 투자해야 했다. 과제량이 가장 많았던 과목으로 기억된다.

 

확률과 통계를 A+ 받으면, 조승범 교수님의 알고리즘 강의를 들을 예정이다. 좋은 교수님은 점수를 좋게 준 교수님 밖에 없다....

 

노베이스로 시작해서 처음에는 모든 개념을 이해하고 암기하며 퀴즈를 봤다. 하지만 퀴즈에서 실수와 느린 응용력 때문에, 기존 공부법이 오만했다는 점을 인정하게 됐다.

그 후 교과서의 기초 Exercise 문제를 모두 풀면서 기본기를 다졌다. 퀴즈 점수도 점차 오르고, 중간고사와 기말고사에서 상위권 성적을 받았다. 퀴즈에서 실수했다고 낙담하지 말고, 기본에 충실하면 충분히 만회할 수 있다는 점을 느꼈다.

 


 

CNU Tutoring 비교과 프로그램에서는 학기 중 총 8번의 강의를 직접 진행했다.

 

처음에는 강의 자료를 만드는 과정이 쉽지 않았지만, 경험이 쌓이면서 점차 2~3시간 만에 자료를 완성할 수 있을 정도로 능숙해졌다. 처음에는 다소 어렵고, 실제 성적에는 직접적인 영향이 없을 수도 있는 깊이 있는 기술적 내용을 다뤘는데, 예상과 달리 이 내용이 실제 시험에 출제되어 후배들의 성적 향상에 도움이 되었다는 점이 신기했다. 또한, Java의 내부 모듈 작동 원리나 시간복잡도 등 심층적인 내용을 스스로 공부할 수 있는 기회가 되어 개인적으로도 의미 있는 경험이었다.

 

AnA 중급 알고리즘 강의를 총 2회 진행하며, 강의 자료는 3회에 걸쳐 제작했다.

자료를 준비하는 데 상당한 시간이 소요되었으나, 캠퍼스에서 제공하는 디자인 템플릿을 활용해 시각적으로도 깔끔한 자료를 만들기 위해 노력했다.

강의에서는 Sparse Table, Segment Tree, 이분 탐색 등 고급 알고리즘 주제를 다루었다. 특히, 직접 가르치는 과정에서 평소 혼동했던 개념들—예를 들어 이분 탐색의 경계 처리, Segment Tree의 시간복잡도 정당성 등—을 다시 증명하고 정리하는 경험을 통해, 나 자신도 해당 주제에 대한 이해를 확실하게 다질 수 있었다.

강의 자료를 체계적으로 준비하고, 동료들에게 명확하게 설명하려는 과정이 매우 의미 있는 학습 경험이었으며, 알고리즘에 대한 심도 있는 이해와 설명 능력을 모두 향상시킬 수 있었다.

 

DevDay에서는 무난하게 2등을 했다.

1등 해서 에어팟이라도 하나 장만할 생각에 살짝 기대했는데, 아쉽게도 목표 달성에는 실패... >.< 그래도 상금은 챙겼으니, 이제 그래픽카드 중고로 팔아서 4070에서 5070으로 업그레이드할지 진지하게 고민 중이다. 다음엔 꼭 1등해서 에어팟이든 뭐든, 원하는 거 다 챙겨올 수 있도록 더 연습해야 겠다.

 

사실 아직 1학기는 끝나지도 않았고, 시험도 4개나 남았다. 공부하기 싫어서 이런 글이나 끄적여 본다...

공부 개귀찮다..