目前各院校计算机科学与技术专业本科教学大纲均不再细分专业,即本科生只有一个专业,博士、硕士研究生则按教育部的规定分为三个专业.本科生只能从毕业设计的课题中大致上看出他隶属于三个专业中的哪一个,即使如此,在毕业文凭中也不予以注明.因此,如何根据自己的志向兴趣选好课题与指导教师就比较重要了,它会影响到学生今后若干年,甚至大半生.然而,对于拟通过攻读硕士研究生继续深造的同学,为了打下坚实的基础,有时他计划在攻读硕士学位时研究方向偏重于软件,而在毕业设计阶段选择硬件课题;或者硕士课题是理论性的,而毕业设计的课题侧重于工程应用.
1 理论型
这类毕业设计的工作重点是写毕业论文.理论是对课题涉及的事物以及其属性和运动规律的理性概括,具有一般性和严密的论证性.如前所述,计算机系统中借鉴数学论证方式,从设定的定义和公理出发,提出该论题内在关系的定理,并证明这些定理正确完备.证明过的定理又是新定理证明的依据.类似于数学符号表示法,形式化的符号表示可以避免二义性,是有价值的学术论文追求的形式.数据库理论家Codd把非常实际的关系数据库中数据项的查找归结为关系集合上的演算,就是最好的范例.
一般说来,所有的计算机应用领域都有理论性课题,即使是非常具体的工程实现.例如信息管理系统,建立在排队论、运筹学上的物流最优管理就是它的理论课题.然而,这些课题往往是该应用专业的主要研究方向.计算机专业一般不选这类课题,除非项目必须完成而该领域又无人涉足,例如,计算机图形学开展的初期,制图专业的人并未介入,这时的理论问题只好由计算机专业的人去做.这种情况并不少见.
理论论文并不一定要形式化的定理证明系统,也不需要几篇论文就建立一个完整的理论体系.建立在惯性系统假设上的生物三大定律,几百年才能出几篇?!多数人的理论论文是将前人的工作作为假设前题,在此基础上作一两步推进,这就十分不错了.对于前人尚未开展过工作的理论问题,给出理论模型(模型表达可以用图或自然语言)并论证它的通用性,也是很好的理论文章.例如,软件工程学家Boehm的软件开发生存周期瀑布模型就是范例.随着对问题深人的研究,从定性模型给出定量的公式和定律是一般规律.这种情况对于新兴的计算机科学是很常见的.
如果不能给出严格的定律和形式证明,作为论文,论证和验证必不可少.论证是收集、引用说明问题的资料、数据其他文章的结论.验证是以计算机软件或硬件做出模拟、仿真或验证的实物,通过演示表示其结果的正确性.制作验证物的工作量在毕业设计中不应超过总限量的1/4.要求一个大学生对理论课题有建树,能提出一、两个定理一般是不容易的.理论型的毕业论文还有一种是将前人的理论研究用自己的观点复述一遍或综述几个人的论点得到一篇明晰完整的文章,也能体现学生的创造性,"他用十句话说明这个问题,我用三句话就说明了",怎么不是创造?!但切勿照搬照抄.
2 科研型
这类课题不一定要求做出工作产品或日后可实施的技术规范.科研型课题带有首创性和探索性,只希望基本成功,在关键技术上有突破有创新点,不排除有重大缺陷.一般属于技术原型,但不排除其中某部分就是日后产品的主要部分或使用的工具.国外已成熟的技术,而在国内是首次研制,也属科研型.它着重一般方法和核心实现技术.例如,对于"操作系统设备管理新模式"课题,只根据新的设想做出一、两种有典型意义的设备管理,并予以分析、设计和实现,而不必每种设备都要做完.全部做出是工程开发的任务.这类课题的论文和所做的软、硬件等原型产物同等重要.所以,在时间安排上大致一半对一半.
这类课题一般都比较大, 毕业设计只能选择其中一个子课题作为设计任务.更多情况是:这种子课题是工程型的.科研型子课题,从熟悉资料到进人可以工作的状态,耗时较多.例如,必须先消化引进的软/硬件系统或工具,而后才谈得上在此基础上开展工作,所以有的学校采取提前进入老师的课题(例如,在三年级下学期,将中等以上成绩的学生介绍到老师的课题组)以缩短准备期.毕业设计必须保证约有1/2 的时间供学生自己动手做,否则和开一学期课没什么两样.论文报告大体分理论部分(本课题依据的原理和当今解决此问题的途径的分析)和设计实现两部分.可参照工程报告型论文写法,但理论、原理或方法部分的份量要大一些.
3 工程型
毕业设计期间必须做出工程产品的一部分或相对完整的工程原型系统.这类课题的开发实现,应占毕业设计工作量的大部分时间(例如,大于3/4).现代工程非常强调写文档,在开发期间,各阶段都要写文档.毕业设计说明书属技术报告型,报告本课题所依据的原理、规范和实现模型所需的环境支持,总体实现方案,各(子)部分的设计与实现,与外部的接口等,但不等于文档集合.毕业设计说明书带有论证性.如这个课题当今有几种实现方案,为什么要选此种方案?本方案有什么优缺点?软/硬件互易带来的好处和问题等.书写时要突出重点,对核心部分、独创部分要写得详细一些,对一般人都能设计实现的子部分一带而过,只是为了文章的系统性、完整性才提到它.毕业设计说明书要强调系统性,即从分析设计、实现到测试,每个阶段的重点技术都要说清楚.特别是测试结果的分析和使用情况(如果有的话)是工程型课题最为增色的部分,切不可略去.
工程型设计的最大问题是达不到系统锻炼的目标.有时为了等待一个板子的芯片加工要耗去几个月的时间,调试没进行多少时间,就到毕业设计结束的时间了.或者一个信息系统只设计、实现了输入部分,以后大部分时间都花在输人数据上,对于这种情况,仍应尽可能地按全系统来说明,最后再落实到自己做的那一部分.答辩时按整个系统考核(没有深人部分可适当放松要求),这当然要熟悉协作者的工作,但切勿把别人的工作作为自己的成果来报告.