학교에서 소프트웨어 개발 커뮤니티를 어떻게 부트 스트랩 할 수 있습니까?


14

저는 사우스 플로리다 대학에서 컴퓨터 과학 프로그램의 교육 환경에 불만을 가지고있는 학생입니다. 지금은 "프로그램 디자인"을하고 있습니다. 프로그램을 읽고 유지 관리하기 위해 소스 코드를 함수와 모듈로 구성하는 방법을 배워야합니다. 대신 C에서 배열과 재귀에 대해 배우고 있습니다. 다음 학기에는 C ++ ( shudder )를 통해 학습되는 "객체 지향 디자인"을 선택해야 합니다.

2 년 전 저는 프로그래밍에 관심이 있었으며 그 이후로 많은 것을 배우고있었습니다. 또 다른 C ++ 클래스를 복용 할 것이라는 전망은 거의 눈물을 흘리게합니다. 이런 이유로 저는 비슷한 야심 찬 학생들을 만나고, 새로운 언어를 배우고, 소프트웨어 개발 주제에 대해 토론하고, 다른 학생들과 함께 일하기 위해 프로그래밍 클럽을 시작할 것이라고 생각했습니다.

그러나 저는 소프트웨어 개발 경험을 공유하는 다른 학생들이 없을 수도 있음을 깨닫기 시작했습니다. 동기 부여가 아니라 기회가 없기 때문입니다. 다른 프로그래밍 클래스 ( "프로그래밍 언어") 만 알고 있으며 실제 소프트웨어 개발에 대한 클래스는 없습니다. 다른 모든 사람들은 C와 C ++로 사소한 스크립트를 작성한 경험이 있습니다.

다른 학생용 소프트웨어 개발자와 함께 일하고 싶다면 스스로 훈련해야한다는 것을 깨달았습니다. 이제 저는 클럽을 소프트웨어 개발 부트 캠프로 만들어 회원들에게 현대적인 도구와 언어로 소프트웨어를 개발하는 방법을 가르 칠 계획입니다. 비공식 소프트웨어 개발 과정을 시작하는 것은 많은 가능한 접근 방식을 가진 기념비적 인 작업입니다. 독자 여러분, 내 질문은

내 공격 계획은 무엇입니까?

내가해야합니까

  • 클럽 활동과 숙제의 균형을 맞추기 위해 스스로 클럽을 강의합니까?
  • CS 교수진에게 회원들과 관련이 없을 수있는 전문 지식 내에서 주제에 대해 가르치도록 요청합니까?
  • 학교 내부 또는 외부에서 작업 부하를 공유 할 수있는 동정적이고 경험이 풍부한 개발자를 찾으려고합니까?
  • 비디오 강의 ( MIT OpenCourseWare , Google Tech Talks 등)를 보여 주겠습니까?
  • 실무 프로그래밍 워크샵 개최?
  • 숙제를 할당?
  • 다른 일을합니까?

3
C ++을 통해 OOP를 가르치는 이유는 무엇입니까? 고급 언어를 다루는 것이 불편하다고 느끼십니까? 그렇다면 OOP를 어떻게 배울 수 있습니까?
Cam

4
@Evan : 솔직히 말해서 C ++이 저수준 언어라고 생각하면 C ++ 과정이 완벽 할 것입니다. 당신은 많이 배울 것입니다. C ++은 저수준 기능을 제공 하기 때문에 초보자에게는 처음에는 저수준으로 보일 수 있지만 반드시 사용할 필요는 없습니다. 실제로 대부분의 경우 STL과 모든 고급 OOP 기능을 사용하게됩니다.
Cam

10
C ++은 Java, Ruby, Javascript, C # 등과 비교하여 저수준입니다. 다른 많은 언어와 비교할 때 높은 수준입니다. 무의미한 논쟁으로 보입니다.
Fishtoaster

2
@ fishtoaster : C ++이 java 및 c #에 비해 저수준이라고는 말할 수 없습니다. 적어도 그 언어만큼 수준이 높습니다 (다른 것에 대해서는 잘 모릅니다). 저수준이 될 수 있다는 이점이 추가되어있어 두 가지 이점을 모두 누릴 수 있습니다.
n1ckp

1
@ n1ck : 물론 포인터 (C #은 있지만 사용이 거의 없음), 수동 메모리 관리, 람다 없음 (C # 이주는 이름, 파이썬은 람다 사용), 네이티브 foreach, 훨씬 작은 표준 라이브러리,보다 빈번한 비트 트위들 링, 다른 플랫폼에 필요한 재 컴파일 등.이 둘보다 낮은 수준의 어셈블리 일 필요는 없습니다.
Macha

답변:


20

솔직히 당신의 모든 태도는 저와 관련이 있습니다. 당신은 그룹을 함께 얻지 못했고 이미 당신이 전할 지식이있는 사람과 그룹이 무엇을할지 결정해야하는 사람이라고 가정합니다.

최선의 방법은 초기 그룹을 함께 모으고 그룹으로서 그들이 원하는 것을 브레인 스토밍하는 것입니다. 당신이 개인적으로하고 싶은 것은 그룹이하고 싶은 것과 관련이 없습니다. 첫 번째 회의 전에 다른 그룹 구성원의 의견없이 할 일을 결정하면 자발적으로 일하고 싶지 않은 오만한 바보가 될 것입니다. 따라서 그룹을 시작하기 전에 그룹을 종료합니다.


너가 확실히 맞아; 본인은 클럽을위한 결석 마스터 플랜을 공식화하고 시행 할 필요가 없습니다. 그럼에도 불구하고, 클럽 활동과 회의에서 다른 클럽들과 논의 할 아이디어가 필요합니다.
Evan Kroske

5

클럽의 모든 사람들이 자발적으로 참석하기 때문에 흥미롭고 동기를 부여해야합니다. 숙제는 정확히 동기 부여가 아닙니다.

누군가 가르치는 것은 어렵지만, 마지막 목표로 손을 떼어 가르치는 것이 어떻습니까? 본질적으로 처음에는 모두 함께 모여 그룹 프로젝트와 언어를 생각해냅니다. 프로젝트는 흥미롭고 눈에 띄는 진행 상황을 보여줄 수 있어야하지만 너무 어렵지는 않습니다. 언어가 정체되면 기본 사항 (구문, 패키지 / 네임 스페이스, 클래스, 정적 / 동적 타이핑 등)을 알려줍니다. 그런 다음 리소스 (도서, 온라인 자습서, 온라인 설명서), 손쉬운 방법 및 프로젝트의 특정 부분을 제공합니다. 그런 다음 각 사람은 여가 시간에 프로젝트를 진행하면서 필요에 따라 문서와 사용자를 참조합니다.

이 프로세스의 장점은 무엇입니까?

  • 사람들은 당신이나 다른 사람의 말을 듣고 지루해하지 않습니다.
  • 사람들은 매우 중요한 실제 기술인 자기 교육 방법을 배웁니다.
  • 지식의 유일한 자원이 아니기 때문에 자신을 과도하게 사용하지 않습니다
  • 언어를 소개하기 만하면되기 때문에 전체 언어를 알 필요는 없습니다. 그리고 그들이 당신에게 무언가에 대해 물어볼 때, 당신은 그것을 빨리 연구 할 수 있습니다. 그러나 5 단계 앞선 단계를 알아야하기 때문에 다른 모든 사람보다 조금 앞서야합니다.
  • 사람들에게 동기를 부여하는 무언가를 만들고 있습니다.

작동하는지 확인하는 유일한 방법은 시도해 보는 것입니다.


클럽 멤버십을 10 명 미만으로 유지할 수 있다면 그룹 프로젝트가 좋습니다. 과거에는 팀이 다루기 어려워졌습니다. 그러나 학생들이 클럽에 참여하지 못하도록 막 으면 대학 지원을받을 수 없으며 10 명 이상의 학생들이 클럽에 참여하는 데 관심이있을 것입니다. 우리 해킹 클럽은 주별 회의에 항상 30 명 이상의 학생들이 있습니다.
Evan Kroske

1
하나 이상의 프로젝트입니까? 모든 그룹 구성원들 사이에서 공통의 관심사를 찾으십시오. 첫 번째 회의는 개인적인 관심사를 조사한 다음 해당 프로젝트를 중심으로 진행되는 프로젝트를 생각해 보려고합니까?
Chris

4

전공과정 흐름도를 보면 , 컴퓨터 과학 전공의 다른 클래스에서 무엇을 기대해야하는지 실제로 오해하고 있습니다.

당신이 이야기하는 수업은 학생들에게 코딩의 다양한 기본 개념을 소개하는 입문 수업입니다. 실제 코딩없이 컴퓨터 과학의 모든 기본 영역에 대한 1 주일 개요를 제공하는 "프로그래밍 개념"처럼 보입니다. 거기에서, 그것의 NORMAL는 C의 입문 과정을, 그리고 C ++의 다른 입문 과정은 일반 컴퓨터 과학 전공. 당신은 몇 가지 코딩 경험이있는 프로그램으로 올 수 있지만, 대부분의 사람들은 없습니다. 이 프로그램은 가르쳐야합니다재귀와 같은 개념, 클래스 작성 방법, 연산자 오버로딩, 템플릿 및 그와 같은 모든 것 (변수, for 루프, if 문 등에 대한 가르침은 말할 것도 없습니다.) 일부 프로그래밍 언어로 코딩하는 방법을 알려줍니다. 그리고 그들은 보통 당신의 대학 수업에서하는 오해의 소지가있는 이름들을 가지고 있습니다. 원하는 조직 수준을 가르치는 수업은 일반적으로 "소프트웨어 엔지니어링"또는 "디자인 패턴"이라고합니다. 전자는 일반적으로 요구 사항이며 후자는 일반적으로 선택 과목이지만 (졸업 수준 일 수도 있음) 둘 다 선택 과목 일 수 있습니다.

컴퓨터 과학 커리큘럼이 소프트웨어 조직에 필요한만큼 초점을 맞추고 있는지, 전공을 재편성해야하는지, 컴퓨터 과학과 소프트웨어 공학이 다른 전공인지에 대한 학계 및 산업계의 논쟁이 있지만 현재는 컴퓨터 과학 프로그램이 정상입니다 .

(그리고 또 한 학기 또는 두 학기 동안, 당신 당신 자신이 아직 가르치지 않은 것들을 가르치는 더 도전적인 수업을 받게 것입니다.)


"정상"에 만족하지 않습니다. 저는 소프트웨어 개발에있어 세계적 수준의 교육으로 대학을 떠나고 싶습니다. 그리고 그것을 달성하기 위해 열심히 일하고 싶습니다. USF 대신 MIT로 편입하려고했기 때문에 MIT의 컴퓨터 과학 및 공학 프로그램을 이상적인 CS 교육으로 사용합니다.
Evan Kroske

@Evan @Ken heh. 그렇다면 우리 대학은 평범하지 않다고 생각합니다. 컴퓨터 응용 프로그램 소개 (즉, Word를 사용하는 방법)-> 컴퓨터 논리 및 알고리즘 (예 : 순서도 및 부울 논리. 실제로는 알고리즘이 없음)-> C ++ 프로그래밍 (구문, OOP, 기본)-> 고급 C ++ 프로그래밍 (알고리즘, 재귀, 포인터)-> Java 프로그래밍 (기본 C ++과 동일)-> 코볼 프로그래밍 (아직까지는 얻지 못했지만 신이 무섭습니다)
Earlz

1

프로그래밍 경쟁은 어떻습니까? 사람이나 팀이 가능한 최소한의 코드를 사용하여 문제를 해결하도록 노력하는 Perl Golf (또는 PHP Golf)와 같은 것? 언어와 경쟁에 대해 더 많이 배울 수있는 좋은 방법은 항상 흥미로운 일입니다.

물론 당신은 단순한 경쟁 이상의 것을 제공해야하지만, 그들은 설정하기 매우 쉽고 나는 항상 그들을 즐겼습니다.


1

당신은 당신이 어떤 구조를 필요로하는 것이 맞습니다. 당신은 자신과 다른 사람들이 배우도록 강요하기를 원하며, 코스 선택에 관한 소프트웨어에 대해 bbing 거리지 말고 앉아있는 것이 아닙니다. 그러나 나는 선생님이 갈 길이 기 때문에 이것을 당신과 함께 수업으로 취급하는지 확실하지 않습니다. 당신은 아직 전문가가 아니며, 이것 또한 무언가를 배우기 위해 있습니다.

소프트웨어 프로젝트를 중심으로 클럽을 조직하는 것은 어떻습니까? 일부 장난감 숙제 프로그램은 아니지만 실제로 유용하다고 생각되는 것입니다. (“마지막으로 유용한”은 여전히“유용한”자격을 갖습니다. 당신은 배우고 자 노력하고 있지만 스타트 업을 찾지 못했습니다. :-)) 클럽에 여러 팀을위한 충분한 인원이 있다면, 여러 팀을 구성하십시오. 팀은 사용하려는 언어, 사양, 노동 분담 방법 등을 결정하고 각자의 시간에 개별적으로 작업합니다. 그런 다음 주별 클럽 회의에서 대면하는 방법, 장애물이있는 곳, 배운 깔끔한 물건 등을 토론합니다.

또한 여러분이나 다른 사람이 공유 할 가치가 있다고 생각하는 교수, 전문가 또는 비디오 등 초빙 강사를 데려 오는 아이디어를 정말 좋아합니다. 따라서 다음과 같이 야간 모임을 구성 할 수 있습니다.

  1. 그것을 잘 아는 누군가의 소프트웨어 주제에 대한 초청 강의.
  2. 강의에 관한 Q & A / gab 세션 (강사들이 참여하지만 비디오를 보려고하는 사람들과 함께)
  3. 프로젝트 팀으로 나누고 프로젝트를 수행하십시오.

저녁이 걸리고 지식을 향상시키는 선함이 가득합니다. 잘만되면

어쨌든이 프로젝트로 행운을 빕니다. 바닥에서 벗어나면 다시 돌아와서 어떻게 작동하는지 알려주세요.


1

그룹 프로젝트는 좋은 생각입니다. 특히 프로젝트가 대학이나 동료 반 친구들에게 도움이 될 수있는 경우.

대학에서 학생들을위한 프로젝트를 진행하는 동안 그룹에 합류했습니다.
가장 인기있는 프로젝트는 캠퍼스의 360도 가상 투어였습니다.
필요한 장비를 구입하고 캠퍼스 주변에서 사진을 찍기 시작했습니다. 그런 다음 투어를위한 웹 사이트를 구축하고 호스팅을 파악한 후 대학의 웹 사이트에 예비 학생들을위한 정보를 제공했습니다. 이 프로젝트는 단순한 프로그래밍 작업 이상의 것이 었으며 프로그래머가 아닌 사람들도 관심을 가졌습니다.

귀하가 사용할뿐만 아니라 캠퍼스 내 모든 사람이 사용하고자하는 새로운 웹 사이트 또는 응용 프로그램을 식별하십시오. 목표가 있다면 배우는 것이 더 쉽고 재미 있다고 생각합니다.


나는이 아이디어를 정말 좋아한다. 신생 클럽이 대학의 IT 시스템을 추가하거나 향상시킬 수있는 방법이 많이 있습니다. 호기심으로 대학에 어디로 갔습니까?
Evan Kroske

PA의 Clarion University. 나는 한 인터뷰에서 아들의 대학 검색을 위해 투어를 사용했다고 언급 한 인터뷰에도 갔다. 매우 시원했습니다.
Todd Bumbarger

1

이것이 과외 활동이 될 경우, 숙제를하지 마십시오. 그저 절름발이입니다.

학교에서 github 그룹을 시작하고 포스터 / 이메일을 보내면 멋진 일을 할 수 있습니다 (요즘 아이들이 Facebook과 Twitter를 사용하는 것 같아요? 함께 관심이있는 5-6 명으로 구성된 그룹을 확보 한 경우 프로젝트를 결정하고 작업하십시오.

관심이 없다면, 합리적으로 숙련 된 사람이라면 오픈 소스 프로젝트에 참여하는 것은 엄청나게 쉽습니다. github에서 관심있는 것을 포크하고 개발자와 이야기하기 시작하면 간단합니다.

이전 세대에 비해 장점은 지리적으로 이질적이면서도 레벨과 언어로 프로그래머에게 연결하는 것이 어렵지 않다는 것입니다. 그리고 나는 단지 이메일을 보내는 것을 의미하지 않습니다. Skype / iChat / Ventrilo는 음성 회의를 쉽게하고 git / mercurial (및 관련 프로젝트 페이지 온라인)과 같은 도구를 사용하면 대서양 반대편에 있어도 그룹으로 쉽게 코딩 할 수 있습니다. 요즘 사회적으로 코딩하지 않는 이유는 없습니다.

마지막으로, 그들이 알고 / 알고 싶은 언어로 사람들을 판단하는 습관을 들지 마십시오. C ++이 프로그래밍의 한계를 나타낸다고 생각하는 사람들의 유일한 Smalltalker 일 때 빠지기 쉬운 함정이지만 많은 친구를 얻지 못하고 특정 도구에 대한 편견을 줄 것입니다. 나는 기술과 경험에서 저보다 앞서있는 해커들을 만나고 같은 프로젝트에서 LISP, Perl 및 C 를 사용했습니다 . 전문 개발자 힙의 맨 위에있는 사람들은 작업을 수행하는 한 도구의 레벨이 중요하지 않은 경향이 있습니다.


1

이것은 네트워킹 기회처럼 들리지만 비슷한 수준의 경험 / 훈련을 통한 프로그래밍에 관심이있는 많은 학생들이 있습니다 ... 당신은 그들을 찾지 못하고 있습니다 ...

탬파베이 지역의 Code Camps (무료 개발자 관련 교육) 중 하나에 참석했거나 로컬 프로그래밍 사용자 그룹 중 하나에 참여 했습니까?

이 두 가지 리소스 모두 네트워킹 기회를 제공합니다. 동료 학생들을 훈련시켜야한다는 느낌이 들지 않고 친구를 나와 함께 초대 한 다음 다루는 내용에 대해 토론 할 수 있습니다.

또한 직업으로 프로그래밍하는 사람들에게 접근 할 수 있으며 "실제 세계"에서 어떤 종류의 상황이 발생할 지에 대한 아이디어를 얻을 수 있습니다.

이러한 지역 자료를 살펴본 후에도 자신의 프레젠테이션을 통해 지식을 공유 할 수있는 기회를 찾을 수 있습니다. 배운 내용을 사용자 그룹과 공유하거나 코드 캠프 프레젠테이션의 발표자로서 공유하면 배운 내용에 대한 피드백을 얻을 수 있으며 더 많은 정보를 얻을 수 있습니다.

저는 탬파베이 지역에서 자랐으며 Microsoft가 후원하는 많은 무료 행사에 참석했습니다. 지역 사용자 그룹은 이러한 행사에 참여하는 방법에 대한 정보를 가지고 있어야합니다.

글쎄, 이것은 긴 바람의 대답이었습니다 ...

tampacodecamp 웹 사이트에 따르면 탬파의 다음 코드 캠프는 2010 년 11 월 13 일에 있습니다.

지역 INETA / 프로그래밍 사용자 그룹에 대한 링크는 다음과 같습니다.

http://www.tampadev.org/

(이 그룹을 처음 사용했으며 하나의 링크 만 포함 할 수있었습니다.)


1

귀하의 그룹이 관심을 갖고있는 오픈 소스 프로젝트 (또는 둘 이상)를 찾는 것은 어떻습니까?

당신이 직면하게 될 가장 큰 도전은 코드를 작성하는 것이 재미 있지만, 모든 주변 관리자 등이 빠르게 고통스러운 경험으로 바꿀 수 있다는 것입니다. 기존 오픈 소스 프로젝트를 찾을 수있는 경우 최소한 일부 지원 프레임 워크가 있어야합니다.

오픈 소스를 사용하면 좋은 습관이 생길 수 있으며, 기고자에 비해 귀가 약간 젖어 있지만 다른 사람들보다 한 가지 큰 이점이 있습니다. 모두 같은 위치에 있고 오픈 소스 커뮤니티 작업으로 인해 가장 큰 고통 중 하나 인 팀원과 대화를 나눕니다 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.