오리엔테이션
[전공 선택]이긴 하지만 다른 대학에서는 이 과목의 중요도가 높아지고 있다.
컴퓨터 구조와 연관성 높고, OS와도 연관성이 높다. 미국에서는 컴퓨터 구조, OS를 빼고, 시스템프로그래밍으로 한 번에 배우기도 한다.
CMU에서 제일 인기 있는 과목.
이론과 실습의 중요도는 실습이 더 크다. 준비할 것이 많다.
이 과목의 주제
컴퓨터 프로그래밍은 추상화가 대부분이다. (ex: 자바 abstract type.. 자료구조.. 논리회로..)
스마트폰 앱 - 카카오톡, 인스타 : 이것들이 기기의 메모리, 램, cpu를 어떻게 사용하는지, wi-fi가 어떻게 작동하는지.. 몰라도 돼! 앱을 이용하기만 하면 된다.(추상화)
추상화의 한계.
앱을 사용하다가 먹통이 될 때, 느려질 때, 추상화에 가려진 원인을 알 수가 없다!
시스템의 내부 동작에 대해서 알아야 한다!
과목의 목표 :
- 컴퓨터 하드웨어와 소프트웨어에 대한 본질을 이해 (시스템에 대한 이해.)
- 프로그램이 컴퓨터에서 실행된다는 것에 대한 실체적 진실 접근.(코드만 짜든, 툴을 이용하든 결국에는 컴퓨터에서 실행된다.)
- 효율적인 프로그래머
컴파일 시 warning이 뜬다. 하지만 프로그램은 잘 돌아간다. 이렇다면? 기괴한 버그를 효과적으로 퇴치하도록 하자.
내 코드가 왜 타인의 코드보다 느린 것일까? 자원을 왜 많이 쓰게 되는 걸까?
현상을 컴퓨터 내부를 통해 확인.
텐서플로우, 컴파일러를 만드는 개발자는 그렇게 많지 않다.
비전공자는 이해하기 어려운 사실.
- 컴퓨터 프로그램에서 정수의 제곱 >= 0 이다!
다만, 50,000 * 50,000을 한다면! 음수가 나온다. 그 이유가 뭘까 - (1e20+ -1e20) + 3.14 --> 3.14
1e20 + (-1e20 + 3.14) --> ???? 뭐야!
어셈블리어를 알아야 한다.
대개의 경우, 어셈블리 프로그램을 작성할 가능성은 거의 없다.
cpu의 동작을 이해하기 위해서 배워야 한다.
메모리가 중요하다.
메모리의 용량은 제한되어 있다. 프로그램을 돌리는 데 이것을 고려해야한다.
메모리 관련 버그는 치명적이다. 컴퓨터 구조 시간에 캐시 메모리 열심히 공부하자.
목표
- 프로그램의 하드웨어 사용 및 동작을 이해.
- 리눅스의 프로그래밍 환경에 익숙해지도록.
- 컴퓨터 시스템을 활용하는 프로그래밍 기법 학습.
- AI 시대에도 필요한 컴퓨터 하드웨어와 소프트웨어의 본질을 이해한다.
저자의 느낌을 원한다면 교재 원문을 읽어보는 것을 추천.
사이버 캠퍼스 자주 들어오기. piazza 잘 들어가자.
실습 4개
데이터랩, 밤랩,쉘랩,말록랩
출석 10퍼/ 2회까지는 눈 감아줌. 3회 결석부터 2점씩 감점
실습 보고서. 마김일을 넘기는 경우 1일에 15퍼 씩 감점.
팀프로젝트는 없다. 개인 역량을 끌어올리도록 하자.
실습 난이도가 높다.
강의 녹화 영상을 복습을 위해 제공.
'[Computer Science] -보호글 > [시스템프로그래밍]' 카테고리의 다른 글
[시스템프로그래밍] Bomb Lab (0) | 2023.10.17 |
---|