프로그래밍 입문 (C#)
이 강좌는 사용의 편의성 및 직관성, 그리고 성능이라는 세마리 토끼를 다 잡은 매우 훌륭한 매니지드(managed) 언어인 C#을 사용하여 모든 프로그래밍 언어에 공통되는 프로그래밍 기초지식에 대해 배워봅니다.
배울 내용
- 프로그래밍 기초
- 올바른 프로그래밍 습관
- C# 사용법
요구 사항
- "헬로코딩: 프로그래밍(한빛미디어)" 도서 완독
- 고등학교 수준 수학
설명
본 비디오 강좌는 포큐아카데미에서 진행하는 COMP1500 수업의 비디오 강좌입니다.
C#은 사용의 편의성 및 직관성, 그리고 성능이라는 세마리 토끼를 다 잡은 매우 훌륭한 매니지드(managed) 언어로, 현존하는 최고의 프로그래밍 언어 설계자이자 타입스크립트(TypeScript)의 핵심개발자인 Anders Hejls의 주도 하에 지속적으로 발전하면서 미래의 프로그래밍 언어가 나아가야 할 방향을 제시하고 있습니다. 그렇기에 C#은 데스크탑 애플리케이션, 웹 프로그래밍, 그리고 게임개발(예: 유니티 엔진 기반 게임)에 이르기까지 다양한 분야에서 널리 쓰이는 언어입니다.
이처럼 사용이 편하고 직관적인 언어는 프로그래밍을 처음 배울 때 매우 중요합니다. 아직 개념조차 제대로 잡히지 않았는데 사용하는 도구(즉, 프로그래밍 언어)가 모호하고 복잡하다면 실수만 거듭하다 흥미를 잃을 가능성이 높죠. 또한 C#은 프로그래머의 실수를 빨리 잡아주는 비주얼 스튜디오(Visual Studio)라는 매우 훌륭한 개발 도구와 꼼꼼한 참고문서를 제공하기로 유명합니다. 이 모든 것들은 소프트웨어 개발이 DNA에 묻어있는 마이크로소프트라는 회사가 배후에 있었기에 가능한 일이며, 따라서 프로그래밍을 처음 배우는 분들에게 C#은 최적의 언어라 말할 수 있겠습니다.
하지만 이 과목의 제목은 ‘프로그래밍 입문’이지 ‘C# 프로그래밍’이 아닙니다. 이것이 의미하는 바는 이 과목에서 배우는 내용은 어느 프로그래밍 언어에도 적용되는 기반 지식입니다. 프로그램을 작동하게 만들려면 필요한 입출력, 반복문, 조건문 등이 여기에 포함되겠죠. 하지만 기본기를 완벽히 소화한 학생들은 C# 고유의 기능들을 배울 기회도 있을 것입니다.
따라서 본 강좌는 다음과 같이 크게 두 부분으로 나뉩니다.
- 프로그래밍 입문: 대부분의 프로그래밍 언어에서 공통되는 기초 프로그래밍에 대해 배웁니다 ( ~ 8주 차)
- 기초 C# 프로그래밍: C# 프로그래밍 언어에서 지원하는 기초적인 기능들을 익혀봅니다. (9주 차 ~ 15주 차)
위와 같이 강의를 두 부분으로 나눈 이유는 C#이라는 특정 언어에 상관없이 모든 언어에 공통된 기초 지식들을 우선적으로 제대로 습득하여 다른 언어를 배울 때 혼동이 생기지 않게 하는 반면, C#에서 제공하는 타 언어보다 뛰어난 기능들까지 살펴 보아 앞으로 프로그래밍 언어가 나아갈 방향을 느낄 수 있게 하기 위해서입니다.
이 강좌의 대상
- 컴퓨터 공학의 기본기를 배우고 싶은 분들
- 프로그래머로서 평생 커리어를 꿈꾸는 입문자들
강좌 콘텐츠
- 논리 연산자 1 (6:10)
- 영상 퀴즈
- 논리 연산자 2 (4:49)
- 영상 퀴즈
- 논리 연산자 3 (11:08)
- 복습 퀴즈
- 코드보기: 논리 표현식 (3:46)
- 논리 연산자 4: if/else if/else 문과 논리 (11:39)
- 조건 연산자 (6:16)
- 연산자 우선순위 1 (10:14)
- 영상 퀴즈 1
- 영상 퀴즈 2
- 영상 퀴즈 3
- 영상 퀴즈 4
- 영상 퀴즈 5
- 영상 퀴즈 6
- 영상 퀴즈 7
- 영상 퀴즈 8
- 연산자 우선순위 2 (3:16)
- 연산자 우선순위와 평가 순서는 다르다 (6:50)
- 코드보기: 연산자 우선순위 (6:40)
- 정리 (2:33)
- 재귀 함수(Recursive Function)란? (6:05)
- 재귀 함수의 구성요소 (5:47)
- 반복문과의 비교 (3:24)
- 피보나치 수열로 이해하는 재귀 함수 (21:51)
- 수학적 귀납법으로 이해하는 재귀 함수 (9:48)
- 하노이의 탑으로 이해하는 재귀 함수 (10:21)
- 재귀 함수의 장단점과 베스트 프랙티스 (6:44)
- 코드보기: 재귀 팩토리얼 (3:58)
- 복습 퀴즈
- 주사위 굴리기 (4:06)
- 랜덤 수 생성(random number generation) 1 (8:22)
- 랜덤 수 생성 2 (7:29)
- 랜덤 수 생성 3 (9:48)
- 코드보기: 숫자 섞기 (3:55)
- 복습 퀴즈
- 정리 (3:12)
- 문자열 빌더(String Builder) 1 (14:25)
- 문자열 빌더 2 (9:59)
- 문자열 빌더의 기타 함수 (6:41)
- 코드보기: StringBuilder (2:13)
- 코드보기: StringConcat vs StringBuilder (3:13)
- decimal형 1 (19:06)
- decimal형 2 (6:00)
- 코드보기: Float vs Double vs Decimal (2:40)
- 복습 퀴즈
- 컬렉션: 컬렉션(Collection)이란? (9:17)
- 컬렉션: 리스트(List) 1 (8:08)
- 컬렉션: 리스트 2 (18:31)
- 코드보기: List (4:46)
- 복습 퀴즈
- 컬렉션: 딕셔너리(Dictionary) 1 (11:13)
- 컬렉션: 딕셔너리 2 (18:48)
- 코드보기: Dictionary (4:43)
- 복습 퀴즈
- 컬렉션: 해시셋(hashset) (7:18)
- 복습 퀴즈
- 컬렉션과 같이 쓰면 유용한 것들: foreach (8:53)
- 코드보기: foreach 반복문 (2:17)
- 복습 퀴즈
- 컬렉션과 같이 쓰면 유용한 것들: var (5:38)
- 복습 퀴즈
- 정리 (4:50)
- 클래스(Class): 클래스는 왜 필요한가? 1 (8:52)
- 클래스: 클래스는 왜 필요한가? 2 (8:51)
- 클래스 (20:57)
- 복습 퀴즈
- 생성자(Constructor) 1 (10:04)
- 생성자 2 (11:45)
- 복습 퀴즈
- 접근 제어자(Access Modifier) 1 (3:42)
- 접근 제어자 2 (7:27)
- 복습 퀴즈
- 프로퍼티(Property) 1 (9:51)
- 프로퍼티 2 (18:31)
- 영상 퀴즈
- 프로퍼티 3 (5:53)
- 코드보기: 클래스 (5:29)
- 코딩 표준(Coding Standard) (8:08)
- 복습 퀴즈
- partial 클래스 (9:14)
- 코드보기: partial 클래스 (2:56)
- 복습 퀴즈
- 정적 클래스(Static Class) (27:16)
- 코드보기: 정적 메서드 (7:02)
- 코드보기: 정적 클래스 (2:15)
- 복습 퀴즈
- 확장 메서드(Extension Method) (17:00)
- 코드보기: 확장 메서드 (4:17)
- 복습 퀴즈
- 정리 (5:40)
- 파일 입출력 기초 1 (11:57)
- 파일 입출력 기초 2 (10:03)
- 파일 입출력 기초 3 (4:25)
- 코드보기: 파일 읽기 및 쓰기 (6:50)
- 예외(Exception) 1 (14:48)
- 예외 2 (2:02)
- 예외 3: Exception 클래스 (8:45)
- 예외 4: Exception 클래스 (1:22)
- 예외 5: Exception 클래스 (2:24)
- 예외 6: finally 블록 (2:00)
- 복습 퀴즈
- 예외 7: 커스텀 예외 (6:02)
- 코드보기: try/catch/finally (3:41)
- 예외 8: 커스텀 예외 (7:38)
- 예외 9: 올바른 예외처리 방법 (25:52)
- 복습 퀴즈
- 파일 스트림 1 (16:02)
- 파일 스트림 2 (5:14)
- 코드보기: FileStream을 이용한 읽기 및 쓰기 (3:20)
- 파일 스트림 3 (19:23)
- 코드보기: using 문 (3:52)
- 복습 퀴즈
- 정리 (5:27)