“计算机科学!=软件工程”难道是教授编程知识差的借口吗?


23

我们都听过;每当有关于CS毕业生的开发技能差的讨论时,有人最终说,

计算机科学不是软件工程。

我看到的问题是编程和软件开发在CS课程教授的。他们通常被教得很差。如果要教它,那为什么不第一次就教它呢?*

所以我想看看对两个问题有何看法:

  1. CS!= SE参数是否是没有正确教授编程技能的结果或借口?

  2. 不管您对问题1的回答如何;如果您处于做出这样一个决定的全能位置:您是否会强调在CS课程中正确编程的教学?

*。根据我在整个学习过程中获得的轶事证据,我感到怀疑,该领域的大多数学者都不必编写代码来维护代码,也不必维护代码,因此没有知识/技能。有效地教它。


7
我将澄清我的评论;在我看来,它们是不同的(CS!= SE)。因此,如果将CS和SE替换为其他两个字段A,B,其中A!= B,您会得到类似保龄球课程!=日本历史的信息。然后您的争论变成了:BL!= JH是没有正确教授JH的借口吗?现在这是一个荒谬的问题,应予以驳回。如果您看到不知道为什么要在链表上使用哈希表的CS毕业生,那么他的学习水平很差。如果您看到CS毕业生的重构代码表现不佳,可以原谅。
Jeremiah Nunn

2
@耶利米纳·努恩(Jeremiag Nunn):打个比方:保龄球不是一门道理的日本历史。我的观点是,每个 CS程序实际上都在教授编程,并且他们使用“ CS!= SE”自变量来很好地教自己编程。
史蒂文·埃弗斯

2
另一个想法:在特定的CS中缺乏SE技能会导致学校或学生的过失吗?在每堂课中,您可能会掌握从熟练到可怕的广泛技能。
亚当李尔

2
@SnOrfus软件工程是构建软件的技巧。计算机科学是软件背后的理论。知道两者都是理想的,但是它们仍然是分开的。比起@Jeremiah更好的类比(IMO)将是构建乐器还是演奏乐器。
dash-tom-bang 2010年

5
关于学者不必编写可维护代码的脚注几乎就是重点。这不是CS关心的。
dash-tom-bang 2010年

Answers:


27

我不认为这是解决方案,而是断言计算机科学不是软件工程,也不是编程,而是形式化计算的科学。从本质上讲,它是数学(实际上,许多CS程序都是从应用数学程序开始的)。

我认为问题更多的是行业而不是学术界。工业界发现简历中列出了一个CS学位,他认为:“太好了,这个人对计算机有好处”,并雇用他从事与计算机有关的任何事情:IT,编程,软件开发等。这些事情不一定位于CS毕业生的专业领域。反过来,许多喜欢建造计算机或玩视频游戏的人进入CS程序,期望做这种事情,并且会感到无礼。即,许多进入CS的学生并不真正属于那里,因此在目标明确的学位课程中会更好。

其次,在典型的本科课程中,CS的授课时间非常有限。我的本科课程有8个CS课程(对于文学士)或12个CS课程(对于文学士),以及所有必需的数学课程。教授CS 数学程序设计软件工程的时间不多,因此在某些时候,您必须确定重要的内容以及学生可以自己学习的内容。

最后一点很关键:我认为任何学科领域的好学生都会自己探索想法。我有一个CS的程度,但是我觉得我来到了大学作为一个体面的开发商,因为我的研究和编写软件对我自己。大学并不只是关于课程;这还意味着要给学生半自主地发展技能的时间,同时仍然提供有价值的指导。

我坚持认为,教学理论-CS,数学等- 与教授与工作相关的特定技能同样重要,甚至更为重要。如果您教学生为什么使用方法和技巧,而不仅仅是为什么,那么您最终会得到一个在运用他的知识时更加适应的人。例如,我去了一个残酷无比的“ Java学校”,因此用Java进行教学,但是我还开设了编程语言理论课程,解释了为什么支持多种语言。结果,我学会了比没有背景的人编写更好的软件。当然,我在日常工作中不会用Haskell编写软件,但是了解很多编程语言理论使我获得了以下见解:一直以来适用于我的工作,作为一个程序员。

我还认为行业对大学生的期望过高。工业界希望削减自己的成本,因此,他们期望大学不再成为新的工作岗位,而是希望大学成为贸易/技术学校。实际上,他们希望大学为他们进行培训。不能指望大学毕业生能从大学毕业就知道一切。成为一名优秀的开发人员既要体验,也要知识,(尤其是在相对较年轻的领域,例如软件开发)。


这恰好是我的想法,但是比我的回答要好得多。
Jeremiah Nunn

+1:这里有很多好东西,我不愿一概而论,但是考虑到CS起源于应用数学,这并不意味着CS的重要性-在这种情况下,是编程吗?
史蒂文·埃弗斯

2
@SnOrfus:在应用数学的程度上,是的。但是就像计算机科学!=软件工程一样,编程!=软件工程也是如此。
mipadi

1
@David Thornley:首先,我本人以及我认识的所有从事物理学的人在研究波浪时都使用了示波器。不过,这种说法并不成立。作为CS学位的一部分,已经向学生教授了编程。我曾经是你们,参加过会议的所有人都是。这甚至不是一个课程的一次性部分。每学期至少有 1-2节课,这是必不可少的部分。
史蒂文·埃弗斯

2
+1解释学校(学院,大学等)应该教你如何钓鱼,而不仅仅是给你钓鱼
Emiliano

25

问题的部分原因是4年的时间不足以成为优秀的软件工程师。鉴于我们希望本科生不仅要接触数学和CS课程,而且要学习大量的纯技巧(算法,数据结构,语言语法),所以我们不能期望绿色CS专业能够软件工程师。

我同意CS!= SE,但我不确定您是否可以上学并成为SE(即使拥有硕士)


+!1:我明白您的意思,但不仅是“抛光”。许多人缺乏一些非常基本的技能。
史蒂文·埃弗斯

我想这取决于您认为非常基本的技能。例如,SQL在我看来是一项基本技能,但是我发现我的CS毕业生实际上非常虚弱,我认为这是可以预料的。如果您说他们的语言语法,基本模块性或OOP概念较弱,那将是一个大问题,我将开始寻找不同学校的毕业生
bigtang 2010年

我从事专业编程已有14年了。我研究过SQL,甚至可以编写基本查询,但是即使这些基本技能也仅在去年才出现。SQL不是CS。SQL是数据库理论的一种实现,即CS。
dash-tom-bang 2010年

@ dash-tom-bang:您会将命令式语言中的控制流语句视为基础吗?我可以确认,存在对大多数CS毕业生不了解的学位。
史蒂文·埃弗斯

我不认为以任何特定语言来实现流控制都属于“计算机科学的基础”。但是,如果某人不将流量控制理解为一个概念,那么他们就不会学习CS。
dash-tom-bang 2010年

10

CS实际上不是SE。人们似乎一直在将两者混为一谈,即使他们承认这一点也是如此。计算机科学实际上应该重命名为“计算”或“计算科学”。实际上,计算机科学与计算机几乎没有关系。它是图论,算法分析,数据结构等。

人们想假设新的CS毕业生实际上是ITT毕业生;他们想要受过职业训练的人。计算机科学是一门科学,编程是一门艺术。这些不一样。

这就好比问为什么刚毕业的Physics毕业生不是一个好的汽车工程师。真傻


2
编程是一门手艺,而不是一门艺术。
dash-tom-bang 2010年

6
编程是工艺,工程艺术。
Maciej Piechotka 2010年

2
我不会重命名。什么是计算机科学,但计算机科学是什么?换句话说,是对计算机的研究,这意味着对计算机的研究。
Michael K

1
应该重命名,因为人们像您一样对此感到困惑。你知道埃德斯·狄加斯特拉吗?他曾经说过:“计算机科学与计算机无关,而天文学与望远镜无关。” :)
嘘声,

1
艺术创造美;工艺创造效用。艺术是为了美丽而创造的。工艺是为其实用程序而创建的。艺术可能有用;工艺可能很漂亮。软件工程创建实用程序;因此,软件工程是一种技巧。
systemovich 2011年

8
  1. 至少在美国,教育作为一个整体已成为一种利润。学校正在全面降低课程设置,以增加入学率。大学里不属于那里的人比以往任何时候都多。学习适当的技术不是您可以轻松教的,因此不是。
  2. 就个人而言,我将比以往更加强调SE,但我认为CS作为计划不太适合希望进入行业的人们。我认为更多的机构应该提供实用的SE计划。

为#1 +1。我上学时注意到了这一点。那是一所营利性学校,我感到许多学生没有资格去那儿。此外,学校每门课程仅能赚钱,而学生不及格意味着他们不再从中获得钱,因此,很多时候老师会竭尽全力地通过学生。我们至少有一个拥有学位的人毕业,我认为他们甚至无法用他们选择的语言编写Hello World程序!
雷切尔

既然你提到了美国的教育体系和利润的作用,这里是一个强制性的米尔顿·弗里德曼合唱团:youtube.com/watch?v=W3Seg0JE1PM
工作

7

CS!= SE参数是否是没有正确教授编程技能的结果或借口?

否。CS不是SE。那是事实,不是借口。

不管您对问题1的回答如何;如果您处于做出这样一个决定的全能位置:您是否会强调在CS课程中正确编程的教学?

不,这就像强迫天文学家学习建造望远镜的细节一样。或者强迫程序员学习构建计算机的细节。相关的东西,但是一个人并不需要了解所有。


6

是的,这听起来像是对我的回应,是CS作为一门学术学科的不成熟迹象。

美国化学学会(American Chemical Society)认可的BS计划要求您通过特定的课程,以证明他们在理论(讲座课)和实践(实验室课)方面的特殊技能。据我所知,目前CS还没有。

我的一位研究生学历教授是一个非常象牙的理论家,他的办公室从来没有比使用Magic Rocks的鱼缸对任何化学物质更感兴趣,但是当我担任他的新生化学助教时,他也被证明是一位非常称职的化学家。

当我担任工业油漆化学家时,他们会嘲笑我拥有学士学位并且在实验室中不称职的想法。当然,我在实验室中所做的细节与我在学校课堂中所做的细节不同,但是原理是相同的-我们只是使用了油漆搅拌机和罐子,而不是烧杯和磁力搅拌器。

如果要对CS应用相同的方法,那么在CS / SE课程中作为实用软件开发技能教授的内容可能会因学校和学校的不同而有所差异。但是对于我来说,可以接受某个领域的学位并且不具备编写,调试和维护某种代码的能力,这对我来说听起来很疯狂。(当然,这就是许多CS程序中的实际情况,但是仍然很疯狂。)


这并不疯狂,这是一种流行病。我看到的由同行编写的代码中,大约90%的可维护性与比萨斜塔一样可维护。
Marcel Valdez Orozco,2012年

5

我同意4年只是足够的时间为他们提供良好的成长基础。但是,我认为真正有帮助的一件事是,当行业中的人们参与到课程开发甚至课堂教学中时。去年,我是当地一所大学的软件开发班的行业研究员。对我来说,这是一次非常令人大开眼界的经历。教授和我共同研究了课程内容,我们提供了他们以前所做的有关开发过程,行业最佳实践和“现实世界”情况的更多信息。我们发现的是,由于大多数讲师并未开发广泛使用和维护的代码,因此聘请了业内人士来帮助他们确定和教授这样做的技能。


我很想尝试类似的东西。
ChaosPandion 2010年

您应该联系您当地的大学,看看他们是否有类似的东西。你现在在哪里?
Beth Whitezel

3
  1. 是的,这是100%的适应,他们应该教授长期技能,这将在我们的整个职业生涯中发挥作用。无论您打算进入学术界还是行业,您都将需要能够以一种可以维护的方式进行编程,即使这仅仅是您自己一个。

  2. 是的,尽管只会在适当的课程中强调它。就个人而言,如果我不得不与您交谈以更好地了解您是如何尝试实现算法的,那么我会降低您的成绩。

即使您进行纯粹的CS研究,您也可能必须创建代码来证明您的想法。适当的编程技能在某些时候对您很有用,所以为什么不开始上大学。


长期技能是CS。“ Java”不是一项长期技能,.NET,SQL,Pascal或COBOL也不是。除非“长期”,否则您的意思是“当他们需要某人维护那些旧系统时,为您感到高兴”。
dash-tom-bang 2010年

我同意需要基本技能(CS),但我的意思是编写可维护且易于阅读的代码,而不论其所使用的编程语言是什么。这么长的含义意味着技能已超出了所使用的技术范围。
JustJohn

1
需要IMHO CS才能解决更复杂的问题,这里的很多人都不需要CS学位来编写代码,但是如果您需要处理10x10百万个数据矩阵并对其进行处理,我无法弄清楚SE无需CS学位就可以处理它。
嘘声

3

我认为我们的问题是,我们更像医生,而不是我们愿意承认的人。。。我们的想法是,四年制学位应该为学生编写软件做好准备。还差得远

与其他学科相比,我们的专业还处于起步阶段。也许应该是一个问题:我们如何改善CS,使拥有该学位的学生更适合在更短的时间内成为现实世界中的软件开发团队的生产成员?

也许我们应该更像医学。四年的基础工作(CS学位),然后是驻留-在经验丰富的软件工程师的监督下进行手工艺。也许这就是我们已经拥有的东西,但是它不那么正式……我的意思是,像居民一样,我们在第一份工作中就会在工作场所学习最宝贵的技能。

也许作为纪律,我们只需要对此进行更好的形式化。


或手工艺大师/学徒计划
奥斯丁·萨洛宁

1
MD程序不​​是科学程序。您想学习科学,需要生物学。但是,如果您有医疗问题,则不要将其带给生物学家。
David Thornley 2010年

这是一个非常好的主意:将软件工程也取决于经验这一事实正式化。这同样适用于律师和医生
Emiliano

但是我们在谈论大卫吗?我们中有多少人获得了CS学位,然后真正地将自己的职业生涯花在了“计算机科学”上?我们大多数人真正要做的就是走遍世界,实践软件开发的技巧。它与MD相同:他们“练习”药物。我们练习应用程序构建。
克里斯·霍尔姆斯

@Chris Holmes:我对CSci学位应该使您成为一名准备使用最新的热门语言来招聘工作的程序员的想法感到非常恼火。此类学位或证书有足够的空间,可能比实际的CSci还大得多。我确实认为软件开发与此处的医学类似,但是您没有从生物学或心理学部门获得医学博士学位,而是从医学院获得的。这是一个非常受人尊敬的学位,但不是博士学位。
David Thornley 2010年

3

我拥有CS学士学位,并且整个程序的整个一年都没有编程,只有理论。有人告诉我们,我们没有获得编程学位,而是获得了计算机科学学位。如果您想成为一名程序员,请去社区大学。

我们了解了算法,设计模式以及有关不用特殊语言解决问题的大量理论。编程语言来来去去,但基本原理保持不变。

因此,对于您的第一个问题,不,我不认为CS!= SE是一个失败者。这是事实。

关于您的第二个问题,不,我认为我不会。您如何正确教授编程?除了循环,if,方法,类和OOP,什么是“适当的编程”,又如何使它与现有的任何编程语言相关?您需要编写代码的经验,这是四年制无法为您准备的。

我要做的一件事是提供有关现实世界中发展的课程。源代码控制,票证/错误跟踪,代码跟踪以及所有爵士乐将是一个良好的开端,为即将成为应届毕业生的新职业做好准备。

我认为当我们雇用一个新的应届毕业生来了解他们可能不会编写获奖代码时就在我们身上。他们需要指导和指导。


++-优点。我同意,如果CS课程确实在此“现实世界”课程中开设一两个课程,那将是很好的。我们曾在我的大学(1993年)中谈论过它,但是它从未到过。
dash-tom-bang 2010年

您是如何期望在组成非编程理论这一年的课程中证明自己的熟练程度的?纯笔试?
Carson63000

@ Carson630000-编写作业,有时编写状态图,有时写出表明我们将如何解决和解决问题或如何应用各种CS概念的文章。它迫使我们理解理论而不是特定的编程语言。
Tyanna 2010年

2

对于大学而言,在理论知识和实践技能之间取得良好的平衡非常重要。在参加不同的课程时,我学到了两者。在头几年,有很多数学和算法/数据结构。接下来的选择是:您可以继续学习计算机科学(某种艺术途径,例如可以参加使用复杂的字符串匹配算法的课程),也可以专注于软件工程。在此期间,您仍然必须具有一定的编程背景。

我之所以选择软件工程,是因为我对抽象问题从不非常感兴趣。但是,即使是那些喜欢纯计算机科学的人也必须:

  • 在用户空间中linux编写小型文件系统,创建内核模块并修改内核本身,在中编写一个纯面向对象的游戏SmallTalk
  • 编写自己的通信协议,然后实施一个由老师选择的通信协议(这很酷,两个学生的程序可以轻松进行通信,尽管他们以前没有合作),
  • 四个人组成一个更大的项目Java
  • 建立一些功能性的程式设计专案,
  • 编写一些可靠的程序C进行并行编程(想法很抽象,但是评论很苛刻,例如当程序失败时,由于没有提供适当的输出而失去了分数,就像一个好的Unix program应该做的那样),
  • 使用某些网络框架(我们选择django,使我喜欢这个框架)创建一个网络门户,
  • 使用创建一个相当大的程序LAMP(我仍然有噩梦php,但是用postgresql代替了MySQL,我现在很高兴知道这一点DBMS),
  • 如果有人选择,他可以为自己的硕士论文编写程序-我使用编写了1万行的python桌面程序PyQt

也许还有其他项目,但是我现在忘记了。

我的观点是:这一切都取决于学校。我Java对主要的语言在纯软件工程方法方面非常不满意。我曾经帮助过一个朋友,他上了这样的学校,不得不写一些程序进行并行编程。我只好它基本上为他写的,因为他虽然,sizeof(some_string)C给字符串的长度。

老实说:我讨厌数学,当我不得不为抽象任务做准备时,我感到很痛苦,因为它将在算法/数据结构考试中使用。但这给了我一定的优势:我可以以非常抽象的方式思考。就像当您学习武术而没有保持警惕(至少在您应该去的地方)时。当您放下手时,教练会一直不断打来击打您的头,因为您忘记了或者因为疲倦而无法抬起手。但是一段时间后,您只需保持它们。而且打到脸上真的很难。与抽象算法问题相同。了解算法简介的内容,几乎没有什么事情会使工作感到惊讶。


听起来是个不错的程序。一些理论。很多练习。
Mike Dunlavey

1

我认为答案是肯定的(在某种程度上)。

问题是不可能在短时间内教孩子们编程。他们应该加强程序员的逻辑思维,即如何(较小规模)解决程序员的问题。

我敢肯定,我的很小的“第三世界”国家应该修改学校的教学大纲,所幸正在为此做出努力。我们是第一个实施OLPC计划的国家;http://laptop.org/en/


1

根据我自己的经验(目前我是一名学生),我必须说是,这是一个借口。每个人都将CS视为一门教授我们所有计算机基础知识的科学,而SE则称为CS中的一个特殊分支,即明确地教授编程。Imo是在CS中拥有BS的每个人,都必须知道如何编写优质且经过优化的代码(即使编程不是他/她的专长)。因此,是的,如果我能做出这样的决定,那么我将迫使学生获得良好的编程技能。


我的学位名为计算机科学与软件工程,旨在为您提供两全其美的能力,即成为一名合格的程序员,并且对理论有足够的了解,以便能够继续毕业或研究。我认为这是一个好方法。
Michael K 2010年

1

假设目标是教育世界上需要他们的优秀软件工程师(程序员),那么可以说我认为应该教的内容来回答吗?

首先,这很重要,因为当前知识转移效率很低。当潜在的程序员上课时,他们的思想是开放的,他们会吸收所学的知识。同时,教授(我也是其中一员)经常更感兴趣的是让能够从事深奥课程的学生填补研究生院的学习渠道。当有人提出反对,即学生没有为现实世界中的问题做好准备的反对意见时,我已经看到教授们声称这不是他们的工作。那是现实世界的工作。

然后,当学生成为现实世界中的程序员时,他们是否渴望向新同事学习?根据我的经验。相反,他们渴望传播在学校获得的所有福音。我记得当时是一名学生和年轻的从业者,当时我在思考在旧的老兄混蛋中树立新想法有多么困难。既然我是老手,现在我要想让新程序员注意理论与实践之间的差异有多么困难。

我是机械工程和后来的电气工程专业的工程专业学生。其中一个基本部分是a)数学基础,b)实际解决问题。软件工程应该像那样,而不仅仅是编程。

我认为应该以足够的计算机科学来教授软件工程(程序设计)知识,以作为一种实用知识 -基本自动机理论和信息论。这些不需要深入进行。在教授了基本的编程技能之后,应该有规模不小的合作项目。其中最重要的部分应该是建议和考虑特定问题的替代解决方案,并分析利弊,而不仅仅是最新的宗教或“下一件大事”或千篇一律的“万事通”。最后,行业和学术界之间应该建立合作与伙伴关系,以便可以通过两种方式交流思想和改进,从而大大提高质量控制。


0

那些可以做的;那些不能的人,教书。

在我的大学里,教师的知识基础严重匮乏。我已经看到老师在理解如何在数据库设计中持有PHD的同时努力理解如何用XML表示半结构化表。我已经看到我的汇编老师问我,如果我复制并粘贴了他的代码片段,我的代码在做什么。我见过我的软件设计老师告诉我们,敏捷方法与瀑布方法相同,只是速度更快,因为迭代开发过程模型具有并且只能进行3次迭代,因为这就是本书所用示例所描绘的内容。我的一位老师甚至都不知道elseif语句是什么。

我不相信他们在“应付”或找借口,我真的相信他们在自己的经历中尽力而为,而他们很少。

我同意这里的其他人的观点,即四年不足以成为一名经验丰富的程序员,但是我的老师所拥有的经验也不足以使他们成为一名经验丰富的程序员。这很像在《 Ender's Shadow》中,Bean注意到战斗学校的老师使用的度量标准不足,因为上一场战争(即指导原则)太短了,无法真正显示出实际需要什么。换句话说,老师们正在尽力而为,但是却没有经验去知道真正需要什么才能成为一个好的指挥官(在这种情况下,就是一个好的程序员)。


3
我认为您的许多示例显然只是您的老师为自己的利益而试图简化事物的情况。Those that can, do; those that cannot, teach.我也完全不同意:学术和工业职业带来完全不同的生活方式。世界上许多研究来自学者。而且我没有看到您回答原始问题的任何方式。
没人

2
XML与数据库设计有什么关系,除了一个事实,即如果人们对性能不那么感兴趣,还可以使用XML作为数据库的后备存储呢?并不是说有些老师会遗漏点(我记得当课程教学到该点“像风一样评论”时,我与教员争论由于“过多评论”而删除的点),但这种说法有些过高。如果有人想学习Java,那么与通过CS课程相比,这样做的成本更低。
dash-tom-bang 2010年

1
还有一个事实,就是有些大学比其他大学差,而您的大学的CS系可能特别差。传统上,具有研究生学位的CS人士在行业中比学术界能够赚更多的钱,因此,学术界中的人是真正想去的人,而又是那些无法在现实世界中找到工作的人。我看过这两者,并且怀疑比率在各大学之间有所不同。
David Thornley,2010年

@ dash-tom-bang,XML是半结构化数据库的近乎完美的示例。en.wikipedia.org/wiki/Semi-structured_model
Malfist 2010年

1
像这样使用的XML仍然是数据库理论的一种实现。它本身不是理论。
dash-tom-bang 2010年

0

计算机科学家和软件工程师是不同的。科学家是执行疯狂实验并提出我们软件工程师可以用来改进算法的人。

想想化学家为制药公司进行实验的想法。他们不在乎如何大量生产化学物质。他们也不必关心市场营销,包装,分销或发现药物后发生的任何事情。他们甚至都不在乎认证程序。他们所关心的只是找到一种对测试对象有效的化学物质。该公司负责将其扩展到此范围之外。

计算机科学家就像那些化学家一样。他们所做的只是用代码测试理论。他们不在乎代码的可维护性。他们证明了一种理论,并继续进行下一个。其他人将这种算法打包并使其对大众有用,我们在您的iPhone上使用Kinect或流视频获得MP3或计算机视觉。所以CS!= SE是有效的参数。

WRT问题的第二部分。如果我提供音乐理论学位,则可能会开设必修的歌曲创作课程或其他课程,但不需要任何人学习乐器。由学生来寻找他们想要的知识。计算机科学不是软件工程...如果您想学习SE,请修双专业。


0

Edsger Wybe Dijkstra是一位荷兰计算机科学家。

他曾因开发编程语言的基本贡献而获得1972年图灵奖,他说过:

“计算机科学不再是计算机,而电算术才是望远镜。”

CS与SE完全不同。(CS!= SE)。

CS是已获得计算机科学知识的科学家。

计算机科学或计算机科学(有时缩写为CS)是对信息和计算的理论基础以及在计算机系统中实现和应用它们的实用技术的研究,通常被描述为对创建,描述,并转换信息。

计算机科学有许多子领域,例如:

  • 理论计算机科学
  • 计算理论
  • 算法和数据结构
  • 计算机元素和体系结构
  • 多处理
  • 计算科学
  • 人工智能
  • 软件系统

我们中的许多人在日常工作中不需要任何一项技能,或者至少不需要一点。

软件工程师(SE)是一个致力于设计,实施和修改软件的专业,以使其具有更高的质量,更实惠的价格,可维护的功能以及更快的构建速度。它是“通过对软件进行工程设计来对软件进行分析,设计,评估,实施,测试,维护和重新设计的系统方法”

作为一名CS知识,他应该具备在不知道任何真正好的编程语言的情况下管理实际复杂问题的知识。恕我直言,我们可以在这里打开另一个线程,对我而言,学位仅是起点,而不是终点。

作为SE的知识,他应该具备管理这个真正复杂问题的产生并管理与该领域有关的团队或项目的发展的知识。

在SE的帮助下,共同进行由CS在应用科学领域进行的科学研究。

我不是说CS优于SE,而是CS!= SE。

这种问题与非计算机人员问您为什么,作为程序员,您不能通过电话将程序X,Y,Z的问题解决在操作系统J,M, N. ;)

实际上经过十年在安全领域的Unix系统开发,我真的对编码感到无聊,阅读了这个问题后,我明白了,我需要学习更多的计算机科学,而无需学习更多的计算机语言和计算机系统或协议!

在我的工作中,没有人能处理关于SE和CS的差异!这真是一件坏事。

如果您认为CS可以成为不良编程技能的借口,那么您真的会错过关于CS和SE的知识。

我想你是一个SE,例如,您是否知道所有语言,所有范式和所有与计算机语言相关的东西都可以用一组部分递归函数以数学方式表示,并且无论您学习哪种新语言,任何新语言,您都只是在SAME递归部分函数上学习新的抽象方法?

玩得开心 :)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.