CS50

Jmnote (토론 | 기여)님의 2025년 12월 19일 (금) 13:54 판 (→‎개요)

1 개요

CS50: Introduction to Computer Science
  • 하버드 대학교( Harvard University )에서 제공하는 컴퓨터 과학 입문 강의
  • 컴퓨터 과학을 처음 접하는 학습자를 대상으로 하며, 프로그래밍 경험이 없는 수강생도 따라올 수 있도록 설계되어 있다.
  • 문제 해결(problem solving)을 중심에 두고, 프로그래밍 언어 자체보다는 컴퓨팅 사고력과 알고리즘적 사고를 기르는 데 초점을 맞춘다.
  • 하버드 재학생뿐 아니라 전 세계 누구나 온라인으로 수강할 수 있어, 대표적인 공개 컴퓨터 과학 강의로 꼽힌다.

  • 과목 번호만 보면 일반적인 입문 과목 번호인 "101"보다 더 기초적인 수준을 의미하는 것처럼 보일 수 있으나, 이는 단순히 하버드 대학교에서 전통적으로 사용해 온 과목 번호 체계에 따른 것이다.[1]
  • 입문 과목임에도 문제 세트(pset)의 난이도와 요구 학습량이 상당히 높아, 다른 컴퓨터 과학 입문 과목보다 어렵게 느껴진다는 평가가 많다. 특히 프로그래밍 경험이 없는 학습자에게는 많은 시간과 노력을 요구하는 강의로 알려져 있다.[2]

2 특징

  • 입문자 친화적: 프로그래밍 경험이 전혀 없어도 수강 가능하도록 구성됨
  • 강도 높은 과제: 입문 강의임에도 불구하고 과제 난이도가 높은 편
  • 실습 중심: 강의 이론보다 문제 해결 과제(Problem Set, pset)에 집중
  • 다양한 언어 사용: C, Python, SQL, JavaScript 등 여러 언어를 단계적으로 학습
  • 고품질 강의 영상: 명확한 설명과 뛰어난 프레젠테이션으로 유명

3 커리큘럼

매년 일부 조정되지만, 일반적으로 다음과 같은 주제를 포함한다.

3.1 기초

  • 컴퓨팅과 문제 해결 개요
  • 이진수와 데이터 표현
  • 알고리즘 개념 (탐색, 정렬)

3.2 C 언어

  • 변수, 조건문, 반복문
  • 배열과 문자열
  • 포인터와 메모리
  • 구조체

3.3 자료구조

  • 배열(Array)
  • 연결 리스트(Linked List)
  • 스택(Stack), 큐(Queue)
  • 해시 테이블(Hash Table)
  • 트리(Tree)

3.4 고급 주제

  • 알고리즘 복잡도 (Big-O)
  • 메모리 관리
  • 파일 입출력

3.5 웹과 응용

  • Python 기초
  • SQL과 데이터베이스
  • HTML, CSS, JavaScript
  • Flask를 이용한 간단한 웹 애플리케이션

3.6 최종 프로젝트

  • 자유 주제 기반의 소프트웨어 프로젝트 수행

4 문제 세트 (Problem Sets)

CS50의 핵심 요소는 Problem Set(줄여서 pset)이다. 각 주차별로 제공되는 과제는 실제 문제를 해결하는 방식으로 구성되며, 자동 채점 시스템과 스타일 검사 도구가 함께 제공된다.

문제 세트는 단순한 문법 연습을 넘어, 알고리즘 선택과 성능, 코드 가독성까지 평가하도록 설계되어 있다.

5 CS50x

CS50x는 하버드 CS50을 온라인 학습 플랫폼을 통해 공개한 버전이다. edX 등을 통해 제공되며, 하버드 재학생과 거의 동일한 커리큘럼과 과제를 포함한다.

  • 무료 수강 가능
  • 인증서(유료 옵션) 제공
  • 전 세계 학습자 참여

6 평가 방식

  • 주차별 Problem Set
  • 퀴즈 또는 짧은 과제
  • 최종 프로젝트

온라인 과정의 경우 자동 채점과 프로젝트 제출을 통해 평가가 이루어진다.

7 같이 보기

8 참고

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}