코드스테이츠에서 본격적인 프로그래밍 학습을 시작한지 벌써 한달이다.
그 동안 주별로 배운내용을 정리해보면,
1~2주차 에는 자바스크립트 기본문법과 그것들을 이용한 알고리즘 문제 해결에 집중했었다.
3주차에는 기본적인 html, css와 함께 어떻게 자바스크립트를 이용하여 이것들에 접근하고 조작할 수 있는지 (DOM) 을 학습하였다.
4주차에는 객체지향 프로그래밍의 기본과 고차함수와 재귀함수를 활용한 함수적 프로그래밍 (Functional Programming) 에 대해 학습하였다
생각해보면, 한달동안 꽤 많은 양의 학습 과제들을 소화해낸 것 같다. 그만큼 얻은 것도 많은 것 같다. 오기전에 엄두도 못냈던 프로그래머스의 알고리즘 문제들도 스스로 한두개씩 해결해볼 수 있는 정도는 되었다.
하지만 높은 단계의 추상화 과정이 필요한 고차함수, 재귀함수에 들어갔을 때는 애를 많이 먹었고 어느정도의 벽도 느껴졌다. 그 벽을 넘어가려면 더 많은 심화 알고리즘 문제들을 해결해보고 이해해가는 경험이 쌓여야 될 것 같다.
생각해보면, 한 달동안 무언가에 이렇게 집중하고 빠져들어서 배웠던 적이 있었나싶다. 한 달 전을 돌아봤을 때 지금 느끼는 변화에 대해 부족하지만 어느정도 만족하고 있고, 이 모든 과정이 끝날 내년 초의 내가 기대된다.
다음 주부터는 이머시브 코스다. 말 그대로 더 깊은 내용을 학습하게 될 것이고 더 미친 사람처럼 학습해야 많은 것을 얻어낼 수 있을 것 같다.
자바스크립트 기초
변수 - 변수를 선언하고 할당하는 법
자료형 - 6가지의 타입, typeof를 사용해 타입 반환
함수('기능'의 단위) - 함수의 선언과 호출
조건문 - 'if-else if-else'의 활용, 논리 연산자
반복문 - for문('for (let i = 0; i < 5; i++)')과 while의 활용, 반복문과 조건문의 조합을 통한 특정 조건 하에서의 코드 실행
문자열 다루기 - 문자열을 합치거나 일부만 반환하거나 모두 대문자나 소문자로 바꾸거나 원하는 글자 포함 여부 확인하기(str.length, str[1], word1 + " " + word2, str.substring(0, 3), str.toUpperCase, str.toLowerCase, str.indexOf('a'), str.includes('a')
배열(순서가 있는 정보) 다루기 - 배열 요소의 조회, 추가, 삭제, 복사, 분리(arr[0], push, pop, unshift, shift, slice, length)
객체(속성이 있는 정보) 다루기 - 객체 속성의 추가, 삭제, 조회(dot notation과 bracket notation, obj.a = "hello", delete, for ... in)
자바스크립트 핵심 개념
스코프(변수 접근 규칙에 따른 유효 범위) - 로컬 스코프 vs. 글로벌 스코프, 펑션 스코프 vs. 블록 스코프, 전역 변수와 window 객체, var&let&const의 이해
클로저(외부 함수의 컨텍스트에 접근할 수 있는 내부 함수) - 클로저 함수의 변수 접근, 클로저 모듈 패턴, 커링
매개변수(함수의 전달인자) - Rest parameter, arguments
객체 지향 프로그래밍 - class&instance의 이해, new를 이용한 instance 생성
자바스크립트 심화
고차 함수(함수를 인자로 받거나 함수를 리턴하는 함수) - 콜백 함수, 커리 함수, 배열 메소드(forEach, find, filter, map, reduce, sort, some, every)
비동기 호출 - blocking vs. non-blocking, 비동기 함수 전달 패턴(콜백, 이벤트 등록)
함수 메소드 - apply, call, bind
재귀 함수(Recursion)
그 외
알고리즘 - 문제 분해, 의사코드
코드 작성법 - 들여쓰기, 변수 및 함수 네이밍, 연산자 사용, 짧게 쓰기
개발자 도구 사용법 - 커맨드 라인, 비주얼 스튜디오 코드, 깃(fork, clone, pull, push)
테스트 주도 개발 - Test Framework, 유닛 테스트, mocha의 describe와 it, chai의 assert와 expect
HTML/CSS - HTML의 기본 태그(div, span, ul, ol, li, input), CSS 속성(box model, position), 기초적인 Selector 규칙(id, class)
DOM - HTML 조작하기(createElement, querySelector, querySelectorAll, textContent, id, classList, setAttribute, remove, removeChild, appendChild)