2024-1 AlKor, ALPS, MatKor 합동 세미나 알고리즘 초급반 커리큘럼
안녕하세요? 저는 고려대학교 컴퓨터학과 23학번에 재학 중인 ALPS 부회장 김승환입니다. 이번에 알고리즘 초급 반의 강사를 맡게 되어 이렇게 포스팅 올립니다. AlKor, ALPS, MatKor의 모든 동아리 부원분들은 수강하실 수 있으니 많은 관심 부탁드립니다!!!
2024-1 AlKor, ALPS, MatKor 알고리즘 초급 스터디
- 강사
이름 | 학과 | 학번 |
---|---|---|
김승환 | 컴퓨터학과 | 23학번 |
- 강의 시간: 매주 목요일 18:00~20:00
- 강의 장소: 매주 공지 (고려대학교 이공계캠퍼스 내에서 진행)
강의 개요
본 강의는 컴퓨터프로그래밍I 과목을 수강하며 좀더 심화된 내용의 프로그래밍을 공부하고 싶은 학생들에게 추천하는 강의입니다.
본 강의는 이산수학(COSE211), 자료구조(COSE213), 알고리즘(COSE214)의 내용과 관련된 문제 풀이를 포함합니다.
어떤 언어로 문제를 풀어도 상관 없습니다! 다만 강의에서는 C++와 Python을 위주로 강의를 진행할 예정입니다.
학습 목표
- 기초적인 자료구조, 알고리즘 이론을 이해하고 이를 프로그래밍에 적용할 수 있다.
- 이에 더해 수학, 알고리즘 지식을 이용해서 다양한 문제를 해결할 수 있다.
- 본인의 프로그램이 제약조건에서 작동할 수 있는지 파악하는 방법을 알 수 있다.
- 백준 골드 티어를 달성한다!
예정 커리큘럼
주차 | 강의 날짜 | 강의 내용 |
---|---|---|
01 | 2024/03/14 | OT, 문제 풀이와 시간 복잡도, 선형/비선형 자료구조와 STL (1) |
02 | 2024/03/21 | 선형/비선형 자료구조와 STL (2), 정렬, 이분탐색 |
03 | 2024/03/28 | 브루트포스 알고리즘, 백트래킹과 가지치기, 분할정복 |
04 | 2024/04/04 | 그래프와 트리, 그래프 탐색 (DFS, BFS) |
중간고사 휴강 1 | 2024/04/11 | 휴강 |
중간고사 휴강 2 | 2024/04/18 | 휴강 |
05 | 2024/04/25 | 그래프 응용 문제 풀이 |
06 | 2024/05/02 | 다이나믹 프로그래밍 |
07 | 2024/05/09 | 기초 정수론, 모듈로 연산, 빠른 팩토리얼 계산 |
08 | 2024/05/16 | 여러 가지 수열, 기초 조합론, 빠른 행렬 거듭제곱 |
축제 기간 휴강 | 2024/05/23 | 대동제로 인한 휴강 |
09 | 2024/05/30 | 종강 |
01주차: OT, 문제 풀이와 시간 복잡도, 선형/비선형 자료구조와 STL (1)
- 알고리즘이 무엇인지에 대해 알아보고, 우리가 알고리즘을 공부해야 하는 이유에 대해서 알아봅니다.
- 우리의 목표인 ICPC 등 PS 대회에 대해 소개합니다.
- 알고리즘의 성능 분석 방법인 시간 복잡도, 루프 불변식과 같은 알고리즘의 증명 방법에 대해 배웁니다.
- 선형/비선형 자료구조에 대해 배워보고 이를 쉽게 사용할 수 있는 STL에 대해 알아봅니다.
02주차: 선형/비선형 자료구조와 STL (2), 정렬, 이분탐색
- 더 다양한 자료구조에 대해 배워보고 이를 사용해 문제를 풀어봅니다.
- 무작위로 배치된 값들을 일정한 규칙에 따라 정렬하는 방법을 알아봅니다.
- 이렇게 정렬된 데이터에서 특정한 값을 빠르게 찾는 방법을 알아봅니다.
03주차: 브루트포스 알고리즘, 백트래킹과 가지치기, 분할정복
- 고려해야하는 것들이 적다면 모두 검토하는 것이 빠를 수 있습니다! 이 방법을 배워봅시다.
- 브루트포스 알고리즘을 좀 더 최적화 해봅시다!
- 절대 불가능한 경우는 탐색을 중지하거나 문제를 잘게 나누어 풀어봅시다.
04주차: 그래프와 트리, 그래프 탐색 (DFS, BFS)
- 자료구조의 일종인 그래프와 트리의 개념에 대해 배우고 이에 대한 성질을 배워봅시다.
- 이를 탐색하는 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS)에 대해 배워봅시다.
05주차: 그래프 응용 문제 풀이
- 그래프를 이용해서 풀 수 있는 다양한 응용 문제를 풀어 봅시다.
- 그래프로 집합의 포함 관계를 빠르게 나타낼 수 있다는 것을 아시나요? 유니온 파인드 알고리즘에 대해 배워봅시다!
06주차: 다이나믹 프로그래밍
- 다이나믹 프로그래밍의 개념을 배우고, 이를 적용할 수 있는 여러 쉬운 문제들을 살펴봅시다.
- Top-down, Bottom-up 접근 방식과 메모이제이션 기법에 대해 알아봅시다.
07주차: 기초 정수론, 모듈로 연산, 빠른 팩토리얼 계산
- 모듈로 연산, 모듈로 역원 등에 대한 수학적 개념을 학습힙니다.
- 이 수학적 개념과 다이나믹 프로그래밍을 이용해 다양한 수학 문제를 풀어봅시다!
08주차: 여러가지 수열, 심화 정수론, 빠른 행렬 거듭제곱
- 더 어려운 수학에 대해 공부하고, 앞서 살펴본 알고리즘 기법을 이용해 어려운 수학 문제를 풀어봅시다!
09주차: 종강
- 지금까지 학습한 내용을 복습합니다.