# 코딩 병아리 커리큘럼 ## Week 1 - CS 기초 무의식적으로 당연하게 이용해왔던 컴퓨터와 월드와이드웹의 동작에 대해 이해하고, 여러 컴퓨터 과학 용어들에 대해 학습합니다. * 왜 소프트웨어 엔지니어가 되고 싶나요? * 컴퓨터 과학의 기초 중의 기초에 대해 학습하기 전에, 여러분은 왜 개발자가 되고 싶나요? 높은 연봉? 자유로운 분위기? 실리콘 밸리? 들어가기전 먼저 이 주제에 대해 한번 꼭 생각해보는 시간을 가지면 좋겠습니다. * 컴퓨터 이해: 컴퓨터가 어떻게 구성되며 프로그램이 어떻게 실행되는지 이해합니다. * 컴퓨터 하드웨어는 어떻게 구성되는가? * 운영체제란 무엇인가? * 프로그램, 프로세스가 뭐야? * 프로세스(process)? 그럼 쓰레드(thread)는 뭐야? * 월드와이드웹 이해: 웹 브라우져에서 도메인 주소를 입력할때, 어떤 일이 벌어지는지 이해합니다. * 많이 주워 들어본 컴퓨터 네트워크, 인터넷 * 매일 쓰고 있는 웹브라우져 * HTML, CSS, Javascript?? * 주소창에 naver.com을 입력했을 때 일어나는 일 한눈에 이해해보자 * 클라우드의 이해 * 클라우드? 맥주? 구름? * AWS, GCP, Azure와 같은 클라우드 서비스 프로바이더들 * 드디어 남들도 다 가지고 있다는 AWS 계정 생성하기! * 소프트웨어 엔지니어 밈 * 엔지니어만 이해할 수 있었던 밈(meme), 이젠 이해하고 같이 웃어보자! ## Week 2 - 알고리즘(로직)을 세워보자 알고리즘, 많이 들어봤는데 무엇인지 잘 모르신다구요? 알고리즘은 특정 문제를 풀기위한 일련의 순차적인 로직을 의미합니다. 굳이 비교하자면 중고등학교 때 배운 순서도라고 생각하면 되겠네요. 프로그래밍 언어를 배우기 전, 실제 로직을 수도코드(그냥 생각나는대로 로직을 정리한 코드)를 이용해 로직을 만들어 보는 연습을 합니다. * 정렬(sorting)을 이용한 알고리즘 학습 * pseudo code(수도코드)를 이용해서 실제 문제를 풀어보자 * 로직이 얼마나 효율적인 알아보는 방법! O(n) # Pre Bootcamp 커리큘럼 프리 부트캠프에서는 프로그래밍 언어와 알고리즘, 테스트, 버젼관리 툴에 대해 배웁니다. 그리고 웹사이트를 만들기위해 필요한 선수 지식들도 배우게 됩니다. 백엔드, 프론트엔드? 걱정하지 마세요. 이것들이 무엇인지도 곧 알게 되실겁니다. 이 과정에서는 중점적으로 백엔드에 사용할 파이썬 언어 그리고 프론트엔드에 사용할 자바스크립트로 코드를 작성하는 법을 익힙니다. ## Week 0 백엔드, 프론트엔드? 파이썬? 자바스크립트? 이런 많은 새로운 용어들 때문에 어려우시죠? 앞으로 과정에서 무엇을 배울지 이것들은 무엇인지 한번 정리하는 시간을 가져봅니다. ## Week 1 - 3 파이썬 기초 파이썬 언어를 배우고 코팅합니다. 백엔드, 데이터 분석, 머신러닝, 배치프로세스 등 다양한 환경에서 사용되는 파이썬 언어에 대해 배웁니다. ## Week 4 - 6 파이썬 더 깊게 파이썬 언어로 링크드 리스트, 딕셔너리, 셋 등의 data structure(데이터 스트럭쳐)와 여러 알고리즘에 대해 학습합니다. 다양한 문제를 통해 로직을 세우고 파이썬으로 코딩한 뒤 코드의 런타임 O(n)을 평가하는 연습도 함께 진행합니다. ## Week 7 파이썬 유닛 테스트 테스트 가능한 코드(Testable code)를 작성하는 것도 유능한 엔지니어가 되는 길 중 하나입니다. 유닛 테스트가 무엇인지 그리고 어떻게 하면 좀 더 테스트가 가능한 코드를 작성할 수 있는지에 대해 알아봅니다. ## Week 8 - 9 자바스크립트 기초 프로그래밍 언어 한개를 익혔다면, 나머지는 더 빠르게 습득할 수 있습니다. 프론트엔드에서 사용할 언어인 자바스크립트에 대해 다룹니다. 자바스크립트의 가장 큰 특징인 asynchronous(비동기) 프로그래밍에 대해 집중적으로 다룹니다. ## Week 10 버젼 관리와 git 버젼관리? 그게 왜 필요한지 실제 예를 들어 설명합니다. 그리고 버젼 관리의 대표적인 툴인 git을 익히고, git으로 관리/협업 하는 방법에 대해 학습합니다. # Bootcamp 커리큘럼 부트 캠프 과정에서는 실제로 웹사이트를 만들고 배포하는 전체의 과정을 경험하게 됩니다. 이 과정 후에는 여러분은 그동안 가지고 계셨던 아이디어를 직접 구현하고 발전 시켜나갈 능력을 갖게 됩니다. 과정에서 최대한 많은 것을 알려드리려 하겠지만, 결국 소프트웨어 엔지니어는 끊임없이 찾아서 자기개발하고 발전해야하는것 아시죠? 저희가 처음 길은 잘 안내하겠습니다. 그 다음길은 여러분이 스스로 만들어 가시죠! ## 초급 과정: 처음부터 혼자 다 만들고 관리하기 ## Week 1-2 프론트엔드 개발 HTML, CSS, Javascript로 90년대 필 나는 간단한 페이지 만들어보기. 웹사이트는 결국 HTML, CSS, Javascript 세가지만을 이해합니다. 웹문서의 기본이 되는 이 세가지를 이용하여 웹페이지가 어떻게 구성되고 돌아가는지 알아봅니다. 개발한 웹사이트를 EC2와 S3를 이용하여 배포까지 완료 합니다. ## Week 3 - 5 React 활용하기 왜 모두 React, Vue.js와 같은 도구(Library, Framework)를 사용하는지 이해합니다. 그리고 프론트엔드 과정에서 사용할 React, React Hooks, Router, Redux등에 대해 학습하여 프론트엔드 개발 방법에 대해 배웁니다. ## Week 6 백엔드 개발 (데이터 베이스, SQL 이해) 프론트엔드가 눈에 보이는 부분을 만드는 영역이라면 백엔드는 실제로는 보이지 않는 비지니스 로직에 대한 처리를 담당하는 역할을 합니다. 프론트엔드에서 사용자가 입력한 데이터가 저장되고 처리되기 때문에 데이터를 가공하는데 필요한 데이터베이스와 가공 언어인 SQL에 대해 학습합니다. ## Week 7 - 10 백엔드 개발 파이썬 언어와 웹프레임워크인 Flask를 활용하여 백엔드 시스템을 만드는 방법에 대해 배웁니다. 여러분이 자주 사용하는 웹사이트에 대해 생각해 보겠습니다. 필수적으로 회원가입, 로그인, 컨텐츠 로딩, 저장 등등 각 사이트의 목적에 맞는 기능들이 있겠죠. 여기서는 이 비지니스 로직을 어떻게 개발하는지에 대한 내용을 다룹니다. 이 과정을 배운 후에 여러분들은, 이제 각 웹사이트의 비지니스 로직처리가 어떻게 되는지 감을 잡으실 수 있습니다. ## Week 11 디플로이(Deployment) 코딩이 전부가 아닙니다! 지속적으로 코딩한 결과물을 빠르게 배포/롤백할 수 있어야 합니다. 배포 파이프라인을 구축하는 방법을 배우고 실제 AWS 상에서 CI/CD로 배포할 수 있는 방법을 배웁니다. ## Week 12 - 16 AWS 기술 활용하기 (Managed 환경에서 개발하기) AWS 기술을 이용하여 Managed 환경에서 개발하는 방법에 대해 소개합니다. 개발이 다인줄 알았는데, 개발 외적으로도 신경써야할 부분이 엄청 많다구요? 네 맞습니다. 개발은 정말 프로젝트의 일부분일 뿐이며, 그래서 많은 툴들이 엔지니어의 편의를 위해 발전해 왔습니다. Lambda, DynamoDB, API gateway, Amplify, GraphQL 등 AWS 기술에 대해서도 다루며, 엔지니어가 비지니스 로직에만 집중하고 나머지 부분은 다 관리(managed)되게 할 수 있는 AWS의 많은 기술 스택에 대해 공부합니다. ## Week 17 - 21 팀프로젝트 지금까지 배운 내용을 이용해 2명씩 팀을 이루어 작업합니다. 1주차 아이디어 빌딩, 2-3주차 개발 4주차에 디플로이의 과정으로 진행되며, 팀프로젝트를 하면서 실제로 실무에서 일하는 것과 같은 방식으로 진행하도록 가이드 합니다. ## Week 22- 커리어 멘토링, 인터뷰 가이드 소프트웨어 엔지니어로서 걸어갈 커리어에 대한 로드맵과 국내 및 해외 기업에서 진행하는 엔지니어링인터뷰에 대한 가이드를 제공합니다. 어떤 커리어를 따라가던, 계속해서 멘토와 가이더가 되겠습니다 :)