모두를 위한 컴퓨터 과학 (CS50 2019) 후기
교수님 소개
하버드대학의 최고 인기강좌, 데이비드 말란 교수님의 CS50입니다.
커리큘럼 & 핵심단어 정리
1. 컴퓨팅 사고
강의구성 : 2진법, 정보의 표현, 알고리즘, 스크래치 기초, 심화
핵심단어 : 비트, 바이트, ASCII코드, 유니코드, RGB, 의사코드, 알고리즘
2. C언어
강의구성 : C기초, 문자열, 조건문과 루프, 자료형, 형식지정자, 연산자, 사용자정의함수, 중첩루프, 하드웨어의 한계
핵심단어 : stdio.h, clang, 컴파일러, 형식지정자, string, make, if, while, for, 메모리, 오버플로우
3. 배열
강의구성 : 컴파일링, 디버깅, 코드의 디자인, 배열, 문자열과배열, 문자열의 활용, 명령행 인자
핵심단어 : 컴파일링, 어셈블링, 링킹, 디버깅, 전역변수, strlen, toupper, 명령행인자, argv, argc
4. 알고리즘
강의구성 : 검색알고리즘, 알고리즘 표기법, 선형검색, 버블정렬, 선택정렬, 정렬 알고리즘의 실행시간, 재귀, 병합정렬
핵심단어 : 선형검색, 이진검색, Big O, 구조체
5. 메모리
강의구성 : 메모리주소, 포인터, 문자열, 문자열 비교, 복사, 메모리 할당과 해제, 교환, 스택, 힙, 파일쓰기, 읽기
핵심단어 : 16진법, malloc, free, valgrind, scanf, fopen, fprintf, fclose, JPEG(Common JPEG markers)
6. 자료구조
강의구성 : 배열의 크기조정, 연결리스트, 해시테이블, 트라이, 스택, 큐, 딕셔너리
핵심단어 : malloc, realloc, 해시테이블, 해시함수
수강후기
초반은 스크립트언어를 통하여 보다 쉽게 코드가 어떠한 일을 할 수 있는지를 보여주고 C언어로 수업진행을 하였습니다. 자체 IDE를 제공해주어 개발환경 설정에 대한 어려움을 완화시켜 편하게 실습을 수행하여 온전히 수업에 집중 할 수 있었습니다. 또한, 알고리즘, 배열 등에 대하여 직접 학생들의 참여로 이해하기 쉽게 알려주었습니다. 예를 들면 배열의 경우 진짜 캐비넷을 가져와서 숫자를 캐비넷에 넣어가면서 직관적으로 이해하기 쉽게 알려주었습니다. 알고있는 내용들도 많았지만 읽고 이해하는것에서 벗어나 눈으로 알고리즘 및 CS지식을 보여주는 것이 가장 큰 장점인 강의라고 생각합니다.
마무리
저는 OT강의를 보다가 컴퓨터 과학이란 문제 해결의 학문이라는 문구를 보았습니다. 이 말이 저에게 아주 인상이 깊었고 하버드라는 명문대학의 강의는 무엇이 다를지 궁금하여 완강을 하게 되었습니다. 매우 직관적으로 알려주기에 만약 프로그래밍을 배우지 않은 상태라면 이 강의를 시작으로 프로그래밍 공부를 하는것도 좋은 선택이라고 생각합니다.
https://www.boostcourse.org/cs112
모두를 위한 컴퓨터 과학 (CS50 2019)
부스트코스 무료 강의
www.boostcourse.org