软件工程和计算机科学与技术的有什么区别?哪个更容易做程序员?
计算机学院和软件学院
计算机类专业是现在最热门的专业,考生最关心。在报考的时候,也有考生会问,计算机科学与技术和软件工程的区别在哪里?因为高校的志愿填报中,软件工程、计算机科学与技术这两个是分开的。
在教育部的专业目录里,除了计算机科学与技术、软件工程外,还有网络工程、信息安全等专业。不过,这些专业基本和计算机科学与技术放在同一个计算机学院或者计算机系,只是细分专业。
软件工程一般在软件学院。软件工程本来也属于计算机类学科,为什么要单独分开呢?
主要是因为有一批院士,比如清华的孙家广院士等,觉得软件工程非常重要,而且偏重实践,教学跟普通的计算机类学科不一样,所以要单独安排课程,单独开设学院。尤其软件工程需要实践,培养经费要求多,所以软件学院的学费要高于计算机学院。
本科4年,软件学院前两年学费跟其他学院的一样,到后两年,学费是计算机学院的2倍以上。在2001年,国家第一批开设了35所示范性的软件学院。
现在信息安全也是这个趋势,国家认为信息安全非常重要,没有互联网时代,讲的是领空、领海,现在有互联网的阵地,对于个人和公司来说,信息安全也是人身安全、财产安全的重要组成部分,所以现在高校里面信息安全单独开设学院的越来越多,像武大和华科大都有信息安全学院。
前面讲的是两个专业的行政关系,那具体这两个专业有什么区别呢?
计算机科学与技术
计算机科学与技术里面包含了“科学”、“技术”这两个词。在专业名称中,“科学”一般指理论,“技术”一般指应用实践。计算机科学与技术就是跟计算机相关的科学理论和应用实践,包括了计算机的硬件、软件。根据定义,软件工程、信息安全等全部包括在计算机科学与技术里面。
计算机相关的理论有数学、信息论,控制论等。这里面每个还都可以展开。像数学有数理逻辑、组合数学、概率、图论、拓扑。现在因为智能化,连续数学的内容也不少,傅里叶分析、小波分析、泛函等。在信息安全方面,数学要求更高,需要数论知识……
计算机的硬件知识则包括计算机的组成结构、计算机网络等。软件包括计算机编译原理、操作系统、数据结构、数据库理论、程序设计等等。
一句话,计算机科学与技术就是个大箩筐,所有跟计算机相关的都可以装在里面。4年要学这么多,肯定是不可能,所以本科学习,要么学得不够深,要么挑一个方向学。
具体的课程,我以清华大学计算机系的课程为例,专业基础课和专业课有:
高级语言程序设计、离散数学、数据结构、信号处理原理、系统分析与控制、数字逻辑、人工智能导论、微计算机技术、操作系统、汇编语言程序设计、计算机原理、计算机系统结构、编译原理、计算机网络等。
软件工程
软件工程是计算机科学与技术的一个分支,主要是用工程化的方式来构建、维护软件。现在的软件除了少量的软件以外,大部分都是大型软件,几十、几百甚至上千人来开发一个软件,除了懂语言、算法之外,大家还需要一定的组织和规范。这个跟几千人造房子一样,要分工、协调,还需要质检。
所以,软件工程的学习就是要学习软件开发的整个过程,包括需求分析、设计、实现、测试和维护。软件工程当然还要熟悉不同的软件开发语言、不同的开发环境,还有不同类型的软件。
具体的课程,我还是以清华大学软件学院的课程为例,从下面的课程来看,跟计算机系的课程区别很少,也就有一两门专业课的不同。
程序员
因此,从课程来看,软件工程比计算机科学与技术稍微多一两门软件开发方面的课。但这些课程能让这两个专业的学生有本质区别吗?
根本不可能。一般公司也从不区分这两个专业的学生,只要通过公司的考试,这两个专业的学生没任何区别。
不要说是这两个专业,我认识不少物理专业的学生,也转行做了程序员,现在已经是资深专家。
能否成为程序员不能单靠学校的这点课程,而是要靠自己不断学习,不断去实践。
大家加油!