아래 모든 날짜는 시간대 입니다.
   시작 날짜    종료 날짜
수강기간
2019-09-02T00:00:00.0000000Z
2019-12-15T23:59:59.9990000Z
수강신청기간
2019-08-19T00:00:00.0000000Z
2019-09-01T23:59:59.9990000Z

C는 가장 널리 사용되는 언매니지드 언어들 중 하나이며, 2019년 7월 기준 전 세계에서 2번째로 많이 사용되는 언어입니다. (출처: https://www.tiobe.com/tiobe-index/)

현존하는 프로그래밍 언어는 크게 매니지드(Managed) 언어와 언매니지드(Unmanaged) 언어로 나눠지며, 이 둘의 차이는 프로그래머가 컴퓨터 하드웨어를 직접 제어할 수 있는지의 여부입니다. (예: 프로그래머가 직접 메모리를 관리하는가?) 대표적인 언매니지드 언어인 C는 하드웨어와 매우 가깝다는장점으로 40년이 넘는 세월 동안 살아남았을 뿐만 아니라 아직도 컴파일러, 운영체제, 임베디드 시스템 등 저수준의 제어 및 메모리 절약이 요구되는 곳에 왕성하게 사용되고 있습니다. 그리고 이런 트렌드는 한 동안 바뀌지 않을 전망입니다.

프로그래머의 지속적인 성장에 반드시 필요한 지식 중 하나는 컴퓨터 하드웨어에 대한 이해입니다. C는 대부분의 매니지드 언어와 달리 언매니지드 언어 특유의 기능 (예: 메모리 관리) 들을 포함하고 있기 때문에, 하드웨어의 동작 원리를 공부하고 싶은 분 들, 혹은 컴퓨터를 더 잘 이해하고 싶은 분들에게 좋은 입문용 언매니지드 언어라고 할 수 있겠습니다.

이 강좌는 선수 과목인 '프로그래밍 입문'에서 배운 절차적 프로그래밍 지식을 기반으로 C언어가 언매니지드 언어로서 가지는 기능들에 대해서 알 아봅니다. 이 코스를 성공적으로 마무리한 분들은 하드웨어에 대한 더 넓은 시야를 갖출 수 있을 것입니다.

본 강좌는 첫 주에 '프로그래밍 입문'과목에서 배운 기초 프로그래밍 개념들이 C에 어떻게 적용되는지 살펴 본 뒤 다음과 같이 크게 세 부분으로 나뉘며, 강의 진행도 이 순서를 따릅니다.

  1. ANSI C/C89: C의 기본이 되는 내용과 C로 구현하는 자료 구조들. (~11주 차)

  2. C99: C99 표준에서 추가된 기능들 (12주 차 ~ 13주 차)

  3. C++1x: C11/18 표준에서 추가된 최신 기능들 (14주 차~)

위와 같이 강의를 세 부분으로 나눈 이유는 아직도 많은 C 프로젝트들이 89년도의 표준을 사용하기 때문이며, 이런 트렌드는 바뀌지 않을 전망이기 때문입니다. 따라서 모든 프로젝트에서 쓸 수 있는 C의 지식을 중심으로 배우되 가능할 경우 새로 추가된 기능을 사용할 수 있는 실력을 갖추게 하는 것이 강좌의 목표입니다.

코스 시작 날짜 : 2019-09-02T00:00:00.0000000Z

1주 차: 2019-09-08T23:59:59.9990000Z 까지

  • 과목 설명

  • 헬로 월드(Hello World)

  • 기본 자료형(primitive type)

  • 열거(enum)형

  • 관계 연산자, 논리 연산자, 조건 연산자

  • sizeof 키워드

  • 조건문

  • 반복문

  • 실습 1
  • 과제 1  제출 마감: 2019-09-22T22:00:00.0000000Z

2주 차: 2019-09-15T23:59:59.9990000Z 까지

  • 함수와 범위(scope)

  • 전역 변수

  • const 키워드

  • goto 키워드

  • 배열(array)

  • 스택 메모리

  • 다차원 배열(multi-dimensional array)

  • 헤더파일과 소스분할

  • 컴파일/링크

  • extern/static 키워드

  • 실습 2
  • 과제 1  제출 마감: 2019-09-22T22:00:00.0000000Z

3주 차: 2019-09-22T23:59:59.9990000Z 까지

  • 포인터

  • 주소 연산자(address operator)

  • 포인터 함수와 사용하기

  • 널(null) 포인터

  • assert 함수

  • const 포인터

  • 포인터 연산

  • 포인터의 배열

  • 실습 3
  • 과제 1  제출 마감: 2019-09-22T22:00:00.0000000Z

4주 차: 2019-09-29T23:59:59.9990000Z 까지

  • C 문자열

  • 문자열 조작(string manipulation)

  • 콘솔 출력

  • 실습 4
  • 과제 2  제출 마감: 2019-10-13T22:00:00.0000000Z

5주 차: 2019-10-06T23:59:59.9990000Z 까지

  • 콘솔 입력

  • 파일 입출력

  • 커맨드 라인 인자(command line argument)

  • 실습 5
  • 과제 2  제출 마감: 2019-10-13T22:00:00.0000000Z

6주 차: 2019-10-13T23:59:59.9990000Z 까지

  • 구조체(struct)

  • typedef 키워드

  • 비트 필드(bit field)

  • 공용체(union)

  • 함수 포인터

  • 오른쪽-왼쪽 규칙(right-left rule)

  • void 포인터

  • 실습 6
  • 과제 2  제출 마감: 2019-10-13T22:00:00.0000000Z

7주 차: 2019-10-20T23:59:59.9990000Z 까지

  • 가변 인자 함수(variadic function)

  • 오류 처리

  • 과제 3  제출 마감: 2019-11-10T22:00:00.0000000Z

8주 차: 2019-10-27T23:59:59.9990000Z 까지

  • 중간고사. 수업 및 과제 없음
  • 과제 3  제출 마감: 2019-11-10T22:00:00.0000000Z

9주 차: 2019-11-03T23:59:59.9990000Z 까지

  • 레지스터(register), 스택(stack)과 힙(heap)

  • 동적 메모리

  • 포인터의 포인터(이중 포인터)

  • 다중 포인터

  • 실습 7
  • 과제 3  제출 마감: 2019-11-10T22:00:00.0000000Z

10주 차: 2019-11-10T23:59:59.9990000Z 까지

  • 자료 구조

  • 배열

  • 스택(stack)

  • 큐(queue)

  • 연결 리스트(linked list)

  • 실습 8
  • 과제 3  제출 마감: 2019-11-10T22:00:00.0000000Z

11주 차: 2019-11-17T23:59:59.9990000Z 까지

  • 해쉬맵(hashmap)

  • 전처리기(preprocessor)

  • 매크로(macro)

  • 매크로의 매개변수

  • 전처리기 연산자(preprocessor operator)

  • 실습 9
  • 과제 4  제출 마감: 2019-12-01T22:00:00.0000000Z

12주 차: 2019-11-24T23:59:59.9990000Z 까지

  • 나만의 라이브러리 만들기
  • C99
  • inline 키워드
  • restrict 키워드
  • 한 줄 주석
  • 새로운 변수 선언법
  • va_copy()
  • snprintf()
  • 새로운 자료형(불, long long, 고정 폭 정수형, 복소수 형)
  • 개선된 IEEE754 부동 소수점 자료형
  • 실습 10
  • 과제 4  제출 마감: 2019-12-01T22:00:00.0000000Z

13주 차: 2019-12-01T23:59:59.9990000Z 까지

  • 부동 소수점 예외
  • type-generic 수학
  • 가변 길이 배열
  • 배열 색인 안의 static 키워드
  • 복합 리터럴(compound literal)
  • 가변 인자 매크로
  • 유니버설 문자 이름(UCN, universal character name)
  • C11
  • 유니코드 지원
  • 새로운 안전한(?) 함수들
  • 실습 11
  • 과제 4  제출 마감: 2019-12-01T22:00:00.0000000Z

14주 차: 2019-12-08T23:59:59.9990000Z 까지

  • Type-Generic 함수 만들기
  • 정적 어서트
  • 메모리 정렬
  • 익명 구조체, 익명 공용체
  • 멀티 스레딩

15주 차: 2019-12-15T23:59:59.9990000Z 까지

  • 기말고사. 수업 및 과제 없음
제목   공지일   제출 마감일  
실습 1 2019-09-02T00:00:00.0000000Z (1주 차) 2019-09-08T22:00:00.0000000Z
실습 2 2019-09-09T00:00:00.0000000Z (2주 차) 2019-09-15T22:00:00.0000000Z
실습 3 2019-09-16T00:00:00.0000000Z (3주 차) 2019-09-22T22:00:00.0000000Z
실습 4 2019-09-23T00:00:00.0000000Z (4주 차) 2019-09-29T22:00:00.0000000Z
실습 5 2019-09-30T00:00:00.0000000Z (5주 차) 2019-10-06T22:00:00.0000000Z
실습 6 2019-10-07T00:00:00.0000000Z (6주 차) 2019-10-13T22:00:00.0000000Z
실습 7 2019-10-28T00:00:00.0000000Z (9주 차) 2019-11-03T22:00:00.0000000Z
실습 8 2019-11-04T00:00:00.0000000Z (10주 차) 2019-11-10T22:00:00.0000000Z
실습 9 2019-11-11T00:00:00.0000000Z (11주 차) 2019-11-17T22:00:00.0000000Z
실습 10 2019-11-18T00:00:00.0000000Z (12주 차) 2019-11-24T22:00:00.0000000Z
실습 11 2019-11-25T00:00:00.0000000Z (13주 차) 2019-12-01T22:00:00.0000000Z
과제 1 2019-09-02T00:00:00.0000000Z (1주 차) 2019-09-22T22:00:00.0000000Z
과제 2 2019-09-23T00:00:00.0000000Z (4주 차) 2019-10-13T22:00:00.0000000Z
과제 3 2019-10-14T00:00:00.0000000Z (7주 차) 2019-11-10T22:00:00.0000000Z
과제 4 2019-11-11T00:00:00.0000000Z (11주 차) 2019-12-01T22:00:00.0000000Z
2019-09-15T23:59:59.9990000Z 환불 신청 마감
  • 성적표에 기록되지 않음
  • 전액 환불 (처리 수수료 US$ 100 공제)
2019-11-10T23:59:59.9990000Z 수강취소 신청 마감
  • 성적표에 "W"로 표시
(권장 소프트웨어)
  1. 윈도우 운영체제
  2. Clang 8.0.0
  3. 텍스트 에디터
시험 응시 준비물
  1. 반드시 PC에서(모바일은 응시 불가) 크롬(Chrome) 브라우저를 사용해야 합니다.
  2. 시험을 볼 때 시험 감독 서비스를 사용하며, 서비스를 이용하기 위한 시스템 최소 사양은 다음과 같습니다.
윈도우 리눅스 크롬 운영체제
운영 체제 윈도우 7+ 맥 OSX 10.9+ 우분투 18.04+ 크롬 58+
프로세서 인텔 펜티엄 이상 인텔 인텔 펜티엄 이상 인텔 또는 ARM
사용 가능한 디스크 공간 250 MB 250 MB 250 MB 250 MB
램(메모리) 8 GB1 8 GB1 8 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.00%)

  • 기말고사 (25.00%)

   시작 날짜    종료 날짜
수강기간
2020-01-06T00:00:00.0000000Z
2020-04-19T23:59:59.9990000Z
수강신청기간
2019-12-23T00:00:00.0000000Z
2020-01-05T23:59:59.9990000Z

C는 가장 널리 사용되는 언매니지드 언어들 중 하나이며, 2019년 7월 기준 전 세계에서 2번째로 많이 사용되는 언어입니다. (출처: https://www.tiobe.com/tiobe-index/)

현존하는 프로그래밍 언어는 크게 매니지드(Managed) 언어와 언매니지드(Unmanaged) 언어로 나눠지며, 이 둘의 차이는 프로그래머가 컴퓨터 하드웨어를 직접 제어할 수 있는지의 여부입니다. (예: 프로그래머가 직접 메모리를 관리하는가?) 대표적인 언매니지드 언어인 C는 하드웨어와 매우 가깝다는장점으로 40년이 넘는 세월 동안 살아남았을 뿐만 아니라 아직도 컴파일러, 운영체제, 임베디드 시스템 등 저수준의 제어 및 메모리 절약이 요구되는 곳에 왕성하게 사용되고 있습니다. 그리고 이런 트렌드는 한 동안 바뀌지 않을 전망입니다.

프로그래머의 지속적인 성장에 반드시 필요한 지식 중 하나는 컴퓨터 하드웨어에 대한 이해입니다. C는 대부분의 매니지드 언어와 달리 언매니지드 언어 특유의 기능 (예: 메모리 관리) 들을 포함하고 있기 때문에, 하드웨어의 동작 원리를 공부하고 싶은 분 들, 혹은 컴퓨터를 더 잘 이해하고 싶은 분들에게 좋은 입문용 언매니지드 언어라고 할 수 있겠습니다.

이 강좌는 선수 과목인 '프로그래밍 입문'에서 배운 절차적 프로그래밍 지식을 기반으로 C언어가 언매니지드 언어로서 가지는 기능들에 대해서 알 아봅니다. 이 코스를 성공적으로 마무리한 분들은 하드웨어에 대한 더 넓은 시야를 갖출 수 있을 것입니다.

본 강좌는 첫 주에 '프로그래밍 입문'과목에서 배운 기초 프로그래밍 개념들이 C에 어떻게 적용되는지 살펴 본 뒤 다음과 같이 크게 세 부분으로 나뉘며, 강의 진행도 이 순서를 따릅니다.

  1. ANSI C/C89: C의 기본이 되는 내용과 C로 구현하는 자료 구조들. (~11주 차)

  2. C99: C99 표준에서 추가된 기능들 (12주 차 ~ 13주 차)

  3. C++1x: C11/18 표준에서 추가된 최신 기능들 (14주 차~)

위와 같이 강의를 세 부분으로 나눈 이유는 아직도 많은 C 프로젝트들이 89년도의 표준을 사용하기 때문이며, 이런 트렌드는 바뀌지 않을 전망이기 때문입니다. 따라서 모든 프로젝트에서 쓸 수 있는 C의 지식을 중심으로 배우되 가능할 경우 새로 추가된 기능을 사용할 수 있는 실력을 갖추게 하는 것이 강좌의 목표입니다.

코스 시작 날짜 : 2020-01-06T00:00:00.0000000Z

1주 차: 2020-01-12T23:59:59.9990000Z 까지

  • 과목 설명

  • 헬로 월드(Hello World)

  • 기본 자료형(primitive type)

  • 열거(enum)형

  • 관계 연산자, 논리 연산자, 조건 연산자

  • sizeof 키워드

  • 조건문

  • 반복문

  • 실습 1
  • 과제 1  제출 마감: 2020-01-26T22:00:00.0000000Z

2주 차: 2020-01-19T23:59:59.9990000Z 까지

  • 함수와 범위(scope)

  • 전역 변수

  • const 키워드

  • goto 키워드

  • 배열(array)

  • 스택 메모리

  • 다차원 배열(multi-dimensional array)

  • 헤더파일과 소스분할

  • 컴파일/링크

  • extern/static 키워드

  • 실습 2
  • 과제 1  제출 마감: 2020-01-26T22:00:00.0000000Z

3주 차: 2020-01-26T23:59:59.9990000Z 까지

  • 포인터

  • 주소 연산자(address operator)

  • 포인터 함수와 사용하기

  • 널(null) 포인터

  • assert 함수

  • const 포인터

  • 포인터 연산

  • 포인터의 배열

  • 실습 3
  • 과제 1  제출 마감: 2020-01-26T22:00:00.0000000Z

4주 차: 2020-02-02T23:59:59.9990000Z 까지

  • C 문자열

  • 문자열 조작(string manipulation)

  • 콘솔 출력

  • 실습 4
  • 과제 2  제출 마감: 2020-02-16T22:00:00.0000000Z

5주 차: 2020-02-09T23:59:59.9990000Z 까지

  • 콘솔 입력

  • 파일 입출력

  • 커맨드 라인 인자(command line argument)

  • 실습 5
  • 과제 2  제출 마감: 2020-02-16T22:00:00.0000000Z

6주 차: 2020-02-16T23:59:59.9990000Z 까지

  • 구조체(struct)

  • typedef 키워드

  • 비트 필드(bit field)

  • 공용체(union)

  • 함수 포인터

  • 오른쪽-왼쪽 규칙(right-left rule)

  • void 포인터

  • 실습 6
  • 과제 2  제출 마감: 2020-02-16T22:00:00.0000000Z

7주 차: 2020-02-23T23:59:59.9990000Z 까지

  • 가변 인자 함수(variadic function)

  • 오류 처리

  • 과제 3  제출 마감: 2020-03-15T22:00:00.0000000Z

8주 차: 2020-03-01T23:59:59.9990000Z 까지

  • 중간고사. 수업 및 과제 없음
  • 과제 3  제출 마감: 2020-03-15T22:00:00.0000000Z

9주 차: 2020-03-08T23:59:59.9990000Z 까지

  • 레지스터(register), 스택(stack)과 힙(heap)

  • 동적 메모리

  • 포인터의 포인터(이중 포인터)

  • 다중 포인터

  • 실습 7
  • 과제 3  제출 마감: 2020-03-15T22:00:00.0000000Z

10주 차: 2020-03-15T23:59:59.9990000Z 까지

  • 자료 구조

  • 배열

  • 스택(stack)

  • 큐(queue)

  • 연결 리스트(linked list)

  • 실습 8
  • 과제 3  제출 마감: 2020-03-15T22:00:00.0000000Z

11주 차: 2020-03-22T23:59:59.9990000Z 까지

  • 해쉬맵(hashmap)

  • 전처리기(preprocessor)

  • 매크로(macro)

  • 매크로의 매개변수

  • 전처리기 연산자(preprocessor operator)

  • 실습 9
  • 과제 4  제출 마감: 2020-04-05T22:00:00.0000000Z

12주 차: 2020-03-29T23:59:59.9990000Z 까지

  • 나만의 라이브러리 만들기
  • C99
  • inline 키워드
  • restrict 키워드
  • 한 줄 주석
  • 새로운 변수 선언법
  • va_copy()
  • snprintf()
  • 새로운 자료형(불, long long, 고정 폭 정수형, 복소수 형)
  • 개선된 IEEE754 부동 소수점 자료형
  • 실습 10
  • 과제 4  제출 마감: 2020-04-05T22:00:00.0000000Z

13주 차: 2020-04-05T23:59:59.9990000Z 까지

  • 부동 소수점 예외
  • type-generic 수학
  • 가변 길이 배열
  • 배열 색인 안의 static 키워드
  • 복합 리터럴(compound literal)
  • 가변 인자 매크로
  • 유니버설 문자 이름(UCN, universal character name)
  • C11
  • 유니코드 지원
  • 새로운 안전한(?) 함수들
  • 실습 11
  • 과제 4  제출 마감: 2020-04-05T22:00:00.0000000Z

14주 차: 2020-04-12T23:59:59.9990000Z 까지

  • Type-Generic 함수 만들기
  • 정적 어서트
  • 메모리 정렬
  • 익명 구조체, 익명 공용체
  • 멀티 스레딩

15주 차: 2020-04-19T23:59:59.9990000Z 까지

  • 기말고사. 수업 및 과제 없음
제목   공지일   제출 마감일  
실습 1 2020-01-06T00:00:00.0000000Z (1주 차) 2020-01-12T22:00:00.0000000Z
실습 2 2020-01-13T00:00:00.0000000Z (2주 차) 2020-01-19T22:00:00.0000000Z
실습 3 2020-01-20T00:00:00.0000000Z (3주 차) 2020-01-26T22:00:00.0000000Z
실습 4 2020-01-27T00:00:00.0000000Z (4주 차) 2020-02-02T22:00:00.0000000Z
실습 5 2020-02-03T00:00:00.0000000Z (5주 차) 2020-02-09T22:00:00.0000000Z
실습 6 2020-02-10T00:00:00.0000000Z (6주 차) 2020-02-16T22:00:00.0000000Z
실습 7 2020-03-02T00:00:00.0000000Z (9주 차) 2020-03-08T22:00:00.0000000Z
실습 8 2020-03-09T00:00:00.0000000Z (10주 차) 2020-03-15T22:00:00.0000000Z
실습 9 2020-03-16T00:00:00.0000000Z (11주 차) 2020-03-22T22:00:00.0000000Z
실습 10 2020-03-23T00:00:00.0000000Z (12주 차) 2020-03-29T22:00:00.0000000Z
실습 11 2020-03-30T00:00:00.0000000Z (13주 차) 2020-04-05T22:00:00.0000000Z
과제 1 2020-01-06T00:00:00.0000000Z (1주 차) 2020-01-26T22:00:00.0000000Z
과제 2 2020-01-27T00:00:00.0000000Z (4주 차) 2020-02-16T22:00:00.0000000Z
과제 3 2020-02-17T00:00:00.0000000Z (7주 차) 2020-03-15T22:00:00.0000000Z
과제 4 2020-03-16T00:00:00.0000000Z (11주 차) 2020-04-05T22:00:00.0000000Z
2020-01-19T23:59:59.9990000Z 환불 신청 마감
  • 성적표에 기록되지 않음
  • 전액 환불 (처리 수수료 US$ 100 공제)
2020-03-15T23:59:59.9990000Z 수강취소 신청 마감
  • 성적표에 "W"로 표시
(권장 소프트웨어)
  1. 윈도우 운영체제
  2. Clang 8.0.0
  3. 텍스트 에디터
시험 응시 준비물
  1. 반드시 PC에서(모바일은 응시 불가) 크롬(Chrome) 브라우저를 사용해야 합니다.
  2. 시험을 볼 때 시험 감독 서비스를 사용하며, 서비스를 이용하기 위한 시스템 최소 사양은 다음과 같습니다.
윈도우 리눅스 크롬 운영체제
운영 체제 윈도우 7+ 맥 OSX 10.9+ 우분투 18.04+ 크롬 58+
프로세서 인텔 펜티엄 이상 인텔 인텔 펜티엄 이상 인텔 또는 ARM
사용 가능한 디스크 공간 250 MB 250 MB 250 MB 250 MB
램(메모리) 8 GB1 8 GB1 8 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.00%)

  • 기말고사 (25.00%)