이 강좌는 선수 과목인 '프로그래밍 입문'에서 배운 절차적 프로그래밍 지식을 기반으로 C언어가 언매니지드 언어로서 가지는 기능들에 대해서 알 아봅니다. 이 코스를 성공적으로 마무리한 분들은 하드웨어에 대한 더 넓은 시야를 갖출 수 있을 것입니다.
시작 날짜 | 종료 날짜 | |
---|---|---|
수강기간 |
2021-01-04T00:00:00.0000000Z
|
2021-04-18T23:59:59.9990000Z
|
수강신청기간 |
2020-12-21T00:00:00.0000000Z
|
2021-01-03T23:59:59.9990000Z
|
수강신청 시 해당 내용을 숙지 및 동의한 것으로 간주합니다.
C는 가장 널리 사용되는 언매니지드 언어들 중 하나이며, 2019년 7월 기준 전 세계에서 2번째로 많이 사용되는 언어입니다. (출처: https://www.tiobe.com/tiobe-index/)
현존하는 프로그래밍 언어는 크게 매니지드(Managed) 언어와 언매니지드(Unmanaged) 언어로 나눠지며, 이 둘의 차이는 프로그래머가 컴퓨터 하드웨어를 직접 제어할 수 있는지의 여부입니다. (예: 프로그래머가 직접 메모리를 관리하는가?) 대표적인 언매니지드 언어인 C는 하드웨어와 매우 가깝다는장점으로 40년이 넘는 세월 동안 살아남았을 뿐만 아니라 아직도 컴파일러, 운영체제, 임베디드 시스템 등 저수준의 제어 및 메모리 절약이 요구되는 곳에 왕성하게 사용되고 있습니다. 그리고 이런 트렌드는 한 동안 바뀌지 않을 전망입니다.
프로그래머의 지속적인 성장에 반드시 필요한 지식 중 하나는 컴퓨터 하드웨어에 대한 이해입니다. C는 대부분의 매니지드 언어와 달리 언매니지드 언어 특유의 기능 (예: 메모리 관리) 들을 포함하고 있기 때문에, 하드웨어의 동작 원리를 공부하고 싶은 분 들, 혹은 컴퓨터를 더 잘 이해하고 싶은 분들에게 좋은 입문용 언매니지드 언어라고 할 수 있겠습니다.
이 강좌는 선수 과목인 '프로그래밍 입문'에서 배운 절차적 프로그래밍 지식을 기반으로 C언어가 언매니지드 언어로서 가지는 기능들에 대해서 알 아봅니다. 이 코스를 성공적으로 마무리한 분들은 하드웨어에 대한 더 넓은 시야를 갖출 수 있을 것입니다.
본 강좌는 첫 주에 '프로그래밍 입문'과목에서 배운 기초 프로그래밍 개념들이 C에 어떻게 적용되는지 살펴 본 뒤 다음과 같이 크게 세 부분으로 나뉘며, 강의 진행도 이 순서를 따릅니다.
ANSI C/C89: C의 기본이 되는 내용과 C로 구현하는 자료 구조들. (~11주 차)
C99: C99 표준에서 추가된 기능들 (12주 차 ~ 13주 차)
C++1x: C11/18 표준에서 추가된 최신 기능들 (14주 차~)
위와 같이 강의를 세 부분으로 나눈 이유는 아직도 많은 C 프로젝트들이 89년도의 표준을 사용하기 때문이며, 이런 트렌드는 바뀌지 않을 전망이기 때문입니다. 따라서 모든 프로젝트에서 쓸 수 있는 C의 지식을 중심으로 배우되 가능할 경우 새로 추가된 기능을 사용할 수 있는 실력을 갖추게 하는 것이 강좌의 목표입니다.
과목 설명
헬로 월드(Hello World)
기본 자료형(primitive type)
열거(enum)형
관계 연산자, 논리 연산자, 조건 연산자
sizeof 키워드
조건문
반복문
함수와 범위(scope)
전역 변수
const 키워드
goto 키워드
배열(array)
스택 메모리
다차원 배열(multi-dimensional array)
헤더파일과 소스분할
컴파일/링크
extern/static 키워드
포인터
주소 연산자(address operator)
포인터 함수와 사용하기
널(null) 포인터
assert 함수
const 포인터
포인터 연산
포인터의 배열
C 문자열
문자열 조작(string manipulation)
콘솔 출력
콘솔 입력
파일 입출력
커맨드 라인 인자(command line argument)
구조체(struct)
typedef 키워드
비트 필드(bit field)
공용체(union)
함수 포인터
오른쪽-왼쪽 규칙(right-left rule)
void 포인터
가변 인자 함수(variadic function)
오류 처리
레지스터(register), 스택(stack)과 힙(heap)
동적 메모리
포인터의 포인터(이중 포인터)
다중 포인터
자료 구조
배열
스택(stack)
큐(queue)
연결 리스트(linked list)
해쉬맵(hashmap)
전처리기(preprocessor)
매크로(macro)
매크로의 매개변수
전처리기 연산자(preprocessor operator)
제목 | 공지일 | 제출 마감일 |
---|---|---|
101
실습 1
|
1
2021-01-04T00:00:00.0000000Z
(1주 차)
|
637459128000000000
2021-01-10T22:00:00.0000000Z
|
102
실습 2
|
2
2021-01-11T00:00:00.0000000Z
(2주 차)
|
637465176000000000
2021-01-17T22:00:00.0000000Z
|
103
실습 3
|
3
2021-01-18T00:00:00.0000000Z
(3주 차)
|
637471224000000000
2021-01-24T22:00:00.0000000Z
|
104
실습 4
|
4
2021-01-25T00:00:00.0000000Z
(4주 차)
|
637477272000000000
2021-01-31T22:00:00.0000000Z
|
105
실습 5
|
5
2021-02-01T00:00:00.0000000Z
(5주 차)
|
637483320000000000
2021-02-07T22:00:00.0000000Z
|
106
실습 6
|
6
2021-02-08T00:00:00.0000000Z
(6주 차)
|
637489368000000000
2021-02-14T22:00:00.0000000Z
|
107
실습 7
|
9
2021-03-01T00:00:00.0000000Z
(9주 차)
|
637507512000000000
2021-03-07T22:00:00.0000000Z
|
108
실습 8
|
10
2021-03-08T00:00:00.0000000Z
(10주 차)
|
637513560000000000
2021-03-14T22:00:00.0000000Z
|
109
실습 9
|
11
2021-03-15T00:00:00.0000000Z
(11주 차)
|
637519608000000000
2021-03-21T22:00:00.0000000Z
|
1010
실습 10
|
12
2021-03-22T00:00:00.0000000Z
(12주 차)
|
637525656000000000
2021-03-28T22:00:00.0000000Z
|
1011
실습 11
|
13
2021-03-29T00:00:00.0000000Z
(13주 차)
|
637531704000000000
2021-04-04T22:00:00.0000000Z
|
001
과제 1
|
1
2021-01-04T00:00:00.0000000Z
(1주 차)
|
637471224000000000
2021-01-24T22:00:00.0000000Z
|
002
과제 2
|
4
2021-01-25T00:00:00.0000000Z
(4주 차)
|
637489368000000000
2021-02-14T22:00:00.0000000Z
|
003
과제 3
|
7
2021-02-15T00:00:00.0000000Z
(7주 차)
|
637513560000000000
2021-03-14T22:00:00.0000000Z
|
004
과제 4
|
11
2021-03-15T00:00:00.0000000Z
(11주 차)
|
637531704000000000
2021-04-04T22:00:00.0000000Z
|
2021-01-17T23:59:59.9990000Z | 환불 신청 마감 |
|
---|---|---|
2021-03-07T23:59:59.9990000Z | 수강 철회 신청 마감 |
|
윈도우 | 맥 | 리눅스 | 크롬 운영체제 | |
---|---|---|---|---|
운영 체제 | 윈도우 7+ | 맥 OSX 10.9+ | 우분투 18.04+ | 크롬 58+ |
프로세서 | 인텔 펜티엄 이상 | 인텔 | 인텔 펜티엄 이상 | 인텔 또는 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 이상, 내장형 또는 독립형 |
시작 날짜 | 종료 날짜 | |
---|---|---|
수강기간 |
2021-05-03T00:00:00.0000000Z
|
2021-08-15T23:59:59.9990000Z
|
수강신청기간 |
2021-04-19T00:00:00.0000000Z
|
2021-05-02T23:59:59.9990000Z
|
수강신청 시 해당 내용을 숙지 및 동의한 것으로 간주합니다.
C는 가장 널리 사용되는 언매니지드 언어들 중 하나이며, 2019년 7월 기준 전 세계에서 2번째로 많이 사용되는 언어입니다. (출처: https://www.tiobe.com/tiobe-index/)
현존하는 프로그래밍 언어는 크게 매니지드(Managed) 언어와 언매니지드(Unmanaged) 언어로 나눠지며, 이 둘의 차이는 프로그래머가 컴퓨터 하드웨어를 직접 제어할 수 있는지의 여부입니다. (예: 프로그래머가 직접 메모리를 관리하는가?) 대표적인 언매니지드 언어인 C는 하드웨어와 매우 가깝다는장점으로 40년이 넘는 세월 동안 살아남았을 뿐만 아니라 아직도 컴파일러, 운영체제, 임베디드 시스템 등 저수준의 제어 및 메모리 절약이 요구되는 곳에 왕성하게 사용되고 있습니다. 그리고 이런 트렌드는 한 동안 바뀌지 않을 전망입니다.
프로그래머의 지속적인 성장에 반드시 필요한 지식 중 하나는 컴퓨터 하드웨어에 대한 이해입니다. C는 대부분의 매니지드 언어와 달리 언매니지드 언어 특유의 기능 (예: 메모리 관리) 들을 포함하고 있기 때문에, 하드웨어의 동작 원리를 공부하고 싶은 분 들, 혹은 컴퓨터를 더 잘 이해하고 싶은 분들에게 좋은 입문용 언매니지드 언어라고 할 수 있겠습니다.
이 강좌는 선수 과목인 '프로그래밍 입문'에서 배운 절차적 프로그래밍 지식을 기반으로 C언어가 언매니지드 언어로서 가지는 기능들에 대해서 알 아봅니다. 이 코스를 성공적으로 마무리한 분들은 하드웨어에 대한 더 넓은 시야를 갖출 수 있을 것입니다.
본 강좌는 첫 주에 '프로그래밍 입문'과목에서 배운 기초 프로그래밍 개념들이 C에 어떻게 적용되는지 살펴 본 뒤 다음과 같이 크게 세 부분으로 나뉘며, 강의 진행도 이 순서를 따릅니다.
ANSI C/C89: C의 기본이 되는 내용과 C로 구현하는 자료 구조들. (~11주 차)
C99: C99 표준에서 추가된 기능들 (12주 차 ~ 13주 차)
C++1x: C11/18 표준에서 추가된 최신 기능들 (14주 차~)
위와 같이 강의를 세 부분으로 나눈 이유는 아직도 많은 C 프로젝트들이 89년도의 표준을 사용하기 때문이며, 이런 트렌드는 바뀌지 않을 전망이기 때문입니다. 따라서 모든 프로젝트에서 쓸 수 있는 C의 지식을 중심으로 배우되 가능할 경우 새로 추가된 기능을 사용할 수 있는 실력을 갖추게 하는 것이 강좌의 목표입니다.
과목 설명
헬로 월드(Hello World)
기본 자료형(primitive type)
열거(enum)형
관계 연산자, 논리 연산자, 조건 연산자
sizeof 키워드
조건문
반복문
함수와 범위(scope)
전역 변수
const 키워드
goto 키워드
배열(array)
스택 메모리
다차원 배열(multi-dimensional array)
헤더파일과 소스분할
컴파일/링크
extern/static 키워드
포인터
주소 연산자(address operator)
포인터 함수와 사용하기
널(null) 포인터
assert 함수
const 포인터
포인터 연산
포인터의 배열
C 문자열
문자열 조작(string manipulation)
콘솔 출력
콘솔 입력
파일 입출력
커맨드 라인 인자(command line argument)
구조체(struct)
typedef 키워드
비트 필드(bit field)
공용체(union)
함수 포인터
오른쪽-왼쪽 규칙(right-left rule)
void 포인터
가변 인자 함수(variadic function)
오류 처리
레지스터(register), 스택(stack)과 힙(heap)
동적 메모리
포인터의 포인터(이중 포인터)
다중 포인터
자료 구조
배열
스택(stack)
큐(queue)
연결 리스트(linked list)
해쉬맵(hashmap)
전처리기(preprocessor)
매크로(macro)
매크로의 매개변수
전처리기 연산자(preprocessor operator)
제목 | 공지일 | 제출 마감일 |
---|---|---|
101
실습 1
|
1
2021-05-03T00:00:00.0000000Z
(1주 차)
|
637561944000000000
2021-05-09T22:00:00.0000000Z
|
102
실습 2
|
2
2021-05-10T00:00:00.0000000Z
(2주 차)
|
637567992000000000
2021-05-16T22:00:00.0000000Z
|
103
실습 3
|
3
2021-05-17T00:00:00.0000000Z
(3주 차)
|
637574040000000000
2021-05-23T22:00:00.0000000Z
|
104
실습 4
|
4
2021-05-24T00:00:00.0000000Z
(4주 차)
|
637580088000000000
2021-05-30T22:00:00.0000000Z
|
105
실습 5
|
5
2021-05-31T00:00:00.0000000Z
(5주 차)
|
637586136000000000
2021-06-06T22:00:00.0000000Z
|
106
실습 6
|
6
2021-06-07T00:00:00.0000000Z
(6주 차)
|
637592184000000000
2021-06-13T22:00:00.0000000Z
|
107
실습 7
|
9
2021-06-28T00:00:00.0000000Z
(9주 차)
|
637610328000000000
2021-07-04T22:00:00.0000000Z
|
108
실습 8
|
10
2021-07-05T00:00:00.0000000Z
(10주 차)
|
637616376000000000
2021-07-11T22:00:00.0000000Z
|
109
실습 9
|
11
2021-07-12T00:00:00.0000000Z
(11주 차)
|
637622424000000000
2021-07-18T22:00:00.0000000Z
|
1010
실습 10
|
12
2021-07-19T00:00:00.0000000Z
(12주 차)
|
637628472000000000
2021-07-25T22:00:00.0000000Z
|
1011
실습 11
|
13
2021-07-26T00:00:00.0000000Z
(13주 차)
|
637634520000000000
2021-08-01T22:00:00.0000000Z
|
001
과제 1
|
1
2021-05-03T00:00:00.0000000Z
(1주 차)
|
637574040000000000
2021-05-23T22:00:00.0000000Z
|
002
과제 2
|
4
2021-05-24T00:00:00.0000000Z
(4주 차)
|
637592184000000000
2021-06-13T22:00:00.0000000Z
|
003
과제 3
|
7
2021-06-14T00:00:00.0000000Z
(7주 차)
|
637616376000000000
2021-07-11T22:00:00.0000000Z
|
004
과제 4
|
11
2021-07-12T00:00:00.0000000Z
(11주 차)
|
637634520000000000
2021-08-01T22:00:00.0000000Z
|
2021-05-16T23:59:59.9990000Z | 환불 신청 마감 |
|
---|---|---|
2021-07-04T23:59:59.9990000Z | 수강 철회 신청 마감 |
|
윈도우 | 맥 | 리눅스 | 크롬 운영체제 | |
---|---|---|---|---|
운영 체제 | 윈도우 7+ | 맥 OSX 10.9+ | 우분투 18.04+ | 크롬 58+ |
프로세서 | 인텔 펜티엄 이상 | 인텔 | 인텔 펜티엄 이상 | 인텔 또는 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 이상, 내장형 또는 독립형 |