프로그래밍언어 강의소개
2014-1 프로그래밍언어
2014. 3. 1.
교수 김 영 탁
영남대학교 공과대학 정보통신공학과
(Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr)
프로그래밍언어 강의 개요
목적
z C 프로그래밍언어를 기반으로 한 공학문제의 해결 방법 습득, C++ 프로그래밍언어의 기본 지식 습득 및 객체 지향형 프로그래 밍,소프트웨어 시스템 설계 및 구현 지식 습득
z 관련 C/C++ 프로그래밍 실습 z C/C++ 기반 설계 프로젝트 수행
z 선수과목: 정보통신공학 개론, 컴퓨터 프로그래밍 (C, Java)
교재 및 참고문헌[1] Walter Savitch, Absolute C++, 5th Ed, Pearson, 2013.
[2] 천인국, 쉽게 풀어 쓴 C언어 Express, 개정판, 생능출판사, 2012.
Advanced Networking Tech. Lab.
Yeungnam University (YU-ANTL) Programming language
Prof. Young-Tak Kim
인류의 문명 진화
인류는 새로운 도구를 효율적으로 현명하게 사용함으로 써 문명을 진화시켰음z increased
productivities
with new tools of new materials, powered machines: from stone, stick, bronze, iron, telephone and computers z increased
collaborations
among multiple personsz increased
performance
in value creation z increasedenergy efficiencies
z 컴퓨터와 프로그래밍을 통하여 이러한 기능을 강화시킴
프로그래밍언어 과목을 통하여 무엇을 배우나?
“엔지니어”로 생각하고 설계하는 방법을 배운다.
z Technician (기능공) vs. Engineer
z Simple passive & repeated implementation vs.
creative design (창의적 설계) and fast prototyping (신속한
알고리즘의 기초에 대하여 배우며, 설계된 알고리즘에 따 라 프로그램을 설계/구현하는 기법을 배운다. C/C++ 프로그래밍 기법을 배운다.
프로그래밍의 즐거움을 느낄 것이다!Advanced Networking Tech. Lab.
Yeungnam University (YU-ANTL) Programming language
Prof. Young-Tak Kim
소프트웨어 시스템 설계 및 구현 단계
Source codes .c, .cc
Object codes .o
Program Execution output Compile
Link Executable codes
.exe Load
Execute
Correct Output ?
Mission Completed !!
Edit program source code Analysis of the requirement
Evaluate Feasibility
Algorithmdesign Data structure design Software system design
Subsystem design Block design Module design Class / Function design
설계(Design) 구현(Implementation)
Problem Specifications (Requirements,
Objectives)
Syntax Error
Logical Error
알고리즘
Algorithm is a list of instructions
z when executed,
transform information from input to output
z The instructions are afinite set of steps
that can be executed, in a
definite deterministic order
z When these steps are actually executed,the execution must
terminate
after a finite time. Pseudo code
z Simplified list of instructions to show the overall process of algorithm
z not following the details of programming language z the skeleton of the algorithm should be shown
Advanced Networking Tech. Lab.
Yeungnam University (YU-ANTL) Programming language
Prof. Young-Tak Kim
자료구조 (Data Structure)
모든 소프트웨어 개발에서는 효율적인 알고리즘과 이 알고리 즘에 적합한 자료구조를 사용하여야 우수한 성능을 발휘할 수 있음
알고리즘의 예z sorting (정렬): selection sorting, quick sorting
z search (탐색): depth-first search, breadth-first search z shortest path, minimum spanning tree
자료구조의 예z 단순 배열 (simple array) z 구조체 (structure)
z 구조체 배열 (array of structure)
z 자기참조 구조체 (self-referential structure) z Linked List, Binary Tree
z Heap, priority queue z Map, Skip list
효과적인 프로그램 개발 방법 (1)
프로그램 설계 (알고리즘 및 자료구조 설계)에 더 많은 시 간을 투자할 것z 주어진 문제를 해결하기 위한 효율적인 알고리즘을 먼저 구성 할 것
z 구성된 알고리즘에 적합한 자료구조를 선택할 것
z 예) 100,000개의 학생 데이터로 부터 0.01초의 데이터 처리 시간 내에 특정 조건을 만족하는 학생을 탐색 (search)하여야 하는 경우 , 어떤 자료구조를 사용하며, 어떤 방식으로 탐색할 것인가 ?
array vs. linked list vs. binary tree
linear search vs. binary search
Advanced Networking Tech. Lab.
Yeungnam University (YU-ANTL) Programming language
Prof. Young-Tak Kim
효과적인 프로그램 개발 방법 (2)
프로그램 오류 수정을 위한 debugging 방법을 먼저 숙 달 할 것z 프로그램 소스코드 상에 존재하는 문법적 에러 및 논리적인 에러 를 빨리 찾아내는 방법을 먼저 숙달
z Visual studio의 debugging 기능을 먼저 확인하고, 숙달할 것
break point 기능
trace 기능
각 단계에서의 local variable 값 확인
강의주제 (1)
Part 1) 알고리즘과 프로그래밍 소개 - 컴퓨터, 프로그래밍과 소프트웨어
- 순서도 (flow chart)와 의사코드 (pseudo code) - 알고리즘
- 자료구조
Part 2) Structured Programming - 조건문: if, if-else, switch
- 입출력, printf, scanf
- 반복문: for, while, do-while - 함수 (function)
- 재귀 (recursion)
- 배열 (array), 탐색 (searching)과 정렬(sorting) - 파일 및 파일 입출력
- 구조체 (structure)
- 동적 메모리 할당 (dynamic memory allocation) - 포인터 (pointers)
Advanced Networking Tech. Lab.
Yeungnam University (YU-ANTL) Programming language
Prof. Young-Tak Kim
강의주제 (2)
Part 3) 객체 지향형 ( object programming) 프로그래
- 객체 지향형 프로그래밍 소개밍 개요
- 클래스 (class)와 객체 (object)
- 캡슐화 (encapsulation), 추상화 (abstraction), 정보 은닉 (information hiding)
- 소프트웨어 재사용 (software reuse)과 상속 (inheritance) - Operator overloading
수업 진행 및 평가 (1)
강의 및 실습z 주당 2 시간 강의 z 주당 2 시간 실습
z 주강 2 시간 보충 설명 시간
시험z 학기당 실기 시험 4회
시험 1: 3월 29일 (토요일)
시험 2 (중간고사) : 4월 23일 (수요일)
시험 3: 5월 24일 (토요일)
시험 4 (기말고사) : 6월 18일 (수요일)
z 각 실기시험에 구두 시험 (oral test) 포함
과제물 (homework)
z 각 장 (chapter) 별로 homework 부과
z 과제물 보고서는 각 장 별로 분리하여 제출
z 과제물 제출 기한: 과제물 공지 후 1주일 이내 (수업시간에 제출) z 과제물 제출 기한 초과시 1주일 단위로 20%씩 점수 감점
Advanced Networking Tech. Lab.
Yeungnam University (YU-ANTL) Programming language
Prof. Young-Tak Kim
수업 진행 및 평가 (2)
설계 프로젝트 (Design Project)z 공학교육인증 프로그램 (ABEEK)의 요구사항에 따른 4 주 분량의 설계 프로젝트 수행
z 설계 문서 작성
z 설계 및 구현, 성능 분석 z 발표
z 최종 보고서
성적 평가z 총 1000점 만점
z 시험 4회 x 100 점 = 400점 z 실습 200점
z 설계프로젝트 200점 z 출석 및 퀴즈 100점 z 과제물 100점
수업 진행 및 평가 (3)
조교 (Teaching Assistant: TA)
z 황현동: 박사과정 (차세대 네트워킹 연구실, IT관 304호실) z 전화 : (053) 810-3940
z E-mail: mch2d@ynu.ac.kr
강의지원시스템
z 강의자료 및 보충 설명자료 z 실습자료
Advanced Networking Tech. Lab.
Yeungnam University (YU-ANTL) Programming language
Prof. Young-Tak Kim
이 과목에서 배울 12 가지 중점 주제 (1)
<Part 1: C>
1) 2차원 배열을 사용한 5×5 행렬 계산 : 행렬 덧셈, 뺄셈, 곱셈, 행렬식, 역행렬
2) 100,000개 요소에 대한 선택정렬, quick sorting, 정렬 시간이 비교 3) 구조체 (structure)
4) 구조체 배열에 대한 정렬: Selection sorting of array of structure, Quick sorting of array of structure
5) 포인터 (pointer)
6) 2차원 배열의 동적 생성, 7 × 7 행렬 계산
7) 자기참조 구조체 (self-referential structure)기반의 연결 리스트 (linked list)
8) 이진 트리 (binary tree)
이 과목에서 배울 12 가지 중점 주제 (2)
<Part 2: C++>
9) 클래스(class)와 객체 (object): 클래스 선언 및 구현 (private data member, member function), encapsulation, abstraction,
information hiding
10) operator overloading: +, -, *, /, ==, !=, ++, --, ! (determinant of matrix), ~ (inverse of matrix)
11) 클래스 상속 (inheritance of classes)
12) 가상함수 (virtual function)와 polymorphism (同質異形)