2.1程序设计课程体系
这里介绍笔者所在学校信息安全方向的程序设计课程体系,如图1所示。
该体系中包括3类课程:
1)直接与编程相关的课程,包括理论性与实践性教学课时。理论性课程或者偏重于编程技能的传授,或者与某一应用领域相结合,着重于软件或者平台工具的使用及再开发。实践性课程旨在培养学生的动手能力,主要是让学生在老师的指导下来完成一个算法或软件模块。实践性课程是一个很重要的环节,我们一般在相关程序设计课程的后一个学期增加安排一个星期让学生来专门进行相关课程的程序设计。
2)软件工程相关的课程,主要是帮助学生了解和掌握软件工程体系,树立软件质量观念。
3)计算机相关应用领域的课程。如Web程序设计、数据库应用系统等。还包括在四年级下学期开设的计算机新技术讲座,以拓展学生的知识面,增强就业的竞争力。
2.2 相关教材的选择
教材是教学取得效果的基础,在笔者多年的实践中,使用的一系列主要教材或参考书介绍如下。
程序设计基础课程选择的教材是:《C语言程序设计(C99版)》(陈良银等,清华大学出版社,2006)。该教材包含了一些安全代码编程的内容,以及对一些程序设计缺陷的介绍,这些内容可以提高个人的编程技巧和增加编写安全代码的知识,这些是其他一些教材所没有的。
C++面向对象程序设计课程选择的教材和参考书是:《C++程序设计教程(第2版)》(钱能,清华大学出版社,2005),“Writing Secure Code(2nd)”(第4版)(Michael Howard,Microsoft Press, 2005.),“Writing Secure Code For Windows Vista”(Michael Howard,Microsoft Press, 2006)。
Web程序设计课程选择教材和参考书是:《ASP.NET Web程序设计》(蒋培等,清华大学出版社,2007),“Developing More-Secure Microsoft ASP.NET 2.0 Applications”(Dominick Baier, Microsoft Press, 2006)。
Java程序设计课程选择的参考书是:《Java安全性编程实例》(徐迎晓,清华大学出版社,2003),“Ajax Security”(Billy Hoffman,Addison-Wesley Professional,2008)。
操作系统课程选择的教材和参考书是:《操作系统教程(第4版)》(孙钟秀等,高等教育出版社,2008),“Microsoft Windows Internals(4Ed)”(Mark E.Russinovich,Microsoft Press, 2006)。
软件工程课程选择的参考书是:《计算机系统安全原理与技术(第2版)》中的第6章(陈波等,机械工业出版社,2009),“The Art of Software Security Testing,Identifying Software Security Flaws”(Chris Wysopal, Addison-Wesley Professional, 2006)。
3 安全编程训练的实践
在教学实践中,我们注意与软件安全理论的点面结合,确保安全编程训练的系统性。对学生能力的培养过程中做到3个提升:防御性编程到安全性编程的提升;增加安全功能到增加安全的功能的提升;注重软件安全到注重软件质量的提升。
(责任编辑:adminadmin2008)