컴퓨터공학과나 전산과 에서는 디자인패턴 과목이 있나요?

jeongheumjo의 이미지

저는 전자 통신 컴퓨터 머 이런 학부출신인데 저희 학부때는 디자인패턴은 듣도보도 못했거든요..
그런데 컴퓨터공학과 출신들은 잘 아는 것 같아요..
컴퓨터 공학과나 전산학과에서는 디자인패턴을 다루는 과목이 있는지 궁금합니다.

rootroot의 이미지

저희 학교에서는 시스템 설계 과목?에서 살짝쿵 맛보기로 배운다고 합니다.

그리고 진짜 자세하게 배우고 싶으면 학원 가서 배우라고 하시더군요....

----------------------
블로그 - http://blog.naver.com/toortoorop
last.fm - http://www.last.fm/user/roottoor
스타플 - http://www.starpl.com/#/rootroot
미투데이 - http://me2day.net/rootroot

ds5pnz의 이미지

디자인패턴은 아마 현업에서 배우는거 아닌가요?

학교서는... 코드는 과제일 전에 돌기만 하면 된다는...

winner의 이미지

숙제 검사 대충하는게 일반적인데 Design Pattern을 제대로 적용했는지 검사하는게 오버인듯.
시험에는 나오더군요.

JuEUS-U의 이미지

컴공에서 디자인 패턴을 배우지 않는다라... 솔직히 좀 아니다 싶네요...
제가 이번 학기에 software engineering 과목을 하나 듣는데, (과제가 자유주제 팀프로젝트)
팀원 중 한명은 정말 이 바닥에서 잔뼈가 굵디 굵은 저도 놀랄 정도로 많은 것을 알고있더군요. (뭐 저는 SE가 아니라 CS이긴 합니다만...)
MVC의 derivative인 MVP pattern을 채택하되 Presenter layer 내부에선 SOA/OO style을 이용해 개발한다 - 라는게 저번 meeting의 결론입니다.
사실 위의 어플리케이션 구조 자체는 별거 아니긴 한데, 그래도 이미 define된 개념/용어를 사용함으로서 어플리케이션 설계를 좀 더 간단하고 명확하게 한다는 것에 의미가 있지 싶습니다.
기능을 모듈화하는 것처럼 software architecture도 모듈화 시켜서 필요한 곳에 배치시킨다...라는 생각도 드네요.

jeongheumjo의 이미지

다른 학교들도 마찬가지인 것 같군요..
소프트웨어 전문 학과에서는 가르칠 것 같다고 생각했는데요... 있더라도 그렇게 제대로된 강의가 있지는 않은가보네요?
참 신기합니다. GoF 책이 나온지도 꽤 오래됐는데 여전히 학부 수준에서는 접하기 어렵다고 생각하는 건지...
아니면 잡종기술로 천시해서 학문으로도 인정하지 않는건지... 알쏭달쏭 합니다. ^^;

zelon의 이미지

대구에 있는 ㄱㅂ 대학교 컴퓨터공학과 4학년 수업에서는 디자인 패턴 수업이 있었습니다. 제목은 SE 였던거 같은데... 여튼 제가 2007년도에 들었었습니다. 학부 수업인만큼 그렇게 깊게는 안 들어갔지만, 제법 괜찮았던 기억이 있네요;;;
-----------------------------------------------------------------------
GPL 오픈소스 윈도우용 이미지 뷰어 ZViewer - http://zviewer.wimy.com
블로그 : http://blog.wimy.com

-----------------------------------------------------------------------
GPL 오픈소스 윈도우용 이미지 뷰어 ZViewer - http://zviewer.wimy.com
블로그 : http://blog.wimy.com

dgwork의 이미지

지방대 컴퓨터공학부인데 필수이고 졸업하기 위한 설계학점이라 필수네요^_^
근데 너무 이론에 집중되서 재미없는 경향도 있습니다만..

들을 만 합니다^_^

jeongheumjo의 이미지

소프트웨어 전공 학과에서는 있네요..
부럽습니다. 그 수업 잘 들어놓으시면 좋을 것 같아요..
현업 개발 경험 6년이 더 됐는데 이제사 보면서 감탄하고있거든요...

skenart의 이미지

정말 놀라움을 금할 수 없었고,

결국 여기저기에 보라고 추천하고 다니게 되었습니다.

Hell-o, 재깅¿

johan의 이미지

글쎄요. 그 폐해로 생각도 않고 그냥 코딩하는 경우가 많은데 아마 대세인 카피/페이스트 프로그래밍 방법이라 괜찮을지도. 제가 학창시절 읽어 본 우리나라 프로그래머의 에디터엔 이미 디자인 패턴이란 말이 나오기 전에 그런 식으로 프로그래민 되어 있어서 읽으면서 흥미진진했던 기억이 납니다. 그런것을 암기하고 사용하는 것이 중요할 수도 있지만 더 중요한 것은 그런 아이디어를 개발하고 구현하는 것 아닐까 합니다. 너무 디자인 패턴 맹신론자가 되서는 안되겠죠.

pinebud의 이미지

학교에서는 패턴보다는 알고리즘을 공부해야하지 않을까요? 패턴을 잘못 이해하고 있는지 모르겠지만 패턴은 많은 부분 언어에 종속적일 것 같습니다.

A rose is a rose is a rose..

JuEUS-U의 이미지

디자인 패턴은 실질적 code writing에서 발생할 수 있는 문제점을 해결하는데 쓰이는 것으로
완성된 코드 탬플릿이 아니라 그냥 논리적인 구조입니다.
다만 그 구현을 위해 언어에 대한 깊은 지식이 필요한 경우가 많죠.
Java에서 패턴을 구현했다 하더라도 C++에서도 가능하다는 보장이 없습니다.

비슷한걸로 아키텍쳐 패턴(Architectural pattern)이란 것도 있는데,
이는 프로젝트 결과물이 원하는 특성(dependability, scalability 등)을 가지도록 하기 위해
높은 추상화 단계에서 소프트웨어를 설계할 때 사용하는 패턴입니다.

이 패턴을 사용하게되면 장점이
설계 과정 자체를 쉽게 해줄 뿐만 아니라
완성된 설계가 논리적인 근거를 가지게 되고,
프로젝트 구성원에게 이를 설명하는데 소모되는 비용이 크게 줄어듭니다. (몇 단어만 던지면 딱 알아듣죠)

근데 뭐 이렇게 얘기해도 저도 패턴 그다지 안좋아합니다.
패턴이 만능이였으면 지금 프로젝트가 겪는 어려움이 있을리가 없으니 말이죠.

sblade의 이미지

학부 과정에서 모든 커리큘럼은 컴퓨터 관련 내용으로만 짤 수는 없죠. 컴퓨터 관련 과를 입학했다고 하더라고 대학에서는 컴퓨터만큼 중요한 배울 게 많으니까요. 컴퓨터 관련 내용이라도 소프트웨어만을 가르칠 수는 없죠. 그렇다면 한정된 시간 내에서 배워야 할 것을 추려 본다면 디자인 패턴이 들어가지 않거나 시간을 적게 할애해도 이상하지 않다고 봅니다. 소프트웨어 엔지니어링 관련 시간에 1~2주 정도 할애해서 기본적인 패턴 몇가지만 알려줘도 좋다고 봅니다. 흥미롭다고 생각하는 애들은 책을 찾아보겠죠.

사실 design pattern 이란 것들이 OOP 에서 더 좋은 abstraction을 달성하기 위해 종종 유용한 "스킬" 들의 집합체일 뿐입니다. 것도 좀 더 static 한 언어들로 대형 프로젝트를 구현할 때 object간의 loose coupling을 달성하기 위한 수단이죠. 그래서 java 나 c++에는 종종 유용하지만 당장에 dynamic 한 언어인 python 등에만 가도 효용성이 줄어들기 시작하고 다른 패러다임의 언어, 특히 declarative language 에서는 어떻게 구현해야 할 지도 모호하거나, 다른 더 쉬운 대안이 있는 경우가 많습니다.

이런 점을 볼 때 이것을 학교에서 한학기 동안 가르쳐야 하는지에 대해서는 의문이 듭니다.

semmal의 이미지

패턴이 어느정도 언어에 종속적인 것은 사실입니다.

하지만 그것은 그 문법이나 코드만 보고 지나치게 쉽게 내릴 수 있는 판단일 수도 있습니다.

실제로 각 패턴 안에 들어가 있는 철학은 다른 언어를 쓰더라도 충분히 활용할 수 있는 부분입니다.

또한 알고리즘과는 근본이 다르기 때문에 둘 다 익히기는 해야합니다.

패턴은 알고리즘보다는 Abstraction과 그에 따른 설계와 관련이 깊습니다.

알고리즘은 설계보다는 상황에 맞는 효율적인 활용(아마도 함수나 프로시져 단위의)에 집중하기 마련이지요.

개인적으로 디자인 패턴을 책에 나온 고대로 가져다 쓰는 것은 많은 경우 오버스팩이라 느끼기 때문에, 일단 그전에 최대한 Abstraction을 합니다.

그렇게 만들고보면 결국 특정한 디자인 패턴을 닮을 경우가 많은데, 그 디자인 패턴에서 말하는 알려진 문제점에 대한 해결책이나 장점을 가져와서 강화하는 편입니다.
------------------------------
How many legs does a dog have?

------------------------------
How many legs does a dog have?