2023 fall

문제 해결 프로그래밍 / Problem Solving and Programming (3분반)

This course aims to cultivate practical skills to solve programming challenges based on what students learned from the data structure and additional techniques, including string manipulation, sorting, backtracking, graph traversal, and dynamic programming.


Instruction

Course Staff
Time & Location
  • (실습): 수요일 12:00 - 13:50, 공학 6호관 517호
  • (이론): 금요일 10:00 - 11:45, 공학 6호관 610호
Office Hours
  • 화요일 14:00 - 15:00
  • 주의 사항
    • 수업 및 과제 관련 내용은 면담 대신 e루리 질의 응답 게시판에 올려서 모든 학생이 공유할 수 있도록 할 것
    • 수업 및 과제 관련 내용을 제외한 면담이 필요시 미리 이메일로 연락하여 일정을 잡을 것
Textbook
  • Steven S. Skiena , Miguel A. Revilla 저, 서환수 역, 알고리즘 트레이닝 북 (Programming Challenges), 12쇄, 한빛미디어
Prerequisite
  • (필수) C/C++, Java, Python 프로그래밍 중 1
    • 교재는 C 위주이나, 강의 내용은 Python 위주로 진행
  • (선택) 자료 구조
Grading Policy
  • 과제: 50%
    • 매 주 실습 시간(수요일 12시)부터 2-3문제의 과제가 주어지며, 총 10개의 과제 예정
    • 매 주의 과제마다 100점 부여
    • 구름 EDU에 개설된 코딩 테스트 과제를 구름 EDU를 통해 제출
    • 과제 부여 후 3일 이후에 제출 시 24시간 마다 10%씩 감점.
      • 예. 토요일 12시 전 제출: 100%; 토요일 12시 - 일요일 12시 제출: 90% 등.
      • 다음 주 실습 시간 전에 제출하지 않을 시 0점.
    • 과제 부여 후 3일 이후에 e루리 공지사항으로 테스트 케이스 공개
    • 특정 테스트케이스 입력에 대해 특정 출력을 내도록 하면 무조건 F
    • 표절 적발 시 해당 과제는 표절한 사람, 표절당한 사람 모두 0점 처리, 2회 이상 적발 시 무조건 F
      • FAQ: 친구들끼리 논의해서 코드를 만들었기 때문에 같을 수 있지 않나요?
        • 코드를 m x n 행렬로 된 문자열이라고 본다면, (m x n)!의 작성법이 존재함.이렇게 수많은 작성법들이 존재함에도 코드가 일치한다는 건 상식적으로 말이 되지 않음
        • 프로그래밍 코드는 문제를 해결하는 방법을 기술하는 방법 중 하나이지, 절대적인 진리가 아님. 프로그래밍 코드 대신 자연어로 문제 해결 방법을 기술한다면 사람마다 다 다른 용어와 순서, 방법으로 기술할 것임. 코드도 이와 마찬가지.
      • FAQ: 왜 표절당한 사람도 0점 처리하나요?
        • 위에서 말했듯이, 수많은 코드 작성법 중이 일치하는 경우는 거의 없음.
        • 만약, 두 코드가 일치했다면 정황상 (억울할 수도 있지만) 표절당한 사람은 표절한 사람에게 코드를 의도적으로 공유했다고 밖에 볼 수가 없음.
      • 과제에 대해 논의하는 것은 좋으나, 해답 코드 자체를 공유하지는 말 것
      • 해답 코드를 그대로 베끼는 것은 CS/CE를 공부하는 사람으로서 부끄러운 일임
  • 중간시험: 20%
    • 과제와 동일한 방식으로 하되, 시험 시간 내에 제출
  • 기말시험: 20%
    • 과제와 동일한 방식으로 하되, 시험 시간 내에 제출
  • 출석: 10%
    • 지각 3회 = 결석 1회
    • 결석 1회에 출석 점수 1% 차감
    • 총 수업 일의 1/3 (10회) 초과 결석 시 F
      • 즉, 11회 이상 결석 시 F
    • 별도의 사유(예. 예비군 훈련 등)가 있을 시 수업 시간 전에 교수 및 조교에게 이메일 송부
      • 단, 급하게 벌어진 사유(예. 급병, 친족상 등)는 소명 자료를 제출

Schedule

W01: 과목 개요 및 기초 실습
  • 1 Sep: 과목 개요
  • 6 Sep: 실습 및 과제 1
    • 제출 기한: 12:00, 9 Sep
W02: 자료 구조 1
  • 8 Sep: 자료 구조 1
  • 13 Sep: 실습 및 과제 2
  • 제출 기한: 12:00, 16 Sep
W03: 자료 구조 2
  • 15 Sep: 자료 구조 2
  • 20 Sep: 실습 및 과제 #3
    • 제출 기한: 12:00, 23 Sep
W04: 문자열
  • 22 Sep: 문자열
  • 27 Sep: 실습 및 과제 #4
    • 제출 기한: 12:00, 7 Oct
    • 해당 과제는 3일 내 제출 대상이 아님
W05: 추석 연휴
  • 29 Sep: 추석 연휴
  • 4 Oct: 실습 및 과제 #4 (연계)
W06: 정렬
  • 6 Oct: 정렬
    • 해당 일자는 출장으로 인해 e루리 동영상 강의로 진행
  • 11 Oct: 실습 및 과제 #5
    • 제출 기한: 12:00, 14 Oct
W07: 재귀 관계
  • 13 Oct: 재귀 관계
  • 18 Oct: 실습 및 과제 #6
    • 제출 기한: 12:00, 21 Nov
W08: 중간고사
  • 시험일시/시간: 2023년 10월 25일(수) 12:10 - 13:50
  • 시험장소: 공학 6호관 608호
  • 시험방법: 구름 EDU에서 "중간고사" 선택하여 풀이
  • 시험문항: 4문항
  • 주의사항:
    • 실습실에 구비된 컴퓨터로만 시험 응시 가능(노트북, 태블릿 등의 개인 전자 기기로 응시 불가)
    • 시험 시간에는 오직 구름 EDU만 실행해야 함. 이 외의 프로그램(예. 이클립스, VS CODE 등의 IDE, 메모장, 계산기 등) 또는 구름 EDU를 제외한 웹 페이지 실행 시 0점 처리.
    • 시험 시작 시간인 12시 10분 내에 시험 장소에 입장하지 않을 시 0점 처리
    • 시험 시간 내에는 화장실 사용 불가.
    • 개인 전자 기기가 벨소리, 진동 등으로 울릴 시 0점 처리. 전원을 끌 것.
    • 대리 시험, 컨닝 등 부정 행위 발견 시 0점 처리.
    • 시험 종료 시간 전에 꼭 제출 버튼을 눌러 제출할 것. 제출 버튼을 누르지 않으면 시험 응시 내용이 기록되지 않음.
    • 시험 문제 내용에 대한 질문은 허용되지 않으며, 문제 이 외의 사항(예. 구름 EDU 시스템 오류 등)에 대해서만 질문 허용.
  • 팁:
    • 첫 번째 문제가 가장 쉬우며, 나머지 세 문제는 비슷한 난이도임.
    • 테스트케이스별로 부분 배점이 있으니, 한 문제에서 적당한 부분 점수를 얻었으면 다른 문제로 넘어가는 것도 전략.
W09: 되추적
  • 27 Oct: 되추적
  • 1 Nov: 실습 및 과제 #7
    • 제출 기한: 12:00, 4 Nov
W10: 그래프 순회
  • 3 Nov: 그래프 순회
  • 8 Nov: 실습 및 과제 #8
    • 제출 기한: 12:00, 11 Nov
W11: 최소 비용 신장 트리
  • 10 Nov: 최소 비용 신장 트리
  • 15 Nov: 실습 및 과제 #9
    • 제출 기한: 12:00, 18 Nov
W12: 최단 경로 문제
  • 17 Nov: 최단 경로 문제
  • 22 Nov: 실습 및 과제 #10
    • 제출 기한: 12:00, 25 Nov
W13: 동적 계획법
  • 24 Nov: 동적 계획법
  • 29 Nov: 실습 및 과제 #11
  • 제출 기한: 12:00, 9 Dec
  • 해당 과제는 3일 내 제출 대상이 아님
W14: 탐욕적 방법과 분기한정법
  • 1 Dec: 탐욕적 방법
  • 6 Dec: 실습 및 과제 #11 (연계)
W15: 기말고사
  • 시험일시/시간: 2023년 12월 13일(수) 12:10 - 13:50
  • 시험장소: 공학 6호관 517호
  • 시험방법: 구름 EDU에서 "중간고사" 선택하여 풀이
  • 시험문항: 3문항
  • 주의사항:
    • 실습실에 구비된 컴퓨터로만 시험 응시 가능(노트북, 태블릿 등의 개인 전자 기기로 응시 불가)
    • 시험 시간에는 오직 구름 EDU만 실행해야 함. 이 외의 프로그램(예. 이클립스, VS CODE 등의 IDE, 메모장, 계산기 등) 또는 구름 EDU를 제외한 웹 페이지 실행 시 0점 처리.
    • 시험 시작 시간인 12시 10분 내에 시험 장소에 입장하지 않을 시 0점 처리
    • 시험 시간 내에는 화장실 사용 불가.
    • 개인 전자 기기가 벨소리, 진동 등으로 울릴 시 0점 처리. 전원을 끌 것.
    • 대리 시험, 컨닝 등 부정 행위 발견 시 0점 처리.
    • 시험 종료 시간 전에 꼭 제출 버튼을 눌러 제출할 것. 제출 버튼을 누르지 않으면 시험 응시 내용이 기록되지 않음.
    • 시험 문제 내용에 대한 질문은 허용되지 않으며, 문제 이 외의 사항(예. 구름 EDU 시스템 오류 등)에 대해서만 질문 허용.
  • 팁:
    • 첫 번째 문제가 가장 쉬우며, 나머지 두 문제는 비슷한 난이도임.
    • 테스트케이스별로 부분 배점이 있으니, 한 문제에서 적당한 부분 점수를 얻었으면 다른 문제로 넘어가는 것도 전략.
W16: (보강) 특강
  • 15 Dec: 특강