《計算機科學基礎(雙色)》是浙江大學計算機基礎課程建設成果。《計算機科學基礎(雙色)》共10章,第1~3章重點介紹計算機的基本知識,數制,編碼和數字邏輯基礎。以及計算機的硬件組成。第4~6章介紹計算機的操作系統、軟件、算法等,其中,算法是計算機科學的核心內容。第7章介紹數據庫相關知識。第8章介紹網絡.包括因特網的基本知識。第9章介紹有關計算機的一些高級主題,包括高性能計算、人工智能和計算理論。第10章討論有關信息社會的問題,包括有關法律、版權、環境、健康.計算機安全、病毒、黑客等。《計算機科學基礎(雙色)》免費提供電子課件。《計算機科學基礎(雙色)》適合作為大學計算機基礎課程教材,也可以作為計算機專業的導論課程教材。
第1章 引論.
1.1 計算機是什么.
1.2 數據處理機模型
1.2.1 黑盒模型
1.2.2 具有程序能力的數據處理機.
1.3 現代計算機模型
1.3.1 計算機的五個組成部分
1.3.2 程序存儲原理
1.4 計算機系統
1.4.1 硬件系統
1.4.2 計算機軟件
1.4.3 計算機是如何運行的
1.5 信息系統
1.6 因特網和萬維網
1.6.1 因特網
1.6.2 萬維網
1.7 計算機文化和計算思維
本章小結
習題
第2章 數據表示及邏輯基礎.
2.1 概述
2.2 數制
2.2.1 常用數制
2.2.2 二進制數的基本運算
2.3 數制轉換
2.3.1 二進制數和十進制數的轉換
2.3.2 二進制數與八進制數、十六進制數的轉換
2.3.3 十進制數與八進制數、十六進制數的轉換
2.4 計算機中的數.
2.4.1 原碼、反碼和補碼
2.4.2 定點數和浮點數
2.5 編碼和文本
2.5.1 位模式
2.5.2 文本和文檔
2.5.3 ASCII碼
2.5.4 Unicode編碼
2.5.5 漢字編碼
2.6 多媒體數據
2.6.1 圖形和圖像.
2.6.2 音頻
2.6.3 視頻
2.7 邏輯運算和門電路.
2.7.1 基本邏輯關系
2.7.2 邏輯代數
2.7.3 門電路
2.8 邏輯設計基礎
2.8.1 加法器
2.8.2 半加器
2.8.3 全加器
2.8.4 存儲單元電路
2.8.5 集成電路
本章小結
習題
第3章 計算機硬件
3.1 概述
3.2 處理器
3.2.1 處理器芯片和結構
3.2.2 內部總線
3.2.3 處理器的性能指標
3.2.4 CISC和RISC
3.3 存儲器
3.3.1 存儲模式和存儲容量
3.3.2 內存
3.3.3 磁盤
3.3.4 光盤
3.3.5 固態存儲器.
3.3.6 存儲器的主輔結構
3.3.7 PC機的存儲器
3.4 輸入/輸出系統
3.4.1 端口
3.4.2 輸入設備
3.4.3 輸出設備
3.4.4 其他輸入/輸出設備
3.5 系統連接和USB
3.5.1 系統總線標準
3.5.2 USB
3.5.3 接口和輸入/輸出方式.
本章小結
習題
第4章 操作系統.
4.1 操作系統的定義
4.2 操作系統的類型
4.3 常見的操作系統
4.3.1 MS-DOS.
4.3.2 Windows.
4.3.3 UNIX/Linux
4.3.4 Mac OS
4.3.5 移動設備操作系統
4.4 操作系統的結構和組成
4.4.1 操作系統的層次結構
4.4.2 操作系統的組成
4.4.3 進程管理
4.4.4 存儲器管理
4.4.5 設備管理
4.5 Windows操作系統
4.5.1 概述
4.5.2 系統結構
4.5.3 系統管理
4.5.4 啟動和停機
4.6 文件管理
4.6.1 文件和文件系統
4.6.2 給文件命名
4.6.3 文件擴展名和通配符
4.6.4 常用的文件類型
4.6.5 目錄結構
4.6.6 文件存取
4.6.7 文件的存儲結構
4.6.8 文件系統的安全
本章小結
習題
第5章 算法基礎
5.1 算法的概念
5.2 算法的分類和特性
5.3 算法的三種結構
5.4 算法的表示
5.4.1 流程圖
5.4.2 自然語言表達與原語表達
5.4.3 偽代碼
5.5 算法的發現
5.6 算法舉例
5.6.1 基本算法
5.6.2 迭代
5.6.3 遞歸
5.6.4 排序
5.6.5 查找
5.7 算法的方法學
5.7.1 貪心法
5.7.2 分治法
5.7.3 動態規劃
5.7.4 回溯法
5.8 數據表達和數據結構
本章小結
習題
第6章 語言、程序和軟件
6.1 概述
6.2 程序和指令
6.2.1 程序:按步驟執行
6.2.2 指令和指令系統
6.3 程序設計語言
6.3.1 機器語言和指令
6.3.2 匯編語言
6.3.3 面向過程的高級語言
6.3.4 面向對象的程序設計語言
6.3.5 其他語言
6.4 程序的程序:翻譯系統
6.5 高級語言的概念
6.5.1 常量、變量和數據類型
6.5.2 構造數據類型
6.5.3 基本語句
6.5.4 分支語句
6.5.5 循環語句
6.5.6 函數和方法
6.6 怎樣編寫程序
6.6.1 理解問題:程序說明
6.6.2 程序設計
6.6.3 編寫程序代碼
6.6.4 尋找錯誤:程序測試
6.6.5 編寫程序文檔
6.6.6 運行與維護
6.7 軟件工程簡介
6.7.1 什么是軟件開發
6.7.2 軟件生命周期
6.7.3 軟件開發模型
6.7.4 開發軟件的過程
6.7.5 軟件項目管理
6.7.6 職業:軟件工程師
本章小結
習題
第7章 數據庫
7.1 概述
7.1.1 什么是數據庫
7.1.2 為什么要使用數據庫
7.1.3 什么是數據庫系統
7.2 數據庫管理系統
7.2.1 軟件和數據的結合
7.2.2 數據庫產品.
7.2.3 各種用戶數據庫
7.3 數據庫的體系結構和數據庫模型
7.3.1 數據庫的三級體系結構
7.3.2 數據庫模型.
7.3.3 關系型數據庫
7.4 SQL語言
7.4.1 什么是SQL 語言
7.4.2 SQL語言的特點
7.4.3 一個使用SQL語言的例子
7.5 數據庫技術
7.5.1 面向對象的數據庫
7.5.2 分布式數據庫
7.5.3 決策支持和數據倉庫
7.5.4 數據挖掘
7.5.5 自然語言數據庫
7.6 構建數據庫系統
本章小結
習題
第8章 網絡.
8.1 概述
8.1.1 數據傳輸速率和帶寬
8.1.2 網線
8.1.3 無線傳輸
8.2 網絡的類型
8.2.1 局域網及其拓撲結構
8.2.2 城域網.
8.2.3 廣域網
8.2.4 無線網.
8.3 組建網絡:設備、模型和協議
8.3.1 網絡設備
8.3.2 網絡協議
8.3.3 OSI模型
8.3.4 局域網協議和組網技術
8.3.5 虛擬專網
8.3.6 網絡服務器和操作系統
8.3.7 網絡應用程序
8.4 網絡的網絡:因特網
8.4.1 因特網的歷史
8.4.2 因特網的核心:TCP/IP協議.
8.4.3 內網和外網:Intranet
8.4.4 IP地址和域名.
8.4.5 子網、代理服務器和NAT
8.4.6 網絡命令
8.4.7 接入因特網.
8.5 因特網的資源.
8.5.1 Web和網站
8.5.2 電子郵件和新聞組
8.5.3 文件傳輸:FTP
8.5.4 Telnet與BBS
8.5.5 博客和微博.
8.5.6 即時通信
8.5.7 搜索引擎
8.6 發展中的因特網
8.6.1 Web 2.0和Web 3.
8.6.2 GPS和智能手機
8.6.3 電子貨幣和電子商務
8.6.4 Internet
8.6.5 無限的因特網
本章小結
習題
第9章 高級主題.
9.1 高性能計算
9.1.1 并行計算
9.1.2 分布式計算.
9.1.3 集群計算
9.1.4 云計算.
9.2 人工智能
9.2.1 圖靈測試
9.2.2 推理:知識表達
9.2.3 專家系統
9.2.4 神經網絡
9.2.5 機器人.
9.2.6 自然語言處理
9.2.7 有關人工智能的幾個問題
9.3 虛擬現實
9.4 可計算理論
9.4.1 可計算函數.
9.4.2 哥德爾數
9.4.3 阿克曼函數.
9.5 自動機理論
9.5.1 有限自動機.
9.5.2 圖靈機.
9.5.3 細胞自動機.
9.6 停機問題
9.7 計算復雜性
9.7.1 復雜性的度量
9.7.2 P問題和NP問題
本章小結
習題
第10章 信息社會
10.1 社會影響.
10.1.1 概述
10.1.2 社會問題
10.1.3 計算機犯罪與法律.
10.1.4 隱私保護
10.2 軟件版權和自由軟件
10.2.1 軟件版權及其保護.
10.2.2 自由軟件
10.2.3 共享軟件
10.3 計算機與環境
10.4 計算機與人類健康
10.5 計算機與安全
10.5.1 計算機安全工程
10.5.2 計算機病毒
10.5.3 反病毒軟件的機制.
10.5.4 黑客和防火墻
本章小結
習題
附錄A ASCII碼表
附錄B 常用術語英漢對照表
參考文獻
2.軟件的進化軟件也是隨著計算機科學的發展和技術的進步而“進化”的,計算機從完全由專業人員操縱到今天的普及應用,在很大程度上應歸功于軟件。
第一代計算機使用的是二進制代碼語言編寫的程序,它是內置在機器內部、被計算機處理器直接執行的指令代碼。這一時期并沒有“軟件”概念,只有“編程”(Programming)概念。當時的計算機主要用于科學計算,處理數值數據,程序員需要非常熟悉機器指令代碼。這個時代的程序員多為數學家和計算機專業工程師。
機器碼編程不但設計和編碼工作繁雜、費時,而且極易出錯。后來開始使用符號化的匯編語言,它使用英文縮寫表示機器代碼。匯編語言仍然和機器相關,而且最初還需要人工翻譯成機器代碼,這個翻譯工作也被發展為用程序來實現,編寫這類語言翻譯程序的程序員就是最早的“系統程序員”。
到了20世紀50年代后期的第二代計算機時期,計算機的硬件功能變得強大,對程序的要求自然隨之提高。這一時期,類似于英文表達的程序設計語言被開發出來,稱為計算機高級編程語言。當時典型的高級語言有兩個:FORTRAN語言和ICOBOL語言。
第二代計算機時期,系統程序員仍然致力于計算機語言工具,而使用計算機語言開發應用程序的程序員被稱為“應用程序員”。隨著語言系統功能的不斷強大,程序開發開始逐步脫離硬件的限制。這個時期的另一個重要的變化是,計算機業界巨頭IBM公司放棄了軟件隨硬件捆綁的政策,使得應用軟件的開發步入快速發展軌道,有更多的軟件公司進入計算機市場。而在這之前,軟件的開發一直被硬件供應商獨占。
20世紀60年代中期到70年代初,也就是第三代計算機時期,出現了操作系統。最初是因為輸入時只有輸入設備工作,其他設備需要等待;處理數據時,輸入/輸出設備也都處于等待狀態,硬件資源利用率很低,而那時的硬件是極為昂貴的。為此需要對計算機程序的運行過程進行調度,提升系統硬件的利用率,例如計算機調度運行多個程序以減少等待時間等。完成這個調度的程序就是“操作系統”。
……