一个项目覆盖CS所有课程的可行性探究
我们先看计算机科学有哪些子领域。
学术领域有:
- 计算理论
- 信息和编码理论
- 算法和数据结构
- 形式化方法
- 程序设计语言
实践领域有:
- 计算机体系结构
- 并行计算和分布式系统
- 实时系统和嵌入式系统
- 操作系统
- 计算机网络
- 科学计算
- 安全性和密码学
- 人工智能(模式识别、机器学习、数据挖掘、信息提取)
- 计算机图形学、计算机视觉、多媒体
- 数据库和大规模数据处理
- 万维网
- 自然语言处理和语音
- 人机交互
- 软件工程
现在要讨论的是,有没有一个项目,其中要用到所有领域的知识。
首先是所有项目都要用到的,编程语言、算法与数据结构、软件工程。没有编程语言不能写代码,稍微上档次的项目都会用到各种专用或通用算法与各种简单或复杂的数据结构,而实现一个大项目总会用到软件工程的知识。
然后从CS的实践领域中挑选出本科生应该掌握的课程:操作系统、计算机网络、Web、编译原理、计算机图形学、编译原理、数据库、汇编、密码学,附赠一个数据挖掘。
把课程与项目联想起来:
操作系统 ---- 写一个操作系统
编译原理 ---- 写一个语言
计算机网络 ---- 写一个web服务器
Web ---- 写一个网站
图形学 ---- 一个跟图像处理有关的项目
数据库 ---- 写一个数据库
汇编 ---- 用汇编写点东西
密码学 ---- 写一个加密系统
可见除了汇编与图形学不好找项目外,其他科目都可以找到一个最终任务。
现在问题就来了,数据挖掘哪家强?
不对,问题是怎样用一个项目去覆盖这些科目。
当我们要实现一个数据库系统时,我们要设计SQL语言,这与编译原理的知识可以互动。
而我们实现web服务器时,也需要设计一个网站,而这个网站如果能用自己设计的语言来写就更好了。
在实现操作系统的时候,用到汇编。
关于图形学,我能想到的最好的项目时开发一个游戏。而且是网络游戏,这样会用到计算机网络的知识,而客户端与服务器之间的通信要用到密码学,玩家的游戏数据又可以用来玩数据挖掘。
综合以上,覆盖所有科目的项目就是:自己用汇编知识以及C语言写一个操作系统,然后为这个系统开发一门专用的语言,并用图形学与计算机网络的知识制作一个该操作系统上的网络游戏,游戏客户端与服务器之间的通信要用密码学知识加密,玩家的数据储存在自己实现的数据库系统上,实现一个web服务器并用自己开发的语言编写一个网站作为游戏的官网,最后把游戏玩家的数据用来数据挖掘。
一个项目覆盖CS所有课程的可行性探究的更多相关文章
- 一个项目涉及到的50个Sql语句(整理版)
/* 标题:一个项目涉及到的50个Sql语句(整理版) 说明:以下五十个语句都按照测试数据进行过测试,最好每次只单独运行一个语句. */ --1.学生表Student(S,Sname,Sage,Sse ...
- eclipse中将一个项目作为library导入另一个项目中
1. github上搜索viewpagerIndicator: https://github.com/JakeWharton/ViewPagerIndicator2. 下载zip包,解压,eclips ...
- kraken-ejs创建一个项目【学习札记】
Keep in Touch. 保持联络. Who’s calling? 是哪一位? You did right. 你做得对. You set me up! 你出卖我! kraken-express-e ...
- [Asp.Net]最近一个项目的总结
引言 项目到目前告一段落,目前进入测试阶段,下周就要去部署了.虽然项目不大,但是从头到尾都是自己一个人负责,在完成编码之后,对代码进行走查,命名规范,业务逻辑,代码优化等,能负责一个项目的整个编码,非 ...
- vs2010 C# 如何将类做成DLL 再从另一个项目中使用这个类
vs2010 C# 如何将类做成DLL 再从另一个项目中使用这个类 2011-10-20 12:00 486人阅读 评论(0) 收藏 举报 一.将类做成DLL 方法一: 你可以通过在命令行下用命令将以 ...
- Android之通过配置Flavor实现一个项目打包成多个apk
最近我老大问我一个问题,说Android可不可以像iOS那样,通过target对项目进行管理啊.老大提这个问题也是正常的,我公司的主要是帮别的公司做硬件定制的,每定制一个硬件就要定制一个APP,但是很 ...
- 今天做一个项目的时候,要在一个编辑的jsp页面的textarea标签设置value属性,结果发现他没有value属性,但是是编辑页面又必须要回显要修改的内容,所以在参考了w3cschool之后很轻松的解决了这个问题。
今天做一个项目的时候,要在一个编辑的jsp页面的textarea标签设置value属性,结果发现他没有value属性,但是是编辑页面又必须要回显要修改的内容,所以在参考了w3cschool之后很轻松的 ...
- .Net·如何快速上手一个项目?
阅文时长 | 0.61分钟 字数统计 | 1029.6字符 主要内容 | 1.引言&背景 2.步入正题,如何快速上手一个项目? 3.声明与参考资料 『.Net·如何快速上手一个项目?』 编写人 ...
- vue 快速入门 系列 —— 使用 vue-cli 3 搭建一个项目(下)
其他章节请看: vue 快速入门 系列 使用 vue-cli 3 搭建一个项目(下) 上篇 我们已经成功引入 element-ui.axios.mock.iconfont.nprogress,本篇继续 ...
随机推荐
- maven 简单实用教程
1. Maven介绍 1.1. 简介 java编写的用于构建系统的自动化工具. 目前版本是2.0.9,注意maven2和maven1有很大区别,阅读第三方文档时需要区分版本. 1.2. Maven资源 ...
- VisualC#数据库高级教程文档分享
这一节我们演示下怎样使用VS2010创建与发布MVC3建立的网站.使用VS2010创建MVC3.0网站,需要下载MVC3.0的安装包,这个大家可以去网络上下载. 1.项目创建 ...
- [WebKit]浏览器的加载与页面性能优化
非常棒.非常系统的一份资料,值得阅读! 原文来自百度泛用户体验. 作者:nwind 本文将探讨浏览器渲染的loading过程,主要有2个目的: 了解浏览器在loading过程中的实现细节,具体都做了什 ...
- FZU 2237 中位数 主席树 树上k大
#include <cstdio> #include <cstring> #include <queue> #include <set> #includ ...
- POJ 1511 Invitation Cards dij
分析:正向加边,反向加边,然后两遍dij #include<cstdio> #include<cstring> #include<queue> #include&l ...
- fcitx中文输入法
Ubuntu自带的输入法不太尽如人意思,用起来也不方便,我在Ubuntu和FC中都是用Fcitx,很好用! 安装配置如下: 1. 安装 fcitx sudo apt-get install fcitx ...
- 韦东山yy公开课笔记(2)--各种杂的问题
1. 编译器的版本和glibc库有对应关系吗,如何查看glibc的版本(glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc),编译器是不是只带glibc被编译生成的 . ...
- 调试 Azure 云服务项目的方法
调试 Azure 云服务项目 在菜单栏中选择“调试”>“启动调试”(键盘操作:F5). 重要提示 如果未将 Azure 云服务项目设置为启动项目,当你单击按钮以触发断点时,将出现以下错误:“外部 ...
- HW2.10
import javax.swing.JOptionPane; public class Solution { public static void main(String[] args) { Str ...
- Codeforces Round #226 (Div. 2)C. Bear and Prime Numbers
/* 可以在筛选质数的同时,算出每组数据中能被各个质数整除的个数, 然后算出[0,s]的个数 [l,r] 的个数即为[0,r]的个数减去[0,l]个数. */ #include <stdio.h ...