导航:首页 > 源码编译 > 计算机程序设计艺术算法导论

计算机程序设计艺术算法导论

发布时间:2023-05-28 19:37:38

‘壹’ 计算机科学的“两本圣经”是什么

第一本:《算法导论》原书名——《Introction to Algorithms》,

第二本:高德纳(Donald E.Knuth)的《计算机程序设计艺术》(《The Art Of Computer Programming》)

计算机科学是一门包含各种各样与计算和信息处理相关主题的系统学科,从抽象的算法分析、形式化语法等等,到更具体的主题如编程语言、程序设计、软件和硬件等。计算机科学分为理论计算机科学和实验计算机科学两个部分。

(1)计算机程序设计艺术算法导论扩展阅读:

研究课题

①、计算机程序能做什么和不能做什么(可计算性);

②、如何使程序更高效的执行特定任务(算法和复杂性理论);

③、程序如何存取不同类型的数据(数据结构和数据库);

④、程序如何显得更具有智能(人工智能);

⑤、人类如何与程序沟通(人机互动和人机界面)。

相关奖项

计算机科学领域的最高荣誉是ACM设立的图灵奖,被誉为是计算机科学的诺贝尔奖。它的获得者都是本领域最为出色的科学家和先驱。华人中首获图灵奖的是姚期智先生.他于2000年以其对计算理论做出的诸多“根本性的、意义重大的”贡献而获得这一崇高荣誉。

专业介绍

培养目标

本专业培养德、智、体全面发展,具有计算机应用技术的基础理论知识,具备计算机及相关设备的维护与维修、行业应用软件、平面图像处理、广告设计制作、动画制作、计算机网络及网站建设与管理、数据库管理与维护等应用能力和操作能力的高等技术应用性人才。

计算机应用基础、计算机组装与维护、计算机局域网络的建设与管理、网络工程、操作系统、服务器、数据库的开发与应用、网站建设与网页设计、C/C++语言、Visual Basic语言、平面设计、3D图形设计、多媒体设计、专业英语。

就业方向

毕业生主要面向交通系统各单位、交通信息化与电子政务建设与应用部门、各类计算机专业化公司、广告设计制作公司、汽车营销技术服务等从事IT行业工作。

参考资料:网络-计算机科学

‘贰’ 计算机科学的“两本圣经”是什么

科曼的《算法导论》和高德纳的《计算机程序设计艺术》被称为计算机科学的两本经典着作,被业界戏称为“两本圣经”

科曼的《算法导论》这本书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。

《算法导论》书中专门讨论了线性规划,介绍了动态规划的两个应用,随机化和线性规划技术的近似算法等,还有有关递归求解、快速排序中用到的划分方法与期望线性时间顺序统计算法,以及对贪心算法元素的讨论。

高德纳的《计算机程序设计艺术》这本书结合大量数学知识,分析不同应用领域中的各种算法,研究算法的复杂性,即算法的时间、空间效率,探讨各种适用算法等,其理论和实践价值得到了全世界计算机工作者的公认。

(2)计算机程序设计艺术算法导论扩展阅读

《算法导论》自第一版出版以来,已经成为世界范围内广泛使用的大学教材和专业人员的标准参考手册。本书全面论述了算法的内容,从一定深度上涵盖了算法的诸多方面,同时其讲授和分析方法又兼顾了各个层次读者的接受能力。

《算法导论》所有算法都是用英文和伪码描述,使具备初步编程经验的人也可读懂。全书讲解通俗易懂,且不失深度和数学上的严谨性。第二版增加了新的章节,如算法作用、概率分析与随机算法、线性编程等,几乎对第一版的各个部分都作了大量修订。

《计算机程序设计艺术》书中引入的许多术语、得到的许多结论都变成了计算机领域的标准术语和被广泛引用的结果。另外,作者对有关领域的科学发展史也有深入研究,因此本书介绍众多研究成果的同时,也对其历史渊源和发展过程做了很好的介绍,这种特色在全球科学着作中是不多见的。

参考资料网络--计算机科学

网络--计算机程序设计艺术

网络--算法导论

‘叁’ 要成为一名专业的程序员,从零开始需要怎么一步步来比较好,要把最底层的先学精通吗(个人认为)求学长

前言
你是否觉得自己从学校毕业的时候只做过小玩具一样的程序?走入职场后哪怕没有什么经验也可以把以下这些课外练习走一遍(朋友的抱怨:学校课程总是从理论出发,作业项目都看不出有什么实际作用,不如从工作中的需求出发)
建议:
不要乱买书,不要乱追新技术新名词,基础的东西经过很长时间积累而且还会在未来至少10年通用。
回顾一下历史,看看历史上时间线上技术的发展,你才能明白明天会是什么样。
一定要动手,例子不管多么简单,建议至少自己手敲一遍看看是否理解了里头的细枝末节。
一定要学会思考,思考为什么要这样,而不是那样。还要举一反三地思考。
注:你也许会很奇怪为什么下面的东西很偏Unix/linux,这是因为我觉得Windows下的编程可能会在未来很没有前途,原因如下:
现在的用户界面几乎被两个东西主宰了,1)Web,2)移动设备iOS或android。Windows的图形界面不吃香了。
越来越多的企业在用成本低性能高的Linux和各种开源技术来构架其系统,Windows的成本太高了。
微软的东西变得太快了,很不持久,他们完全是在玩弄程序员。详情参见《Windows编程革命史》
所以,我个人认为以后的趋势是前端是Web+移动,后端是Linux+开源。开发这边基本上没Windows什么事。
启蒙入门
1、 学习一门脚本语言,例如python/Ruby
可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快开发出能用得上的小程序。实践项目:
处理文本文件,或者csv (关键词 python csv, python open, python sys) 读一个本地文件,逐行处理(例如 word count,或者处理log)
遍历本地文件系统 (sys, os, path),例如写一个程序统计一个目录下所有文件大小并按各种条件排序并保存结果
跟数据库打交道 (python sqlite),写一个小脚本统计数据库里条目数量
学会用各种print之类简单粗暴的方式进行调试
学会用Google (phrase, domain, use reader to follow tech blogs)
为什么要学脚本语言,因为他们实在是太方便了,很多时候我们需要写点小工具或是脚本来帮我们解决问题,你就会发现正规的编程语言太难用了。
2、 用熟一种程序员的编辑器(不是IDE) 和一些基本工具
Vim / Emacs / Notepad++,学会如何配置代码补全,外观,外部命令等。
Source Insight (或 ctag)
使用这些东西不是为了Cool,而是这些编辑器在查看、修改代码/配置文章/日志会更快更有效率。
3、 熟悉Unix/Linux Shell和常见的命令行
如果你用windows,至少学会用虚拟机里的linux, vmware player是免费的,装个Ubuntu吧
一定要少用少用图形界面。
学会使用man来查看帮助
文件系统结构和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
学会使用一些文本操作命令 sed/awk/grep/tail/less/more …
学会使用一些管理命令 ps/top/lsof/netstat/kill/tcpmp/iptables/dd…
了解/etc目录下的各种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运行信息
了解正则表达式,使用正则表达式来查找文件。
对于程序员来说Unix/Linux比Windows简单多了。(参看我四年前CSDN的博文《其实Unix很简单》)学会使用Unix/Linux你会发现图形界面在某些时候实在是太难用了,相当地相当地降低工作效率。
4、 学习Web基础(HTML/CSS/JS) + 服务器端技术 (LAMP)
未来必然是Web的世界,学习WEB基础的最佳网站是W3School。
学习HTML基本语法
学习CSS如何选中HTML元素并应用一些基本样式(关键词:box model)
学会用 Firefox + Firebug 或 chrome 查看你觉得很炫的网页结构,并动态修改。
学习使用javascript操纵HTML元件。理解DOM和动态网页(Dynamic HTML: The Definitive Reference, 3rd Edition - O'Reilly Media) 网上有免费的章节,足够用了。或参看 DOM 。
学会用 Firefox + Firebug 或 chrome 调试Javascript代码(设置断点,查看变量,性能,控制台等)
在一台机器上配置Apache 或 Nginx
学习php,让后台PHP和前台HTML进行数据交互,对服务器相应浏览器请求形成初步认识。实现一个表单提交和反显的功能。
把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)
跟完一个名校的网络编程课程(例如:http://www.stanford.e/~ouster/cgi-bin/cs142-fall10/index.php ) 不要觉得需要多于一学期时间,大学生是全职一学期选3-5门课,你业余时间一定可以跟上
学习一个javascript库(例如jQuery 或 ExtJS)+ Ajax (异步读入一个服务器端图片或者数据库内容)+JSON数据格式。
HTTP: The Definitive Guide 读完前4章你就明白你每天上网用浏览器的时候发生的事情了(proxy, gateway, browsers)
做个小网站(例如:一个小的留言板,支持用户登录,Cookie/Session,增、删、改、查,上传图片附件,分页显示)
买个域名,租个空间,做个自己的网站。
进阶加深
1、 C语言和操作系统调用
重新学C语言,理解指针和内存模型,用C语言实现一下各种经典的算法和数据结构。推荐《计算机程序设计艺术》、《算法导论》和《编程珠玑》。
学习(麻省理工免费课程)计算机科学和编程导论
学习(麻省理工免费课程)C语言内存管理
学习Unix/Linux系统调用(Unix高级环境编程),,了解系统层面的东西。
用这些系统知识操作一下文件系统,用户(实现一个可以拷贝目录树的小程序)
用fork/wait/waitpid写一个多进程的程序,用pthread写一个多线程带同步或互斥的程序。多进程多进程购票的程序。
用signal/kill/raise/alarm/pause/sigprocmask实现一个多进程间的信号量通信的程序。
学会使用gcc和gdb来编程和调试程序(参看我的《用gdb调试程序》)
学会使用makefile来编译程序。(参看我的《跟我一起写makefile》)
IPC和Socket的东西可以放到高级中来实践。
学习Windows SDK编程(Windows 程序设计 ,MFC程序设计)
写一个窗口,了解WinMain/WinProcere,以及Windows的消息机制。
写一些程序来操作Windows SDK中的资源文件或是各种图形控件,以及作图的编程。
学习如何使用MSDN查看相关的SDK函数,各种WM_消息以及一些例程。
这本书中有很多例程,在实践中请不要照抄,试着自己写一个自己的例程。
不用太多于精通这些东西,因为GUI正在被Web取代,主要是了解一下Windows 图形界面的编程。@virushuo 说:“ 我觉得GUI确实不那么热门了,但充分理解GUI工作原理是很重要的。包括移动设备开发,如果没有基础知识仍然很吃力。或者说移动设备开发必须理解GUI工作,或者在win那边学,或者在mac/iOS上学”。
2、学习Java
Java 的学习主要是看经典的Core Java 《Java 核心技术编程》和《Java编程思想》(有两卷,我仅链了第一卷,足够了,因为Java的图形界面了解就可以了)
学习JDK,学会查阅Java API Doc Java Platform SE 6
了解一下Java这种虚拟机语言和C和Python语言在编译和执行上的差别。从C、Java、Python思考一下“跨平台”这种技术。
学会使用IDE Eclipse,使用Eclipse 编译,调试和开发Java程序。
建一个Tomcat的网站,尝试一下JSP/Servlet/JDBC/MySQL的Web开发。把前面所说的那个PHP的小项目试着用JSP和Servlet实现一下。
3、Web的安全与架构

学习HTML5,网上有很多很多教程,以前酷壳也介绍过很多,我在这里就不罗列了。
学习Web开发的安全问题(参考新浪微博被攻击的这个事,以及Ruby的这篇文章)
学习HTTP Server的rewrite机制,Nginx的反向代理机制,fast-cgi(如:PHP-FPM)
学习Web的静态页面缓存技术。
学习Web的异步工作流处理,数据Cache,数据分区,负载均衡,水平扩展的构架。
实践任务:
使用HTML5的canvas 制作一些Web动画。
尝试在前面开发过的那个Web应用中进行SQL注入,JS注入,以及XSS攻击。
把前面开发过的那个Web应用改成构造在Nginx + PHP-FPM + 静态页面缓存的网站
4、学习关系型数据库
你可以安装MSSQLServer或MySQL来学习数据库。
学习教科书里数据库设计的那几个范式,1NF,2NF,3NF,……
学习数据库的存过,触发器,视图,建索引,游标等。
学习SQL语句,明白表连接的各种概念(参看《SQL Join的图示》)
学习如何优化数据库查询(参看《MySQL的优化》)
实践任务:设计一个论坛的数据库,至少满足3NF,使用SQL语句查询本周,本月的最新文章,评论最多的文章,最活跃用户。
5、一些开发工具
学会使用SVN或Git来管理程序版本。
学会使用JUnit来对Java进行单元测试。
学习C语言和Java语言的coding standard 或 coding guideline。(我N年前写过一篇关C语言非常简单的文章——《编程修养》,这样的东西你可以上网查一下,一大堆)。
推荐阅读《代码大全》《重构》《代码整洁之道》
高级深入
1、C++ / Java 和面向对象
我个人以为学好C++,Java也就是举手之劳。但是C++的学习曲线相当的陡。不过,我觉得C++是最需要学好的语言了。参看两篇趣文“C++学习信心图” 和“21天学好C++”
学习(麻省理工免费课程)C++面向对象编程
读我的 “如何学好C++”中所推荐的那些书至少两遍以上(如果你对C++的理解能够深入到像我所写的《C++虚函数表解析》或是《C++对象内存存局(上)(下)》,或是《C/C++返回内部静态成员的陷阱》那就非常不错了)
然后反思为什么C++要干成这样,Java则不是?你一定要学会对比C++和Java的不同。比如,Java中的初始化,垃圾回收,接口,异常,虚函数,等等。
实践任务:
用C++实现一个BigInt,支持128位的整形的加减乘除的操作。
用C++封装一个数据结构的容量,比如hash table。
用C++封装并实现一个智能指针(一定要使用模板)。
《设计模式》必需一读,两遍以上,思考一下,这23个模式的应用场景。主要是两点:1)钟爱组合而不是继承,2)钟爱接口而不是实现。(也推荐《深入浅出设计模式》)
实践任务:
使用工厂模式实现一个内存池。
使用策略模式制做一个类其可以把文本文件进行左对齐,右对齐和中对齐。
使用命令模式实现一个命令行计算器,并支持undo和redo。
使用修饰模式实现一个酒店的房间价格订价策略——旺季,服务,VIP、旅行团、等影响价格的因素。
学习STL的用法和其设计概念 - 容器,算法,迭代器,函数子。如果可能,请读一下其源码
实践任务:尝试使用面向对象、STL,设计模式、和WindowsSDK图形编程的各种技能
做一个贪吃蛇或是俄罗斯方块的游戏。支持不同的级别和难度。
做一个文件浏览器,可以浏览目录下的文件,并可以对不同的文件有不同的操作,文本文件可以打开编辑,执行文件则执行之,mp3或avi文件可以播放,图片文件可以展示图片。
学习C++的一些类库的设计,如: MFC(看看候捷老师的《深入浅出MFC》) ,Boost, ACE, CPPUnit,STL (STL可能会太难了,但是如果你能了解其中的设计模式和设计那就太好了,如果你能深入到我写的《STL string类的写时拷贝技术》那就非常不错了,ACE需要很强在的系统知识,参见后面的“加强对系统的了解”)
Java是真正的面向对象的语言,Java的设计模式多得不能再多,也是用来学习面向对象的设计模式的最佳语言了(参看Java中的设计模式)。
推荐阅读《Effective Java》 and 《Java解惑》
学习Java的框架,Java的框架也是多,如Spring, Hibernate,Struts 等等,主要是学习Java的设计,如IoC等。
Java的技术也是烂多,重点学习J2EE架构以及JMS, RMI, 等消息传递和远程调用的技术。
学习使用Java做Web Service (官方教程在这里)
实践任务: 尝试在Spring或Hibernate框架下构建一个有网络的Web Service的远程调用程序,并可以在两个Service中通过JMS传递消息。
C++和Java都不是能在短时间内能学好的,C++玩是的深,Java玩的是广,我建议两者选一个。我个人的学习经历是:
深究C++(我深究C/C++了十来年了)
学习Java的各种设计模式。
2、加强系统了解
重要阅读下面的几本书:
《Unix编程艺术》了解Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验。你一定会有一种醍醐灌顶的感觉。
《Unix网络编程卷1,套接字》这是一本看完你就明白网络编程的书。重要注意TCP、UDP,以及多路复用的系统调用select/poll/epoll的差别。
《TCP/IP详解 卷1:协议》- 这是一本看完后你就可以当网络黑客的书。了解以太网的的运作原理,了解TCP/IP的协议,运作原理以及如何TCP的调优。
实践任务:
理解什么是阻塞(同步IO),非阻塞(异步IO),多路复用(select, poll, epoll)的IO技术。
写一个网络聊天程序,有聊天服务器和多个聊天客户端(服务端用UDP对部分或所有的的聊天客户端进Multicast或Broadcast)。
写一个简易的HTTP服务器。
《Unix网络编程卷2,进程间通信》信号量,管道,共享内存,消息等各种IPC…… 这些技术好像有点老掉牙了,不过还是值得了解。
实践任务:
主要实践各种IPC进程序通信的方法。
尝试写一个管道程序,父子进程通过管道交换数据。
尝试写一个共享内存的程序,两个进程通过共享内存交换一个C的结构体数组。
学习《Windows核心编程》一书。把CreateProcess,Windows线程、线程调度、线程同步(Event, 信号量,互斥量)、异步I/O,内存管理,DLL,这几大块搞精通。
实践任务:使用CreateProcess启动一个记事本或IE,并监控该程序的运行。把前面写过的那个简易的HTTP服务用线程池实现一下。写一个DLL的钩子程序监控指定窗口的关闭事件,或是记录某个窗口的按键。
有了多线程、多进程通信,TCP/IP,套接字,C++和设计模式的基本,你可以研究一下ACE了。使用ACE重写上述的聊天程序和HTTP服务器(带线程池)
实践任务:通过以上的所有知识,尝试
写一个服务端给客户端传大文件,要求把100M的带宽用到80%以上。(注意,磁盘I/O和网络I/O可能会很有问题,想一想怎么解决,另外,请注意网络传输最大单元MTU)
了解BT下载的工作原理,用多进程的方式模拟BT下载的原理。
3、系统架构
负载均衡。HASH式的,纯动态式的。(可以到Google学术里搜一些关于负载均衡的文章读读)
多层分布式系统 – 客户端服务结点层、计算结点层、数据cache层,数据层。J2EE是经典的多层结构。
CDN系统 – 就近访问,内容边缘化。
P2P式系统,研究一下BT和电驴的算法。比如:DHT算法。
服务器备份,双机备份系统(Live-Standby和Live-Live系统),两台机器如何通过心跳监测对方?集群主结点备份。
虚拟化技术,使用这个技术,可以把操作系统当应用程序一下切换或重新配置和部署。
学习Thrift,二进制的高性能的通讯中间件,支持数据(对象)序列化和多种类型的RPC服务。
学习Hadoop。Hadoop框架中最核心的设计就是:MapRece和HDFS。MapRece的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释MapRece就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持。
了解NoSQL数据库(有人说可能是一个过渡炒作的技术),不过因为超大规模以及高并发的纯动态型网站日渐成为主流,而SNS类网站在数据存取过程中有着实时性等刚性需求,这使得目前NoSQL数据库慢慢成了人们所关注的焦点,并大有成为取代关系型数据库而成为未来主流数据存储模式的趋势。当前NoSQL数据库很多,大部分都是开源的,其中比较知名的有:MemcacheDB、Redis、Tokyo Cabinet(升级版为Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。

‘肆’ 计算机三大圣经指什么

一算法导论

全书选材经典,内容丰富,结构合理,逻辑清晰,对本科生的数据结构课程和,研究生的算法课程,都是非常实用的教材,在IT专业人员的职业生涯中,本书也是一本案头必备的参考书,或者工程实践手册。

二计算机程序设计艺术
本书结合大量数学知识,分析不同应用领域中的各种算法,研究算法的复杂性及算法的时间,空间效率,探讨各种适用算法等,其理论和实践价值得到了全世界,计算机工作者的公认。

三计算机操作系统
本教材对传统操作系统,和现代操作系统均作了较为全面的介绍,比如OS引论进程描述与控制,存储器管理虚拟存储器输入输出系统,文件系统。

‘伍’ 程序员的 职业素养

程序员因其致力于程序开发、设计、维护、编程等这一特殊领域,使其天生具备了坚定的职业信念、超强的职业知识技能、良好的职业行为习惯等职业素养。

简介:
程序员(英文Programmer)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员,系统架构师,测试工程师五大类。

岗位职责:

1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。
3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。
4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
7、负责相关技术文档的拟订。
8、负责对业务领域内的技术发展动态进行分析研究。

职业认证:
考试介绍:
软考程序员考试属于计算机软件水平考试(简称软考)中的一个初级计算机职称考试。对于软考程序员考试并无学历及资历条件限制,更无论年龄、专业与资历。一年可报考软考程序员考试两次,但一次考试只能报考一种资格,因此报考了程序员考试则无法再报考软考其他级别或科目的考试。同时软考程序员考试采用笔试形式,考试实行全国统一大纲、统一试题、统一时间、统一标准、统一证书的考试方式。
通过国家统一组织的考试,资格考试分为:程序员级(原初级程序员)、软件设计师(原高级程序员)以及更高水准的:信息系统项目管理师、系统分析师(原系统分析员)、系统架构设计师、网络规划设计师、系统规划与管理师。

考试目标:
通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照程序设计规格说明书编制并调试程序,写出程序的相应文档,产生符合标准规范的、实现设计要求的、能正确可靠运行的程序;具有助理工程师(或技术员)的实际工作能力和业务水平。
1、CVEQC认证持有者已经通过了中国职业教育资格认证指导中心组织的培训和相应的考试,具有相应的专业技能和知识。
2、CVEQC证书可作为劳动者岗前培训、在职培训、提高培训、继续教育的培训认证;也是劳动者“先培训、后就业,先培训、后上岗”的凭证。
3、CVEQC证书是中国职业教育资格认证指导中心颁发的专业技能证书。标有证书序列号、证书编号、培训者及证书持有者身份证号码,并盖有全国职业教育管理委员会、中国职业教育资格认证指导中心的证书专用章。
4、 证书证明参加培训及证书持有者具有系统地接受岗位技能培训的经历,证书在全国范围内有效。
二、报考条件:凡遵守中华人民共和国宪法和各项法律,恪守职业道德,具有一定计算机技术应用能力的人员,均可根据本人情况报名参加相应专业类别、级别的考试。[1]

考试要求:
(1)掌握数据及其转换、数据的机内表示、算术和逻辑运算,以及相关的应用数学基础知识;
(2)理解计算机的组成以及各主要部件的性能指标;
(3)掌握操作系统、程序设计语言的基础知识;
(4)熟练掌握计算机常用办公软件的基本操作方法;
(5)熟练掌握基本数据结构和常用算法;
(6)熟练掌握C程序设计语言,以及C++、Java、Visual Basic中的一种程序设计语言;
(7)熟悉数据库、网络和多媒体的基础知识;
(8)掌握软件工程的基础知识,了解软件过程基本知识、软件开发项目管理的常识;
(9)了解常用信息技术标准、安全性,以及有关法律、法规的基本知识;
(10)了解信息化、计算机应用的基础知识;
(11)正确阅读和理解计算机领域的简单英文资料。

相关书籍:
很多程序员响应,他们在推荐时也写下自己的评语。 以前就有国内网友介绍这个程序员书单,不过都是推荐数 Top 9的书。
其实除了前9本之外,推荐数前30左右的书籍都算经典,笔者整理编译这个问答贴,同时摘译部分推荐人的评语。
下面就按照各本书的推荐数排列。
1、《代码大全》 史蒂夫·迈克康奈尔
2、《程序员修炼之道》
3、《计算机程序的构造和解释》
4、《算法导论》
5、《重构:改善既有代码的设计》
6、《设计模式》
7、《人月神话》
8、《计算机程序设计艺术》
9、《编译原理》(龙书)

岗位分类:
世界上第一位程序员是英国着名诗人拜伦的女儿AdaLovelace,曾设计了巴贝奇分析机上解伯努利方程的一个程序。她甚至还建立了循环和子程序的概念。由于其在程序设计上的开创性工作,AdaLovelace被称为世界上第一位程序员。美国国防部开发的ADA语言就是为纪念这位世界上的第一位程序员而命名的。
计算机科学发展到今天(21世纪初期),程序员从事的人群很多,分工也不相同,从大的方面可以分为以下几类:asp程序员、jsp程序员、delphi程序员、php程序员、powerbuilder程序员、C程序员、linux程序员、net程序员、vb程序员、java程序员、javascript程序员、C++程序员、Python程序员、android程序员、iOS程序员。

职业要求:

一般的程序员都有四年的在专业领域的学习,需要一个在程序领域的学士学位获得者,不论是数学方面的还是工程方面的都是可以的。
大约有20%的人在这一领域的计算机科学和工程学拥有更高的学位。还有很小一部分程序员是自学的,尽管一些专业性的学校或者综合大学可以提供,但是也需要一些别的途径来提供相关的人才。尽管学历是比较重要的,但是公司经常把重点放在应聘者的工作经验上,很多刚从大学毕业的大学生虽然有引人注目的学位证书,但是他们找不到工作是因为他们缺乏经验。一个程序员虽然没有正规的学历,但是如果一个人拥有程序设计的深厚知识背景或者丰富的工作经验的话,那么他的机会要比有学历的应届毕业生大得多。所以要尽量抓住有用的工作和实习机会,这样的话在毕业后你就会发现,多实习让你有更多的经验,在找工作的时候就有更多的机会。
对于职业程序员,另外一个重要的方面就是,程序员需要不断提升自己的业务技术,他的技术必须一直保持在一个较高的水平,并且要不断发展,程序员也要寻找贸易的机会,要参加研讨会,在周刊上发表文章和接受职业教育,这些使程序员在自己的领域中分级或者不断并排前进。

素质要求:
团队精神和协作能力:
团队精神和协作能力是作为一个程序员应具备的最基本的素质。软件工程已经提了将近三十年了,当今的软件开发已经不是编程了,而是工程。独行侠可以写一些程序也能赚钱发财,但是进入研发团队,从事商业化和产品化的开发任务,就必须具备这种素质。可以毫不夸张的说这种素质是一个程序员乃至一个团队的安身立命之本。
文档习惯:
文档是一个软件系统的生命力。一个公司的产品再好、技术含量再高,如果缺乏文档,知识就没有继承,公司还是一个来料加工的软件作坊。作为代码程序员,必须将30%的工作时间用于写技术文档。没有文档的程序员势必会被淘汰。
规范化的代码编写习惯:
知名软件公司的代码的变量命名、注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。
测试习惯:
测试是软件工程质量保证的重要环节,但是测试不仅仅是测试工程师的工作,而是每个程序员的一种基本职责。程序员要认识测试不仅是正常的程序调试,而要是要进行有目的有针对性的异常调用测试,这一点要结合需求理解能力。
学习和总结的能力:
程序员是很容易被淘汰的职业,所以要善于学习总结。许多程序员喜欢盲目追求一些编码的小技巧,这样的技术人员无论学了多少语言,代码写起来多熟练,只能说他是一名熟练的代码民工(码农),他永远都不会有质的提高。一个善于学习的程序员会经常总结自己的技术水平,对自己的技术层面要有良好的定位,这样才能有目的地提高自己。这样才能逐步提高,从程序员升级为软件设计师、系统分析员。
拥有强烈的好奇心:
什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。

日常工作:

确认通过审查方案的目标,输入数据,分析师,监事,和客户的输出要求的项目要求。
安排项目要求在编程序列分析要求;准备工作流程图和使用计算机知识的能力,题材,编程语言和逻辑图。
编码工作流程的信息转换成计算机语言的项目要求。
通过输入编码信息的计算机程序。
确认程序操作进行测试,修改程序序列和/或代码。
准备写操作指令供用户参考。
保持历史记录,通过记录方案的制定和修订。
维护客户的信心和保护保密的业务。
技能/资格:一般的编程技巧,分析信息,解决问题,软件算法设计,软件性能优化,注重细节,软件设计,软件调试,软件开发基础,软件文档,软件测试。程序员其实分为很多种,大家开发的语言可能不尽相同,但是都是有他们的共同点。

‘陆’ 怎么成为一名程序员,要从哪里开始学起,先学什么在学什么

从hello wrod 开始学,下电子书边看边写,一定要多练习,不然学的快忘得也快,同时学习C语言,C是所有其他高级语言的基础,学会了C(不必学的太深,了解一些简单的算法和思想就可以) 再学起其他编程语言就会很容易上手的。

还有数据结构,虽然这是一门枯燥的学科,但它对与编程的思想拓展有很大帮助。 再看算法与应用一类的书了,因为程序设计主要是写算法,这就免不了学习数据结构。

(6)计算机程序设计艺术算法导论扩展阅读:

相关书籍

很多程序员响应,他们在推荐时也写下氏滚自己的评语。 以前就有国内网友介绍这个程序员书单,不过都是推荐数 Top 9的书。

其实除了前9本之外,推荐数前30左右的书籍都算经典,笔者整理编译这个问答贴,同时摘译部分推荐人的评语。

下面就按照各本书的推荐数排列。

1、《代码大全》 史蒂夫·迈克康奈尔

2、《程序员修炼之道》

3、《颂核败计算机程序的构造和解释》

4、《算法导论》

5、《重构:改善既有代码的设计》

6、《设计模式》

7、《人月神话》

8、《计算机程序设计艺术》

9、《编译原理》(龙书)

10、《活着》野颤

‘柒’ 除了算法导论 计算机程序设计艺术还有哪些比较好的算法书籍

初学者 数据结构 用 清华大学 李春葆的,里面源代码拦册多,可以运行
看完再结合看 严蔚敏的,严蔚敏的都是伪代码

算法导论不适合初学者形式化证明太多,找本简单的算法书看,最好是国外的,国内的华中科技大学的崔国华的个人觉得不错(虽然那书有不少勘误),个人感觉而已。基枯山本的学完了还是看算法导论比较好

计没衡中算机程序设计艺术 很经典,不过感觉是博士那级别看的懂的

‘捌’ 程序员经典的书籍有哪些C/C++ 数据结构之类的求指导

c++基础:
《C++ primer》必看,现在到第五版了把。
《Accelerated C++》看2本基础书还是很有必要的。
c++晋级:

《深入探索c++对象模型》讲的是编译器如果构造c++对象,必看,好书不解释
《Effective C++》
《More Effective C++》
《c++必知必会》
以上三本教你如何更好,更高效的编写c++代码。

程序库
《泛型编程与STL》必看,泛型编程很重要啊
《STL源码剖析》这书比较难,没有扎实的基础不建议看。
算法和数据结构

最经典书籍当属《计算机程序设计艺术》,但是我不推荐,如果你非得看,而且看完了,记得给比尔盖茨发简历。
我只推荐两本《算法导论》和《算法艺术与信息学竞赛》,尤其是《算法导论》大师之作,里面的代码都是权威,非常值得学习

‘玖’ 计算机四大基础课程

一 网上说的计算机三大圣经和计算机四大神书分别是什么

计算机专业“三大圣经”分别指的是:《算法导论》《计算机程序设计艺术》《计算机操作系统》。

并没有计算机“四大神书”一说。

(1)计算机四大基础课程扩展阅读

本专业是计算机硬件与软件相结合、面向系统、侧重应用的宽口径专业肆凯。通过基础教学与专业训练,培养基础知识扎实、知识面宽、工程实践能力强,具有开拓创新意识,在计算机科学与技术领域从事科学研究、教育、开发和应用的高级人才。

计算机学科的特色主要体现在:理论性强,实践性强,发展迅速按一级学科培养基础扎实的宽口径人才,体现在重视数学、逻辑、数据结构、算法、电子设计、计算机体系结构和系统软件等方面的理论基础和专业技术基础,前两年半注重自然科学基础课程和专业基础课程,拓宽面向。后一年半主要是专业课程的设置,增加可选性、多样性、灵活性和方向性,突出学科方向特色,体现最新技术发展动向。

二 计算机专业基础课程有哪些

多媒体 VB CC++ 汇编语言源 计算机组成原理 计算方法 数据库 JAVA 电工学原理
《计算机应用技术》、《数据结构导论》、《数据库及其应用》、《微型计算机及接口技术》、《计算机网络技术》、《线性代数》、SQL等。
再学《高级语言程序设计》、《VB程序设计》《汇编语言程序设计》、《JAVA程序设计》等等

三 计算机有几级。课程都分别是什么

考试等级划分:全国计算机等级考试目前共设置四个等级:(一)级定位为满足人们在一般性工作中对计算机的应用,重点是操作能力的考核。考核内裂高唤容主要包括微型计算机基础知识、windows操作和使用办公自动化软件及因特网(inter)的基本技能。1、具有计算机的基础知识(包括计算机病毒的防治常识);2、了解微型计算机系统的基本组成及各部分的功能;3、了解操作系统的基本功能,掌握windows的基本操作和应用;4、了解文字处理的基本知识,掌握word的基本操作和应用,熟练掌握一种汉字输入方法(键盘输入)。5、了解电子表格的基本功能,掌握电子表格软件excel97的基本操作和应用;6、了解文稿演示的基本知识,掌握powerpoint97的基本操作和应用;7、了解计算机网络基本概念和因特网(inter)的初步知识,掌握因特网(inter)的简单应用。一级b类以考核计算机应用能力为主,与全国计算机等级考试一、二、三、四级同属一个系列,其考核内容和水平与一级相当,考试采取无纸化形式,考生在计算机上完成答题,考试内容更加符合机关干部、企事业单位管理人员的需要。基本要求念前:1、具有计算机的基础知识;2、了解微型计算机系统的基本组成;3、了解操作系统的基本功能,掌握windows的使用方法;4、了解文字处理的基本知识,能够使用windows环境下的字表处理软件word,熟练掌握一种汉字输人方法。5、了解电子表格的基本功能,能够使用windows环境下电子表格excel的基本操作;6、了解计算机网络及因特网(inter)的初步知识;7、了解计算机病毒的防治常识。(二)级定位为计算机程序员,可谓“计算机蓝领”。考核内容主要包括计算机基础知识和使用一种高级计算机语言(包括qbasic、c、fortran、foxbase、visualbasic、visualfoxpro等)编写程序以及上机调试的基本技能。l、具有计算机的基础知识;2、了解操作系统的基本概念,掌握常用操作系统的使用;3、掌握基本数据结构和常用算法,熟悉算法描述工具--流程图的使用;4、能熟练地使用一种高级语言或数据库语言编写程序、调试程序。三级定位为“开发工程师”,重点在设计、管理、测试和技术支持。(三)级分为“pc技术”、“信息管理技术”、“数据库技术”和“网络技术”等四个类别,主要考核对应类别的应用系统的开发和维护的基本技能。“pc技术”考核pc机硬件组成和windows操作系统的基础知识以及pc机使用、管理、维护和应用开发的基本技能。“信息管理技术”考核计算机信息管理应用基础知识及管理信息系统项目和办公自动化系统项目开发和维护的基本技能。“数据库技术”考核数据库系统基础知识及数据库应用系统项目开发和维护的基本技能。“网络技术”考核计算机网络基础知识及计算机网络应用系统开发和管理的基本技能。四级定位为“系统设计工程师和项目主管”。考核内容包括计算机原理、数据结构、离散数学、操作系统、软件工程、数据库、计算机体系结构、计算机网络与通讯等专业课程的基本知识和应用技能。l、具有计算机及其应用的基础知识;2、熟悉计算机操作系统、软件工程和数据库的原理及其应用;3、具有计算机体系结构、系统组成和性能评价的基础及应用知识;4、具有计算机网络和通信的基础知识;5、具有计算机应用项目开发的分析设计和组织实施的基本能力;6、具有计算机应用系统安全和保密性知识

四 计算机有哪些课程

问题1.计算机专业
(计算机科学与技术)华中科技大学的,各个学校可能稍专微不同
课程名称属 学分
电路理论 4.0
离散数学 4.0
数字电路与逻辑设计4.0
高等数学(下) 5.0
大学英语(下) 5.0
高等数学(上) 4.0
C语言程序设计 5.0
计算机基础2 3.0
网络教育学习指导 0.0
大学英语(上) 5.0
数据结构 4.0
汇编语言程序设计 4.0
微机原理 4.0
操作系统概论 4.0
毛、邓、三思想概论 2.0
JAVA语言程序设计 3.0
软件工程 4.0
数据库系统概论 4.0
计算机网络 4.0

问题2:如果是非计算机专业的话,计算机相关的课程又有哪些?
下面这些应当是最基本的了
C语言程序设计
计算机基础
微机原理

五 计算机基础课程有哪些

计算机抄基础应该先学相关的基础课程:高等数学,普通物理、计算机专业英语
计算机的课程应该还有:操作系统、汇编语言、计算机算法、计算机原理或微机原理、计算机网络、数据库原理及应用、软件工程
程序语言方面可以再加一个Visual Foxpro,
如果不想那么专业,可以学些应用程序,比如:Flash,3DsMAX,Dreamweaver,PhotoShop等

六 计算机专业基础课程都有哪些

计算机文化基础 多媒体 VB C++ 汇编语言 计算机组成原理 计算方法 数据库
JAVA 电工学原理

《计算机应用技术》、《数据结构导论》、《数据库及其应用》、《微型计算机及接口技术》、《计算机网络技术》、《线性代数》、SQL等。
再学《高级语言程序设计》、《VB程序设计》《汇编语言程序设计》、《JAVA程序设计》等等。

七 计算机专业的基础课是什么

计算机专业的基础课就是《计算机的应用》〈计算机语言〉、〈计算机与网络〉、〈计算机科学与技术专业〉等都是计算机基础课程。学完基础课程后,才能真正学与自己相关的专业性的领域课程。

八 计算机专业的本科学生在大学四年要学哪些课程

本人计算机专业,略说一下:

大一(公共基础和专业基础):计算机概论;程序设计基础(C语言,需要学扎实,深入后都是在C的语言思想基础上)

大二(专业基础和核心):数据结构与算法(比较难,我们是C,也有其他语言的);数字电路(也很头痛);离散数学(计算机专业必修);数据库系统原理,数据库系统设计与开发(Delphi和SQL为主,比较重要也很有用,很多软件设计都以这两门课为基础);面向对象程序设计(我们是Java,也有用C++的,也比较重要);计算机组成原理,组成实验(如果毕业后要搞硬件,就必须学好这两门,难度很大);操作系统原理,实验(当时学的是linux系统,我忘得差不多了,里面的一些管理思想比较有趣);

大三(专业核心和专业方向):微机系统和汇编语言,实验(无聊,繁,难,和为来就业等关系都不大,不过如果要真正精通计算机,这两门课就要下功夫学好了);计算机网络,实验(dos命令等,黑客必须,很有趣);软件工程(就是如何做一个可以卖得出去的软件成品的步骤过程);

大三下开始就分方向:

Java方向:(Java方向中J2EE最重要,是工程组织,精通后可以直接就业,本人是Java方向)

JAVA高级程序设计
软件工程与数据库课程设计
网络工程
J2EE架构与应用开发
J2EE应用课程设计
C#程序设计
J2ME与移动应用开发
数据库系统应用与管理
软件开发规范

数据应用开发方向:(最重要)

C#程序设计
软件工程与数据库课程设计
架构与应用开发
应用课程设计
JAVA高级程序设计
Oracle应用
数据库系统应用与管理
软件质量保证与测试
软件开发规范

电子商务方向:(相对软件开发比较简单)

电子商务概论
C#程序设计
供应链与物流管理
电子商务系统的设计与实现
电子商务系统课程设计
电子商务安全
网页设计与网站开发

嵌入式系统方向:(比较难,搞硬件的多)

微机外围电路应用设计
嵌入式系统应用开发
单片机windows编程
ARM与嵌入式操作系统基础
C#程序设计
嵌入式系统开发导论
单片机应用设计
WinCE移动开发技术
嵌入式通信技术

数字媒体方向:

艺术设计概论
计算机图形图像处理
人机交互技术
计算机动画
数字媒体后期制作
视觉传达
计算机动画基础
计算机动画设计

大四:就是找工作实习和毕业设计,还有漏掉的课程就是专业机动选修,按照自己的兴趣选修了,附上课程资料:

Linux操作系统及其应用
数学建模(Ⅰ)
数学建模(Ⅱ)
计算机辅助设计
信息政策与法规
软件开发规范
计算机图形学
编译技术
项目管理
图像处理与模式识别
多媒体技术
Web网页设计基础
计算方法
Windows编程
计算机信息安全
艺术设计概论
软件质量保证与测试
网络工程
人机交互技术
计算机发展前沿

九 计算机专业有哪些课程

主要课程有计算机应用基础、应用文写作、数学、英语、德育、电工与电子技术、计算机网络技术、C语言、计算机组装与维修、企业网安全高级技术、企业网综合管理、windows server 2008操作系统。

还有局域网组建、Linux服务器操作系统、网络设备与网络技术(主要学习思科、华为公司设备的配置、管理、调试)、SQL Server、网络综合布线技术、CAD绘图等。

计算机学科的特色主要体现在:理论性强,实践性强,发展迅速按一级学科培养基础扎实的宽口径人才,体现在重视数学、逻辑、数据结构、算法、电子设计、计算机体系结构和系统软件等方面的理论基础和专业技术基础。

(9)计算机四大基础课程扩展阅读

计算机专业培养目标

本专业毕业生应获得以下几个方面的知识和能力:

1、掌握电子技术和计算机组成与体系结构的基本原理、分析方法和实验技能,能从事计算机硬件系统开发与设计。

2、掌握程序设计语言、算法与数据结构、操作系统以及软件设计方法和工程的基本理论、基本知识与基本技能,具有较强的程序设计能力,能从事系统软件和大型应用软件的开发与研制。

3、掌握并行处理、分布式系统、网络与通信、多媒体信息处理、计算机安全、图形图象处理以及计算机辅助设计等方面的基本理论、分析方法和工程实践技能,具有计算机应用和开发的能力。

4、掌握计算机科学的基本理论,具有从事计算机科学研究的坚实基础。

十 计算机专业基础的四本书哪一本最难

计算机专业基础的四本书中,最难的通常都认为是数据结构。
当然也因人而异,有句话叫:“会者不难,难者不会。”
《数据结构》
《计算机组成与设计》
《计算机操作系统》
《计算机网络》

‘拾’ 为什么《算法导论》中的数组序号是从1开始的

c语言下标从零开始是个错误,并且 index 也是一个有误导性的名词,它表示的是偏移量,明明应该用 offset。
然后 c 的徒子徒孙都学了它,导致现在很多人都误以为下标应该从 0 开始。
早期蛮荒时代,很多东西都不科学,算法导论作者致力于与落后文明作斗争,然而却遭到了楼主你的不理解,实乃编程届一大憾事。
我再说一遍,C 是结构化的汇编,下标基 0 是受到了 PDP-11 指令集的影响,更老的语言(比如 Fortran)都是基 1 的。
另外用 0/非 0 代表 false/true 也是 PDP-11 中 TST 指令和 Z 位的行为。
可能是这本书强调算法的求学思想,所以从一更加符合数学的数组规定。
但是编程的时候,指针这个东西会经常用到,如果用a(o)作为第一个元素 那么*a+n就等同于a(n) 比较方便
算法导论上的这个问题呢,我觉得我比较同意楼上的看法,这个书上面的很多的程序并不是可以敲上去直接运行的,他只是伪代码,思想而已,给人看的,人类的普遍思维是从1开始,那么书页就是从1开始了
说编程语言是给机器看而伪代码是给人看的简直是逗大家笑吧...编程语言设计出来就是给人看的....
另外从0开始在很多方便都极好....我觉得写多代码都能体会到吧..
帮算导洗地:
算法导论通篇用的是伪代码 是给人类阅读理解的 不是设计给机器去运行的
而绝大多数情况下, index 从 1 开始更符合人类直觉(如果你对这点有异议请参考的答案 )
但少数情况下, index 从 0 开始更符合人类直觉。例如书中 hashing 还有 FFT 那块内容, index 是从 0 开始的。
其实写几天 Pascal 你就适应啦。。

阅读全文

与计算机程序设计艺术算法导论相关的资料

热点内容
程序员装机必备的软件 浏览:9
php微信第三方登录demo 浏览:536
上海php工具开发源码交付 浏览:790
哪里有求购黄页的源码 浏览:194
商城矿机源码矿场系统 浏览:195
单片机的led灯熄灭程序 浏览:222
洛阳python培训 浏览:702
小键盘命令 浏览:192
单片机c语言返回主程序 浏览:816
dockerpythonweb 浏览:970
程序员算法有多强 浏览:717
pythonworkbook模块 浏览:245
什么app能查医生 浏览:175
轻量级的编程语言 浏览:338
程序员那么可爱生孩子 浏览:432
后缀him3加密文件是什么软件 浏览:984
坚果隐藏app为什么要140版本才能用 浏览:313
淘宝dns服务器地址 浏览:259
领英转型app哪个好用 浏览:943
压缩软件的图标 浏览:97