MIT: The Missing Semester of Your CS Education

https://missing.csail.mit.edu/

Why we are teaching this class

During a traditional Computer Science education, chances are you will take plenty of classes that teach you advanced topics within CS, everything from Operating Systems to Programming Languages to Machine Learning. But at many institutions there is one essential topic that is rarely covered and is instead left for students to pick up on their own: computing ecosystem literacy.

Over the years, we have helped teach several classes at MIT, and over and over we have seen that many students have limited knowledge of the tools available to them. Computers were built to automate manual tasks, yet students often perform repetitive tasks by hand or fail to take full advantage of powerful tools such as version control and text editors. In the best case, this results in inefficiencies and wasted time; in the worst case, it results in issues like data loss or inability to complete certain tasks.

These topics are not taught as part of the university curriculum: students are never shown how to use these tools, or at least not how to use them efficiently, and thus waste time and effort on tasks that should be simple. The standard CS curriculum is missing critical topics about the computing ecosystem that could make students’ lives significantly easier.

The missing semester of your CS education

To help remedy this, we are running a class that covers all the topics we consider crucial to be an effective computer scientist and programmer. The class is pragmatic and practical, and it provides hands-on introductions to tools and techniques that you can immediately apply in a wide variety of situations you will encounter. The class is being run during MIT’s “Independent Activities Period” in January 2020 — a one-month semester that features shorter student-run classes. While the lectures themselves are only available to MIT students, we will provide all lecture materials along with video recordings of lectures to the public.

ifLab协助开源课项目辅导

本学期计算机学院的《开源软件开发技术》课程参考了康奈尔大学CS5152的课程设计,让选修课程的大二同学们分组完成开源项目,并邀请行业导师对小组进行指导。由于选课人数多达250多人,最后分为40多个项目小组,由10位校外行业导师进行指导,每位导师指导3-4个小组。

课程同时设计了3个周六的现场编程开发,各小组在9:00-17:00坐在一起完成各自的项目,通过这个集中时间高效实践。ifLab的导师们在这三天里轮流到编程现场辅导同学们编程,为同学们讲解开发开源软件的具体方法、工具,并解决开发中的问题。

提升我校同学们的技术实践能力一直是ifLab努力的方向,将课程和社团活动结合在一起是一种新的形式,课程提供了学习内容社团组织提供了了学习形式,内容和形式得到了结合。ifLab将在今后继续协助开源课进行项目实践,并欢迎其他技术课程来和我们合作。

ifLab的方法和价值观

一开始,我们把社团当作一个技术培训的团体。技术好的同学教技术不好的同学,固定时间固定地点。我们希望同学们互相帮助,发展的更好,这是一个朴素的想法。

但是18岁的年轻人需要的不仅仅是技术,仅仅只是学习技术,也不能让我们成为更好的人。我们做对了一些事情,也做错了一些事情,思考和发展出了一些方法。遵循这些方法,社团开始走到了正确的方向,也没有偏离最初的想法。

多层结构

社团是三个层次的人群,内层是导师们大家,有共同的价值观,共同成长,效率最高网状结构;中间层是社团新人,通过导师-学员把知识和方法论传播到新人,效率次之树状结构;外层是学校的其他同学,社团通过比赛、辅导、讲座来传播,效率最低广播式。

扁平组织

我们不像一般的学生社团以职能来划分部门组织,也不像一般的技术社团以技术方向来划分技术组织。我们以人和人的联结方式来划分组织,没有管理层级不划分部门,组织的目的就是社团每个人的学习和成长。社团里的主要组织方式是导师和学员,不分年级有能力的都可以当导师,新入社团的都是学员。每个导师都可以完成多种工作,每个导师都可以有多个技术方向。

导师

一部分没有自制力的大学生还需要导师来监督。更重要的是,导师可以就宏观的人生问题或者具体的作业问题给予交流。但是大学里面并没有那么多的教师去关注每位有需求的大学生。所以我们设计了一个组织方法,让有能力的同学担任导师。每年社团招新会招入一百名左右的大一新生,社团内部推选十多名大二到大四的同学作为导师。每个导师会负责对接若干名学员。导师都是在自己的领域取得成绩的学生,他们并不一定给予学员具体的技术辅导,而更加重视和学员沟通学习方法、专业发展、职业路径,还有生活的其他方面,等等。如果学员需要某种技术的指导,导师会在整个导师群体中寻找可用的资源。

记录

没有记录的信息都会丢失。2019年秋季开始,我们决心认真记录社团。每一次活动都写新闻稿,这是对社团本身的记录;每位导师每周写周报,记录新招收的成员的情况,并做评估,这是对成员的记录。有了记录才能了解社团的整体,并作出优化。

从做中学

这是杜威的教育理念。对于计算机方向的学习更加如此。没有人能仅仅通过读书和写作业学会真正的编程。具体的项目,以及基于真实的实践是必须环节。社团建立之初以「实践」为名,意在让各位成员脚踏实地,认认真真的对待每一个技术点,对待每一件事,通过不断去解决技术上的问题,从而达到完善自身的目的。解决的问题越多,我们看待一件事情所拓展出的视野也就越宽广,对这个领域上的探索也就越深入。

文化

文化和价值观是一个组织凝聚力的来源。社团的导师们都具有优秀学生所必须的自我驱动力,学习习惯,工作方法,人生态度。通过导师们提供给各位新同学一个良好的氛围,让新生们真实的体会到学习不是为了老师和家长,不是为了比较,不是为了物质回报,而是为了成为一个完整的人。在社团这个大背景下,我们与优秀的人一起做有挑战的事。社团是一个由人构成的集体,集体荣誉感一直是社团所信奉的价值观,我们强调团队合作,也推崇特立独行。

形式与内容

大学生有一些日常要完成的学习任务。比如大创、比赛,发表论文、毕业设计等。社团开展针对这些学习任务的协作活动,让社团的力量助力同学们更好的完成日常任务。这基于一个简单的想法:如果有多个内容需要去做,那么尝试用一个形式把它们融合在一起,在同一个时间空间来完成,而不是孤立的单独进行。大学生们的实践任务就是内容,社团的组织和活动就是形式,我们将内容和形式进行结合。在学校的这些日常任务当中,我们希望成员能够在社团这个大环境下,发挥出各位成员的主观能动性,把自己的解决日常任务的经验进行传承和优化,帮助更多新生从容不迫的进入大学学习生活中。

技术方法论

纵观计算机行业发展史,新旧技术更迭,从来没有一门技术是「银弹」,我们希望将主流技术圈子的工具链,组织方法,积极的传播给社团的新成员,比如开源、结对编程等等。结合方法论与自身的个人经历来找到适合自己的技术成长路线。

多元化

这体现在性别上,社团努力的接纳女生成员,帮助女生学习技术;这也体现在对公益活动的热心参与上,给社团成员制造参与女子编程,少儿编程的机会,让成员体验回馈社会;这也体现在社团交流的不只是知识和技术,还会交流哲学、职业发展、社会等等话题。

ifLab2019秋季工作计划

ifLab新一任导师已经完成了招新工作。以下是本学年的工作计划。

1 对新生建立跟踪系统。每一个招新进来的新生,在第一学期,导师每周更新他的状态,学什么,有没有联系等等。这些信息全体导师可见。

2 为社团成员设立新的比赛目标清单。在社团毕业学长的帮助下,引导社团有能力的同学参加高等级比赛,改变学校每年都是那些低水平比赛的现状。

3 鼓励大家通过比赛、大创、项目来发表论文。请研究生学长来教大家怎么写好论文。

4 继续举办一次女子编程,举办一次编程马拉松。女子编程可以成为常规活动,看大家的热情

5 开始参与少儿编程公益活动志愿者。这个活动和校外的非营利组织合作开展,有丰富的企业界和教育界资源。

6  每个月出一份社团简报,大家集体来写,让社团大家知道社团发生了什么,在做什么,有什么新成绩

特别栏目:工商银行面试经验

毕业面试春招时间临近,以下内容来自社团同学阮翀,希望能为大家面试银行类工作提供经验。谢谢阮同学的认真分享。

我,2013级计算机学院软件工程1302班学生,于2017年在本校获得学士学位,并于同年来到中国工商银行北京市分行科技部。应曾老师之托,我写下这篇文章,不希望各位师弟师妹完全生搬硬套自己,因为毕竟大家的情况不完全一样,但我希望这篇文章能够对各位在未来的考试以及相应的面试中有所帮助。

首先,我想先说说我对四大银行理解。所谓四大行,一般是指原来国有的四大银行,即工行(中国工商银行)、农行(中国农业银行)、建行(中国建设银行)以及中行(中国银行)。由于在上世纪中下旬中,国有银行改制,渐渐的组成更为全面的商业银行。但是由于以前四大行有明确的分工,所以在现在来说,每家银行在分工之下的领域中更为突出。例如中行原来是专门对外的机构,所以在海外的知名度要优于其他大银行,建行主要是负责国家建设之类的工程,这点从名字不难看出,同理类推我们就可以大概知道工行以及农行突出的领域。

相比其他三家国有银行,工行相对来说比这三家的规模都要庞大,举个例子,工商银行在北京市分行的人员总数大概是19000人,差不多是最多的,排在第二的建行大概是11000人左右。对于薪酬而言,排序是工行、建行、中行,农行排在最后,但这只是平均数,并不是绝对的。

其次,我想说一下职位的选择。尽管各大行都是国有银行,但在机构上却是不大相同。在招聘上我们经常可以看到数据中心以及开发中心从层级上来说是属于总行,然后在总行下的各个省行、直辖市行会有自己的科技部。但是建行却是个例外,因为在总行之下的研发任务统一交给了总行之下的子公司,叫建信神马的,所以这时候大家要注意,尽管这是子公司,但是并不算编制之内,所以至于酬劳以及福利肯定会不如在编制内的。言外之意是尽量在行里干,外面子公司的岗位尽量不要接。然后我们在说说总分行的差别。首先来说分行相对来说是要比总行拿的多。曾经我师傅在闲聊时曾经提到,说有一个博士生去了我们的北数(北京数据中心,在西三旗附近),半年拿了不到4w,最后年终绩效只拿了8k多。因此,大家在选择岗位的时候,可以根据个人需要从总分行进行选择。如果单从薪酬方面来说,总行的工资标准是全国平均工资为基础,而北分是北京平均工资标准为基础。这里着重说一点就是工作尽量选择在机关(科技部也算机关),所谓的机关是指分行部室以及直辖的部门(科技部),相比较于网点,机关的各项福利指标都要比网点高出一大截。在网点的话是需要看网点所在支行的效益,否则也会很差。当然,凡事总有例外的,工行北分下的翠微支行基础工资比北分高,因为这个支行大部分是军队的户头,工作人员多为军队家属或者子女,曾经有个排序说明工行分行效益:北上广深翠,这个翠就是指翠微支行,它是唯一可以和分行相提并论的支行。除了翠微之后,例如海西支行、长安支行等也都是不错的支行,可以酌情考虑一下。

最后来说一下考试和面试。四大行的校招时间大概为每年的秋季10月底份开始,12月份结束,春季为3月份开始,6月份结束。曾经有人问我,春招和秋招到底哪个好一点。我个人的观点是秋招相对来说好像一些,春招主要是为捞一些落榜的考生以及一些归国的海归研究生,所以春招对于本科生来说,不是很占优势,而且在春招的时候可能会面临名额较少的问题,毕竟秋招是先开始的,可能招满后就不再招募。银行的招聘考试一般是委托公司进行考试的,基本上委托公司就那么几家,而且最重要的是这几家公司是由题库的!也就是说,大家所考的题目是事先出好的,所以网上的往年试卷还是值得看一眼的,毕竟会出现原题,亲测可用。但是有的年份会往题库里面加入一些新题,也不能完全指望着过去的卷子,还是要动手多做一做。考试一般为2小时到3小时之间,就我考得4场来说,时间是相当紧的,而且卷子的涵盖面也很广,包括数学、语文、英语、实事、逻辑、金融以及一些专业题。专业题没什么难的,主要是一些基础常识。数学基本上就是一些计算以及一些几何,相对于大家考过高数来说真的比较简单,可能会涉及一些概率论的基础。英语大概就是4级水平就可以应付了。重点在于这个逻辑,这个逻辑题我不建议深扣,因为实在是太绕了,建议这部分最后再做,因为相对于后面的题,这个分实在是不好拿,所以先把后面的做了。实事大家就没事多看看新闻就可以了,新闻联播也可以,海峡两岸也可以,反正会涉及大部分的热点内容。金融方面的知识,相对于其他题目来说比较专业,软件工程经济学中会有所涉及,但是并不是特别多,但是为这一次看又不是很值得,因此买一本题库刷刷题目我觉得就可以了。考试一般比较晚,时间可能是11月初到12月下旬,说不准,这个时间要看各个单位的安排,一律是机考,都是选择题,所以即使你不会还是25%的概率是对的。如果你顺利的考试通过,那么接下来会有面试。面试可能分为几道环节,主体的环节我只知道几种(就我接触的来书):一种是给个议题,然后分为两组讨论,之后进行辩论,记住一定要当领头的代表自己组发表观点,对评委的印象好一些,最后整个组要得出一个统一的结论;还有一种是一个议题正反两方面进行辩论,一定要说服对方,这样才可以获得高分,这种情况尽量多发言。面试的评委一般是行内人员和公司共同组成,然后打分推荐职位,所以我希望大家在这时多多表现,还有就是一定要穿一身好的西服,这不光是对自己,也是对他人的尊重,同时也能给各位评委一个良好的印象,面子工程多花点,回报还是很大的。面试完之后,可能会有一个行内人员对你们的谈话时间(农行),但也有把这个安排到签约前的。反正就是跟你说收大概的状况,然后薪酬之类的。如果你一切顺利通过了面试,就可以来到签约的环节。签约的时候,一般都是两个人单独对你一个,会把你的面试结果通知你,并告诉你为你推荐的岗位,这个推荐岗位基本上就是你签约后的岗位,所以签约的时候一定要慎重,当然,人力也会给足你时间去打电话和家里商量。

大概想说也就这么多了,我想在这里先预祝各位学弟学妹们能够马到功成,找到一份好工作;如果没考上,也不用灰心,银行招聘的流程相较于其他公司,算是最正式的了,经历一下也是很不错的,也是一种宝贵的经验。如果各位还是有需要咨询的,可以在群里私信我,我一定知无不言言无不尽。

 

 

 

2019春季新学期社团项目

# 社团空间管理

配备钥匙的导师,请排列值班表。值班内容为空间打扫及为大家开门。时间为课后时间。

(薄建博,刘逸芸,戚译中,徐正科,王任泉,付尧,张芳梓)

白天时间,老师将来为大家开门

# 社团项目

课程表APP项目(王仁泉 ),目前在我校已经有70%用户,前后端都自己开发,技术栈Django&Flutter,是个很好的实战锻炼机会,欢迎直接联系泉导。

金融量化分析项目,合作伙伴对外经贸大学金融学院,目前在学习阶段。

学习数据分析项目,学术领域做论文学习和发表,技术领域做数据分析软件开发,技术栈Django Web。合作伙伴清华大学出版社、重庆大学、天津师范大学。

图形编程(Scratch)项目,做文献学习和论文发表,合作伙伴Codelab、网易、联想、绿米等。

重庆大学教育大数据技术交流活动

从2014年开始社团开始参与Open edX开源社区,和国内多个大学进行合作研究。近期社团应重庆大学邀请,赴重庆和重庆大学教育大数据团队进行技术交流。

会议中展示了我们社团团队在Open edX Xblocks开发和Insights数据分析方面的开源工作,与重庆大学的老师和同学们进行了技术探讨。Open edX作为主流的在线教育开源软件,在教育理念、技术架构、学术方向上对教育大数据研究都有积极意义。我们社团将和国内高校持续合作研究,推进国内Open edX开源社区工作。