我如何在学校引导一个软件开发社区?


14

我是南佛罗里达大学的学生,他对计算机科学计划的教育环境感到沮丧。现在,我正在学习“程序设计”。我应该学习如何将我的源代码组织为功能和模块,以使我的程序易于阅读和维护。取而代之的是,我正在学习C语言中的数组和递归。下学期,我必须学习“面向对象的设计”,这是通过C ++进行教学的(shudder。)

两年前,我爱上了编程,从那时起我一直在学习尽可能多的东西。参加另一门C ++类的前景让我几乎哭了。因此,我认为我将成立一个编程俱乐部,以便结识同样有志向的学生,学习新语言,讨论软件开发主题并与其他学生开发人员一起工作。

但是,我开始意识到可能没有其他学生分享我的软件开发经验。这不是因为缺乏动力而是因为缺乏机会:我只知道一个编程类(“编程语言”),而没有关于实际软件开发的类。其他人只有使用C和C ++编写琐碎脚本的经验。

我已经意识到,如果我想与其他学生软件开发人员一起工作,我将不得不自己培训他们。现在,我正计划使该俱乐部成为软件开发训练营,教会员如何使用现代工具和语言开发软件。显然,采用许多可能的方法来启动一个非正式的软件开发课程是一项艰巨的任务。亲爱的读者,我对您的问题是

我的进攻计划是什么?

我是不是该

  • 自己给俱乐部讲课,试图平衡俱乐部工作与家庭作业?
  • 要求CS教授在其专业知识范围内教授与会员无关的话题吗?
  • 尝试在学校内部或外部寻找一个富有同情心,经验丰富的开发人员,谁可以分担我的工作量?
  • 显示视频讲座(来自MIT OpenCourseWareGoogle Tech Talks等)?
  • 举办动手编程研讨会?
  • 分配作业?
  • 还有其他事吗

3
您为什么对通过C ++进行的OOP感到震惊?您只是对使用高级语言感到不舒服吗?如果是这样,您期望如何学习OOP?
凸轮

4
@Evan:坦率地说,如果您认为C ++是一种低级语言,那么C ++课程将是您的理想选择。您会学到很多。对于初学者来说,C ++乍看起来似乎是底层的,因为它提供了底层的功能,但您绝对不必使用它们。实际上,大多数时候,您将使用STL及其所有高级OOP功能。
凸轮

10
与Java,Ruby,Javascript,C#等相比,C ++是低级的。与许多其他语言相比,C ++是高级的。似乎是毫无意义的辩论。
Fishtoaster

2
@fishtoaster:与Java和C#相比,我不会说C ++是低级的。至少与那些语言一样高级(我对另一种语言了解不多)。唯一的好处是它也可以是低级的,因此您可以两全其美。
n1ckp 2010年

1
@ n1ck:指针是理所当然的事情(我知道C#有它们,但很少使用它们),手动内存管理,没有lambda(不确定C#给他们起了什么名字,python使用lambda),没有本地的foreach,更小的标准库,更频繁的位旋转,不同平台所需的重新编译等。您不需要将汇编程序的级别降低到这两个之上。
Macha

Answers:


20

坦白说,您的整个态度都与我有关。您甚至还没有将小组召集在一起,并且已经假设您将是只有任何人可以传授知识的人,并且应该决定小组的工作。

最好的选择是将初始小组聚在一起,然后集体讨论他们想做什么。您个人想做什么与小组要做什么无关。在第一次会议之前,如果决定在没有其他小组成员投入的情况下该怎么做,您将遇到一个傲慢的白痴,我不想与之自愿合作。这样,您就可以在小组开始之前将其杀死。


你是绝对正确的; 我不必自己制定和实施俱乐部的总体规划。但是,我需要有关俱乐部活动和会议的想法,以便与俱乐部其他成员进行讨论。
埃文·克罗斯克

5

由于俱乐部中的每个人都是自愿来的,因此您需要使其有趣并激发动力。功课并不是完全有动力的。

教任何人都很辛苦,但为什么不尝试以最终目标为目标的那种放任自流的教学呢?基本上,起初您会聚在一起,并提出一个小组项目和一种语言。该项目需要有趣并且能够显示可见的进度,但又不要太难。一旦确定了该语言,就可以教给他们基础知识(语法,包/命名空间,类,静态/动态类型等)。然后,您向他们提供资源(书籍,在线教程,在线文档),一种掌握您的简单方法以及要进行的项目的特定部分。然后,每个人都在业余时间从事项目工作,并根据需要咨询文档和您。

这个过程的优势是什么?

  • 人们不会无聊地听您或其他人在每次会议上都无聊的事
  • 人们学习如何自学,这是非常重要的现实技能
  • 您不是知识的唯一来源,因此您不会过度投入自己
  • 因为您只需要向他们介绍该语言,就不必先了解整个语言。当他们需要问您一些事情时,您可以快速进行研究。但是,您确实需要比其他人领先一点,因为有些事情需要知道接下来的5个步骤
  • 您正在创造一些东西,这会激励人们

看看是否可行的唯一方法是尝试一下。


如果我可以将俱乐部会员人数控制在10名以下,那么一个小组项目将是一个好主意。此后,团队开始变得笨拙。但是,如果我禁止学生加入该俱乐部,我将无法获得大学的支持,而且我敢肯定,有10多名学生会对加入该俱乐部感兴趣。我们的黑客俱乐部在每周的会议上总是有三十多名学生。
埃文·克罗斯克

1
那么不止一个项目?尝试在所有小组成员之间找到共同的利益。第一次会议调查个人兴趣,然后尝试提出围绕这些项目的项目?
克里斯,2010年

4

查看您的专业课程流程图,您确实误解了计算机科学专业不同课程的期望。

您正在谈论的课程是入门课程,向学生介绍了编码中的各种基本概念。看起来像“编程概念”,是该行业的入门级课程,对计算机科学的所有基本领域进行了为期1周的概述,而没有实际的编码。从那里,它的作者,以在C的入门课程,并在C ++中的另一个入门课程是师范大学的计算机科学专业。可能会以某种编码经验进入程序,但大多数人却没有。该程序必须诸如递归,如何编写类,运算符重载,模板以及所有其他内容(更不用说关于变量,for循环,if语句等的教导了)之类的概念,因此基本上设计了两个类来教您如何使用某种编程语言进行编码。而且它们通常具有您的大学班级使用的那种具有误导性的名称。教您所需组织级别的课程通常称为“软件工程”或“设计模式”。前者通常是一项要求,而后者通常是选修课(可能是大学毕业生),但两者都可能是选修课。

有一个关于计算机科学课程是否专注于软件组织一样,因为它应该,是否主要应重组,以及是否计算机科学和软件工程是不同专业的学术界和工业界的争论,但现在,您的计算机科学程序师范大学

(然后呆在那里,再过一两个学期,您进入更具挑战性的课程,向您传授尚未教给自己的东西。)


我对“正常”不满意。我想离开大学接受世界一流的软件开发教育,并且我愿意(努力)实现这一目标。我原本打算转学到MIT而不是USF,所以我将MIT的计算机科学与工程计划作为理想的CS教育。
埃文·克罗斯克

@Evan @Ken heh。那时我的大学我会认为是不正常的。计算机应用简介(即,您如何使用Word)->计算机逻辑和算法(即流程图和布尔逻辑。实际上没有算法)->使用C ++编程(语法,OOP,基础知识)->高级用C ++编程(算法,递归,指针)->用Java编程(与基本C ++相同)->用Cobol编程(还没有
走到那儿

1

编程比赛怎么样?甚至像Perl Golf(或PHP Golf)之类的公司,也需要您的人(或团队)使用最少的代码来解决问题?这是了解语言和比赛的好方法,总是使事情变得有趣。

当然,您不仅应该提供比赛,而且还很容易设置,而且我一直都很喜欢。


1

没错,您需要一些结构;您想强迫自己和其他人学习,而不仅仅是坐在闲逛软件/ ching琐选课上。但是我不确定将这作为与您一起作为老师的课程是走的路;您还不是专家,并且您也在此学习一些东西。

如何围绕软件项目组织俱乐部?不是一些玩具家庭作业程序,而是一些您认为可能真正有用的东西。(请注意,“仅在边际上有用”仍被视为“有用”;您正在尝试边做边学,而不是初创公司。团队决定要使用哪种语言,规格是什么,如何分工等等,等等,并在自己的时间分别进行处理。然后,在每周的俱乐部会议上,您将讨论如何面对面,路障在哪里,您学到的东西精巧等。

我也非常喜欢引进客座讲师的想法,他们是您或其他人认为值得分享的教师,专业人员或视频。因此,您可以像这样组织每晚的会议:

  1. 一位非常了解该软件的人做客座谈。
  2. 讲座的问答环节(希望有讲师参加,但只是参加视频的人之中)。
  3. 分成项目团队,做项目工作。

那将占去一个晚上,并充满了增强知识的优点。希望。

无论如何,我希望你在这个项目中能走运。当您将它付诸实践时,我希望您能回到这里,并告诉我们它是如何工作的。


1

小组项目是一个好主意。特别是如果该项目可以为大学或您的同学提供帮助。

我在大学期间加入了一个为学生设计项目的小组。
最受欢迎的项目是校园360度虚拟游览。
我们购买了所需的设备,并开始在校园周围拍照。然后,我们建立了一个网站来容纳这次旅行,确定了主办方,并将其显示在大学的网站上,供潜在学生使用。这个项目不仅涉及编程任务,还引起了非程序员的兴趣。

尝试识别不仅要使用的新网站或应用程序,还要校园中的每个人都想使用的网站或应用程序。如果您有目标,我认为学习起来会更轻松,更有趣。


我真的喜欢这个主意; 我的新俱乐部有很多方法可以增加或改善学院的IT系统。出于好奇,你在哪里上大学?
埃文·克罗斯克

宾夕法尼亚州克拉里昂大学。我什至曾经去过一次面试,面试官提到曾将这次旅行用于她儿子的大学搜寻。太酷了。
Todd Bumbarger 2010年

1

如果这将是一项课外活动,请不要做家庭作业。那只是la脚。

通过建立一个github小组并在学校里张贴海报/画图,您可能会变得很酷(我想这些天孩子们也使用Facebook和Twitter?也可以达到这些点是个好主意)。当您有5-6个真正感兴趣的人在一起时,请决定一个项目并进行工作。

如果没有兴趣,只要您有足够的技能,就很容易加入一个开源项目。简单到在github上发布您感兴趣的东西,并开始与开发人员交谈即可。

您拥有上一代人所没有的优点是,在地理位置上完全不同的情况下,与您所在级别和语言的程序员建立连接完全没有困难。我的意思不是只发送电子邮件。Skype / iChat / Ventrilo使语音会议变得容易,即使您在大西洋的对岸,诸如git / mercurial之类的工具(以及相关的在线项目页面)也使作为团体的一组代码变得容易。这些天真的没有理由不进行社交编码,如果您要这么做的话。

最后,不要养成用人们知道/想要知道的语言来评判人们的习惯。当您是一群认为C ++代表编程极限的人中唯一的Smalltalker时,这很容易陷入陷阱,但是它不会吸引很多朋友,并且会使您对某些工具有偏见。我见过的黑客谁是远胜我的技能和经验,谁使用LISP,Perl中和C 在同一个项目。只要能够胜任工作,专业开发人员队伍的顶端的人们就不太在乎其工具的级别。


1

这听起来像是一次交流的机会,我敢肯定,有很多对编程感兴趣的学生都具有类似的经验/培训水平……您只是找不到他们……

您是否参加了坦帕湾地区的代码营(免费的开发人员相关培训)之一,或加入了本地编程用户群体之一?

这两种资源都将为您提供联网机会。而且,您不必像要训练自己的同学那样,而是可以邀请您的朋友和您一起讨论所涵盖的内容。

您还将获得与正在从事编程工作的人员接触的机会,并且可以了解“现实世界”中可能遇到的各种情况。

浏览了这些本地资源后,您仍然可能会发现通过自己的演示文稿分享知识的机会非常好。与用户组或作为代码训练营演讲者分享您所学的知识是一种很好的方式来获取对所学知识的反馈,并可以使您进一步学习。

我在坦帕湾地区长大,并参加了许多免费的Microsoft赞助的活动,您当地的用户组也应该了解有关如何参与这些活动的信息。

好吧,这是一个漫长的答复...

根据tampacodecamp网站,下一次在坦帕举行的Code Camp将于2010年11月13日举行。

这是您本地INETA /编程用户组的链接:

http://www.tampadev.org/

(我是该小组的新手,只能添加一个链接。)


1

如何找到您的小组感兴趣的开源项目(或多个)?

我认为您可能会面临的最大挑战是,尽管编写代码很有趣,但周围的所有管理员等都会迅速将其转变为痛苦的体验。如果您可以找到一个现有的开源项目,则至少应具备一些支持框架。

开源将使您养成一些良好的习惯,尽管与某些贡献者相比,您会有点耳聋,但是与其他人相比,您将拥有一个主要优势-您将都在同一个地点,并且能够与您的团队成员进行对话,这通常是开源社区工作中最大的麻烦之一...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.