본문 바로가기
👨‍💻 프로그래밍/🍎 iOS 개발

🍎 Stanford iOS 강의 (CS193P) 수강 후기

by 개발자 진개미 2024. 9. 14.
반응형

이게 뭐야?

말 그대로 미국의 1류 대학인 스텐포드 대학에서 제공하는 강의입니다. 스텐포드 대학은 실리콘 벨리 근처에 있는데, 그래서 그런지 컴퓨터 과학 학과가 특히 유명합니다. 오죽하면 애플에서는 신입이 스텐포드 출신이 아니면 이력서에서 거른다는 소문이 있을 정도입니다. (사실은 아니겠지만...)

소문? 사실?

 

스텐포드 뿐만 아니라 많은 미국 대학이 강의를 공짜로 공개해 놓는데, 코로나 시국을 거치면서 특히 더 활발해 졌습니다. 하지만 인터넷에 공개된 모든 대학 강의가 수강할 가치가 있지는 않습니다. 꼭 내용만을 말하는건 아닌데요. 저는 아래 조건중에 1개라도 해당되면 듣지 않습니다.

  • 오디오, 카메라 품질이 좋지 않음
  • 강의 자료가 많이 제공되지 않음

제 경험상 일류 대학들의 강의는 어렵기 때문에 많은 시간을 들여 수강해야 하는데 자료를 찾기 힘들거나 오디오 카메라 품질이 안 좋으면 안 그래도 잘 이해가 안 되서 스트래스를 받는데 도저히 버티지 못하겠어서 이런 원칙을 세웠습니다.

이 중에서 CS193P는 iOS 개발에 관한 강의입니다. iOS 개발이 커뮤니티가 활발한 편은 아니기 때문에 자료나 강의를 찾기가 쉽지 않은데 그 와중에 위 조건을 다 만족하면서 좋은 교수님이 가르치는 아주 귀한 강의라 수강을 결심했습니다!

 


내가 들어도 될까?

초보자를 위한건 아님

 

이 강의는 명백히 초보자를 위한 강의는 아닙니다. 사실 저는 이 강의 수강을 시도한게 3번째인데요.

🐜 1번째: 프로그래밍을 거의 모를 때

첫 번째 강의부터 객체지향 관련 용어 (인스턴스, 상속, 값객체, 다형성)나 프로그래밍 언어 관련 용어 (포인터, 네임스페이스 등)이 엄청 나옵니다. 처음에는 열정에 불타 1개 1개 찾아가며 공부했지만 2번째 강의 후반에서 빡종했습니다. 실제로 교수님도 "객체지향 관련 개념을 알고 있어야 이해가 수월함!"이라고 대놓고 말하시긴 합니다.

 

🐜 2번째: 프로그래밍은 조금 했지만 iOS 개발은 잘 모를 때

1번째 도전에서 제 머리속에 남은건 "객체지향을 좀 치게 되면 다시 도전!"이였습니다. 자바를 배우면서 객체지향을 접하고, 간단한 웹앱을 개발할 수 있게 되고 다시 도전했습니다. 이번에는 그 전보다는 오래 갔습니다. 하지만 문제는 이때의 저는 iOS 개발을 거의 해 본 적이 없이 이 강의로 입문하려 했다는 겁니다. 이 강의는 원리나 여러 이론은 친절하게 설명해 주지만 iOS 개발을 위해 필요한 각 UI 컴포넌트의 사용법이나 방법은 비중이 매우 적고 학생들이 당연히 쉽게 바로 익히고 넘어갈 수 있다고 가정하고 가르칩니다. (실제로 많은 강의를 듣고 많은 언어를 빠른 시간안에 학습하는 환경에 적응한 스텐포드 학생들은 그렇겠죠?) 하지만 저는 이 당시에 그렇지 않았습니다. 언어는 JS와 Java 2개 정도만 접해봤고, 프로그래밍 경험도 미숙했습니다. 역시나 빡종을 했습니다.

 

🐜 3번째: 3개 앱을 앱스토어에 출시하고 프로그래밍을 잘 하게 됐을 때

현업 개발자가 되고, 앱스토어에 앱을 3개를 출시한 이제서야 이 강의를 온전히 소화할 수 있는 역량을 갖춘 느낌입니다. 원리를 정확히 모르고 썼던 다양한 문법들이나 에러 메세지의 원리를 1개 1개 알아가는게 재밌었고, 또 교수님의 코딩 스타일이나 철학을 보면서 내 꺼와 비교해 보고, 내가 출시한 앱들을 강의에서 배운 내용을 적용해 업데이트 해 가니 몰입하게 돼서 결국 완강했습니다.

 

강의 들으면서 정리한 노션

 

요약하자면,

  • 이 강의는 비교적 깊게 들어가고 여러 프로그래밍 개념을 많이 언급하기 때문에 (객체지향, 함수형, 포인터, 네임스페이스 등) 초보자가 100% 소화하기에는 적합하지 않을 수 있다.
  • 추가적으로 기본적인 iOS 개발을 배우고 앱을 출시하고 싶은 거라면 다른 기본적인 사용법 위주로 알려주는 강의가 더 유용할 것이다.
  • 하지만 iOS 개발을 좀 치는거 같긴 한데, 생산성을 더 높이고 한 단계 도약하고 싶다면 강력 추천! 👍

강의 들으면서 재밌었던 부분!

마지막으로, 아직 강의를 들을까 말까 하면서 고민하는 분들을 위해 강의를 들으면서 재밌었던 부분들을 랜덤으로 나열해 보겠습니다.

  • @State는 포인터다
  • Computed Property는 함수의 문법 설탕일 뿐이다
  • mutating은 컴파일러가 아니라 프로그래머를 위해 있는 문법이다
  • @Published는 private이 될 수 있다
  • Optional은 사실 enum이고, ??? 들은 문법 설탕이다
  • padding에서 .left, .right가 아니라 .leading, .trailing인 거는 좌우가 다른 언어를 고려해서이다
  • .background(Color)를 사용하면 디버깅에 좋다
  • struct에서 _를 타이핑하면 Constants를 쉽게 만들 수 있다
  • ID의 존재
  • iOS에서 저장 기능 구현을 위해서는 Undo 기능만 있으면 된다 (Undo로 저장 필요 여부 판단해서 바뀐 내용 저장)
  • SwiftUI의 Color, Image는 wrapper일 뿐이고 사실 UIColor, UIImage가 실제 여러 동작을 담당한다
  • XCode의 보라색 경고는 절대 무시하면 안 된다. 아무 이상이 없는거 같아 보여도 실제 Production에 가면 여러 이상한 버그가 생긴다.
  • State Machine을 적용해서 복잡한 상태의 UI를 구현하는 부분
  • @ScaleMetric을 쓰면 Dynamic Font를 적용 안 해도 접근성을 대응할 수 있다.

수강하는 방법

 

ios stanford 2023 course

 

www.youtube.com

 

2023

The lectures for the Spring 2023 version of Stanford University's course CS193p (Developing Applications for iOS using SwiftUI) were given in person but, unfortunately, were not video recorded.  However, we did capture the laptop screen of the presentatio

cs193p.sites.stanford.edu


 

반응형