오늘은 app과정의 첫 번째 수업을 들었다. 이미 프로그래밍에 대해 어느 정도 공부한 경험이 있었지만, 진짜 “개발자처럼 생각한다”는 게 뭔지는 모르고 있었다. 그래서 부트캠프 첫날 ‘Computational Thinking’이라는 주제를 만났을 때, 혹시 이게 내가 놓친 중요한 부분일까 싶었다. 오늘 수업을 들으면서 그 직감이 맞았다는 걸 느꼈다.

오늘 다룬 범위

  • Computational Thinking(이하 CT)의 정의와 의미
  • CT의 핵심 네 가지 기둥: 추상화, 분해, 패턴 인식, 알고리즘적 사고
  • 개발자가 사진을 찍는 방법부터 코드를 짜는 방법까지, CT가 왜 필수인지
  • 이번 부트캠프에서 배울 학습 경로 (자료구조 → 데이터베이스 → SQL)

핵심 개념 정리

Computational Thinking은 뭘까?

Computational Thinking은 **“문제를 체계적으로 분석하고, 단계별로 해결하는 사고 방식”**이라고 배웠는데, 프로그래밍 언어를 배우는 것과는 완전히 달랐다.

프로그래밍을 배울 때 나는 “Python 변수는 이렇게 선언하고, 반복문은 이렇게 쓴다”는 식의 문법만 외우려고 했다. 하지만 강사님은 이렇게 말씀했다.

“코드를 쓸 수 있는 것과 문제를 풀 수 있는 것은 다르다. CT는 문제 자체를 이해하고 분해하는 능력이다.”

이미 파이썬과 자바 수업을 듣고 이 수업을 들어서 수업을 듣는 순서가 이상하다고 생각하긴 했지만 그래도 지금이라도 이 훈련을 할 수 있어서 좋았다.

네 가지 핵심 기둥

강사님이 강조한 CT의 네 가지 요소가 있다:

  1. 추상화 (Abstraction) — 복잡한 것 중 핵심만 뽑아내기
    • 예: 사진을 찍을 때, 배경의 모든 세부 사항이 아니라 주인공만 초점을 맞추는 것처럼
  2. 분해 (Decomposition) — 큰 문제를 작은 문제로 나누기
    • 예: “웹 사이트 만들기”라는 큰 문제를 “회원가입 기능”, “상품 표시”, “결제 처리” 같은 작은 문제로 나누기
  3. 패턴 인식 (Pattern Recognition) — 반복되는 구조 찾기
    • 예: 여러 상품 목록을 처리하는 코드가 반복된다면, 반복되는 패턴을 찾아서 한 번에 처리하기
  4. 알고리즘적 사고 (Algorithmic Thinking) — 단계별 지시를 만들기
    • 예: 계산기를 만들 때, 숫자 입력 → 연산자 선택 → 계산 → 결과 표시라는 명확한 순서를 정의하기

이 네 가지를 들으면서 내가 지금까지 얼마나 무작정 코드부터 짜려고 했는지 반성했다.

개발자들은 이렇게 생각한다

강사님이 보여줬던 다이어그램이 인상적이었다.

방향 제시 → 조사 및 공유 → 피드백 → 실습

이 사이클이 계속 반복된다는 것이다.

  • 방향 제시: 해결해야 할 문제가 무엇인가?
  • 조사 및 공유: 내가 어떻게 접근할 것인가? 다른 방법은 없나?
  • 피드백: 내 풀이가 맞나? 더 나은 방법은?
  • 실습: 배운 개념을 코드로 직접 구현해보기

이 순환 구조 안에서 같은 문제를 여러 번 들었다 놨다 하면서 깊이 있게 이해하게 된다는 거다. 한 번 짜고 끝나는 게 아니라는 뜻이었다.

헷갈렸던 점 / 실수 포인트

”근데 이게 왜 프로그래밍 첫날에?”

솔직하게 말하면, 첫 시간에 CT를 배운다는 게 좀 답답했다. 나는 “빨리 파이썬 변수 쓰고, 반복문 쓰고, 함수 만들고 싶은데…”라는 생각을 했다.

하지만 수업이 진행되면서 생각이 바뀌었다. 강사님이 설명해주신 것처럼, 문법을 먼저 배우면 “어떻게 할까?”를 생각하지 않고 “이 문법으로 뭘 할까?”라는 거꾸로 된 생각을 하게 된다는 것이다. 반대로 CT를 먼저 이해하면, 실제 문제를 만났을 때 “어떤 단계로 풀어야 하나?”부터 생각할 수 있다고 했다.

”그럼 CT만 하면 되나?”

처음엔 CT를 배웠으니 이제 이것만 계속 연습하는 건가 생각했는데, 아니었다. 강사님은 분명히 말씀했다.

“CT는 사고방식이다. 실제로는 자료구조, 데이터베이스, SQL을 배우면서 CT를 계속 적용하는 것이다.”

그래서 이번 부트캠프의 학습 경로가 이렇게 짜인 거구나. 단순히 “이것을 배우고, 다음 것을 배운다”는 식이 아니라, 매번 새로운 개념을 배울 때마다 CT의 네 가지 기둥을 다시 적용하는 거다.

복습 Q&A

Q. Computational Thinking은 프로그래밍 언어와 다른 건가?

A. 맞다. CT는 **“어떻게 생각할 것인가”**이고, 프로그래밍 언어는 **“그 생각을 어떻게 표현할 것인가”**다.

예를 들어, “숫자 100개 중 가장 큰 수를 찾아야 한다”는 문제를 푼다고 하자.

  • CT적 사고: 첫 번째 숫자부터 차례대로 비교해서, 지금까지의 최댓값보다 크면 갱신한다.
  • 프로그래밍: 그 사고를 for 반복문if 조건문으로 코드화한다.

CT 없이 문법만 알면, 반복문과 조건문이 있다는 건 아는데 어디에 쓸지 모른다. CT 있으면, 어떤 언어로든 그 논리를 구현할 수 있다.

Q. 추상화와 분해는 뭐가 다른가?

A. 비슷해 보이지만 다르다.

  • 추상화: 복잡한 것 중 필요한 것만 골라내기 (제거의 개념)
    • 예: 사진 촬영할 때 초점을 주인공에만 맞추고, 배경의 잡다한 것들은 흐릿하게
  • 분해: 복잡한 것을 여러 부분으로 나누기 (분할의 개념)
    • 예: 웹사이트를 “회원 관리 모듈”, “상품 관리 모듈”, “결제 모듈”로 나누기

추상화는 필요 없는 것을 지우는 것이고, 분해는 큰 것을 쪼개서 관리하는 것이다.

Q. 아직도 CT를 어떻게 연습해야 할지 모르겠는데?

A. 좋은 질문이다. 강사님도 같은 질문이 나올 거라고 예상하셨다.

답은 “자료구조, 데이터베이스, SQL을 배우면서 계속 적용하면 된다”는 거다. CT는 한 두 시간에 완성되는 게 아니라, 문제를 풀 때마다 반복되는 과정이다.

이번 부트캠프는 그래서 단순히 “이 개념을 배운다”가 아니라 “이 개념을 어떻게 활용해서 문제를 푸나”를 계속 묻는 방식으로 진행될 거다.

한 줄 정리

개발자의 차이는 언어를 얼마나 많이 아는가가 아니라, 문제를 얼마나 체계적으로 분석하고 풀 수 있는가에서 나온다. 그리고 그 능력이 Computational Thinking이다.

다음 시간에는 자료구조를 배운다.


Community

Comments

0 comments

Comments appear immediately. Use report if something needs review.

No comments yet.