Computer Science Field Guide
Chapters
1. Introduction
1.1. What’s the big picture?
1.2. How to use this guide
1.3. About this guide
1.4. Further reading
2. Data representation
2.1. What’s the big picture?
2.2. Getting Started
2.3. Representing Text with bits
2.4. Representing numbers with bits
2.5. Colours
2.6. The whole story!
2.7. Further reading
3. Algorithms
3.1. Brainstorming
3.2. What’s the big picture?
3.3. Getting started
3.4. Searching
3.5. Sorting
3.6. Subtopic 3
3.7. Subtopic n
3.8. The whole story!
3.9. Further reading
4. Human-computer interaction
4.1. What’s the big picture?
4.2. Getting started
4.3. Subtopic 1
4.4. Subtopic 2
4.5. Subtopic 3
4.6. Subtopic n
4.7. The whole story!
4.8. Further reading
5. Programming languages
5.1. What’s the big picture?
5.2. Getting started
5.3. Subtopic 2
5.4. Subtopic 3
5.5. Subtopic n
5.6. The whole story!
5.7. Further reading
6. Coding - Introduction
6.1. What’s the big picture?
6.2. Getting started
6.3. Subtopic 1
6.4. Subtopic 2
6.5. Subtopic 3
6.6. Subtopic n
6.7. The whole story!
6.8. Further reading
7. Compression coding
7.1. What’s the big picture?
7.2. Getting Started - Simple Run Length Coding
7.3. Image compression
7.4. General purpose compression
7.5. Sound compression?
7.6. Subtopic n
7.7. The whole story!
7.8. Further reading
8. Encryption coding
8.1. What’s the big picture?
8.2. Getting started - Caesar Cipher
8.3. Password Storage?
8.4. Sending messages securely?
8.5. The whole story!
8.6. Further reading
9. Error control coding
9.1. What’s the big picture?
9.2. Getting Started - The Parity Magic Trick
9.3. ISBN
9.4. RAID Disks (Maybe...)
9.5. The whole story!
9.6. Further reading
10. Artificial Intelligence
10.1. What’s the big picture?
10.2. Chatterbots and The Turing Test
10.3. The whole story!
10.4. Further reading
11. Complexity and tractability
11.1. What’s the big picture?
11.2. Algorithms, problems, and speed limits
11.3. Tractability
11.4. The Travelling Salesman Problem
11.5. Other intractable problems
11.6. The whole story!
11.7. Further reading
12. Formal languages
12.1. What’s the big picture?
12.2. Getting started
12.3. Finite state automata
12.4. Regular expressions
12.5. Grammars and parsing
12.6. The whole story!
12.7. Glossary
12.8. Further reading
13. Computer graphics
13.1. What’s the big picture?
13.2. Graphics transforms
13.3. Drawing lines and circles
13.4. The whole story!
13.5. Further reading
14. Computer vision
14.1. What’s the big picture?
14.2. Lights, Camera, Action!
14.3. Noise
14.4. Face recognition
14.5. Edge detection
14.6. The whole story!
14.7. Further reading
15. Network communication protocols
15.1. What’s the big picture?
15.2. Getting started
15.3. Subtopic 1
15.4. Subtopic 2
15.5. Subtopic 3
15.6. Subtopic n
15.7. The whole story!
15.8. Further reading
16. Software engineering
16.1. What’s the big picture?
16.2. Analysis: What do we build?
16.3. Design: How do we build it?
16.4. Testing: Did we Build the Right Thing / Does it Work?
16.5. Software processes
16.6. Agile software development
16.7. The whole story!
16.8. Further reading
17. Appendices
17.1. Glossary
17.2. Contributors
17.3. News
17.4. WebGL on Windows, Linux and Mac OS X
17.5. Teaching Guide for New Zealand
17.6. Teaching Guide for Germany
17.7. Future plans for the field guide
17.8. Guide to System for Open Source Developers
17.9. Development Status
Table of Contents
ΒΆ
1. Introduction
1.1. What’s the big picture?
1.2. How to use this guide
1.3. About this guide
1.4. Further reading
2. Data representation
2.1. What’s the big picture?
2.2. Getting Started
2.3. Representing Text with bits
2.4. Representing numbers with bits
2.4.1. How we write base 10 numbers
2.4.2. Binary numbers
2.4.3. Computers representing numbers in practice
2.5. Colours
2.5.1. How do computer screens display colours?
2.5.2. Representing 24-bit colours using bits
2.5.3. Representing colours using fewer bits
2.6. The whole story!
2.7. Further reading
2.7.1. Useful Links
3. Algorithms
3.1. Brainstorming
3.2. What’s the big picture?
3.2.1. Key concepts
3.3. Getting started
3.4. Searching
3.5. Sorting
3.6. Subtopic 3
3.7. Subtopic n
3.8. The whole story!
3.9. Further reading
3.9.1. Useful Links
4. Human-computer interaction
4.1. What’s the big picture?
4.1.1. Key concepts
4.2. Getting started
4.3. Subtopic 1
4.4. Subtopic 2
4.5. Subtopic 3
4.6. Subtopic n
4.7. The whole story!
4.8. Further reading
4.8.1. Useful Links
5. Programming languages
5.1. What’s the big picture?
5.1.1. Key concepts
5.2. Getting started
5.3. Subtopic 2
5.4. Subtopic 3
5.5. Subtopic n
5.6. The whole story!
5.7. Further reading
5.7.1. Useful Links
6. Coding - Introduction
6.1. What’s the big picture?
6.1.1. Key concepts
6.2. Getting started
6.3. Subtopic 1
6.4. Subtopic 2
6.5. Subtopic 3
6.6. Subtopic n
6.7. The whole story!
6.8. Further reading
6.8.1. Useful Links
7. Compression coding
7.1. What’s the big picture?
7.2. Getting Started - Simple Run Length Coding
7.3. Image compression
7.4. General purpose compression
7.5. Sound compression?
7.6. Subtopic n
7.7. The whole story!
7.8. Further reading
7.8.1. Useful Links
8. Encryption coding
8.1. What’s the big picture?
8.2. Getting started - Caesar Cipher
8.3. Password Storage?
8.4. Sending messages securely?
8.5. The whole story!
8.6. Further reading
8.6.1. Useful Links
9. Error control coding
9.1. What’s the big picture?
9.2. Getting Started - The Parity Magic Trick
9.3. ISBN
9.4. RAID Disks (Maybe...)
9.5. The whole story!
9.6. Further reading
9.6.1. Useful Links
10. Artificial Intelligence
10.1. What’s the big picture?
10.2. Chatterbots and The Turing Test
10.2.1. A Therapy Session with Eliza the Chatterbot
10.2.2. ALICE the Chatterbot
10.2.3. Chatterbots that learn from humans
10.2.4. Even more Chatterbots!
10.2.5. The Turing Test
10.2.6. Activity: Run your own Turing test
10.2.7. Project: Investigating chatterbots and the Turing test
10.3. The whole story!
10.4. Further reading
10.4.1. Useful Links
11. Complexity and tractability
11.1. What’s the big picture?
11.2. Algorithms, problems, and speed limits
11.3. Tractability
11.4. The Travelling Salesman Problem
11.4.1. Project: The craypots problem
11.5. Other intractable problems
11.6. The whole story!
11.7. Further reading
11.7.1. Useful Links
12. Formal languages
12.1. What’s the big picture?
12.2. Getting started
12.3. Finite state automata
12.3.1. Who uses finite state automata?
12.3.2. Activity: practice creating FSAs
12.3.2.1. Exorciser
12.3.2.2. JFLAP
12.3.2.3. Examples to try
12.3.3. Activity: Find Finite State Automata in everyday use
12.3.4. Activity: Kara, the ladybug
12.4. Regular expressions
12.4.1. Regular expressions and FSAs
12.4.2. Activity: designing regular expressions
12.4.3. Project: converting Regular Expressions to FSAs
12.4.3.1. Converting with Exorciser
12.4.3.2. Converting with JFLAP
12.4.4. Other ideas for projects and activities
12.5. Grammars and parsing
12.5.1. Project ideas
12.5.2. Projects: Grammars in art and music
12.6. The whole story!
12.7. Glossary
12.8. Further reading
12.8.1. Useful Links
13. Computer graphics
13.1. What’s the big picture?
13.2. Graphics transforms
13.2.1. Matrix transforms
13.2.2. Combining transformations
13.2.3. 3D transforms
13.2.4. Project: 3D transforms
13.3. Drawing lines and circles
13.3.1. Line drawing
13.3.2. Using a formula to draw a line
13.3.3. Bresenham’s Line Algorithm
13.3.4. Lines at other angles
13.3.5. Circles
13.3.6. Bresenham’s Midpoint Circle Algorithm
13.3.7. Practical applications
13.3.8. Project: Line and circle drawing
13.4. The whole story!
13.5. Further reading
13.5.1. Useful Links
13.5.1.1. Key concepts
14. Computer vision
14.1. What’s the big picture?
14.2. Lights, Camera, Action!
14.3. Noise
14.3.1. Activity: noise reduction filters
14.4. Face recognition
14.4.1. Project: Recognising faces
14.5. Edge detection
14.5.1. Activity: Edge detection evaluation
14.6. The whole story!
14.7. Further reading
15. Network communication protocols
15.1. What’s the big picture?
15.1.1. Key concepts
15.2. Getting started
15.3. Subtopic 1
15.4. Subtopic 2
15.5. Subtopic 3
15.6. Subtopic n
15.7. The whole story!
15.8. Further reading
15.8.1. Possible Activities
15.8.2. Useful Links
16. Software engineering
16.1. What’s the big picture?
16.2. Analysis: What do we build?
16.2.1. Project: Finding the Requirements
16.3. Design: How do we build it?
16.3.1. Project: Designing your Software
16.4. Testing: Did we Build the Right Thing / Does it Work?
16.4.1. Project: Acceptance Testing
16.5. Software processes
16.5.1. Activity: Fun with the Waterfall Process
16.5.2. Activity: A Navigation Language
16.5.3. Activity: Block Building (Precise Communication)
16.6. Agile software development
16.6.1. Project: Software processes
16.7. The whole story!
16.8. Further reading
16.8.1. Useful Links
17. Appendices
17.1. Glossary
17.2. Contributors
17.2.1. Acknowledgements
17.3. News
17.4. WebGL on Windows, Linux and Mac OS X
17.4.1. Quick Fixes
17.4.2. Trouble in Linux, Windows or Mac OS X
17.4.3. The work-around
17.4.4. Extra trouble
17.4.5. Diagnose your GPU in Chrome
17.5. Teaching Guide for New Zealand
17.6. Teaching Guide for Germany
17.7. Future plans for the field guide
17.7.1. Computability
17.7.2. Logic circuits
17.7.3. Big data/cloud computing
17.7.4. Parallel/concurrent computing
17.7.5. Databases (or Information Management?)
17.7.6. Operating systems
17.7.7. Information assurance and security
17.7.8. Mobile computing
17.7.9. Social and professional issues
17.7.10. Quantum computing
17.8. Guide to System for Open Source Developers
17.8.1. Process of Textbook Creation
17.8.2. Versioning
17.8.3. PDF Generation
17.8.4. ePub/MOBI Generation
17.8.5. How to add content
17.8.6. Update script
17.8.7. Visual Appearance/CSS
17.9. Development Status
Index
Module Index
Search Page