Post

[CMU15-213] Lecture 01: Course Overview

[CMU15-213] Lecture 01: Course Overview

CMU(Carnegie Mellon University) 2015 Fall: 15-213 Introduction to Computer Systems 과목에서 Lecture 01: Course Overview를 수강 후 인상 깊은 부분을 정리한 글입니다.

시스템 해킹을 공부하고 있어서 기본적인 x86(-64) calling convention, stack에서 발생하는 취약점, 보호기법, Format String Bug 등을 알고 있었고, 이 수업에서 어떤 내용을 배울지는 가볍게 들을 수 있었다.

오히려 overview 내용보다는 수업에서 cheating을 어떻게 정의했는지가 가장 흥미로웠다.

강의에서는 다음과 같이 Cheating을 정의한다.

Cheating

  1. 코드 공유 : 파일을 베끼거나, 다시 타이핑하거나, 보는 것.
  2. 설명 : 코드를 low-level에서 서로에게 설명하는 것.
  3. 가르쳐주기 : 친구의 과제를 한줄씩 알려주는 것.
  4. 구글링으로 soluton을 찾는 것.
  5. online solution이나 어떤 코드든 베끼는 것.

NOT Cheating

  1. gdb나 과제 사이트 등 툴을 어떻게 사용하는지 설명하는 것.
  2. high-level에서 코드에 문제가 있을 때 서로 도와주는 것.

Problem

스스로 해봐야 한다

그동안 개념을 이해하는데 있어서 구글링이 중요하고 때로는 남의 코드를 참고하는 것도 학습의 일부분이라고 생각했는데, 남의 코드를 보는 것도 cheating이라는 점에서 충격을 받았다.

돌아보면 코드를 짤 때, 무의식적으로 남의 코드를 참고하고 코드치는 경우가 많았다. 앞으로는 high-level에서 이해했다면 먼저 스스로 코딩한 이후에, 남의 코드를 보고 공부하는 습관을 가질 것이다.

GPT 의존 그만

두번째로는 요즘 주변을 보면 ChatGPT로 과제하는 친구들(물론 나 포함)이 꽤나 많은데, 이번 강의를 들으면서 학생이 스스로 문제를 풀 수 있는 능력을 굉장히 중요시한다는 느낌을 받았다.

GPT가 할 수 있는 일이 많아지면서 점점 기본적인 것조차 GPT에 의존하게 되는 것 같다. 요즘은 스스로의 생각에 갇혀 있어서 누군가의 도움이 필요할 때만 GPT를 사용하려고 노력하는 편이다.

예를 들면 어떤 관찰이나 추론을 했는데 이와 관련된 내가 모르는 이론이 있을 것 같다거나, 생각의 확장이 필요할 때 구체적으로 물어보곤 한다.

이번 강의를 들으면서도 영어로 듣는게 꽤 불편해서 음성 파일을 GPT한테 주고 강의노트를 만들 생각도 잠깐 했었는데, 스스로 메모하고 정리하는 것도 하나의 능력인 것 같아서 직접하고 있다.

정리

정리하자면, 어떤 문제에 직면했을 때 최대한 스스로 해결해보려고 하고 GPT는 적절히 사용하는 것이 맞다고 생각한다.(이번 강의의 모든 lab은 GPT와 구글링 없이 강의와 책 내용만으로 진행할 것이다.)