auejin / se271_2017

Object-Oriented Programming (se271, 2017)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

객체지향 프로그래밍, Object-Oriented Programming (se271, 2017)

강의 개요

객체지향 프로그래밍은 객체지향 프로그래밍의 개념의 학습과 이러한 개념을 학습하고, 이것을 여러 가지 문제에 적용하여 실제 구현해보는 것을 목표로 한다. 객체지향 프로그래밍은 현재 대다수의 프로그래밍 언어에 채택되고 있는 개념(패러다임)으로, 거의 대부분의 중/대규모 이상의 프로젝트에 적용된다. 이번 강좌에서는 객체지향을 지원하는 여러 프로그래밍 언어(C++, C#, Java, python, ruby 등의 OOP 언어1) 중 C++ 중심으로 진행한다.

수업은 크게 아래와 같이 3개 부분으로 진행된다.

  1. C/C++ 소개 및 문법
  2. 객체지향의 여러 개념(abstraction, encapsulation, polymorphism, inheritance) 및 C++에서의 구현 방법
  3. 객체지향 프로그래밍에서 자주 사용되는 디자인 패턴(design pattern)에 대한 소개

[1]: List of object-oriented programming languages

강의 대상

C 혹은 C++ 언어로 프로그래밍한 경험이 있는 것이 도움이 되나, Java, python 등 다른 언어로 프로그래밍 경험이 있으면 처음 3-4주 간은 C/C++ 문법에 대한 리뷰를 진행하므로 수강이 가능하다. 단 기본적인 자료구조(array, list 등), 조건문/반복문(for, while), 함수에 대한 이해와 어떠한 언어로든 이러한 프로그래밍 요소를 사용한 구현 경험이 있어야 한다.

수업 방법

수업은 이론 3시간으로 진행되는데, 일부 시간에는 노트북/태블릿 기반으로 일부 실습에 관한 내용을 설명할 수 있다. 일부 실습을 수업 시간에 진행해도 수강하는 학생들은 이론시간에 배우는 C++ 언어의 문법, 객체지향의 개념을 구현하는 방법 등을 과제 혹은 별도의 연습을 하면서 숙지할 필요가 있다. 수업 시간에 일부 코딩을 보여주는 내용이 포함될 수 있다.

개인과제는 학기 중 총 3-4회와 팀 프로젝트로 중규모 프로젝트가 제출될 예정이다.

프로젝트

프로젝트는 10월 초에서 중순부터 시작해서, 기말 고사 1-2주 전에 제출하도록 할 예정이다. 프로젝트 주제, 팀, 팀 구성방법 등은 수강하는 학생들의 희망사항을 참고하여, 확정할 예정이다.

현재 계획으로는, 프로젝트는 2-3명의 팀 기반으로 진행하고, 몇 가지 주제 (학생 제안도 좋음) 중에서 선택할 수 있도록 할 예정이다.

사용도구

  • 개발환경/컴파일러: 이 수업에서는 표준적인 C++(C++ 11 or C++ 14)를 사용할 것이기 때문에, 표준을 지원하는 아래 도구들 중 어떤 것이라도 사용하면 된다
  • 온라인 코드실행 및 과제 제출
    • elice: 코스 과제 제출을 위한 도구로, 웹에서 프로그램을 입력하여 컴파일/실행이 가능하고, 자동채점 기능 제공
  • Version control system: 여러 명이 협업할 경우 혹은 혼자 프로젝트를 진행할 경우에도 사용하면 매우 편리함

준비물 및 기타

  • 개인노트북 (과제/프로젝트 등에 필요) 혹은 태블릿 (노트북 권장)
  • 수업시간에 노트북 혹은 태블릿을 가져오면, 노트북에 깔린 개발환경 혹은 웹으로 elice에 접속하여 코드를 테스트해 볼 수 있다

강의 시간, 교수, 조교

  • 교수: 조민규 (mingyu.cho@dgist)
  • 조교
    • Jae-Yong Park (darbyyyy@@dgist)
    • Omar Ramirez Sanchez (sanchez@dgist)
  • 강의실: E7 242
  • 강의시간: 월10:30-12:00, 수9:00-10:30
  • Office Hour
담당 Office Hour 장소
조민규 화 13:30-14:30 E7 L13
박재용 수 15:30-16:30 TBD
Omar Ramirez Sanchez 월 13:00-14:00 TBD

참고

  • Please check the availability of TAs before visiting during office hours.
  • If you cannot make any of office hours, send email to arrange a meeting with TAs/faculty.

교재

  • 권장 (아래 중 하나)

  • Reference

    • The C++ Programming Language, 4th ed.
  • Design patterns (will be covered briefly at the end of class)

    • Design patterns
    • Head first design patterns

평가 방법

평가 비중 (subject to change)

항목 비중
중간고사 30%
기말고사 30%
과제 20%
프로젝트 20%
출석 pow(2, max(n - 3, 0))

학점 기준 (subject to change)

학점 총점 기준
A >= 85
B >= 70
C >= 50
D < 50
F 출석률, 점수 등 고려

주차별 계획

주차 강의계획
1주차 C/C++ 문법: 컴파일 하는 방법, 변수, 루프, 함수
2주차 C/C++ 문법: 포인터, 배열, 함수포인터, struct
3주차 C/C++ 문법: 입출력, 메모리 할당
4주차 C/C++ 문법: 클래스, 클래스 할당 (new/delete)
5주차 연산자 오버로딩
6주차 C++ 표준라이브러리(standard library), 문자열, 스트림
7주차 알고리즘, 이터레이터(iterator), 함수오브젝트
8주차 중간고사
9주차 보강 (to be announced)
10주차 상속, 다형성
11주차 가상함수, 객체지향 설계
12주차 다중 상속, run-time type identification
13주차 디자인 패턴
14주차 디자인 패턴 (con’t)
15주차 리뷰
16주차 기말고사
  • 강의 진행에 따라, 일정은 일부 조정될 수 있음

참고자료

*책 제목 뒤에 표시는 한국어 번역본이 있다는 뜻

  • Stroustrup: A Tour of C++: Bjarne Stroustrup이 쓴 책으로, 역시 숙력된 프로그래머가 C++의 주요 기능들을 (상대적으로) 빠르게 볼 때 적합한 책

Miscellaneous

About

Object-Oriented Programming (se271, 2017)


Languages

Language:MATLAB 100.0%