아래 모든 날짜는 시간대 입니다.
   열리는 날    닫히는 날
수강기간
2024-09-02 00:00:00 GMT
2024-12-15 23:59:59 GMT
수강신청기간
2024-08-19 00:00:00 GMT
2024-09-01 23:59:59 GMT

C++은 C와 더불어 가장 널리 사용되는 언매니지드 언어일 뿐만 아니라 2018년 7월 기준 전세계에서 3번째로 많이 쓰이는 언어입니다. (출처: TIOBE) 그리고 언매니지드 언어라는 특수성 때문에 한동안 사용률이 떨어지지 않을 전망입니다.

현존하는 프로그래밍 언어를 크게 둘로 나누면 매니지드(Managed) 언어와 언매니지드(Unmanaged) 언어가 있습니다. 이 둘의 차이는 프로그래머가 컴퓨터 하드웨어를 직접 제어할 수 있는지 여부입니다. (예: 프로그래머가 직접 메모리를 관리하는가?)

프로그램의 성능보다 제품을 빨리 개발하는 것이 중요한 분야에서는 C#, Java와 같은 매니지드 언어를 널리 사용합니다. 하지만 운영체제, 비디오 게임, 가상현실, 주식거래소, 머신 러닝 코어, 블록체인 등 성능이 더 중요한 분야에서는 여전히 언매니지드 언어를 사용할 수밖에 없습니다. 따라서 본 강좌는 실제 업계에서 쓰이는 C++ 프로그래밍 기법에 중점을 맞춰 진행합니다.

언매니지드 언어의 장점은 여기서 그치지 않습니다. 프로그래머의 지속적인 성장에 반드시 필요한 지식 중 하나가 컴퓨터 하드웨어에 대한 이해입니다. 탑 레이서라면 자동차의 동작 원리를 잘 알아야 하듯이 탑 프로그래머는 하드웨어의 동작 원리를 잘 이해해야 합니다. 이걸 돕는 언어가 바로 언매니지드 언어입니다.

'COMP2500: Java 개체지향 프로그래밍 및 설계'와 마찬가지로 이 강좌에서도 개체지향 프로그래밍(OOP)에 대해 배웁니다. 하지만 이 코스를 성공적으로 마무리한 분들은 하드웨어 수준에서 개체지향 프로그래밍이 어떻게 작동하는지까지 자세히 이해하실 수 있을 겁니다.

본 강좌는 다음과 같이 크게 세 부분으로 나뉘며, 강의 진행도 이 순서를 따릅니다.

  1. 코어 C++: 참조, 클래스, 상속 등 C\++의 기본이 되는 내용. C++98 표준 ( ~ 5주 차)
  2. 모던 C++: STL 등 C++03 표준에서 추가된 기능 중 업계에서 쓰이는 내용들 (6주 차 ~ 9주 차)
  3. C++1x: C++11/14/17 표준에서 추가된 최신 기능 중 업계에서 쓰이는 내용들 (10주 차 ~ )

위와 같이 강의를 세 부분으로 나눈 이유는 회사에 따라 사용하는 C++ 표준이 다르고, 성능 상의 이유로 일부러 과거의 표준을 여전히 사용하는 곳도 많기 때문입니다. 따라서 최신의 C++ 표준만을 사용하는 프로그래머는 업계에서 원하는 프로그래머가 아닌 경우가 많습니다.

수강 시작 날짜 : 2024-09-02 00:00:00 GMT

수업 내용
  • 헬로 월드(Hello World)
  • 콘솔화면 입출력(I/O)
  • bool 데이터형
  • 참조(reference)

동영상 강의 범위(총 2시간 57분): 누가 이 코스를 들을 수 있나요? ~ 정리

과제 및 실습
  • 실습 1

  • 과제 1  (제출 마감: 2024-09-22 22:00:00 GMT)

수업 내용
  • string 클래스
  • 파일 입출력(I/O)
  • 개체지향 프로그래밍(object-oriented programming) 1
    • 클래스
    • 스택과 힙
    • new, delete 키워드
    • 생성자(constructor), 초기화 리스트(initializer list)
    • 생성자 오버로딩(constructor overloading), 소멸자(destructor)
    • const 키워드

동영상 강의 범위(총 3시간 24분): std::string 클래스 ~ 구조체(Struct) vs 클래스(Class)

과제 및 실습
  • 실습 2

  • 과제 1  (제출 마감: 2024-09-22 22:00:00 GMT)

수업 내용
  • 개체지향 프로그래밍 (계속)
    • 복사 생성자(copy constructor)
    • 함수 오버로딩(function overloading)
    • 연산자 오버로딩(operator overloading)
    • friend 키워드
    • 상속(inheritance)

동영상 강의 범위(총 1시간 59분): 복사(Copy) 생성자 ~ 정리

과제 및 실습
  • 실습 3

  • 과제 1  (제출 마감: 2024-09-22 22:00:00 GMT)

수업 내용
  • 개체지향 프로그래밍 (계속)
    • 다형성(polymorphism), 가상함수(virtual function), 가상 테이블(virtual table)
    • 다중상속(multiple inheritance)
    • 추상 클래스(abstract class)
    • "인터페이스(interface)"

동영상 강의 범위(총 1시간 13분): 다형성(Polymorphism) ~ 정리

과제 및 실습
  • 실습 4

  • 과제 2  (제출 마감: 2024-10-13 22:00:00 GMT)

수업 내용
  • 형변환(type casting)
  • 인라인 함수(inline function)
  • 정적(static) 멤버 함수/변수

동영상 강의 범위(총 2시간 00분): C 스타일 캐스팅 ~ 정리

과제 및 실습
  • 실습 5

  • 과제 2  (제출 마감: 2024-10-13 22:00:00 GMT)

수업 내용
  • 예외 (exception)
  • 표준 템플릿 라이브러리(STL, Standard Template Library) 1
    • 벡터(vector)
    • 반복자(이터레이터, iterator)

동영상 강의 범위(총 2시간 37분): Java 예외 vs C++ 예외 ~ 벡터의 장점과 단점

과제 및 실습
  • 실습 6

  • 과제 2  (제출 마감: 2024-10-13 22:00:00 GMT)

수업 내용
  • 표준 템플릿 라이브러리 (계속)
    • 맵(map)
    • 셋(set)
    • 큐(queue)
    • 스택(stack)
    • 리스트(list)

동영상 강의 범위(총 1시간 17분): 맵(Map)이란? ~ STL 컨테이너의 목적

과제 및 실습
  • 과제 3  (제출 마감: 2024-11-10 22:00:00 GMT)

수업 내용
  • 수업 및 실습/과제 제출 없음 (이유: 중간고사 주간)
과제 및 실습
  • 과제 3  (제출 마감: 2024-11-10 22:00:00 GMT)

수업 내용
  • 템플릿 프로그래밍(template programming)
  • 템플릿 특수화(template specialization)
  • STL 알고리듬(STL algorithm)

동영상 강의 범위(총 1시간 29분): 함수 템플릿 ~ 정리

과제 및 실습
  • 실습 7

  • 과제 3  (제출 마감: 2024-11-10 22:00:00 GMT)

수업 내용
  • 새로운 키워드들
    • auto 키워드
    • static_assert 키워드
    • default, delete 키워드
    • final, override 키워드
  • 새로운 자료형들
    • nullptr
    • 고정 폭 정수형(fixed-width integer types)
    • enum class

동영상 강의 범위(총 1시간 32분): auto 키워드: 포인터 및 참조 받기 ~ 정리

과제 및 실습
  • 실습 8

  • 과제 3  (제출 마감: 2024-11-10 22:00:00 GMT)

수업 내용
  • 새로 추가된 STL 컨테이너
    • 정렬안된 맵(unordered_map)
    • 정렬안된 셋(unordered_set)
    • 어레이(array)
  • 범위 기반 for(range-based for)
  • 스마트 포인터(smart pointer) 1
    • 유니크 포인터(unique_ptr)

동영상 강의 범위(총 2시간 15분): 정렬 안된 맵(unordered_map) 1 ~ 참조 카운팅 2

과제 및 실습
  • 실습 9

  • 과제 4  (제출 마감: 2024-12-01 22:00:00 GMT)

수업 내용
  • 스마트 포인터 (계속)
    • 공유 포인터(shared_ptr)
    • 약한 포인터(weak_ptr)
  • 이동 생성자(move constructor)
  • 이동 대입연산자(move assignment operator)

동영상 강의 범위(총 1시간 34분): 공유(Shared) 포인터 ~ 정리

과제 및 실습
  • 실습 10

  • 과제 4  (제출 마감: 2024-12-01 22:00:00 GMT)

수업 내용
  • 상수표현식(constexpr)
  • 람다 표현식(lambda expression)
  • 가변 인자 템플릿(variadic template)

동영상 강의 범위(총 1시간 24분): constexpr을 배우기에 앞서 ~ 정리

과제 및 실습
  • 실습 11

  • 과제 4  (제출 마감: 2024-12-01 22:00:00 GMT)

수업 내용
  • 파일 시스템(filesystem)
  • 모듈 시스템(module system)
  • 쓰레드 라이브러리(threading library)
    • 쓰레드(thread), 뮤텍스(mutex), 조건변수(condition variables)

동영상 강의 범위(총 1시간 49분): 파일시스템 1 ~ 마무리

과제 및 실습
  • 없음

수업 내용
  • 수업 및 실습/과제 제출 없음 (이유: 기말고사 주간)
과제 및 실습
  • 없음

제목   공지일   제출 마감  
실습 1
2024-09-02 00:00:00 GMT (1주 차) 2024-09-08 22:00:00 GMT
실습 2
2024-09-09 00:00:00 GMT (2주 차) 2024-09-15 22:00:00 GMT
실습 3
2024-09-16 00:00:00 GMT (3주 차) 2024-09-22 22:00:00 GMT
실습 4
2024-09-23 00:00:00 GMT (4주 차) 2024-09-29 22:00:00 GMT
실습 5
2024-09-30 00:00:00 GMT (5주 차) 2024-10-06 22:00:00 GMT
실습 6
2024-10-07 00:00:00 GMT (6주 차) 2024-10-13 22:00:00 GMT
실습 7
2024-10-28 00:00:00 GMT (9주 차) 2024-11-03 22:00:00 GMT
실습 8
2024-11-04 00:00:00 GMT (10주 차) 2024-11-10 22:00:00 GMT
실습 9
2024-11-11 00:00:00 GMT (11주 차) 2024-11-17 22:00:00 GMT
실습 10
2024-11-18 00:00:00 GMT (12주 차) 2024-11-24 22:00:00 GMT
실습 11
2024-11-25 00:00:00 GMT (13주 차) 2024-12-01 22:00:00 GMT
과제 1
2024-09-02 00:00:00 GMT (1주 차) 2024-09-22 22:00:00 GMT
과제 2
2024-09-23 00:00:00 GMT (4주 차) 2024-10-13 22:00:00 GMT
과제 3
2024-10-14 00:00:00 GMT (7주 차) 2024-11-10 22:00:00 GMT
과제 4
2024-11-11 00:00:00 GMT (11주 차) 2024-12-01 22:00:00 GMT
2024-09-15 23:59:59 GMT 환불 신청 마감
  • 성적표에 기록되지 않음
  • 전액 환불 (처리 수수료 US$ 100 공제)
2024-11-03 23:59:59 GMT 수강 철회 신청 마감
  • 성적표에 "W"로 표시
수료하지 않은 선수과목에 대한 자가평가 질문
  1. COMP2200: 나는 C에서 포인터를 이용하여 singly-linked list의 모든 기능을 구현할 수 있다.
  2. COMP2200: 나는 별도의 메모리 할당 없이 포인터만 사용해서 C 스타일 문자열을 뒤집을 수 있다.
  3. COMP2500: 나는 개체지향 프로그래밍에서 상속과 합성(composition)의 장단점에 대해 설명할 수 있다.
권장 소프트웨어
  1. 윈도우 운영체제
  2. 비주얼 스튜디오 2022
    • 설치 중 워크로드 'C++를 사용한 데스크톱 개발'을 반드시 선택할 것
    • 주의: 비주얼 스튜디오 코드와는 다름
시험 응시 준비물
  1. 반드시 PC에서(모바일은 응시 불가) 크롬(Chrome) 브라우저를 사용해야 합니다.

  2. 시험을 볼 때 시험 감독 서비스를 사용하며, 서비스를 이용하기 위한 시스템 최소 사양은 다음과 같습니다.

윈도우 리눅스 크롬 운영체제
운영체제 윈도우 7+ 맥 OSX 10.9+ 우분투 18.04+ 크롬 58+
프로세서 인텔 펜티엄 이상 인텔 또는 ARM 인텔 펜티엄 이상 인텔 또는 ARM
사용 가능한 디스크 공간 250 MB 250 MB 250 MB 250 MB
램(메모리) 4 GB1 4 GB1 4 GB1 4 GB1
업로드 속도 0.092 Mbps - 0.244 Mbps
마이크 내장형 또는 독립형
웹캠 VGA 해상도 320x240 이상, 내장형 또는 독립형
1   메모리의 적어도 25%는 다른 응용 프로그램에서 사용되지 않는다고 가정할 때의 최소 용량입니다. 시험 도중에 시스템 크래시가 나는 일이 생기지 않도록 최소 용량의 50%를 확보해 두길 권장합니다.

통과 점수: 85%

  • 실습 1 (1.00 %)

  • 실습 2 (2.40 %)

  • 실습 3 (2.40 %)

  • 실습 4 (2.40 %)

  • 실습 5 (2.40 %)

  • 실습 6 (2.40 %)

  • 실습 7 (2.40 %)

  • 실습 8 (2.40 %)

  • 실습 9 (2.40 %)

  • 실습 10 (2.40 %)

  • 실습 11 (2.40 %)

  • 과제 1 (6.25 %)

  • 과제 2 (6.25 %)

  • 과제 3 (6.25 %)

  • 과제 4 (6.25 %)

  • 중간고사 (25.0%)

  • 기말고사 (25.0%)

학생 비율 점수
   열리는 날    닫히는 날
수강기간
2025-05-05 00:00:00 GMT
2025-08-17 23:59:59 GMT
수강신청기간
2025-04-21 00:00:00 GMT
2025-05-04 23:59:59 GMT

C++은 C와 더불어 가장 널리 사용되는 언매니지드 언어일 뿐만 아니라 2018년 7월 기준 전세계에서 3번째로 많이 쓰이는 언어입니다. (출처: TIOBE) 그리고 언매니지드 언어라는 특수성 때문에 한동안 사용률이 떨어지지 않을 전망입니다.

현존하는 프로그래밍 언어를 크게 둘로 나누면 매니지드(Managed) 언어와 언매니지드(Unmanaged) 언어가 있습니다. 이 둘의 차이는 프로그래머가 컴퓨터 하드웨어를 직접 제어할 수 있는지 여부입니다. (예: 프로그래머가 직접 메모리를 관리하는가?)

프로그램의 성능보다 제품을 빨리 개발하는 것이 중요한 분야에서는 C#, Java와 같은 매니지드 언어를 널리 사용합니다. 하지만 운영체제, 비디오 게임, 가상현실, 주식거래소, 머신 러닝 코어, 블록체인 등 성능이 더 중요한 분야에서는 여전히 언매니지드 언어를 사용할 수밖에 없습니다. 따라서 본 강좌는 실제 업계에서 쓰이는 C++ 프로그래밍 기법에 중점을 맞춰 진행합니다.

언매니지드 언어의 장점은 여기서 그치지 않습니다. 프로그래머의 지속적인 성장에 반드시 필요한 지식 중 하나가 컴퓨터 하드웨어에 대한 이해입니다. 탑 레이서라면 자동차의 동작 원리를 잘 알아야 하듯이 탑 프로그래머는 하드웨어의 동작 원리를 잘 이해해야 합니다. 이걸 돕는 언어가 바로 언매니지드 언어입니다.

'COMP2500: Java 개체지향 프로그래밍 및 설계'와 마찬가지로 이 강좌에서도 개체지향 프로그래밍(OOP)에 대해 배웁니다. 하지만 이 코스를 성공적으로 마무리한 분들은 하드웨어 수준에서 개체지향 프로그래밍이 어떻게 작동하는지까지 자세히 이해하실 수 있을 겁니다.

본 강좌는 다음과 같이 크게 세 부분으로 나뉘며, 강의 진행도 이 순서를 따릅니다.

  1. 코어 C++: 참조, 클래스, 상속 등 C\++의 기본이 되는 내용. C++98 표준 ( ~ 5주 차)
  2. 모던 C++: STL 등 C++03 표준에서 추가된 기능 중 업계에서 쓰이는 내용들 (6주 차 ~ 9주 차)
  3. C++1x: C++11/14/17 표준에서 추가된 최신 기능 중 업계에서 쓰이는 내용들 (10주 차 ~ )

위와 같이 강의를 세 부분으로 나눈 이유는 회사에 따라 사용하는 C++ 표준이 다르고, 성능 상의 이유로 일부러 과거의 표준을 여전히 사용하는 곳도 많기 때문입니다. 따라서 최신의 C++ 표준만을 사용하는 프로그래머는 업계에서 원하는 프로그래머가 아닌 경우가 많습니다.

수강 시작 날짜 : 2025-05-05 00:00:00 GMT

수업 내용
  • 헬로 월드(Hello World)
  • 콘솔화면 입출력(I/O)
  • bool 데이터형
  • 참조(reference)

동영상 강의 범위(총 2시간 57분): 누가 이 코스를 들을 수 있나요? ~ 정리

과제 및 실습
  • 실습 1

  • 과제 1  (제출 마감: 2025-05-25 22:00:00 GMT)

수업 내용
  • string 클래스
  • 파일 입출력(I/O)
  • 개체지향 프로그래밍(object-oriented programming) 1
    • 클래스
    • 스택과 힙
    • new, delete 키워드
    • 생성자(constructor), 초기화 리스트(initializer list)
    • 생성자 오버로딩(constructor overloading), 소멸자(destructor)
    • const 키워드

동영상 강의 범위(총 3시간 24분): std::string 클래스 ~ 구조체(Struct) vs 클래스(Class)

과제 및 실습
  • 실습 2

  • 과제 1  (제출 마감: 2025-05-25 22:00:00 GMT)

수업 내용
  • 개체지향 프로그래밍 (계속)
    • 복사 생성자(copy constructor)
    • 함수 오버로딩(function overloading)
    • 연산자 오버로딩(operator overloading)
    • friend 키워드
    • 상속(inheritance)

동영상 강의 범위(총 1시간 59분): 복사(Copy) 생성자 ~ 정리

과제 및 실습
  • 실습 3

  • 과제 1  (제출 마감: 2025-05-25 22:00:00 GMT)

수업 내용
  • 개체지향 프로그래밍 (계속)
    • 다형성(polymorphism), 가상함수(virtual function), 가상 테이블(virtual table)
    • 다중상속(multiple inheritance)
    • 추상 클래스(abstract class)
    • "인터페이스(interface)"

동영상 강의 범위(총 1시간 13분): 다형성(Polymorphism) ~ 정리

과제 및 실습
  • 실습 4

  • 과제 2  (제출 마감: 2025-06-15 22:00:00 GMT)

수업 내용
  • 형변환(type casting)
  • 인라인 함수(inline function)
  • 정적(static) 멤버 함수/변수

동영상 강의 범위(총 2시간 00분): C 스타일 캐스팅 ~ 정리

과제 및 실습
  • 실습 5

  • 과제 2  (제출 마감: 2025-06-15 22:00:00 GMT)

수업 내용
  • 예외 (exception)
  • 표준 템플릿 라이브러리(STL, Standard Template Library) 1
    • 벡터(vector)
    • 반복자(이터레이터, iterator)

동영상 강의 범위(총 2시간 37분): Java 예외 vs C++ 예외 ~ 벡터의 장점과 단점

과제 및 실습
  • 실습 6

  • 과제 2  (제출 마감: 2025-06-15 22:00:00 GMT)

수업 내용
  • 표준 템플릿 라이브러리 (계속)
    • 맵(map)
    • 셋(set)
    • 큐(queue)
    • 스택(stack)
    • 리스트(list)

동영상 강의 범위(총 1시간 17분): 맵(Map)이란? ~ STL 컨테이너의 목적

과제 및 실습
  • 과제 3  (제출 마감: 2025-07-13 22:00:00 GMT)

수업 내용
  • 수업 및 실습/과제 제출 없음 (이유: 중간고사 주간)
과제 및 실습
  • 과제 3  (제출 마감: 2025-07-13 22:00:00 GMT)

수업 내용
  • 템플릿 프로그래밍(template programming)
  • 템플릿 특수화(template specialization)
  • STL 알고리듬(STL algorithm)

동영상 강의 범위(총 1시간 29분): 함수 템플릿 ~ 정리

과제 및 실습
  • 실습 7

  • 과제 3  (제출 마감: 2025-07-13 22:00:00 GMT)

수업 내용
  • 새로운 키워드들
    • auto 키워드
    • static_assert 키워드
    • default, delete 키워드
    • final, override 키워드
  • 새로운 자료형들
    • nullptr
    • 고정 폭 정수형(fixed-width integer types)
    • enum class

동영상 강의 범위(총 1시간 32분): auto 키워드: 포인터 및 참조 받기 ~ 정리

과제 및 실습
  • 실습 8

  • 과제 3  (제출 마감: 2025-07-13 22:00:00 GMT)

수업 내용
  • 새로 추가된 STL 컨테이너
    • 정렬안된 맵(unordered_map)
    • 정렬안된 셋(unordered_set)
    • 어레이(array)
  • 범위 기반 for(range-based for)
  • 스마트 포인터(smart pointer) 1
    • 유니크 포인터(unique_ptr)

동영상 강의 범위(총 2시간 15분): 정렬 안된 맵(unordered_map) 1 ~ 참조 카운팅 2

과제 및 실습
  • 실습 9

  • 과제 4  (제출 마감: 2025-08-03 22:00:00 GMT)

수업 내용
  • 스마트 포인터 (계속)
    • 공유 포인터(shared_ptr)
    • 약한 포인터(weak_ptr)
  • 이동 생성자(move constructor)
  • 이동 대입연산자(move assignment operator)

동영상 강의 범위(총 1시간 34분): 공유(Shared) 포인터 ~ 정리

과제 및 실습
  • 실습 10

  • 과제 4  (제출 마감: 2025-08-03 22:00:00 GMT)

수업 내용
  • 상수표현식(constexpr)
  • 람다 표현식(lambda expression)
  • 가변 인자 템플릿(variadic template)

동영상 강의 범위(총 1시간 24분): constexpr을 배우기에 앞서 ~ 정리

과제 및 실습
  • 실습 11

  • 과제 4  (제출 마감: 2025-08-03 22:00:00 GMT)

수업 내용
  • 파일 시스템(filesystem)
  • 모듈 시스템(module system)
  • 쓰레드 라이브러리(threading library)
    • 쓰레드(thread), 뮤텍스(mutex), 조건변수(condition variables)

동영상 강의 범위(총 1시간 49분): 파일시스템 1 ~ 마무리

과제 및 실습
  • 없음

수업 내용
  • 수업 및 실습/과제 제출 없음 (이유: 기말고사 주간)
과제 및 실습
  • 없음

제목   공지일   제출 마감  
실습 1
2025-05-05 00:00:00 GMT (1주 차) 2025-05-11 22:00:00 GMT
실습 2
2025-05-12 00:00:00 GMT (2주 차) 2025-05-18 22:00:00 GMT
실습 3
2025-05-19 00:00:00 GMT (3주 차) 2025-05-25 22:00:00 GMT
실습 4
2025-05-26 00:00:00 GMT (4주 차) 2025-06-01 22:00:00 GMT
실습 5
2025-06-02 00:00:00 GMT (5주 차) 2025-06-08 22:00:00 GMT
실습 6
2025-06-09 00:00:00 GMT (6주 차) 2025-06-15 22:00:00 GMT
실습 7
2025-06-30 00:00:00 GMT (9주 차) 2025-07-06 22:00:00 GMT
실습 8
2025-07-07 00:00:00 GMT (10주 차) 2025-07-13 22:00:00 GMT
실습 9
2025-07-14 00:00:00 GMT (11주 차) 2025-07-20 22:00:00 GMT
실습 10
2025-07-21 00:00:00 GMT (12주 차) 2025-07-27 22:00:00 GMT
실습 11
2025-07-28 00:00:00 GMT (13주 차) 2025-08-03 22:00:00 GMT
과제 1
2025-05-05 00:00:00 GMT (1주 차) 2025-05-25 22:00:00 GMT
과제 2
2025-05-26 00:00:00 GMT (4주 차) 2025-06-15 22:00:00 GMT
과제 3
2025-06-16 00:00:00 GMT (7주 차) 2025-07-13 22:00:00 GMT
과제 4
2025-07-14 00:00:00 GMT (11주 차) 2025-08-03 22:00:00 GMT
2025-05-18 23:59:59 GMT 환불 신청 마감
  • 성적표에 기록되지 않음
  • 전액 환불 (처리 수수료 US$ 100 공제)
2025-07-06 23:59:59 GMT 수강 철회 신청 마감
  • 성적표에 "W"로 표시
수료하지 않은 선수과목에 대한 자가평가 질문
  1. COMP2200: 나는 C에서 포인터를 이용하여 singly-linked list의 모든 기능을 구현할 수 있다.
  2. COMP2200: 나는 별도의 메모리 할당 없이 포인터만 사용해서 C 스타일 문자열을 뒤집을 수 있다.
  3. COMP2500: 나는 개체지향 프로그래밍에서 상속과 합성(composition)의 장단점에 대해 설명할 수 있다.
권장 소프트웨어
  1. 윈도우 운영체제
  2. 비주얼 스튜디오 2022
    • 설치 중 워크로드 'C++를 사용한 데스크톱 개발'을 반드시 선택할 것
    • 주의: 비주얼 스튜디오 코드와는 다름
시험 응시 준비물
  1. 반드시 PC에서(모바일은 응시 불가) 크롬(Chrome) 브라우저를 사용해야 합니다.

  2. 시험을 볼 때 시험 감독 서비스를 사용하며, 서비스를 이용하기 위한 시스템 최소 사양은 다음과 같습니다.

윈도우 리눅스 크롬 운영체제
운영체제 윈도우 7+ 맥 OSX 10.9+ 우분투 18.04+ 크롬 58+
프로세서 인텔 펜티엄 이상 인텔 또는 ARM 인텔 펜티엄 이상 인텔 또는 ARM
사용 가능한 디스크 공간 250 MB 250 MB 250 MB 250 MB
램(메모리) 4 GB1 4 GB1 4 GB1 4 GB1
업로드 속도 0.092 Mbps - 0.244 Mbps
마이크 내장형 또는 독립형
웹캠 VGA 해상도 320x240 이상, 내장형 또는 독립형
1   메모리의 적어도 25%는 다른 응용 프로그램에서 사용되지 않는다고 가정할 때의 최소 용량입니다. 시험 도중에 시스템 크래시가 나는 일이 생기지 않도록 최소 용량의 50%를 확보해 두길 권장합니다.

통과 점수: 85%

  • 실습 1 (1.00 %)

  • 실습 2 (2.40 %)

  • 실습 3 (2.40 %)

  • 실습 4 (2.40 %)

  • 실습 5 (2.40 %)

  • 실습 6 (2.40 %)

  • 실습 7 (2.40 %)

  • 실습 8 (2.40 %)

  • 실습 9 (2.40 %)

  • 실습 10 (2.40 %)

  • 실습 11 (2.40 %)

  • 과제 1 (6.25 %)

  • 과제 2 (6.25 %)

  • 과제 3 (6.25 %)

  • 과제 4 (6.25 %)

  • 중간고사 (25.0%)

  • 기말고사 (25.0%)

학생 비율 점수
   열리는 날    닫히는 날
수강기간
2025-09-01 00:00:00 GMT
2025-12-14 23:59:59 GMT
수강신청기간
2025-08-18 00:00:00 GMT
2025-08-31 23:59:59 GMT

C++은 C와 더불어 가장 널리 사용되는 언매니지드 언어일 뿐만 아니라 2018년 7월 기준 전세계에서 3번째로 많이 쓰이는 언어입니다. (출처: TIOBE) 그리고 언매니지드 언어라는 특수성 때문에 한동안 사용률이 떨어지지 않을 전망입니다.

현존하는 프로그래밍 언어를 크게 둘로 나누면 매니지드(Managed) 언어와 언매니지드(Unmanaged) 언어가 있습니다. 이 둘의 차이는 프로그래머가 컴퓨터 하드웨어를 직접 제어할 수 있는지 여부입니다. (예: 프로그래머가 직접 메모리를 관리하는가?)

프로그램의 성능보다 제품을 빨리 개발하는 것이 중요한 분야에서는 C#, Java와 같은 매니지드 언어를 널리 사용합니다. 하지만 운영체제, 비디오 게임, 가상현실, 주식거래소, 머신 러닝 코어, 블록체인 등 성능이 더 중요한 분야에서는 여전히 언매니지드 언어를 사용할 수밖에 없습니다. 따라서 본 강좌는 실제 업계에서 쓰이는 C++ 프로그래밍 기법에 중점을 맞춰 진행합니다.

언매니지드 언어의 장점은 여기서 그치지 않습니다. 프로그래머의 지속적인 성장에 반드시 필요한 지식 중 하나가 컴퓨터 하드웨어에 대한 이해입니다. 탑 레이서라면 자동차의 동작 원리를 잘 알아야 하듯이 탑 프로그래머는 하드웨어의 동작 원리를 잘 이해해야 합니다. 이걸 돕는 언어가 바로 언매니지드 언어입니다.

'COMP2500: Java 개체지향 프로그래밍 및 설계'와 마찬가지로 이 강좌에서도 개체지향 프로그래밍(OOP)에 대해 배웁니다. 하지만 이 코스를 성공적으로 마무리한 분들은 하드웨어 수준에서 개체지향 프로그래밍이 어떻게 작동하는지까지 자세히 이해하실 수 있을 겁니다.

본 강좌는 다음과 같이 크게 세 부분으로 나뉘며, 강의 진행도 이 순서를 따릅니다.

  1. 코어 C++: 참조, 클래스, 상속 등 C\++의 기본이 되는 내용. C++98 표준 ( ~ 5주 차)
  2. 모던 C++: STL 등 C++03 표준에서 추가된 기능 중 업계에서 쓰이는 내용들 (6주 차 ~ 9주 차)
  3. C++1x: C++11/14/17 표준에서 추가된 최신 기능 중 업계에서 쓰이는 내용들 (10주 차 ~ )

위와 같이 강의를 세 부분으로 나눈 이유는 회사에 따라 사용하는 C++ 표준이 다르고, 성능 상의 이유로 일부러 과거의 표준을 여전히 사용하는 곳도 많기 때문입니다. 따라서 최신의 C++ 표준만을 사용하는 프로그래머는 업계에서 원하는 프로그래머가 아닌 경우가 많습니다.

수강 시작 날짜 : 2025-09-01 00:00:00 GMT

수업 내용
  • 헬로 월드(Hello World)
  • 콘솔화면 입출력(I/O)
  • bool 데이터형
  • 참조(reference)

동영상 강의 범위(총 2시간 57분): 누가 이 코스를 들을 수 있나요? ~ 정리

과제 및 실습
  • 실습 1

  • 과제 1  (제출 마감: 2025-09-21 22:00:00 GMT)

수업 내용
  • string 클래스
  • 파일 입출력(I/O)
  • 개체지향 프로그래밍(object-oriented programming) 1
    • 클래스
    • 스택과 힙
    • new, delete 키워드
    • 생성자(constructor), 초기화 리스트(initializer list)
    • 생성자 오버로딩(constructor overloading), 소멸자(destructor)
    • const 키워드

동영상 강의 범위(총 3시간 24분): std::string 클래스 ~ 구조체(Struct) vs 클래스(Class)

과제 및 실습
  • 실습 2

  • 과제 1  (제출 마감: 2025-09-21 22:00:00 GMT)

수업 내용
  • 개체지향 프로그래밍 (계속)
    • 복사 생성자(copy constructor)
    • 함수 오버로딩(function overloading)
    • 연산자 오버로딩(operator overloading)
    • friend 키워드
    • 상속(inheritance)

동영상 강의 범위(총 1시간 59분): 복사(Copy) 생성자 ~ 정리

과제 및 실습
  • 실습 3

  • 과제 1  (제출 마감: 2025-09-21 22:00:00 GMT)

수업 내용
  • 개체지향 프로그래밍 (계속)
    • 다형성(polymorphism), 가상함수(virtual function), 가상 테이블(virtual table)
    • 다중상속(multiple inheritance)
    • 추상 클래스(abstract class)
    • "인터페이스(interface)"

동영상 강의 범위(총 1시간 13분): 다형성(Polymorphism) ~ 정리

과제 및 실습
  • 실습 4

  • 과제 2  (제출 마감: 2025-10-12 22:00:00 GMT)

수업 내용
  • 형변환(type casting)
  • 인라인 함수(inline function)
  • 정적(static) 멤버 함수/변수

동영상 강의 범위(총 2시간 00분): C 스타일 캐스팅 ~ 정리

과제 및 실습
  • 실습 5

  • 과제 2  (제출 마감: 2025-10-12 22:00:00 GMT)

수업 내용
  • 예외 (exception)
  • 표준 템플릿 라이브러리(STL, Standard Template Library) 1
    • 벡터(vector)
    • 반복자(이터레이터, iterator)

동영상 강의 범위(총 2시간 37분): Java 예외 vs C++ 예외 ~ 벡터의 장점과 단점

과제 및 실습
  • 실습 6

  • 과제 2  (제출 마감: 2025-10-12 22:00:00 GMT)

수업 내용
  • 표준 템플릿 라이브러리 (계속)
    • 맵(map)
    • 셋(set)
    • 큐(queue)
    • 스택(stack)
    • 리스트(list)

동영상 강의 범위(총 1시간 17분): 맵(Map)이란? ~ STL 컨테이너의 목적

과제 및 실습
  • 과제 3  (제출 마감: 2025-11-09 22:00:00 GMT)

수업 내용
  • 수업 및 실습/과제 제출 없음 (이유: 중간고사 주간)
과제 및 실습
  • 과제 3  (제출 마감: 2025-11-09 22:00:00 GMT)

수업 내용
  • 템플릿 프로그래밍(template programming)
  • 템플릿 특수화(template specialization)
  • STL 알고리듬(STL algorithm)

동영상 강의 범위(총 1시간 29분): 함수 템플릿 ~ 정리

과제 및 실습
  • 실습 7

  • 과제 3  (제출 마감: 2025-11-09 22:00:00 GMT)

수업 내용
  • 새로운 키워드들
    • auto 키워드
    • static_assert 키워드
    • default, delete 키워드
    • final, override 키워드
  • 새로운 자료형들
    • nullptr
    • 고정 폭 정수형(fixed-width integer types)
    • enum class

동영상 강의 범위(총 1시간 32분): auto 키워드: 포인터 및 참조 받기 ~ 정리

과제 및 실습
  • 실습 8

  • 과제 3  (제출 마감: 2025-11-09 22:00:00 GMT)

수업 내용
  • 새로 추가된 STL 컨테이너
    • 정렬안된 맵(unordered_map)
    • 정렬안된 셋(unordered_set)
    • 어레이(array)
  • 범위 기반 for(range-based for)
  • 스마트 포인터(smart pointer) 1
    • 유니크 포인터(unique_ptr)

동영상 강의 범위(총 2시간 15분): 정렬 안된 맵(unordered_map) 1 ~ 참조 카운팅 2

과제 및 실습
  • 실습 9

  • 과제 4  (제출 마감: 2025-11-30 22:00:00 GMT)

수업 내용
  • 스마트 포인터 (계속)
    • 공유 포인터(shared_ptr)
    • 약한 포인터(weak_ptr)
  • 이동 생성자(move constructor)
  • 이동 대입연산자(move assignment operator)

동영상 강의 범위(총 1시간 34분): 공유(Shared) 포인터 ~ 정리

과제 및 실습
  • 실습 10

  • 과제 4  (제출 마감: 2025-11-30 22:00:00 GMT)

수업 내용
  • 상수표현식(constexpr)
  • 람다 표현식(lambda expression)
  • 가변 인자 템플릿(variadic template)

동영상 강의 범위(총 1시간 24분): constexpr을 배우기에 앞서 ~ 정리

과제 및 실습
  • 실습 11

  • 과제 4  (제출 마감: 2025-11-30 22:00:00 GMT)

수업 내용
  • 파일 시스템(filesystem)
  • 모듈 시스템(module system)
  • 쓰레드 라이브러리(threading library)
    • 쓰레드(thread), 뮤텍스(mutex), 조건변수(condition variables)

동영상 강의 범위(총 1시간 49분): 파일시스템 1 ~ 마무리

과제 및 실습
  • 없음

수업 내용
  • 수업 및 실습/과제 제출 없음 (이유: 기말고사 주간)
과제 및 실습
  • 없음

제목   공지일   제출 마감  
실습 1
2025-09-01 00:00:00 GMT (1주 차) 2025-09-07 22:00:00 GMT
실습 2
2025-09-08 00:00:00 GMT (2주 차) 2025-09-14 22:00:00 GMT
실습 3
2025-09-15 00:00:00 GMT (3주 차) 2025-09-21 22:00:00 GMT
실습 4
2025-09-22 00:00:00 GMT (4주 차) 2025-09-28 22:00:00 GMT
실습 5
2025-09-29 00:00:00 GMT (5주 차) 2025-10-05 22:00:00 GMT
실습 6
2025-10-06 00:00:00 GMT (6주 차) 2025-10-12 22:00:00 GMT
실습 7
2025-10-27 00:00:00 GMT (9주 차) 2025-11-02 22:00:00 GMT
실습 8
2025-11-03 00:00:00 GMT (10주 차) 2025-11-09 22:00:00 GMT
실습 9
2025-11-10 00:00:00 GMT (11주 차) 2025-11-16 22:00:00 GMT
실습 10
2025-11-17 00:00:00 GMT (12주 차) 2025-11-23 22:00:00 GMT
실습 11
2025-11-24 00:00:00 GMT (13주 차) 2025-11-30 22:00:00 GMT
과제 1
2025-09-01 00:00:00 GMT (1주 차) 2025-09-21 22:00:00 GMT
과제 2
2025-09-22 00:00:00 GMT (4주 차) 2025-10-12 22:00:00 GMT
과제 3
2025-10-13 00:00:00 GMT (7주 차) 2025-11-09 22:00:00 GMT
과제 4
2025-11-10 00:00:00 GMT (11주 차) 2025-11-30 22:00:00 GMT
2025-09-14 23:59:59 GMT 환불 신청 마감
  • 성적표에 기록되지 않음
  • 전액 환불 (처리 수수료 US$ 100 공제)
2025-11-02 23:59:59 GMT 수강 철회 신청 마감
  • 성적표에 "W"로 표시
수료하지 않은 선수과목에 대한 자가평가 질문
  1. COMP2200: 나는 C에서 포인터를 이용하여 singly-linked list의 모든 기능을 구현할 수 있다.
  2. COMP2200: 나는 별도의 메모리 할당 없이 포인터만 사용해서 C 스타일 문자열을 뒤집을 수 있다.
  3. COMP2500: 나는 개체지향 프로그래밍에서 상속과 합성(composition)의 장단점에 대해 설명할 수 있다.
권장 소프트웨어
  1. 윈도우 운영체제
  2. 비주얼 스튜디오 2022
    • 설치 중 워크로드 'C++를 사용한 데스크톱 개발'을 반드시 선택할 것
    • 주의: 비주얼 스튜디오 코드와는 다름
시험 응시 준비물
  1. 반드시 PC에서(모바일은 응시 불가) 크롬(Chrome) 브라우저를 사용해야 합니다.

  2. 시험을 볼 때 시험 감독 서비스를 사용하며, 서비스를 이용하기 위한 시스템 최소 사양은 다음과 같습니다.

윈도우 리눅스 크롬 운영체제
운영체제 윈도우 7+ 맥 OSX 10.9+ 우분투 18.04+ 크롬 58+
프로세서 인텔 펜티엄 이상 인텔 또는 ARM 인텔 펜티엄 이상 인텔 또는 ARM
사용 가능한 디스크 공간 250 MB 250 MB 250 MB 250 MB
램(메모리) 4 GB1 4 GB1 4 GB1 4 GB1
업로드 속도 0.092 Mbps - 0.244 Mbps
마이크 내장형 또는 독립형
웹캠 VGA 해상도 320x240 이상, 내장형 또는 독립형
1   메모리의 적어도 25%는 다른 응용 프로그램에서 사용되지 않는다고 가정할 때의 최소 용량입니다. 시험 도중에 시스템 크래시가 나는 일이 생기지 않도록 최소 용량의 50%를 확보해 두길 권장합니다.

통과 점수: 85%

  • 실습 1 (1.00 %)

  • 실습 2 (2.40 %)

  • 실습 3 (2.40 %)

  • 실습 4 (2.40 %)

  • 실습 5 (2.40 %)

  • 실습 6 (2.40 %)

  • 실습 7 (2.40 %)

  • 실습 8 (2.40 %)

  • 실습 9 (2.40 %)

  • 실습 10 (2.40 %)

  • 실습 11 (2.40 %)

  • 과제 1 (6.25 %)

  • 과제 2 (6.25 %)

  • 과제 3 (6.25 %)

  • 과제 4 (6.25 %)

  • 중간고사 (25.0%)

  • 기말고사 (25.0%)

학생 비율 점수