전산 전공자거나 개발자로써 꼭 배워야할 기초지식들을 무료로 제공하는 은혜로운 강의들이다. 시스템 프로그래밍 (CMU) Bomb Lab, Malloc Lab으로 유명한 시스템 프로그래밍 강의다. 2015 Fall: 15-213 Introduction to Computer Systems : Panopto 데이타베이스 (CMU) CMU Database Group에서 제공하는 데이타베이스 개론 강의다. CMU Intro to Database Systems (15-445/645 - Fall 2022) - YouTube 과제도 제공된다 CMU 15-445/645 :: Intro to Database Systems (Fall 2022) FAQ를 읽어보면 Non-CMU 사람들을 위해 Github 저장소와 Gradesc..
Everything in Python is an object. 파이썬에서 모든 것은 개체(오브젝트, object)다. 파이썬 함수도 예외는 아니다. 예전에 파이썬 코딩을 하다가 이상한 것을 목격했다. 빈 리스트를 기본값으로 가지고 있는 함수의 반환값이 계속 변화하는 것이다! >>> def func(l=[]): ... l.append('lol') ... return l ... >>> func() ['lol'] >>> func() ['lol', 'lol'] >>> func() ['lol', 'lol', 'lol'] >>> func() ['lol', 'lol', 'lol', 'lol'] 이런 일이 발생하는 것은 파이썬에서 함수는 하나의 개체로써, 기본값들을 속성으로 저장하고 있기 때문이다. 함수의 dunder..
비교할 대상이 없으면 어떻게 평가를 하지요? 새로 만든 게 좋은 건지 나쁜 건지 어떻게 알아? 오늘 운영체제 수업에서 교수님이 했던 질문 중에 가장 흥미로운 질문이다. 2005년 이전, 스마트폰이 등장하기 전, 모바일이라는 미지의 세계를 위해 운영체제를 만드는 사람들은 어떤 고민을 했을까? 운영체제는 본질적으로 컴퓨터를 구동시키기 위한 소프트웨어일 뿐, 운영체제 자체가 컴퓨터의 유즈케이스(Use Case)가 되지 못한다. 운영체제를 잘 알아야 유즈케이스가 탄생하는 것이 아니고, 오히려 그 반대다. 유즈케이스를 잘 알고 있어야 운영체제가 어떤 기능을 지원해야하고, 어느 정도의 성능이 필요한지 알 수 있는 것이다. 실제로 가치가 창출되는 지점은 이런 유즈케이스이기 때문이다. 사람들은 컴퓨터로 넷플릭스를 보고..

.NET에서 프로그램을 작성하다보면 Stream(스트림)을 사용할 때가 많은데, 공식 문서를 읽어보면 이렇게 쓰여있다. Stream is the abstract base class of all streams. A stream is an abstraction of a sequence of bytes, such as a file, an input/output device, an inter-process communication pipe, or a TCP/IP socket. The Stream class and its derived classes provide a generic view of these different types of input and output, and isolate the program..

컴퓨터에서 CPU가 메모리보다 훨씬 빠르다는 이야기는 프로그래밍을 한다면 많이 들어봤을 것이다. 하지만 그 의미를 제대로 이해하고 코드를 작성하는 것은 쉽지 않은 일이다. 빠른 CPU와 느린 메모리의 속도 차이를 극복하기 위해 컴퓨터 시스템이 어떻게 구성되어 있는지를 이해해야 이 특성을 제대로 활용할 수 있다. 메모리 계층 구조와 지역성 컴퓨터의 메모리는 계층 구조를 가진다. 속도가 빠른 순으로 나열하면 온칩 캐시부터, 오프칩 캐시, 메인 메모리가 메모리 계층을 이룬다. (외부저장장치는 논외로 한다.) 온칩 캐시는 CPU 칩 안에 들어있는데, 수 나노초 안에 접근할 수 있으며, 접근 속도는 점점 느려져서 메인 메모리는 수백 나노초, 밀리초 단위까지 느려진다. 온칩, 오프칩 캐시는 최근 접근한 메모리 공간..

사람의 학습능력을 높게 유지하려면 지속적인 피드백을 주어야한다. 강의를 들을 때 내용이 이해가 되지 않아서 졸음을 느낀 경우가 있을 텐데 이는 학습 내용에 대한 피드백이 끊겼기 때문이다. 그래서 새로운 내용을 처음 공부할 때 이런 피드백 순환구조를 마련하는 것은 효과적인 학습을 위해서 아주 중요하다. 수업시간에 계속 질문은 한다던가, 문제를 풀어보면서 채점을 하는 활동을 하면서 자신이 내용을 제대로 이해하고 있는 것인지 스스로에게 끊임없이 물어보는 것이다. ChatGPT는 이럴 때 큰 도움이 된다. 최근 학교에서 데이터베이스 개론 수업을 듣고 있는데, 중간고사 내용이 SQL이었는데 내용이 방대했다. 이 내용을 수업 슬라이드만 보고 달달 외우는 건 무리라고 생각해서 ChatGPT를 이용해서 피드백 순환구조..
전산학(컴퓨터 공학, 컴퓨터 과학)의 핵심은 내부 구조를 설계하고 이것을 적당한 것만 추려 드러내는 데에 있다. 이런 기법을 보통 추상화(Abstraction)라고 부른다. 어렵고 복잡한 내용을 중요한 개념으로 간추린다는 의미다. 컴퓨터는 인간이 만들어낸 가장 복잡한 시스템 중 하나다. 한 명의 인간은 생애동안 컴퓨터의 모든 것을 이해할 수 없다. (만약 가능하다고 해도, 인생에서 많은 것을 포기해야만 할 것이다.) 추상화는 컴퓨터 시스템의 각 분야에서 핵심만을 간추려, 우리가 위대한 일을 할 수 있도록 해준다. 프로그래밍 언어, 운영체제, 데이터 구조, 알고리즘, 네트워크 등 전산학에서 다루는 모든 주제에서 이 점을 살펴볼 수 있다. 프로그래밍 언어에서 번역기(컴파일러)의 예를 들어보자. 번역기는 인간..
- Total
- Today
- Yesterday