C Programming Master (Data Structure & Algorithm 포함)
C언어란 1980년대말부터 널리 보급된 컴퓨터 프로그래밍 언어로 다른 어떠한 컴퓨터 언어보다도 광범위한 분야에 적합하도록 만들어진 언어입니다. 이처럼C언어의 광범위한 효율성때문에 컴퓨터 프로그램은 물론 컴퓨터 그래픽스, 컴퓨터 게임, 웹 마스터, 웹 디자인등 모든 컴퓨터를 이용한 작업의 심도있는 제어를 가능하게 하는 기본이 됩니다.
주차 |
일 |
개 요 |
세부교육과정 |
1 |
01 |
CLanguage Fundamentals |
C Language Fundamentals (C언어의 개념) 컴파일, 링크, 실행, 디버깅 방법 |
02 |
Data Type |
Data Type (데이터 형) ? 변수 & 상수 Type Casting (데이터 형 변환) | |
03 |
Standard Input/Output |
Standard I/O Function (표준입출력 함수 - printf(),scanf()) Input/Output Function (한문자 단위의 입출력 함수) Operator (연산자) | |
04 |
Control Structure-Ⅰ |
Control Structure ?if Statement (제어구조 ? if 문) switch case Statement (switch case 문) | |
05 |
Control Structure-Ⅱ |
for Statement (for 문) while Statement (while 문) break Statement, continue Statement (분기문) | |
2 |
06 |
Array |
Content-of Operator [] (내용 연산자-배열선언 연산자) 1-Dimensional Array (1차원 배열) |
07 |
1차원 배열의 활용 (최대값, 최소값, 검색(선형검색, 이분검색), 정렬 등) | ||
08 |
Pointer |
포인터의 기본 개념 포인터의 활용, 동적메모리 할당 | |
09 |
Array-Ⅲ |
2-Dimensional Array (2차원 배열) 2차원 배열의 활용(행렬연산, 검색 및 성적관리 프로그램) | |
10 |
Function | Function (함수) Call By Value/Call By Address(매개변수 호출방법) 함수의 매개변수로 배열을 전달하는 방법 | |
3 |
11 |
Preprocessing Command | Function Pointer (함수 포인터) Preprocessing Command (전처리기 및 전처리 명령어) |
12 |
structure | structure (구조체) union / enum (공용체 / 열거형) | |
13 |
구조체의 활용(명함관리 프로그램) | ||
14 |
File Input/Output | File Input/Output (파일 입출력) 파일 활용(fprintf(), fscanf(), fputs(), fgets(), fputc(), fgetc()) | |
15 |
algorithm | 알고리즘이란? 알고리즘 분석기법 및 최적화 기법 | |
4 |
16 |
Linked List | 단일 링크드 리스트(스택, 큐) 더블 링크드 리스트(스택, 큐) |
17 |
Stack | 스택의 응용(전위 / 중위 / 후위 표기법) | |
18 |
Tree | Tree(트리의 순회) | |
19 |
Sort algorithm | 정렬 알고리즘 | |
20 |
Search algorithm | 검색 알고리즘 |
Visual C++ Programming Master (Microsoft Foundation Class)
윈도우즈용 응용 프로그램의 통합 개발 환경인 마이크로소프트 비주얼 C++에 부속되는 클래스 라이브러리로서 윈도우즈 응용 프로그램 작성에 유용한 많은 클래스를 제공합니다 (60시간)
C++ Programming Master
주차 |
일 |
개 요 |
세부교육과정 |
1 |
01 |
Object Oriented Programming | - OOP(Object Oriented Programming)의 개념 - Object Modeling(객체 모델링)-C++ 의 struct(구조체) |
02 |
C++의 Input/Output | - printf와 scanf()를 대신하는 입출력 방식- IO Stream(cin , cout , cerr) | |
03 |
C++로의 변화된 문법 | - Function Overloading(함수 오버로딩) - Default Argument(기본 매개변수)- Inline Function(인라인 함수) | |
04 |
- name space(이름 공간) - Reference(참조) 와 Alias(별명) - Call by Reference(참조에 의한 호출) - new & delete(동적메모리 할당-malloc) | ||
05 |
class-Ⅰ | - struct & class(구조체와 클래스의 비교 - class & instance(객체) - Access Specifier (public , protected , private) - Member(Variable / Function) | |
2 |
06 |
class-Ⅱ | - constructor(생성자) 와 destructor(소멸자) - Encapsulation(캡슐화) - this pointer variable(this포인터 변수) - class & array(객체의 배열) |
07 |
copy constructor | - copy constructor(복사 생성자) - 복사생성자의 형태 - Deep Copy(깊은 복사)를 하는 복사생성자 - 복사생성자가 호출되는 경우 | |
08 |
inheritance (상속) |
- inheritance(상속)의 개요 - derived class(파생클래스)의 정의 - 상속된 객체와 포인터 그리고 참조의 관계 - Static Binding(정적바인딩) & Dynamic Binding(동적바인딩) | |
09 |
virtual | - virtual(가상)의 의미 - virtual Function (가상 함수) - Subtype Principle (Subtype 의 원리) - Pure virtual Function (순수 가상함수) - virtual destructor(가상 소멸자) | |
10 |
다중상속 | - 다중상속에 대한 이해 - 다중상속의 문제(모호성) - virtual base class(가상베이스클래스) | |
3 |
11 |
Operator Overloading | - Operator Overloading(연산자 중복정의)의 의미 - Overloading(중복정의)가 불가능한 연산자 - 단항연산자의 오버로딩 - 교환법칙 문제의 해결 - 참조의 리턴 |
12 |
새로운형태의typecasting | - typecasting(형변환)이 필요한 이유 - static_cast & dynamic_cast - downcast - const_cast & reinterpret_cast | |
13 |
RTTI | - run time type information(RTTI)가 필요한 이유 - 실행시에 객체의 클래스 이름 얻어오기 - dynamic creation(동적생성) - typeid | |
14 |
Exception Handling | - exception(예외)의 의미(fault 와 error) - 기존의 예외처리 방법과 C++의 예외처리 매커니즘 - 예외의 제한 및 전파(propagation) - Stack Unwinding(스택풀기) - exception handling class(표준예외처리 클래스) | |
15 |
File I /O Stream | - C++ File Input/Output(파일 입출력) - Binary & ASCII File(바이너리와 아스키파일) - Buffering(버퍼를 사용하지 않는 입출력) | |
4 |
16 |
template (템플릿) |
- template(템플릿)의 이해 - function template(함수템플릿) - class template(클래스템플릿) - STL(Standard Template Library) |
17 |
STL Component | - container(컨테이너)와 generic algorithm - iterator(반복자) - 어댑터와 할당기 - 확장성 | |
18 |
Sequence Container | - Vector(벡터) - Deques(덱) - List(리스트) | |
19 |
Sorted associative container | - Sorted associative container(정렬연관 컨테이너) - Set & MultiSet(셋과 멀티셋) - Map & MultiSet(맵과 멀티맵) | |
20 |
Container Adaptor | - Stack Container Adaptor(스택 컨테이너 어뎁터) - Queue Container Adaptor(큐 컨테이너 어뎁터) - PriorityQueue Container Adaptor(우선순위큐 컨테이너 어뎁터) |
Visual C++ Programming Master
주차 |
일 |
개 요 |
세부교육과정 |
1 |
01 |
MFC Fundamentals | - 윈도우 프로그래밍의 특징 및 원리 VC++컴파일러의 사용법 Win32 API를 이용한 윈도우 프래그램의 이해 윈도우 만들기 메시지 정의, 배경색, 아이콘, 커서바꾸기 메뉴만들기, 글자출력 |
02 |
Application Frame Works | - AFX Class의 이해 - AppWizard를 이용한 프로젝트 생성 - Document / View 구조 이해하기 | |
03 |
Message | - EventDriven의 이해 - Message의 상호작용 및Message Handler - KeyBoard Message - Timer Message | |
04 |
GDI를 이용한 그래픽 | - 윈도우 그래픽의 이해 - 하드웨어 독립적인 프로그래밍 - Raster Operation(레스터 오퍼레이션) - Bitmap - Mapping Mode ? View Port | |
05 |
Dialog Box |
- Modal Dialog - DDX(DoDataExchange) ? DialogBox와의 통신 - Modeless Dialog - Common Dialog | |
2 |
06 |
표준컨트롤 | - List Box Control - TextBox 와 Button Control - Value형 변수와 Control형 변수 - Control형 변수를 이용한 SubClassing |
07 |
Resource | - Menu - Short Key - Icon & Cursor | |
08 |
Control Bar (컨트롤바) |
- Tool Bar - Status Bar - Dialog Bar | |
09 |
Document / View | - Document Template - 메모리상에서의 데이터관리 - Document 와 View의 통신 | |
10 |
SDI / MDI | - Single Document Interface - Multiple Document Interface - MDI 프로그램의 구조 분석 - MDI 의 AFX Class 간의 상호참조 | |
3 |
11 |
SplitterWnd & Multiple View | - Splitter Window의 장점 - Dynamic Splitter Window(동적분할 윈도우) - Static Splitter Window(정적분할 윈도우) - Multiple View(다중뷰) |
12 |
File | - File 입출력 - CfileDialog Class - Serialize - Registry(레지스트리)에 프로그램의 설정 저장 | |
13 |
Dynamic Linking Library(DLL) | - DLL의 장점 - General DLL - Extension DLL - DLL을 이용한 혼합 프로그래밍(Visual Basic와의 연결) | |
14 |
Print(인쇄) | - MFC의 인쇄코드 - MultiPart - 용지크기에 맞추기 - 문자열크기 맞추기 - 그래픽 인쇄하기 | |
15 |
Multi Media | - Sound Play(사운드 연주 및 비동기 연주) - MCI(MCI_Open & Play & Close) - 동영상 재생 | |
4 |
16 |
OLE | - OLE의 이해 - MFC의 OLE지원 - OLE 서버와 컨테이너의 구현 - ClipBoard를 이용한 데이터 전송 |
17 |
ActiveX Control | - ActiveX Control의 이해 - ActiveX Control 제작 및 사용 - Subclassing(서브클래싱)을 이용한 ActiveX Control | |
18 |
Automation | - Automation의 이해 - UserInterface가 없는 Automation Server - UserInterface를 갖는 Automation Server - 다중인터페이스 Automation Server | |
19 |
Database | - ODBC의 이해 - ODBC를 이용한 DataBase Application - ADO를 이용한 DataBase Record의 조작기법 | |
20 |
Network | - Windows Socket - IP / Protocol - MFC Socket Class - 범용적인 Socket Class 제작 |
Visual C++ Programming Master(Component Object Model)
COM (Component Object Model)은 Component를 만들고 이 Component에서 Application을 구축하는 방법에 대한 명세서(Specification)입니다. 따라서 COM은 일정한 형식을 가지고 있어야 하며, 그래야만 어떠한 Application(설령 다른 언어로 만들어진 Application이라 하더라도)에서라도 마치 레고 블럭을 맞추듯 사용할 수 있는 것입니다. 즉 다시 말해 COM은 프로그램의 Component 객체들을 개발하고 지원하기 위한 하부 기반구조로서, CORBA(Common Object Request Broker Architecture)에서 정의된 수준의 기능 제공을 목표로 합니다. 마이크로소프트의 OLE가 사용자가 화면에서 볼 수 있는 복합문서를 위한 서비스를 제공하는 반면, COM은 인터페이스 교섭, 생명주기 관리, 라이선스, 이벤트 서비스(다른 객체에서 발생된 이벤트의 결과로서 한 객체를 서비스에 배정) 등 하부 서비스를 제공합니다. COM은COM+, DCOM, ActiveX interfaces, 프로그래밍 도구 등을 포함합니다.
우리는 COM을 공부함으로써 언어에 독립적이고, 이식성이 강하며, 플랫폼에 독립적인 Component를 작성하는 능력을 배양할 수 있습니다.
주차 |
일 |
개 요 |
세부교육과정 |
1 |
01 |
COM을 위한 기초클래스 | - 구조체(struct)와 클래스(class) - 단일상속 - 다중상속 - 가상함수 와 추상클래스 |
02 |
COM의 개요 | - Component의 장점 - Component를 만들기 위한 규정 - COM Library | |
03 |
Interface | - COM Interface - Vritual Function Table | |
04 |
QueryInterface | - IUnknown Interface의 포인터 획득 - QueryInterface의 구현 및 사용 - Casting | |
05 |
ReferenceCount HRESULT , GUID | - AddRef() 와 Release() - HRESULT - GUID를 사용하는 이유 - 레퍼런스로 GUID 전달하기 | |
2 |
06 |
Dynamic Linking Library(DLL) | - DLL의 기초 - DLL Server 만들기 |
07 |
클래스 팩토리(Class Factory) | - 레지스트리 등록방법 - 클라이언트(Client)에서 DLL로 접속하기 - 클래스 팩토리 - COM Server 만들기 | |
08 |
MFC COM Programming | - 클래스 팩토리 및 DLL등록/해지 - MFC COM 프로그래밍 | |
09 |
로컬 서버의 구현 | - IDL/MIDL(Interface Description Language/Microsoft IDL) - 인-프로세스 서버(In-Process Server) 구현 - 프로세스(Process) 간의 통신 - 아웃-오브-프로세스(Out of Process) 구현 | |
10 |
MFC Automation 구현 | - 자동화 클라이언트와 자동화 서버 - MFC에서의 자동화 서버의 구현 - 자동화 클라이언트의 구현 | |
3 |
11 |
ActiveX Programming | - ActiveX의 기초 - ActiveX 컨트롤의 기초 |
12 |
ActiveX Control 만들기 | - 원형 컨트롤 만들기 - ActiveX 컨트롤의 테스트 - 클라이언트 프로그램 제작 | |
13 |
ActiveX SubClassing | - 서브클래싱 - 트리 컨트롤 서브클래싱 - 마우스 드래그 앤 드롭과 관련 속성 및 이벤트 구현 | |
14 |
ATL COM 기초 | - 템플릿과 스마트 포인터 - Active Template Library | |
15 |
ATL 통합과 포함 | - ATL을 이용한 내부 COM 객체의 구현 - 포함 COM 객체의 구현 - 클라이언트 프로그램의 제작 | |
4 |
16 |
ATL 자동화 구현 | - 자동화 객체란 - 디스패치 인터페이스(Dispatch Interface) - 자동화 서버의 구현 |
17 |
복합 컨트롤과 DHTML 컨트롤 | - 복합컨트롤(Composite Control)의 구현 - DHTML Control Class - DHTML 컨트롤 구현 | |
18 |
OLE-DB | - OLE-DB의 기초 - OLE-DB의 개요 | |
19 |
OLE-DB 프로바이더와 컨슈머 | - OLE-DB Provider - OLE-DB Consummer | |
20 |
MFC기반의 OLE-DB | - OLE-DB를 이용한 MFC Programming |
Network Programming Master
주차 |
일 |
개 요 |
세부교육과정 |
1 |
01 |
Network Programming | - 네트워크 프로그래밍의 이해 - Socket의 이해 - File의 이해 |
02 |
Socket 과 Protocol | - Protocol의 정의 - Socket의 생성 - Protocol의 체계 | |
03 |
Address 와 Network Byte Ordering | - Internet Address 와 Port - Network Byte Ordering - 주소정보 할당하기 | |
04 |
Server/Client (TCP) | - TCP의 이해 - TCP Server / Client의 함수 호출관계 - Echo Server의 구현 | |
05 |
- Echo Client의 구현 - Boundary가 없는 TCP 기반의 데이터 전송 - TCP의 내부 구조 | ||
2 |
06 |
Server/Client (UDP) | - UDP의 이해 - UDP Server / Client의 구현 - 데이터의 경계가 존재하는 UDP Socket - UDP Socket의 성능의 향상 |
07 |
Connect / Close | - Socket의 연결 및 종료의 문제점 - 제대로 종료하기 | |
08 |
Domain Name System | - DNS(Domain Name System) - IP주소와 Domain 이름 사이의 변환 | |
09 |
Socket Option | - 소켓의 옵션 - SO_SNDBUF & SO_RCVBUF - SO_REUSEADDR - TCP_NODELAY | |
10 |
MultiCasting Server | - Process의 생성 및 Zombie Process - Signal Handling - 다중접속서버의 구현 - 입출력 루틴의 분할 | |
3 |
11 |
IPC | - 프로세스간의 통신(Inter-Process Communciation) - IPC를 이용한 응용 Application |
12 |
IO Multiplexing | - I/O 멀티플랙싱 기반의 서버 - select 함수의 사용 - 멀티플랙싱 서버의 구현 | |
13 |
Socket IO | - recv & send 입출력합수 - readv & writev 입출력함수 | |
14 |
Multicast & Broadcast | - 멀티캐스트(Multicast) - 브로드캐스트(Broadcast) | |
15 |
IO Stream의 분리 | - 스트림의 분리 - File Descripter의 복사와 스트림의 분리 | |
4 |
16 |
Multi Thread | - 프레세스(Process)와 스레드(Thread) - Thread의 생성 및 임계영역(문제점) - 동기화(Synchronization) - 뮤텍스(Mutex) 와 세마포어(Semaphore) |
17 |
Windows기반의 Thread | - 윈도우 기반의 Thread 생성 - Signaled & Non Signaled 오브젝트 - 멀티스레드 프로그그램의 문제점 | |
18 |
Thread의 동기화 | - 스레드 동기화 기법의 종류 - Mutex(Mutual Exclusion) & Semaphore - Event | |
19 |
비동기 입출력 모델 | - 비동기 Notification의 의미 - WSAEventSelect 모델 기반의 에코서버 구현 | |
20 |
Overlapped 입출력모델 | - Overlapped 입출력의 의미 및 기본단계 - Event커널 오브젝트 기반의 Overlapped I/O - Completion Routines 기반의 Overlapped I/O |