Server Programming (Fall, 2024)

Course Description
This course aims to provide students with a comprehensive understanding of server programming, from basic concepts to practical skills applicable in real-world scenarios. This course covers various topics related to the design and implementation of server programs based on Linux systems and the C programming language, and includes hands-on practice through actual projects.

Course Texts
Class materials
Linux System Programming, Robert Love, O'Reilly.
유닉스 시스템 프로그래밍, 이종원, 한빛미디어.
Optional:
리눅스 프로그래밍 기초, 최태영 외, 한빛미디어.

Course Grading
Exams: 60%
Project: 30%
Etc: 10%
* Subject to change
* Person who is absent more than 3 times will get D.

Instructor
Prof. Jo, Heeseung (For more details... refer here)

Notice
조교 오픈채팅방 여기
강의실 여건으로 다수의 학생들은 본인의 노트북을 지참하여야 합니다.


Hall of Fame
Date People
2024.09.19 김기백 황재찬 손의현
2024.09.25 황재찬 김윤태 박준유
2024.09.26 김기백 조준화 황재찬
2024.10.02 No one !
2024.10.10 김채영 황재찬 조준화
2024.10.16 황재찬 손의현 김창현 김진혁
2024.10.18 손정제 김기백 김진혁
2024.10.30 김윤태 황재찬 손의현
2024.10.31 황재찬 조준화 김기백

Schedule
Topics Materials / Homework
Course overview (Syllabus) Putty WinSCP
Operating system review
Basic commands hw linux install (Due date: 9/18 23:00)
Development environment 1
TA 1
Development environment 2
File I/O
File system Filname: studentid.name.zip (ex. 2024123456.honggildong.zip)
Process 1
Process 2
TA 2 제출: /submit 폴더로 zip 파일을 복사할 것
파일명: sp.ta2.202412345.honggildong.zip
확인: /submit2 폴더를 ls 해보면 확인 가능
Exam.1, 10/24 목, 18시, S4-1 204호
Closed book, Programming
시험시 유의사항
- xshell, putty, command 창 만 사용 가능 (VS Code 등의 IDE 사용 금지)
- 위 이외의 프로그램 사용시 즉시 퇴장
- 인터넷, AI, Copilot 등 사용 금지
- 도움을 받는 행위 금지
- 제출시 zip 파일을 /submit 폴더로 복사
- zip 파일 이름: sp.ex1.202412345.honggildong.zip
- swist1 서버만 사용, 서버에서 외부로 접속 차단
Thread
Socket programming 1
Socket programming 2
TA 3
Exam.2, 11/21 목, 16시, S4-1 205호
Closed book, Programming
시험시 유의사항 - 1차 시험과 동일
Term project
Proposal presentation : 11/13 수업시간 (팀당 5-10분)
Proposal ppt guide

Final presentation : 12/4 수업시간 (팀당 5-10분)
Final ppt guide

Evaluation
• 제안된 방안대로 정상적으로 동작하는지 확인
	- Proposal에 잘 제시하기 바람
• 성능 개선 또는 기능 개선을 위하여 얼마나 노력하였는지를 평가 예정
	- Proposal과 최종 report에 잘 제시하기 바람
• 각 팀별로 git을 이용하여 프로젝트 진행
	- git에 commit된 진척도와 팀원이 골고루 commit하였는지 체크 예정

Teams
1 황재찬 고영찬 박준유 				웹 퀴즈 서버
https://github.com/AtoZgagWebserver
2 박찬혁 정선미 최원식 김예준 			Web Hard disk
https://github.com/2024-ServerProgramming/MultiThreading_WebHardServer
3 허제완 이은채 조은지 				Async Web
https://github.com/24-2-SP/webs
4 윤시훈 노혜성 강은혜 김채영 			FAINTER
https://github.com/server-fainter
5 김예진 안치현 이정현 				웹서버
https://github.com/cbnuteam5
6 김창현 김윤태 김은시				탑다운 슈팅 게임서버
https://github.com/server-programming/brawlstars
7 김진혁 손정제 송호진 주예훈 			bittorrent
https://github.com/Jeong-Je/torrent-clone
8 손의현 박수현 전종영 				gdb online
https://github.com/orgs/GDB-Online-Clone/repositories
9 정한울 조준화 김지유 				nginxX 
https://github.com/NginxXServer
10 배수환 김기백 성동현				테트리스 게임서버
https://github.com/ManaP0tion/Tetris_Multi
11 민경원 김동우				다인 협동 방탈출
https://github.com/MinKW1/Server_Programming_24_2

			
* Credit: Most of slides for this lecture are based on materials provided by the textbook publisher.