计算机类专业大学生的课外自学_大一计算机专业的学生在课外做些什么-程序员宅基地

技术标签: 学习指导  IT学子成长指导  

  大学生的学习,除了按照培养方案完成基本的学习任务(课内学习),还需要安排出符合自己特点的课外自学。课内学习是毕业的保证,也是综合素质和专业基础理论和专业基本能力的保证,而由自己安排的课外学习,是进一步提高的必要,是形成自己的专业特长,尤其是具有实践能力的必不可少的环节。一个成功的大学,应该是课内、课外学习充分结合,相互补充而来的,这两方面缺一不可。在现在大学生普遍对应试型学习更适应的情况下,我尤其看重课外学习能力的提高,看重以实践为主线,安排出适合大学生个人需求的课外自学。这是作为大学生适应大学,改变自己的学习,进而获得终身学习能力的关键。

  大学生的学习,是要求在理论和实践两方面兼顾,并力求相互促进的。对于计算机类专业,基础理论体现在算法理论和计算机系统理论方面,涉及到的课程主要包括算法与数据结构、计算机组成与体系结构、操作系统、编译原理等。像软件工程、嵌入式系统、Web开发一类的课程,以项目开发为目标,用以指导实践。


(一)自学的种类

  在课外自学中,老师课堂的要求仅是基础,完成老师要求的课外学习,如做作业,阅读指定的材料,只是自学的一种最基本的层次,是所有学生都应该做到的。这种自学称之为“限定性自学”。反思大学中存在的诸如抄袭作业一类的丑陋现象,这个层次的自学都不能保证,大学的学有所成几乎是空想。

  随着课程进度的进展,学生主动地阅读其他的课外书籍,完成难度、内容适合的小型应用题目和项目,体现的是一种“主动性自学”。有了主动性的自学,学习效果真正保证,而且这种主动性延续到工作当中,是一种非常宝贵的品质。还记得我在上大学期间,每门课除了听讲,看课本外,都要另外再看至少两本书的,当时不少大学生都在这样做,而今感觉大多大学生只看课本,甚至个别的连看课本都不看。我在学习编译原理期间,就用自己熟悉的PASCAL语言,写了一个小的编译器,其实只完成了词法分析和语法分析的部分。这一段经历给自己留下了美好的回忆,实际上,也真提高了编程的能力,同时认识到课程中抽象描述的原理中蕴涵的美妙。

  在本文中,我想重点谈的是更高一级的“自主性自学”,是一种完全由自己安排的,根据自己学习目标、兴趣和需求而安排的自学。这种自学与开出的课程无关,与老师对大家统一的要求无关,是一种真正的“自主、自由”的学习。

  对一个专业的所有学生,要学习的课程,在必修课角度上是完全一样的,选修课上会有差异,但一般也都限定在一个范围内。但一个专业出来的学生,差异会非常大,除了大家的学法不一样之外,由于各人的想法、特点不同,在课外自学中选择了不同的学习内容,由此在不同的圈子中活动,这也是差异的主要原因。极端的情况,上了一个专业,经过投入其中发现不是自己所愿,在目前转专业沟道不畅的情况下,课内学习的本专业,达到基本要求,而在课外,将更多的精力投入到一个自己喜欢的方向,形成自己的特色。如果安排能够和现有的专业结合起来,那是更好的事了。利用这种“自主性的自学”,或扬长,或补短,形成自己特有的知识结构,形成自己的特有的生活情趣,这无论对于形成在职场中的竞争力,还是对于奠定自己幸福生活的基础,都是一件很要紧的事。


(二)自主性自学的内容

  为了专业能力提高而安排的自学,无外乎两个方面,目标是更扎实的专业基础的学习,以及目标是更强的实践能力的学习。课外自主性学习在进度控制上的困难,不像开出课程,有一个课程大纲的约束,有老师掌握着进度。所以,最好能找到一个明确的主题,以便于安排。

  对于加强专业基础的自学,感觉以ACM一类的编程竞赛作为主题合适。低年级的,注重问题求方法的一般问题,随着年级的升高,其他基础知识的增长,逐渐加进来需要采取特定数据结构,采用相关算法策略的问题来学习。可以参加竞赛,也可以将之作为日常的训练,长期坚持。目标虽然是专业基础,但作为自学,一定要以实践的形式完成,直观地讲,就是将学习的成果,通过写程序,通过代码表现出来。这也是专业基础的提高最终是为了专业应用能力、实践能力、动手能力提高服务的体现。

  对于加强实践能力的自学,从做Web应用入手。当前是互联网、移动计算的时代,用于支持Web应用的相关的知识已经是目前各种应用中通用的基本成份,可以设计出一条循序渐进的实践学习路线。做出的作品直观、易懂,也容易获得成就感。对于零基础的新手,学习用DreamWeaver编辑网页,再到学习一些HTML的基本知识,逐渐地结合进CSSJavaScript,以及动态网页技术来。随着学习,会了解到更多的与应用相关的可以继续学习的内容,做桌面应用、Web应用、移动应用,都会是自然而然的事情了。

  在此没有提到编程语言的自学。比较顺利的学习,在修读程序设计课程的时候,程序设计的基本能力是应该过关的。于是,参照老师授课的进度,完成老师布置的作业,以及自己在其他参考资料上获得的实践内容,这是限定性的自学和主动性自学。实际情况是,在开课之时,由于种种原因,不少同学并没有达到教学目标的要求,主观上自己感觉还不会编程,客观上,来一个问题就傻眼。无论考试是否过了及格线,都需要及时补起来了。这需要有自主性自学来解决,越早越好,越快越好。这个问题不解决,专业学习永远不会走上正道。自学的方法仍然是遵循自主性自学的一般原则,以实践为主线进行安排,可以参照某本参考书的章节来安排学习进度,可以是当初上课时用过的课本,也可以用某本权威的、经典的教材。要随着学习,找到或者自拟出适合做的题目,以“会做”作为“学会”的标准。计算机类的大学生,掌握多门语言是一件很容易理解的事。自学新的语言,也可采用这种路线,即学、做结合,以实践作主线,以实践作标准。


(三)自主性自学的路线

  一名大学生,应该是“有扎实专业基础理论,兼有较强的动手能力”的,这两方面的要求是相互促进,相互交叉。做到了这两点,会发现这两方面原来并不是那样的界限分明,而是真的可以融为一体的。有些同学将这两者对立起来看,显得有些过于极端了,也不利于取得好的学习效果。

  现在不少学校,非常重视学生参加一些企业、社会团体主办的竞赛。通过竞赛,学生投入进去,完成了参赛作品,也找到了专业学习的乐趣和感觉,非常好的事情。然而,这些竞赛的主题一般都是直接针对应用的,以致于有一些基础不错的同学,借着竞赛起步,之后的学习中将更多的精力投入到了一个接一个的应用开发中去,有一些还寻到了途径,在校外“接活”,获得更多的提高,甚至有些同学忽视了专业基础的提高。话说一名本科生在毕业的时候,能够做得一手好应用,那已经是一件非常好的事了,如果在长期的磨练中,工作过程和习惯符合工程化生产的要求,更是好上加好。然而,以那样好的起点,如果能在校期间再多花一些精力到基础理论的学习上,总体收获应该是更高的。基本理论的加强,不会时时表现出来,但却是可以在潜意识中形成一种科学的思维,暗中指导着实践做的更好。上大学的过程,本来就应该是全面学习的,本来可以,但由于安排不当而弱化或失去,是一件遗憾的事。

  在为我的一些“好”学生抱憾的同时,我想给出自主性学习的第一条路线:先重基础,再重应用。我们是希望获得“双丰收”的,所以用两个重,也暗指要兼顾。重基础的阶段,并不完全弃实践,而重应用的学习中,基础同时也在融合,基础好的优势会体现出来。我提议入学时专业学习兴趣本身就很浓,以及初时学习就顺利的学生走这一条路子。由于先期并不多投入相对更为“热闹”的应用,这样做的同学要更耐得住寂寞,知道这样做的价值。由于基础扎实,一开始在后期重实践的历程,马上就能表现出更快的学习速度以及质量更高的应用成果。从时间角度,我建议大一大二重基础,标志是参加过一次ACM竞赛,不管是学校组织的选拨赛,还是有机会代表学校对外参赛。有些同学更高年级参赛以求好成绩顺便得一证书,但可以在低年级时打足基础。到了大三,转入重应用开发,由于眼界相对开阔,入手点就可以与感兴趣的专业方向,甚至与未来求职中心仪的岗位结合起来了。

  第二条路线,先重应用,再重基础。这不是说课内学习的基础可以先不必重视,我们此处所说的是课外的自主性学习安排。这样安排针对的是对专业了解不深,一定想迫切知道计算机这玩意到底能做些什么的同学,就在先重应用中获得体验好了。应用的内容可以始于做一个个人主页、班级主页之类的,可以借助一些外部的目标,如参加学院组织的网页设计大赛之类的初级的竞赛,以及像在山东很热的“齐鲁软件设计大赛”之类的竞赛,高级目标可以是参加像微软、阿里巴巴等企业组织的应用大赛。走这一条路线的同学,不要忘记,适当的时候可以侧重于基础理论的提高,可能就是将疯狂做应用期间有些应付的专业基础课复习一遍,或者也去做做ACM题,一些大企业,如微软、谷歌的面试题等。一段时间的“淡定”,将换来丰厚的回报。

  至于其他的路线,包括:基础、应用能够以学期或更短的周期,根据实际情况交叉安排的路线;一直相对重视专业基础理论自学的路线,这样的同学将来的志趣也就在于通过深造做“研究”,进而从事专业中相对“底层”和基础性工作,我有位学生的自学在大二时就深入到了复杂性理论层面,以后两年他的应用级别也一直没有出操作系统层次;一直重视应用的路线,对各种不同的技术,在不同的领域不断体验,志趣也就在于沉浸在应用海洋中的。这些都是不错的安排。其实话说回来,大学就是要有自学的,只要是把握住了课堂,课外又能有效安排好,这样出来的,都是人才。


(四)自主性自学实施要点

  在课外的自主性学习,最忌讳的就是,常想学,但总不起步,或者在走出第一步时就顾虑重重,让自己总是停留在是否要走出第一步的阶段。只要起步了,视野拓宽,就会不断有新的想法产生,能触摸到适合你的“下一步”学习的内容,从而一直走下去。在这一方面,不妨观察一下幼儿园的小朋友,我们需要学习他们的探索精神,无论是原生兴趣使然的探索,还是未来求职谋生的需要,因为不知道和想知道、想学会,所以要不断前行。还要学习他们在学习时的无所顾忌:本人就这么一个水平,这就是基点,无论高低只要自己不多想,不会有人笑话。本来就是需要提高的时期,被那个虚无的面子忽悠,结局只能是永远水平低。抛开这样的顾虑,学习就会高效起来,也会享受到学习和进步本身带来的乐趣。

  另外,课外自主性学习贵在坚持,列一个每周投入4小时的计划,远比想起来了猛干一整天,忙起一个月都不管,再过一个月,这件事可能就彻底放下了。最好是能够找到一个固定的学习地点,每天的课外学习时间都在那里,坚持每天都学习下去。

  最后的建议是,让自己的进步看得见。如果是针对实践的自学,你的“产品”自然是可以看得见的了,可以经常演示给你学习的同伴和其他人,大家相互关注每个人的工作,由此也会形成一个很好的学习环境,大家可以彼此启发。对于专业基础学习的,可以将编出的程序在专业博客(如CSDN)中发布成博文,并且加上自己的总结,随着学习的进展,博文的清单在变长,这样做积累了学习的成果,也是对自己的激励。在博文中加入分析、总结甚至讲解一类的文字,还可以成为其他网友的学习资料,帮助了别人,也在写作的过程中进一步提高了自己,有时高手会参与进来,又是一个共享、交流、提高的园地。

  在大学中,自主性的学习是必要的。大学的课程安排,其中提供的相对更宽裕的时间就是要让大学生自主地安排的。只要愿意,每个人都可以安排出有效的,适合自己的自学。

  后记:一直在推动大学生在课外安排出有效的自主性学习,上学期推行的程序设计基础提高班(C++)、Java同步实践加强班、算法达人修炼营并不成功,这些内容针对大二学生,是在正在学习的课程基础上提出的额外要求,对于松散构成的学生社团,未成有效地监控过程。当指导教师的投入与学生的主动、坚持不能保证时,这种方式难以想到作用。组织课外的学习,可能本身就是一个站不住的想法,内容更是应该主动性自学就完成的,做好了,可能对有些同学而言反而是束缚。本学期尝试在更宏观的引导,也向学院争取更多的条件,多想了一些,写成本文。


相关博文:关于自学的一些话题http://blog.csdn.net/sxhelijian/article/details/7832298




版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sxhelijian/article/details/8611368

智能推荐

使用nginx解决浏览器跨域问题_nginx不停的xhr-程序员宅基地

文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr

在 Oracle 中配置 extproc 以访问 ST_Geometry-程序员宅基地

文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc

Linux C++ gbk转为utf-8_linux c++ gbk->utf8-程序员宅基地

文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8

IMP-00009: 导出文件异常结束-程序员宅基地

文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束

python程序员需要深入掌握的技能_Python用数据说明程序员需要掌握的技能-程序员宅基地

文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求

Spring @Service生成bean名称的规则(当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致)_@service beanname-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname

随便推点

二叉树的各种创建方法_二叉树的建立-程序员宅基地

文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<iostream>#include<stack>#include<queue>using namespace std;typed_二叉树的建立

解决asp.net导出excel时中文文件名乱码_asp.net utf8 导出中文字符乱码-程序员宅基地

文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码

笔记-编译原理-实验一-词法分析器设计_对pl/0作以下修改扩充。增加单词-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词

android adb shell 权限,android adb shell权限被拒绝-程序员宅基地

文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限

投影仪-相机标定_相机-投影仪标定-程序员宅基地

文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定

Wayland架构、渲染、硬件支持-程序员宅基地

文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland

推荐文章

热门文章

相关标签