아래 모든 날짜는 시간대 입니다.
   열리는 날    닫히는 날
수강기간
2024-01-01 00:00:00 GMT
2024-04-14 23:59:59 GMT
수강신청기간
2023-12-18 00:00:00 GMT
2023-12-31 23:59:59 GMT

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의 지식을 중심으로 배우되 가능할 경우 새로 추가된 기능을 사용할 수 있는 실력을 갖추게 하는 것이 강좌의 목표입니다.

수강 시작 날짜 : 2024-01-01 00:00:00 GMT

수업 내용
  • 과목 설명
  • 헬로 월드(Hello World)
  • 기본 자료형(primitive type)
  • 열거(enum)형
  • 관계 연산자, 논리 연산자, 조건 연산자
  • sizeof 키워드
  • 조건문
  • 반복문
  • 함수와 범위(scope)
  • 전역 변수
  • const 키워드

동영상 강의 범위(총 4시간 56분): 이 과목에서 사용하는 서비스 및 도구 ~ 복습 퀴즈

과제 및 실습
  • 실습 1

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

수업 내용
  • goto 키워드
  • 배열(array)
  • 스택 메모리
  • 다차원 배열(multi-dimensional array)
  • C 프로그램의 빌드 과정
  • extern/static 키워드

동영상 강의 범위(총 4시간 07분): goto 문 ~ 정리

과제 및 실습
  • 실습 2

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

수업 내용
  • 포인터
  • 주소 연산자(address operator)
  • 포인터와 함수 반환 값
  • 널(null) 포인터
  • assert 함수
  • 포인터 연산
  • 포인터와 const
  • 포인터 배열

동영상 강의 범위(총 3시간 30분): 포인터 (pointer) ~ 정리

과제 및 실습
  • 실습 3

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

수업 내용
  • C 스타일 문자열
  • 문자열 조작(string manipulation)
  • 콘솔 출력

동영상 강의 범위(총 3시간 06분): 문자열의 표현과 길이 ~ 정리

과제 및 실습
  • 실습 4

  • 과제 2  (제출 마감: 2024-02-11 22:00:00 GMT)

수업 내용
  • 콘솔 입력
  • 파일 입출력
  • 커맨드 라인 인자(command line argument)

동영상 강의 범위(총 3시간 12분): 입력 ~ 정리

과제 및 실습
  • 실습 5

  • 과제 2  (제출 마감: 2024-02-11 22:00:00 GMT)

수업 내용
  • 구조체(struct)
  • typedef 키워드
  • 비트 필드(bit field)
  • 공용체(union)
  • 함수 포인터
  • 오른쪽-왼쪽 규칙(right-left rule)
  • void 포인터

동영상 강의 범위(총 3시간 46분): 구조체, 구조체의 필요성 ~ 정리

과제 및 실습
  • 실습 6

  • 과제 2  (제출 마감: 2024-02-11 22:00:00 GMT)

수업 내용
  • 가변 인자 함수(variadic function)
  • 오류 처리

동영상 강의 범위(총 1시간 39분): 가변 인자 함수 ~ 정리

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

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

수업 내용
  • 레지스터(register), 스택(stack)과 힙(heap)
  • 동적 메모리
  • 이중 포인터(포인터의 포인터)
  • 다중 포인터

동영상 강의 범위(총 2시간 55분): 메모리의 종류 ~ 정리

과제 및 실습
  • 실습 7

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

수업 내용
  • 자료 구조
  • 배열
  • 스택(stack)
  • 큐(queue)
  • 연결 리스트(linked list)

동영상 강의 범위(총 2시간 14분): 자료구조 기초 ~ 복습 퀴즈 3

과제 및 실습
  • 실습 8

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

수업 내용
  • 해시 맵(hashmap)
  • 전처리기(preprocessor)
  • 매크로(macro)
    • 매크로의 매개변수
  • 매크로 함수의 활용

동영상 강의 범위(총 2시간 32분): 해시 테이블 ~ 정리

과제 및 실습
  • 실습 9

  • 과제 4  (제출 마감: 2024-03-31 22:00:00 GMT)

수업 내용
  • 나만의 라이브러리 만들기
  • C99
  • inline 키워드
  • restrict 키워드
  • 한 줄 주석
  • 새로운 변수 선언법
  • va_copy()
  • snprintf()
  • 새로운 자료형(불, long long, 고정 폭 정수형, 복소수 형)
  • 개선된 IEEE754 부동 소수점 자료형

동영상 강의 범위(총 2시간 06분): 나만의 라이브러리 만들기 ~ 정리

과제 및 실습
  • 실습 10

  • 과제 4  (제출 마감: 2024-03-31 22:00:00 GMT)

수업 내용
  • 부동 소수점 예외
  • type-generic 수학
  • 가변 길이 배열
  • 배열 색인 안의 static 키워드
  • 복합 리터럴(compound literal)
  • 가변 인자 매크로
  • 유니버설 문자 이름(UCN, universal character name)
  • C11
  • 유니코드 지원
  • 새로운 안전한(?) 함수들

동영상 강의 범위(총 2시간 27분): 부동소수점 예외 ~ _s 함수를 과연 써야 할까?

과제 및 실습
  • 실습 11

  • 과제 4  (제출 마감: 2024-03-31 22:00:00 GMT)

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

동영상 강의 범위(총 1시간 20분): Type-Generic 함수 만들기 ~ 에필로그

과제 및 실습
  • 없음

수업 내용
  • 기말고사. 수업 및 과제 없음
과제 및 실습
  • 없음

제목   공지일   제출 마감  
실습 1
2024-01-01 00:00:00 GMT (1주 차) 2024-01-07 22:00:00 GMT
실습 2
2024-01-08 00:00:00 GMT (2주 차) 2024-01-14 22:00:00 GMT
실습 3
2024-01-15 00:00:00 GMT (3주 차) 2024-01-21 22:00:00 GMT
실습 4
2024-01-22 00:00:00 GMT (4주 차) 2024-01-28 22:00:00 GMT
실습 5
2024-01-29 00:00:00 GMT (5주 차) 2024-02-04 22:00:00 GMT
실습 6
2024-02-05 00:00:00 GMT (6주 차) 2024-02-11 22:00:00 GMT
실습 7
2024-02-26 00:00:00 GMT (9주 차) 2024-03-03 22:00:00 GMT
실습 8
2024-03-04 00:00:00 GMT (10주 차) 2024-03-10 22:00:00 GMT
실습 9
2024-03-11 00:00:00 GMT (11주 차) 2024-03-17 22:00:00 GMT
실습 10
2024-03-18 00:00:00 GMT (12주 차) 2024-03-24 22:00:00 GMT
실습 11
2024-03-25 00:00:00 GMT (13주 차) 2024-03-31 22:00:00 GMT
과제 1
2024-01-01 00:00:00 GMT (1주 차) 2024-01-21 22:00:00 GMT
과제 2
2024-01-22 00:00:00 GMT (4주 차) 2024-02-11 22:00:00 GMT
과제 3
2024-02-12 00:00:00 GMT (7주 차) 2024-03-10 22:00:00 GMT
과제 4
2024-03-11 00:00:00 GMT (11주 차) 2024-03-31 22:00:00 GMT
2024-01-14 23:59:59 GMT 환불 신청 마감
  • 성적표에 기록되지 않음
  • 전액 환불 (처리 수수료 US$ 100 공제)
2024-03-03 23:59:59 GMT 수강 철회 신청 마감
  • 성적표에 "W"로 표시
권장 소프트웨어
  1. 윈도우 운영체제
  2. Clang 16.0.5
  3. 텍스트 에디터
시험 응시 준비물
  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.00%)

  • 기말고사 (25.00%)

학생 비율 점수
   열리는 날    닫히는 날
수강기간
2024-05-06 00:00:00 GMT
2024-08-18 23:59:59 GMT
수강신청기간
2024-04-22 00:00:00 GMT
2024-05-05 23:59:59 GMT

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의 지식을 중심으로 배우되 가능할 경우 새로 추가된 기능을 사용할 수 있는 실력을 갖추게 하는 것이 강좌의 목표입니다.

수강 시작 날짜 : 2024-05-06 00:00:00 GMT

수업 내용
  • 과목 설명
  • 헬로 월드(Hello World)
  • 기본 자료형(primitive type)
  • 열거(enum)형
  • 관계 연산자, 논리 연산자, 조건 연산자
  • sizeof 키워드
  • 조건문
  • 반복문
  • 함수와 범위(scope)
  • 전역 변수
  • const 키워드

동영상 강의 범위(총 4시간 56분): 이 과목에서 사용하는 서비스 및 도구 ~ 복습 퀴즈

과제 및 실습
  • 실습 1

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

수업 내용
  • goto 키워드
  • 배열(array)
  • 스택 메모리
  • 다차원 배열(multi-dimensional array)
  • C 프로그램의 빌드 과정
  • extern/static 키워드

동영상 강의 범위(총 4시간 07분): goto 문 ~ 정리

과제 및 실습
  • 실습 2

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

수업 내용
  • 포인터
  • 주소 연산자(address operator)
  • 포인터와 함수 반환 값
  • 널(null) 포인터
  • assert 함수
  • 포인터 연산
  • 포인터와 const
  • 포인터 배열

동영상 강의 범위(총 3시간 30분): 포인터 (pointer) ~ 정리

과제 및 실습
  • 실습 3

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

수업 내용
  • C 스타일 문자열
  • 문자열 조작(string manipulation)
  • 콘솔 출력

동영상 강의 범위(총 3시간 06분): 문자열의 표현과 길이 ~ 정리

과제 및 실습
  • 실습 4

  • 과제 2  (제출 마감: 2024-06-16 22:00:00 GMT)

수업 내용
  • 콘솔 입력
  • 파일 입출력
  • 커맨드 라인 인자(command line argument)

동영상 강의 범위(총 3시간 12분): 입력 ~ 정리

과제 및 실습
  • 실습 5

  • 과제 2  (제출 마감: 2024-06-16 22:00:00 GMT)

수업 내용
  • 구조체(struct)
  • typedef 키워드
  • 비트 필드(bit field)
  • 공용체(union)
  • 함수 포인터
  • 오른쪽-왼쪽 규칙(right-left rule)
  • void 포인터

동영상 강의 범위(총 3시간 46분): 구조체, 구조체의 필요성 ~ 정리

과제 및 실습
  • 실습 6

  • 과제 2  (제출 마감: 2024-06-16 22:00:00 GMT)

수업 내용
  • 가변 인자 함수(variadic function)
  • 오류 처리

동영상 강의 범위(총 1시간 39분): 가변 인자 함수 ~ 정리

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

수업 내용
  • 중간고사. 수업 및 과제 없음
과제 및 실습
  • 과제 3  (제출 마감: 2024-07-14 22:00:00 GMT)

수업 내용
  • 레지스터(register), 스택(stack)과 힙(heap)
  • 동적 메모리
  • 이중 포인터(포인터의 포인터)
  • 다중 포인터

동영상 강의 범위(총 2시간 55분): 메모리의 종류 ~ 정리

과제 및 실습
  • 실습 7

  • 과제 3  (제출 마감: 2024-07-14 22:00:00 GMT)

수업 내용
  • 자료 구조
  • 배열
  • 스택(stack)
  • 큐(queue)
  • 연결 리스트(linked list)

동영상 강의 범위(총 2시간 14분): 자료구조 기초 ~ 복습 퀴즈 3

과제 및 실습
  • 실습 8

  • 과제 3  (제출 마감: 2024-07-14 22:00:00 GMT)

수업 내용
  • 해시 맵(hashmap)
  • 전처리기(preprocessor)
  • 매크로(macro)
    • 매크로의 매개변수
  • 매크로 함수의 활용

동영상 강의 범위(총 2시간 32분): 해시 테이블 ~ 정리

과제 및 실습
  • 실습 9

  • 과제 4  (제출 마감: 2024-08-04 22:00:00 GMT)

수업 내용
  • 나만의 라이브러리 만들기
  • C99
  • inline 키워드
  • restrict 키워드
  • 한 줄 주석
  • 새로운 변수 선언법
  • va_copy()
  • snprintf()
  • 새로운 자료형(불, long long, 고정 폭 정수형, 복소수 형)
  • 개선된 IEEE754 부동 소수점 자료형

동영상 강의 범위(총 2시간 06분): 나만의 라이브러리 만들기 ~ 정리

과제 및 실습
  • 실습 10

  • 과제 4  (제출 마감: 2024-08-04 22:00:00 GMT)

수업 내용
  • 부동 소수점 예외
  • type-generic 수학
  • 가변 길이 배열
  • 배열 색인 안의 static 키워드
  • 복합 리터럴(compound literal)
  • 가변 인자 매크로
  • 유니버설 문자 이름(UCN, universal character name)
  • C11
  • 유니코드 지원
  • 새로운 안전한(?) 함수들

동영상 강의 범위(총 2시간 27분): 부동소수점 예외 ~ _s 함수를 과연 써야 할까?

과제 및 실습
  • 실습 11

  • 과제 4  (제출 마감: 2024-08-04 22:00:00 GMT)

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

동영상 강의 범위(총 1시간 20분): Type-Generic 함수 만들기 ~ 에필로그

과제 및 실습
  • 없음

수업 내용
  • 기말고사. 수업 및 과제 없음
과제 및 실습
  • 없음

제목   공지일   제출 마감  
실습 1
2024-05-06 00:00:00 GMT (1주 차) 2024-05-12 22:00:00 GMT
실습 2
2024-05-13 00:00:00 GMT (2주 차) 2024-05-19 22:00:00 GMT
실습 3
2024-05-20 00:00:00 GMT (3주 차) 2024-05-26 22:00:00 GMT
실습 4
2024-05-27 00:00:00 GMT (4주 차) 2024-06-02 22:00:00 GMT
실습 5
2024-06-03 00:00:00 GMT (5주 차) 2024-06-09 22:00:00 GMT
실습 6
2024-06-10 00:00:00 GMT (6주 차) 2024-06-16 22:00:00 GMT
실습 7
2024-07-01 00:00:00 GMT (9주 차) 2024-07-07 22:00:00 GMT
실습 8
2024-07-08 00:00:00 GMT (10주 차) 2024-07-14 22:00:00 GMT
실습 9
2024-07-15 00:00:00 GMT (11주 차) 2024-07-21 22:00:00 GMT
실습 10
2024-07-22 00:00:00 GMT (12주 차) 2024-07-28 22:00:00 GMT
실습 11
2024-07-29 00:00:00 GMT (13주 차) 2024-08-04 22:00:00 GMT
과제 1
2024-05-06 00:00:00 GMT (1주 차) 2024-05-26 22:00:00 GMT
과제 2
2024-05-27 00:00:00 GMT (4주 차) 2024-06-16 22:00:00 GMT
과제 3
2024-06-17 00:00:00 GMT (7주 차) 2024-07-14 22:00:00 GMT
과제 4
2024-07-15 00:00:00 GMT (11주 차) 2024-08-04 22:00:00 GMT
2024-05-19 23:59:59 GMT 환불 신청 마감
  • 성적표에 기록되지 않음
  • 전액 환불 (처리 수수료 US$ 100 공제)
2024-07-07 23:59:59 GMT 수강 철회 신청 마감
  • 성적표에 "W"로 표시
권장 소프트웨어
  1. 윈도우 운영체제
  2. Clang 16.0.5
  3. 텍스트 에디터
시험 응시 준비물
  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.00%)

  • 기말고사 (25.00%)

학생 비율 점수
   열리는 날    닫히는 날
수강기간
2025-01-06 00:00:00 GMT
2025-04-20 23:59:59 GMT
수강신청기간
2024-12-23 00:00:00 GMT
2025-01-05 23:59:59 GMT

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의 지식을 중심으로 배우되 가능할 경우 새로 추가된 기능을 사용할 수 있는 실력을 갖추게 하는 것이 강좌의 목표입니다.

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

수업 내용
  • 과목 설명
  • 헬로 월드(Hello World)
  • 기본 자료형(primitive type)
  • 열거(enum)형
  • 관계 연산자, 논리 연산자, 조건 연산자
  • sizeof 키워드
  • 조건문
  • 반복문
  • 함수와 범위(scope)
  • 전역 변수
  • const 키워드

동영상 강의 범위(총 4시간 56분): 이 과목에서 사용하는 서비스 및 도구 ~ 복습 퀴즈

과제 및 실습
  • 실습 1

  • 과제 1  (제출 마감: 2025-01-26 22:00:00 GMT)

수업 내용
  • goto 키워드
  • 배열(array)
  • 스택 메모리
  • 다차원 배열(multi-dimensional array)
  • C 프로그램의 빌드 과정
  • extern/static 키워드

동영상 강의 범위(총 4시간 07분): goto 문 ~ 정리

과제 및 실습
  • 실습 2

  • 과제 1  (제출 마감: 2025-01-26 22:00:00 GMT)

수업 내용
  • 포인터
  • 주소 연산자(address operator)
  • 포인터와 함수 반환 값
  • 널(null) 포인터
  • assert 함수
  • 포인터 연산
  • 포인터와 const
  • 포인터 배열

동영상 강의 범위(총 3시간 30분): 포인터 (pointer) ~ 정리

과제 및 실습
  • 실습 3

  • 과제 1  (제출 마감: 2025-01-26 22:00:00 GMT)

수업 내용
  • C 스타일 문자열
  • 문자열 조작(string manipulation)
  • 콘솔 출력

동영상 강의 범위(총 3시간 06분): 문자열의 표현과 길이 ~ 정리

과제 및 실습
  • 실습 4

  • 과제 2  (제출 마감: 2025-02-16 22:00:00 GMT)

수업 내용
  • 콘솔 입력
  • 파일 입출력
  • 커맨드 라인 인자(command line argument)

동영상 강의 범위(총 3시간 12분): 입력 ~ 정리

과제 및 실습
  • 실습 5

  • 과제 2  (제출 마감: 2025-02-16 22:00:00 GMT)

수업 내용
  • 구조체(struct)
  • typedef 키워드
  • 비트 필드(bit field)
  • 공용체(union)
  • 함수 포인터
  • 오른쪽-왼쪽 규칙(right-left rule)
  • void 포인터

동영상 강의 범위(총 3시간 46분): 구조체, 구조체의 필요성 ~ 정리

과제 및 실습
  • 실습 6

  • 과제 2  (제출 마감: 2025-02-16 22:00:00 GMT)

수업 내용
  • 가변 인자 함수(variadic function)
  • 오류 처리

동영상 강의 범위(총 1시간 39분): 가변 인자 함수 ~ 정리

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

수업 내용
  • 중간고사. 수업 및 과제 없음
과제 및 실습
  • 과제 3  (제출 마감: 2025-03-16 22:00:00 GMT)

수업 내용
  • 레지스터(register), 스택(stack)과 힙(heap)
  • 동적 메모리
  • 이중 포인터(포인터의 포인터)
  • 다중 포인터

동영상 강의 범위(총 2시간 55분): 메모리의 종류 ~ 정리

과제 및 실습
  • 실습 7

  • 과제 3  (제출 마감: 2025-03-16 22:00:00 GMT)

수업 내용
  • 자료 구조
  • 배열
  • 스택(stack)
  • 큐(queue)
  • 연결 리스트(linked list)

동영상 강의 범위(총 2시간 14분): 자료구조 기초 ~ 복습 퀴즈 3

과제 및 실습
  • 실습 8

  • 과제 3  (제출 마감: 2025-03-16 22:00:00 GMT)

수업 내용
  • 해시 맵(hashmap)
  • 전처리기(preprocessor)
  • 매크로(macro)
    • 매크로의 매개변수
  • 매크로 함수의 활용

동영상 강의 범위(총 2시간 32분): 해시 테이블 ~ 정리

과제 및 실습
  • 실습 9

  • 과제 4  (제출 마감: 2025-04-06 22:00:00 GMT)

수업 내용
  • 나만의 라이브러리 만들기
  • C99
  • inline 키워드
  • restrict 키워드
  • 한 줄 주석
  • 새로운 변수 선언법
  • va_copy()
  • snprintf()
  • 새로운 자료형(불, long long, 고정 폭 정수형, 복소수 형)
  • 개선된 IEEE754 부동 소수점 자료형

동영상 강의 범위(총 2시간 06분): 나만의 라이브러리 만들기 ~ 정리

과제 및 실습
  • 실습 10

  • 과제 4  (제출 마감: 2025-04-06 22:00:00 GMT)

수업 내용
  • 부동 소수점 예외
  • type-generic 수학
  • 가변 길이 배열
  • 배열 색인 안의 static 키워드
  • 복합 리터럴(compound literal)
  • 가변 인자 매크로
  • 유니버설 문자 이름(UCN, universal character name)
  • C11
  • 유니코드 지원
  • 새로운 안전한(?) 함수들

동영상 강의 범위(총 2시간 27분): 부동소수점 예외 ~ _s 함수를 과연 써야 할까?

과제 및 실습
  • 실습 11

  • 과제 4  (제출 마감: 2025-04-06 22:00:00 GMT)

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

동영상 강의 범위(총 1시간 20분): Type-Generic 함수 만들기 ~ 에필로그

과제 및 실습
  • 없음

수업 내용
  • 기말고사. 수업 및 과제 없음
과제 및 실습
  • 없음

제목   공지일   제출 마감  
실습 1
2025-01-06 00:00:00 GMT (1주 차) 2025-01-12 22:00:00 GMT
실습 2
2025-01-13 00:00:00 GMT (2주 차) 2025-01-19 22:00:00 GMT
실습 3
2025-01-20 00:00:00 GMT (3주 차) 2025-01-26 22:00:00 GMT
실습 4
2025-01-27 00:00:00 GMT (4주 차) 2025-02-02 22:00:00 GMT
실습 5
2025-02-03 00:00:00 GMT (5주 차) 2025-02-09 22:00:00 GMT
실습 6
2025-02-10 00:00:00 GMT (6주 차) 2025-02-16 22:00:00 GMT
실습 7
2025-03-03 00:00:00 GMT (9주 차) 2025-03-09 22:00:00 GMT
실습 8
2025-03-10 00:00:00 GMT (10주 차) 2025-03-16 22:00:00 GMT
실습 9
2025-03-17 00:00:00 GMT (11주 차) 2025-03-23 22:00:00 GMT
실습 10
2025-03-24 00:00:00 GMT (12주 차) 2025-03-30 22:00:00 GMT
실습 11
2025-03-31 00:00:00 GMT (13주 차) 2025-04-06 22:00:00 GMT
과제 1
2025-01-06 00:00:00 GMT (1주 차) 2025-01-26 22:00:00 GMT
과제 2
2025-01-27 00:00:00 GMT (4주 차) 2025-02-16 22:00:00 GMT
과제 3
2025-02-17 00:00:00 GMT (7주 차) 2025-03-16 22:00:00 GMT
과제 4
2025-03-17 00:00:00 GMT (11주 차) 2025-04-06 22:00:00 GMT
2025-01-19 23:59:59 GMT 환불 신청 마감
  • 성적표에 기록되지 않음
  • 전액 환불 (처리 수수료 US$ 100 공제)
2025-03-09 23:59:59 GMT 수강 철회 신청 마감
  • 성적표에 "W"로 표시
권장 소프트웨어
  1. 윈도우 운영체제
  2. Clang 16.0.5
  3. 텍스트 에디터
시험 응시 준비물
  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.00%)

  • 기말고사 (25.00%)

학생 비율 점수