跳到主要内容

普林斯顿 COS333 高级编程技术 ⭐️

课程名称: Advanced Programming Techniques
课程官网地址:2019年春
先修课程: COS217 编程系统导论COS226 算法和数据结构
重要程度: ※※※※
课程评点: 本课不限编程语言,这是一门实践性非常强的课程,也没有配套的视频,需要你能够完整开发一个编程项目。

软件工程对国内大部分学生来说,是求职时非常重要的一门课,这门课会教你如何团队协作开发一个完整的软件项目。这是一门非常偏编程实战、偏团队以及偏企业需求前沿的课程,因此这些名校关于软件工程的课程都没有开放的视频可供学习。

不过这些课程对学生的技能要求以及一些参考资料有助于大家实际了解开发一个项目到底需要哪些流程,会用到什么软件,需要具备哪些能力,等等。而这些也只是知识性的参考,强烈推荐大家在学习时,找两三个同学一起组成团队,协作开发一个完整的项目。国内更推荐用Java/Node+Vue/React的组合。

课程说明

这是一门关于编程实践的课程。编程不仅仅是写代码。程序员还必须权衡利弊,在备选设计方案中进行选择,调试和测试,提高性能,并维护自己和他人编写的软件。同时,他们必须在满足规范的同时关注兼容性、稳健性和可靠性。学生将有机会通过编写自己的代码和参加小组项目来培养这些技能。

本课需要你开发一套完整的网站(需要提交可以访问的网站链接),该网站的源代码(需上传到Github)、网站的开发报告(开发进展以及开发心得)以及该网站的产品指南(描述系统的功能以及功能是如何实现的)。

课程基础大纲,包括但不限于以下内容(然而,这不仅仅是一份清单。每个部分还将讨论设计、实现、测试、性能、可移植性和其他软件工程问题,这些也将成为编程作业的一部分):

  • 项目概况;正则表达式、grep、shell
  • 脚本语言:Awk、Python 等
  • 网页系统:HTTP、CGI、HTML、CSS
  • JavaScript、DOM、Ajax
  • Web 框架、开发环境
  • 数据库;网络管道
  • 图形用户界面
  • 面向对象编程、C++、STL
  • API、设计模式

推荐教材

必读文档

🌽 Kernighan 和 Pike的《The Practice of Programming》 电子书:编程实践 英文版提取码: t764

参考教材

你需要了解基本的 Unix 工具和用法,比如《The Unix Programming Environment》。这本电子书是贝尔实验室(Unix诞生地)在1984年发布的,有点老。

电子书:《Unix 编程环境》 提取码: 972k

除了以上两个教材以外,本课还列了一长串的关于各种编程语言技术文档,以及软件工程的一些经典书籍。

参考书目清单:COS 333 官方参考书目

这里整理一下这份清单里面推荐的几本电子书:

🌽 Butler Lampson(Alto 软件设计师,1992 年图灵奖获得者)的《Hints for Computer System Design 》

电子书:计算机系统设计提示 英文版 提取码: ok3c

🌽 Alan Perlis(1966 年第一届图灵奖获得者)的Epigrams on Programming

电子书:编程警句 英文版 提取码: 6bol