JUST BROWSING
最后更新于:2022-04-01 04:44:07
The "Computer Science Field Guide" is a online resource for teaching Computer Science to students. This guide is being developed as an online interactive textbook to support the new achievement standards in Computer Science that are being rolled out in New Zealand from 2011 to 2013\. Eventually it will expand to support other curricula, but the initial focus is to meet the urgent need of resources in NZ.
The [Introduction](http://csfieldguide.org.nz/Introduction.html) chapter is good place to start to find out the goals of the site. The chapters are in various stages of development, but the chapter on graphics is a good example of a fairly complete version, and the formal languages chapter is a good example of how we're taken advanced concepts and packaged them for high school students.
### INTERACTIVES
The following interactives are used in our online resource to teach concepts or particular ideas to students.
[![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-11-05_563b1773a39b9.png)Click to load the
Algorithm Sorting interactive](http://csfieldguide.org.nz/_static/widgets/ALGO/ALGO-PhysicsSort_v2/public_html/index.html)
[![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-11-05_563b1773d542e.png)Click to load the
binary number interactive](http://csfieldguide.org.nz/_static/widgets/DR/DR-base-conversion/public_html/index.html?base=2&columns=8&lines=A,B,C&offset=0)
17.18. GUIDE TO SYSTEM FOR OPEN SOURCE DEVELOPERS
最后更新于:2022-04-01 04:44:04
The following guide has been written to help those wishing to adapt this system. Modifying the system can be quite a large task, especially in setup. We are not releasing the full package of files for automated generation process, as this includes personal login data to networks, etc. However, we do want to share this project as much as possible, therefore this guide has been written for those wish to take the time to adapt the system.
If you are wanting a local copy of the files to host on your local network, or wish to clarify or add something to the guide below, please contact [Jack Morgan](mailto:jack.morgan%40canterbury.ac.nz). The guide is definitely not complete in it’s current state, but is being expanded frequently.
The textbook is licensed under a Creative Commons Attribution Non-Commerical Share Alike license. Full details on this license, including a human readable summary, [can be found here](http://creativecommons.org/licenses/by-nc-sa/3.0/).
Note
Code experience recommended
The following guide to setup your own Sphinx system is quite code heavy, so moderate experience with programming is recommended. For those who get stuck with Sphinx creation, the Sphinx community is very active, you can [find them here](https://groups.google.com/forum/?fromgroups=#!forum/sphinx-users).
## 17.18.1\. PROCESS OF TEXTBOOK CREATION[](http://csfieldguide.org.nz/appendices/Open%20Source%20Guide.html#process-of-textbook-creation "Permalink to this headline")
The textbook uses a documentation generator by the name of [Sphinx](http://sphinx-doc.org/), orginally created to generate Python documentation.
[![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-11-05_563b17738e90f.png)](http://csfieldguide.org.nz/_images/A-system-process.png)
The textbook is written in a notation called ReStructured Text (or ReST), which acts much like a relaxed version of LaTeX. Details on how to use the ReStructured Text markup (plus how it fits into Sphinx) can be [found here](http://sphinx-doc.org/rest.html). The advantages of using the ReST format, is that if we ever want to switch away from the Sphinx system, we can plug the source material straight into the new system with minimal configuration.
Most pages on the textbook website (except for a couple of special cases: homepage etc) are written in the ReST format, and you can view the source code by clicking the ‘Show Source’ link in the sidebar. For example, the source for this page can be found in the sidebar.
The Sphinx system then processes these files, and generates the relevant HTML requires for the website. From this stage onwards, many tweaks have been made to the system, the source and the generation process to produce the material we wanted. These details are too numerous to go into detail about, however some good links to read for running your own Sphinx setup include:
* [First Steps with Sphinx](http://sphinx-doc.org/tutorial.html)
* [Sphinx Markup Constructs](http://sphinx-doc.org/markup/index.html)
* [Sphinx Configuration File](http://sphinx-doc.org/config.html)
* [HTML Theming](http://sphinx-doc.org/theming.html)
* [Build Options](http://sphinx-doc.org/invocation.html)
* [Available Sphinx Builders](http://sphinx-doc.org/builders.html) (What is produced on the generation: HTML, PDF etc)
* [Math support in Sphinx](http://sphinx-doc.org/ext/math.html)
## 17.18.2\. VERSIONING[](http://csfieldguide.org.nz/appendices/Open%20Source%20Guide.html#versioning "Permalink to this headline")
For this textbook, several versions were created for different purposes. To designate content to different versions, we decided the student version would be the base version, as other versions *build* on top of this. Adding and designating content to another version (for example: a teacher’s note) is done with the [only command](http://sphinx-doc.org/markup/misc.html#directive-only) in the text files.
The versions we created are as follows:
* Student’s version
* Teacher’s version (include comments for teachers)
* Development version (includes raw development material)
And each version are created in the following types:
* Website (HTML output)
* Paper (LaTeX/PDF output)
* Portable (ePub/MOBI output) using an experimental builder
You would generally create all the versions from the same source files (ie student version would just not include teachers notes), however we wanted to customise the website even further. Our textbook is generated by *one* system, from *one* main source and *three* minor sources (one for each version) into *multiple* outputs. The minor sources include files that needed to be different for each version. Some of these files include the Sphinx Configuration file ([conf.py file](http://sphinx-doc.org/config.html)) which dictated the appearance for the seperate versions (teacher version is green while student version is blue), and what was included in the sidebar (hiding the source files from students to prevent them from easily being able to access answers). This proved to be quite a complicated system to setup, however the system now has an extreme amount of power in customisation ability.
## 17.18.3\. PDF GENERATION[](http://csfieldguide.org.nz/appendices/Open%20Source%20Guide.html#pdf-generation "Permalink to this headline")
Guide on PDF generation to be released at a later date (when it’s ready).
## 17.18.4\. EPUB/MOBI GENERATION[](http://csfieldguide.org.nz/appendices/Open%20Source%20Guide.html#epub-mobi-generation "Permalink to this headline")
Guide on ePub/MOBIgeneration to be released at a later date (when it’s ready).
## 17.18.5\. HOW TO ADD CONTENT[](http://csfieldguide.org.nz/appendices/Open%20Source%20Guide.html#how-to-add-content "Permalink to this headline")
Guide on how to add content to be released at a later date (when it’s ready).
## 17.18.6\. UPDATE SCRIPT[](http://csfieldguide.org.nz/appendices/Open%20Source%20Guide.html#update-script "Permalink to this headline")
Guide on the update script to be released at a later date (when it’s ready).
## 17.18.7\. VISUAL APPEARANCE/CSS[](http://csfieldguide.org.nz/appendices/Open%20Source%20Guide.html#visual-appearance-css "Permalink to this headline")
Guide on editing the appearance of the site to be released at a later date (when it’s ready).
17.17. FUTURE PLANS FOR THE FIELD GUIDE
最后更新于:2022-04-01 04:44:02
The initial version of the guide being developed in 2012/2013 is intended to cover the new NZ achievement standards in CS. However, there are other topics that aren’t covered that would be good to mention, and they are recorded here as possible future chapters to add.
## 17.17.1\. COMPUTABILITY[](http://csfieldguide.org.nz/appendices/Future%20plans.html#computability "Permalink to this headline")
[http://www.lel.ed.ac.uk/~gpullum/loopsnoop.html](http://www.lel.ed.ac.uk/~gpullum/loopsnoop.html) Ed Dalley’s story about the halting problem cs4fn
## 17.17.2\. LOGIC CIRCUITS[](http://csfieldguide.org.nz/appendices/Future%20plans.html#logic-circuits "Permalink to this headline")
Gates (see unplugged Peruvian activity) [http://www.cs4fn.org/binary/nim/nim.php](http://www.cs4fn.org/binary/nim/nim.php) uses xor Online logic simulator? Binary additions (see also marble and wood logic devices, and other non-electronic ones) Logic: [http://courses.cs.vt.edu/csonline/MachineArchitecture/Lessons/index.html](http://courses.cs.vt.edu/csonline/MachineArchitecture/Lessons/index.html)
## 17.17.3\. BIG DATA/CLOUD COMPUTING[](http://csfieldguide.org.nz/appendices/Future%20plans.html#big-data-cloud-computing "Permalink to this headline")
[http://en.wikipedia.org/wiki/Big_data](http://en.wikipedia.org/wiki/Big_data) [http://www.nsf.gov/cise/csbytes/newsletter/vol1/vol1i11.html](http://www.nsf.gov/cise/csbytes/newsletter/vol1/vol1i11.html)
There is some background at: [http://www.techamericafoundation.org/bigdata](http://www.techamericafoundation.org/bigdata)
The Google data center gallery has cool pictures: [http://www.google.com/about/datacenters/gallery/#/](http://www.google.com/about/datacenters/gallery/#/) or could tie in with Computational Science (from ACM curriculum)
Shadi to help Mark at Monterey interested
main concepts?
* CAP theorem, mapreduce
* using an API e.g. google maps, twitter
* low level - uploading data (mashup?); higher level - APIs
## 17.17.4\. PARALLEL/CONCURRENT COMPUTING[](http://csfieldguide.org.nz/appendices/Future%20plans.html#parallel-concurrent-computing "Permalink to this headline")
Some people advocate teaching this first because all computers have multiprocessors and data centres. It might be the same chapter as “Big data”, but there are other approaches. For beginners, StarLogo and Scratch can be used to teach concurrent processes and the issues that arise. There’s bound to be an unplugged activity that could show issues like race conditions.
[http://www.cs4fn.org/parallelcomputing/parallelrats.php](http://www.cs4fn.org/parallelcomputing/parallelrats.php)
[http://dl.acm.org/citation.cfm?id=2414446&picked=prox&CFID=269871400&CFTOKEN=70782049](http://dl.acm.org/citation.cfm?id=2414446&picked=prox&CFID=269871400&CFTOKEN=70782049)
ACM curriculum has a lot of material on this
Teaching map-reduce: [http://dl.acm.org/citation.cfm?id=2414448](http://dl.acm.org/citation.cfm?id=2414448)
## 17.17.5\. DATABASES (OR INFORMATION MANAGEMENT?)[](http://csfieldguide.org.nz/appendices/Future%20plans.html#databases-or-information-management "Permalink to this headline")
and other stuff from the Information branch of the DT standards?
## 17.17.6\. OPERATING SYSTEMS[](http://csfieldguide.org.nz/appendices/Future%20plans.html#operating-systems "Permalink to this headline")
Or related topics? [http://www.cl.cam.ac.uk/freshers/raspberrypi/tutorials/os/](http://www.cl.cam.ac.uk/freshers/raspberrypi/tutorials/os/) From nand to Tetris project Architecture, memory management, security, VMs, devices, file systems, fault tolerance, performance evaluation Operating systems on-a-stick e.g. schools.pconme.com Operating systems:[http://courses.cs.vt.edu/csonline/OS/Lessons/index.html](http://courses.cs.vt.edu/csonline/OS/Lessons/index.html)
## 17.17.7\. INFORMATION ASSURANCE AND SECURITY[](http://csfieldguide.org.nz/appendices/Future%20plans.html#information-assurance-and-security "Permalink to this headline")
From the new ACM curriculum; could include forensics? [http://www.nsf.gov/cise/csbytes/newsletter/vol1/vol1i12.html](http://www.nsf.gov/cise/csbytes/newsletter/vol1/vol1i12.html)[http://www.nsf.gov/cise/csbytes/newsletter/vol2/vol2i3.html](http://www.nsf.gov/cise/csbytes/newsletter/vol2/vol2i3.html)
* might use some stuff from cryptography?
* Doxd game
* Mark at Monterey may contribute
* [http://www.nsf.gov/cise/csbytes/newsletter/vol2/vol2i13.html](http://www.nsf.gov/cise/csbytes/newsletter/vol2/vol2i13.html) - information privacy
## 17.17.8\. MOBILE COMPUTING[](http://csfieldguide.org.nz/appendices/Future%20plans.html#mobile-computing "Permalink to this headline")
Not sure if it’s a general area, but probably a few things that could be covered
## 17.17.9\. SOCIAL AND PROFESSIONAL ISSUES[](http://csfieldguide.org.nz/appendices/Future%20plans.html#social-and-professional-issues "Permalink to this headline")
Ethics? Communication? Digital divide, social implications, professional communities, codes of conduct, intellectual property, open source movement, privacy, sustainability (green computing), computer crime, how companies make money (e.g. Skype p2p, Google and Facebook with private information)
## 17.17.10\. QUANTUM COMPUTING[](http://csfieldguide.org.nz/appendices/Future%20plans.html#quantum-computing "Permalink to this headline")
[http://en.wikipedia.org/wiki/Quantum_computer](http://en.wikipedia.org/wiki/Quantum_computer) [http://www.howstuffworks.com/quantum-computer.htm](http://www.howstuffworks.com/quantum-computer.htm) [http://plato.stanford.edu/entries/qt-quantcomp/](http://plato.stanford.edu/entries/qt-quantcomp/)www.youtube.com/watch?v=sICXOwOwS4E
17.16. ARTIFICIAL INTELLIGENCE (3.44) – TURING TEST
最后更新于:2022-04-01 04:44:00
This is a guide for students attempting Artificial Intelligence in digital technologies achievement standard 3.44\. This guide is not official, although we intend for it to be helpful, and welcome any feedback.
In order to fully cover the standard, you will also need to have done a project in one other 3.44 topic. The other project should be in either Software Engineering, Complexity and Tractability, Formal Languages, Network Protocols, or Graphics and Visual Computing.
Note that the project in this guide focuses on using the Turing Test to evaluate Chatbots. Another guide exists which has a project that instead focusses on the actual algorithms and techniques used by Chatbots in an attempt to sound intelligent. Either of these are sufficient to cover a “key algorithm or technique” from the field of Artificial Intelligence.
## 17.16.1\. OVERVIEW
You will need to complete a 3.44 project in two different areas of computer science. Each project needs to satisfy all bullet points in the standard.
**Achieved**: [A1]
**Achieved**: [A2] “describing examples of practical applications of selected areas to demonstrate the use of key algorithms and/or techniques from these areas“
**Merit**: [M1] “explaining how key algorithms or techniques are applied in selected areas”
**Merit**: [M2] “explaining examples of practical applications of selected areas to demonstrate the use of key algorithms and/or techniques from these areas”
**Excellence**: [E1] “discussing examples of practical applications of selected areas to demonstrate the use of key algorithms and/or techniques from these areas”
**Excellence**: [E2] “evaluating the effectiveness of algorithms, techniques, or applications from selected areas”
The terminology in the 3.44 standard can be challenging to understand because it applies to six different areas. The following list describes how the terminology of the standard maps onto this project.
**Selected Area**: Intelligent Systems (Artificial Intelligence)
**Key Problem**: Determining whether or not a computer program is able to have a conversation with a human and seem like another human.
**Algorithms/ Techniques**: Turing Test
**Practical Application**: Using the Turing Test to evaluate if a chatbot is able to have a human-like conversation.
In summary, to satisfy the standard you might do the following:
* Describe the key problem
* Explain how the Turing Test can be used to evaluate a chatbot
* Explain (Describe) how you evaluated a chatbot with the Turing Test, in order to demonstrate the use of the Turing Test in Artificial Intelligence.
* Discuss other related applications of the Turing Test
* Evaluate how effective the Turing Test is at addressing the key problem
## 17.16.2\. READING FROM THE COMPUTER SCIENCE FIELD GUIDE
You should read and work through the interactives in the following sections of the CS Field Guide in order to prepare yourself for the assessed project.
10.1 - What’s the Big Picture?
10.2 - Chatterbots and the Turing Test
You will be doing the activity in 10.2.6 (Run your own turing test) as the main part of your project.
## 17.16.3\. PROJECT
The Turing Test is used to evaluate computer programs that are attempting to have a conversation like a human. In this project, you will carry out your own Turing test with an online chatbot, and report on the process and your findings.
### 17.16.3.1\. CARRYING OUT THE TURING TEST
Choose a chatbot and carry out the Turing test with the help of a classmate, as described in activity 10.2.6\. Include both the conversations that were generated as a result of carrying out the Turing test in your report.
### 17.16.3.2\. WRITING YOUR REPORT
**Achieved/ Merit**
Briefly describe what the purpose of the Turing Test is. What problem in computer science does it address? Note that this should be at the start of your report, and written clearly (considering starting the sentence with “A key problem in Artificial Intelligence is…”), so that it is clear to the marker what problem the remainder of your report addresses.
Explain what you did to carry out your Turing Test. Which external factors did you have to be careful of in order to ensure that the test was “fair”? Include a copy of the two conversations. Is there anything you did in your turing test that did not work very well? Were any of the questions you asked “unfair” to the chatbot?
Which conversation do you think was the chatbot and which do you think was your classmate? How could you tell? Refer to some lines in your conversations (some which you think were definitely not a human). Were you correct?
**Excellence**
Discuss other possible applications of the Turing Test or similar tests for other programs that are supposed to be intelligent. How would you go about carrying out such a test? For example, what if you wanted to evaluate whether or not a computer played a game in a “human like” way? (As people may prefer to play against something that seems human).
Discuss whether or not the Turing test is a good test of intelligence, giving reasons for your answer and using examples from your chatterbot experiments. What parts of human intelligence would the Turing test not capture? Are there are other ways of testing whether or not a computer is able to have a conversation like a human?
You might like to do some additional reading for ideas for your discussion.
[http://en.wikipedia.org/wiki/Turing_test#Strengths_of_the_test](http://en.wikipedia.org/wiki/Turing_test#Strengths_of_the_test)
[http://en.wikipedia.org/wiki/Turing_test#Weaknesses_of_the_test](http://en.wikipedia.org/wiki/Turing_test#Weaknesses_of_the_test)
## 17.16.4\. HINTS FOR SUCCESS
* Some students have used quiz show-like questions instead of trying to have conversations. It is important to try and have a conversation rather than just ask lots of unrelated questions. A conversation does best at revealing a Chatbot’s limitations. For example, this conversation isn’t very good. And infact, many of the lines could have been human responses.
* judge: What is your favourite colour?
* ALICE: My favorite color is green. What is yours?
* judge: What do you do?
* ALICE: judge, I talk to people on the web. What do you do?
* judge: What is your name?
* ALICE: My name is ALICE.
* judge: How long have you been alive?
* ALICE: 16 years.
* judge: What is your favourite movie?
* ALICE: My favorite movie is Casablanca. Have you seen it?
* judge: What is your favourite song?
* ALICE: My favorite song is Imagine. Do you know it?
* judge: What is your favourite food?
* ALICE: I require only electricity.
* judge: What is 10 + 20 ?
* ALICE: 10 times 10 = 100.
* judge: What is 79 - 7
* ALICE: I would look into the web for that knowledge.
Whereas this next conversation reveals the Chatbot’s limited ability to hold a conversation, as we were attempting to make it do.
* judge: What is your favourite colour?
* ALICE: My favorite color is green. What is yours?
* judge: Mine is Purple
* ALICE: purple is a very nice color.
* judge: Why isn’t it your favourite colour?
* ALICE: My mind does not contain an explanation for it.
* judge: What does your mind contain?
* ALICE: What do you think it does?
* judge: I would have no idea
* ALICE: How much would you pay for it?
* judge: Nothing, sorry
* ALICE: Really nothing?
* judge: Yeah, you’re a worthless chatbot...
* ALICE: Aha.. Yes.
You will need to base your responses on the last response you received rather than attempting to use a list of predefined questions.
* You don’t need to say the same things to the chatbot and the human. Just try and hold a conversation with both, and mostly go with whatever direction the conversation is going (although do try one or two subject changes as well to see what happens!). Just pretend you are having a casual conversation with somebody you don’t know very well.
* Offensive words or topics could land you in a ton of trouble if included in your submitted report. If a chatbot says something inappropriate, censor it. Choose a classmate to work with who is likely to be sensible if you want to do well (if they do say anything offensive, don’t include it in your report).
* If you have nobody to work with, consider doing the related project which focuses mostly on the chatbots and the techniques they use to try and sound intelligent.
* You should be able to write up the project in about 4 pages.
17.15. ERROR CONTROL CODING (2.44) – CHECK SUMS
最后更新于:2022-04-01 04:43:58
This is a guide for students attempting error control coding (one of the three encoding subtopics) in digital technologies achievement standard 2.44 (AS91371).
Remember that you only need to do one of the three encoding topics (Compression, Encryption, or Error Control Coding) to the excellence level. The other two only need to be done to the achieved level. This guide is suitable for both doing error control coding to the excellence level, but can also be used for the achieved level for error control coding.
In order to fully cover the standard, you will also need to have done projects covering the topics of *encryption* and *compression* to at least the achieved level, and projects covering the topics of *representing data using bits* and *human computer interaction*, and included these in your report.
## 17.15.1\. OVERVIEW
Encoding has the following bullet points in achievement standard 2.44 which this guide covers.
**Achieved**: “describing the concept of encoding information using compression coding, error control coding, and encryption; and typical uses of encoded information”
**Merit**: “discussing how a widely used technology is enabled by one or more of compression coding, error control coding, and encryption”
**Excellence**: “evaluating a widely used system for compression coding, error control coding, or encryption”
As with all externally assessed reports, you should base your explanations around personalised examples.
## 17.15.2\. READING FROM THE COMPUTER SCIENCE FIELD GUIDE
You should read and work through the interactives in the following sections of the CS Field Guide in order to prepare yourself for the assessed project.
Read all of these sections, as they give the necessary introduction of the topics
9.1 - What’s the Big Picture?
9.3 - Check digits on barcodes and other numbers
## 17.15.3\. PROJECT
For the achieved criteria you will show how the barcode on a product you chose has a check digit which helps to ensure that when a shop assistant scans or enters the number into a computer, that the computer is able to notify them if it was entered incorrectly. For the merit and excellence criteria, you will explain why this is so important, and evaluate how effective it is.
### 17.15.3.1\. WRITING YOUR REPORT
**Achieved**
Find some products with barcodes on them, and the checker will tell you whether or not it is a correct barcode. Try a few others. Does it ever seem to say a number was wrong? Now try change one digit in a barcode. Does it ever still say the barcode is correct? Choose one product to take a photo of the barcode, and describe how the last digit is a check digit that ensures the number was entered correctly (it’s a good idea to include the calculation that was used to calculate the check digit’s value). Show that when you enter the number into the barcode and change one of the digits, the last digit is no longer correct.
Explain why you would want to use a check digit on a barcode. What is the purpose of error control coding?
**Merit/ Excellence**
What could be some of the implications of a number being entered incorrectly, and this not being detected? What kinds of things could happen to the shop?
Think of what some of the common errors could be if somebody was manually entering the number into a computer. What mistakes are easy to make? (clue: missing a digit or swapping 2 adjacent digits are common mistakes, however there are others as well). Also think about what could cause errors if a scanner was being used to read the barcode.
Using the barcodes you found earlier, replicate some of the common errors that would occur when a person manually enters the number into the computer by entering the mistakes into the checker. Try lots of variations of the errors, and see if the errors are always detected. Which errors always seem to be detected? Which do not? Discuss whether or not the check digits decrease the chances of errors, particularly common ones. Do you think that sometimes mistakes do go undetected? Remember that really obscure errors (such as getting 3 digits in a row incorrect) will probably never occur in practice, and the intention of the check digit is to pick up small mistakes.
Your discussion should include a few examples of common errors you tried replicating (use screenshots), and whether or not the check digit was able to detect them.
## 17.15.4\. HINTS FOR SUCCESS
* Put error control coding in its own section (your report should have suitable headings and subheadings for each topic to make it clear for the marker) and ensure that you briefly introduce the topic. It is important that your report clearly demonstrates that you know the difference between encryption, error control coding, and compression, and what their different purposes are.
* Be sure to shrink down examples so they do not take up too much space. A barcode only needs to be big enough for the numbers to be readable; it does not need to take up half a page!
* For merit, you should not just paraphrase information. You need to use your own thinking to generate some of the answers, as your own experiences should enable you to come up with a lot of the answers. As an example, you should already know that if you bought something from the shop, and the scanner read the barcode wrong, and you were charged twice as much, you would not be happy about it! The implications of not having the technology are an important part of the discussion — what would happen if these systems weren’t used?
* For excellence, don’t simply discuss whether or not the algorithm is good without examples. You *must* have examples so that your work is personalised. Show some of the errors and whether or not they generate the correct check digit. If you find examples with simple common errors where the error did give the correct check digit, this is really good to show.
* You should be able to discuss this material, with examples, in about 2 or 3 pages of your report.
17.14. ENCRYPTION (2.44) – RSA CRYPTOSYSTEM
最后更新于:2022-04-01 04:43:55
This is a guide for students attempting encryption (one of the three encoding subtopics) in digital technologies achievement standard 2.44 (AS91371).
Remember that you only need to do one of the three encoding topics (Compression, Encryption, or Error Control Coding) to the excellence level. The other two only need to be done to the achieved level. This guide is suitable for both doing encryption to the excellence level, but can also be used for the achieved level for encryption.
In order to fully cover the standard, you will also need to have done projects covering the topics of *error control coding* and *compression* to at least the achieved level, and projects covering the topics of *representing data using bits* and *human computer interaction*, and included these in your report.
## 17.14.1\. OVERVIEW
Encoding has the following bullet points in achievement standard 2.44 which this guide covers.
**Achieved**: “describing the concept of encoding information using compression coding, error control coding, and encryption; and typical uses of encoded information”
**Merit**: “discussing how a widely used technology is enabled by one or more of compression coding, error control coding, and encryption”
**Excellence**: “evaluating a widely used system for compression coding, error control coding, or encryption”
As with all externally assessed reports, you should base your explanations around personalised examples.
## 17.14.2\. READING FROM THE COMPUTER SCIENCE FIELD GUIDE
You should read and work through the activities in the following sections of the CS Field Guide in order to prepare yourself for the assessed project.
Read all of these sections, as they give the necessary introduction of the topics
8.1 - What’s the Big Picture?
8.2 - Substitution Ciphers
8.3 - Problems with Substitution Ciphers (Needed only for Merit/ Excellence)
8.4 - Public Key Cryptosystems (Needed only for Merit/ Excellence)
8.5 - The RSA Cryptosystem
Note that for this project, reading the field guide material thoroughly and doing all the activities is particularly important in order to understand and do a good project at the merit/ excellence level.
## 17.14.3\. PROJECT
For the achieved criteria you will show an example of the Caeser cipher and describe how by using a *key*, *plaintext* can be converted to *ciphertext*, and then the*ciphertext* can be converted back to *plaintext* by anybody who has the key.
For the merit and excellence criteria, you will show an example of the RSA cryptosystem, describing how its differences to Caesar cipher allow it to be used in practice, and then you will show the kinds of attacks and limitations that make the Caesar cipher unsuitable in practice, and discuss whether or not similar limitations exist in RSA.
### 17.14.3.1\. WRITING YOUR REPORT
**Achieved**
Do the following to make an example to include in your report.
1. Write a short sentence that you could send to a classmate (must be appropriate to include in your report). This message is your *plain text*.
2. Choose a number between 1 and 25 that will be your encryption key.
3. Make a conversion table that shows how each letter in your *plain text* should be changed using your key.
4. *Encrypt* your *plain text* message using your chosen *key* in order to obtain your *ciphertext*.
Include your plain text, key, conversion table, and ciphertext in your report. Be sure to clearly label each of these four parts of your example using the correct terminology. What will your classmate need to decrypt the message?
Why is encryption so important in computer science? (assuming the cipher is one that is a lot more difficult to break than Caesar cipher!)
**Merit/ Excellence**
Generate a pair of RSA keys using the field guide interactive, and encrypt a message with the public key using the other field guide interactive. Then, show how it can be decrypted with the private key. Include the keys, plaintext, ciphertext, and a brief explanation of how public key cryptosystems such as RSA are used, and why they are so useful.
What kinds of systems in the world depend on RSA being able to resist attacks? What kinds of things would happen if somebody came up with a good way of breaking RSA?
In order to do a good evaluation of RSA cryptosystems, you will need to show why particular attacks will not work, and how some potential issues are addressed. Some of this will involve comparing to Caesar cipher. Show personalised examples of the following (come up with your own messages, don’t just copy the field guide ones!) Remember that the interactives in the field guide will help you to generate personalised examples.
* Caesar cipher vs RSA on messages that are very similar (show an example for both algorithms so you can compare them)
* The use of random padding in order to ensure that even if the same plaintext is encrypted more than once with the same public key, the ciphertext for each occurrence is different.
* How long a typical sized RSA key might take to break (make sensible assumptions about the number of bits in the key, the number of computers able to work on breaking it, computer speed, etc). Make sure you discuss the implications, and how much (or little) slightly modifying your assumptions would change the overall conclusion.
For each of your examples, explain why the issue is very important to address (what kinds of attacks could be carried out if the issue had been overlooked?)
RSA isn’t perfect, and there are a few ways to potentially break it which you should have read about in the field guide. What is at least one of these problems? How is it addressed? Is this solution guaranteed to always work?
Discuss what you have found from this evaluation: is RSA a good cryptosystem?
## 17.14.4\. HINTS FOR SUCCESS
* Display your examples using the standard font size.
* Put encryption in its own section (your report should have suitable headings and subheadings for each topic to make it clear for the marker) and ensure that you briefly introduce the topic. It is important that your report clearly demonstrates that you know the difference between encryption, error control coding, and compression, and what their different purposes are.
* You should be able to discuss this material, with examples, in about 2 or 3 pages of your report.
17.13. COMPRESSION (2.44) – RUN LENGTH ENCODING
最后更新于:2022-04-01 04:43:53
This is a guide for students attempting compression (one of the three encoding subtopics) in digital technologies achievement standard 2.44 (AS91371).
Remember that you only need to do one of the three encoding topics (Compression, Encryption, and Error Control Coding) to the excellence level. The other two only need to be done to the achieved level. This guide is suitable for both doing compression to the excellence level, but can also be used for the achieved level for compression.
In order to fully cover the standard, you will also need to have done projects covering the topics of encryption and error control coding to at least the achieved level, and projects covering the topics of representing data using bits and human computer interaction, and include these in your report.
## 17.13.1\. OVERVIEW
Encoding has the following bullet points in achievement standard 2.44 which this guide covers.
**Achieved**: “describing the concept of encoding information using compression coding, error control coding, and encryption; and typical uses of encoded information”
**Merit**: “discussing how a widely used technology is enabled by one or more of compression coding, error control coding, and encryption”
**Excellence**: “evaluating a widely used system for compression coding, error control coding, or encryption”
As with all externally assessed reports, you should base your explanations around personalised examples.
## 17.13.2\. READING FROM THE COMPUTER SCIENCE FIELD GUIDE
You should read and work through the interactives in the following sections of the CS Field Guide in order to prepare yourself for the assessed project.
Read all of these sections, as they give the necessary introduction of the topics
7.1 - What’s the Big Picture?
7.2 - Run Length Encoding
## 17.13.3\. PROJECT
For the achieved criteria you will show how run length encoding works to compress a simple image. For the merit and excellence criteria you will investigate how and why run length encoding is used by fax machines, and then evaluate how effective it is for this purpose. *If you have chosen to focus on error control coding or encryption for merit and excellence, then you only need to meet the achieved criteria for this project.*
### 17.13.3.1\. WRITING YOUR REPORT
**Achieved**
Make a grid of squares (any size is fine, but it should be at least 6x6) and draw a picture by filling some of the squares with black and leave others white. Underneath (or alongside each row), show how a computer could represent your image using run length encoding. You should not worry about how it is represented at the bit level. It is fine to just use normal numbers which are comma separated
Count how many characters are needed to represent your image in its original form (i.e. how many squares does it contain?). Count how many characters were used in your run length encoding representation. Don’t forget to include the commas! How well did run length encoding compress your image?
Explain why you would want to use run length encoding on an image. Think about a more typical image, such as a scan of a page of writing - what sort of runs of black and white pixels will that have? What is the purpose of compression?
**Merit/ Excellence**
As discussed in the field guide, fax machines use run length encoding. What advantages does this provide to fax machines sending and receiving faxes?
Is run length encoding guaranteed to always make the amount of data needed to represent the image smaller? Try and come up with an example (to include in your report) where the amount of space required to store your image with run length encoding is more than the original representation. What about an example where it is a very small amount of data? You can use the following interactive (written by Hannah Taylor, a digital technologies teacher) to help you experiment and to quickly generate examples.
[http://taylormade.io/run-length-encoding.html](http://taylormade.io/run-length-encoding.html)
You should have found that in some cases the compression is really good, and in others it makes things worse! You might remember from the book that it is impossible to design a lossless text compression method that makes every possible input smaller. What matters though is how good the compression is for its intended application. What would you expect a typical fax message to look like? (You might like to include an example, although shrink the image down so that it is less than ¼ of the page tall.)
## 17.13.4\. HINTS FOR SUCCESS
* When you make your image for the achieved level, make it a real image rather than a grid containing random black and white squares.
* Put compression in its own section (your report should have suitable headings and subheadings for each topic to make it clear for the marker) and ensure that you briefly introduce the topic. It is important that your report clearly demonstrates that you know the difference between encryption, error control coding, and compression, and what their different purposes are.
* If you did compression only to the achieved level, half to one page should be enough. If you did merit and excellence, a couple of pages should be enough (shrink down the examples as much as is reasonable, particularly if you included a lot of them)
* While you could potentially go into the details of how the computer represents the compressed image at the bit level, this is not necessary. The purpose of the encoding topic in 2.44 is for you to investigate the general ideas of how encoding works rather than the precise details of the representation with bits (simpler representations with bits are already covered in the first bullet point of the standard).
17.12. REPRESENTING DATA USING BITS (IMAGES/COLOUR) (2.44)
最后更新于:2022-04-01 04:43:51
This is a guide for students attempting Representing Data using Bits in digital technologies achievement standard 1.44 (AS91074). You will need to cover **two**different types of data to meet the requirements of the standard (each assessment guide only covers one). See the introduction for the 2.44 guides for more details on choosing topics; this guide covers the “images/colour” type of data.
In order to fully cover the standard, you will also need to have done one more project for representing data using bits and projects covering the topics of *Encoding*and *Human Computer Interaction*, and included these in your report.
## 17.12.1\. OVERVIEW
The topic of representing data using bits has the following bullet points in achievement standard 1.44, which this guide covers. Note that there is no excellence criteria for this topic. This assessment guide only covers one of the two types of data required for achieved.
**Achieved**: “describing ways in which different types of data
**Merit**: “comparing and contrasting different ways in which different types of data can be represented using bits and discussing the implications”
As with all externally assessed reports, you should base your explanations around personalised examples.
## 17.12.2\. READING FROM THE COMPUTER SCIENCE FIELD GUIDE
You should read and work through the interactives in the following sections of the CS Field Guide in order to prepare yourself for the assessed project.
Read all of these sections, as they give the necessary introduction of the topic
5.1 - What’s the Big Picture? (General information about bits)
5.4 - Representing Numbers With Bits (Relevant to the achieved criteria)
5.6 - Representing Images With Bits (Relevant to the achieved criteria)
5.6.1 - Representing High Quality Images Using Bits (Relevant to the achieved criteria)
5.6.3 - Representing colours using fewer bits (Relevant to the merit criteria)
## 17.12.3\. PROJECT
### 17.12.3.1\. WRITING YOUR REPORT
**Achieved**
Using the colour matcher (note that it is at the start of section 5.6.3), choose a colour you like by clicking on the image. Try and match up the 24 bit colour hexagon to be the same colour as your selected colour. Don’t worry about the 8 bit hexagon yet. If you have trouble, the interactive will help you.
Once you have matched up the colour, make a screenshot of the colour matcher which you can include in your report.
You should now have 3 numbers; one for each of red, green, and blue. Convert each of these numbers into 8 bit binary numbers. These 3 numbers put together make up the 24 bit number that represents your colour. Show your working in your report, and explain how you arrived at your answer.
**Merit**
For merit, you need to show what happens when fewer bits are used to represent each colour in an image. There are several ways you can go about this; we recommend exploring the various interactives on colour representation and experimenting with them.
Include at least one screenshot of an interactive and your personalised example which shows what happens when fewer bits are used to represent the colours in the image.
What is the benefit of using fewer bits? What happens to the images when fewer bits are used? Are there certain kinds of images where it matters a lot? Are there other cases where the benefits of fewer bits outweigh the downsides?
## 17.12.4\. HINTS FOR SUCCESS
* Remember that this part of the standard only goes up to the merit level. While you need to do some evaluation for merit, you should be mindful that the other topics go up to the excellence level, so they should make up the bulk of your in depth evaluations.
* Remember to do a second project on a different type of data
* You may need to reread the section on representing numbers using bits if you cannot remember how to convert the numbers into binary. Additionally you could also look at the worked example for the large block of purple in the previous section.
* Choose a colour that has at least two of the three colour components somewhere in the middle of the slider. Examples such as 0, 255, and 1 are not helpful for showing your knowledge of binary representation.
* Make sure the screenshots are large enough to be seen, but no larger!
## 17.12.5\. RECOMMENDED NUMBER OF PAGES
We recommend that this project does not take up more than 1 page. Examples should be small, and discussions should be short and to the point, keeping in mind that there is no excellence criteria for this topic.
17.11. REPRESENTING DATA USING BITS (CHARACTERS/TEXT) (2.44)
最后更新于:2022-04-01 04:43:48
This is a guide for students attempting Representing Data using Bits in digital technologies achievement standard 1.44 (AS91074). You will need to cover **two**different types of data to meet the requirements of the standard (each assessment guide only covers one). See the introduction for the 2.44 guides for more details on choosing topics; this guide covers the “characters/text” type of data.
In order to fully cover the standard, you will also need to have done one more project for representing data using bits and projects covering the topics of *Encoding*and *Human Computer Interaction*, and included these in your report.
## 17.11.1\. OVERVIEW
The topic of representing data using bits has the following bullet points in achievement standard 1.44, which this guide covers. Note that there is no excellence criteria for this topic. This assessment guide only covers one of the two types of data required for achieved.
**Achieved**: “describing ways in which different types of data can be represented using bits”
**Merit**: “comparing and contrasting different ways in which different types of data can be represented using bits and discussing the implications”
As with all externally assessed reports, you should base your explanations around personalised examples.
## 17.11.2\. READING FROM THE COMPUTER SCIENCE FIELD GUIDE
You should read and work through the interactives in the following sections of the CS Field Guide in order to prepare yourself for the assessed project.
Read all of these sections, as they give the necessary introduction of the topic
5.1 - What’s the Big Picture? (General information about bits)
5.2 - Getting Started
5.3 - Representing text with bits
5.7 - General representations of text (Required for Merit)
## 17.11.3\. PROJECT
### 17.11.3.1\. WRITING YOUR REPORT
**Achieved**
For Achieved, you need to demonstrate that you know how to convert characters into binary numbers. ASCII, which uses 8-bit codes, is a simple system to explore for this. You should show the binary representation for a few characters; the easiest way to do this is to show the ASCII code for your name.
Briefly describe the relationship between characters and their ASCII code. A few sentences is fine.
**Merit**
The most common longer code for characters is Unicode, which actually covers multiple lengths of representations. You could show a conversion to Unicode for the characters in your name, but to contrast the power of Unicode, it’s ideal to show the representation of some characters that wouldn’t be possible in ASCII e.g. choose a Chinese (Simplified Chinese) or Japanese (Kanji) name for a city and explain how the characters would be represented. Discuss why more bits are needed for these character sets.
Use your example to discuss the tradeoffs that are made by using a 16-bit character representation, and to explain the limitations of the ASCII code.
You could also use the 5-bit Baudot code to contrast different representations of text, and again explain the tradeoffs between this and either ASCII or Unicode.
## 17.11.4\. HINTS FOR SUCCESS
* Remember that this part of the standard only goes up to the merit level. While you need to do some evaluation for merit, you should be mindful that the other topics go up to the excellence level, so they should make up the bulk of your in-depth discussions.
* Remember to do a second project on a different type of data for the merit level.
* Be careful to use personalised examples (i.e. represent words that are personal to you such as your name or street name).
## 17.11.5\. RECOMMENDED NUMBER OF PAGES
We recommend that this project does not take up more than 1 page. Examples should be small, and discussions should be short and to the point, keeping in mind that there is no excellence criteria for this topic.
17.10. REPRESENTING DATA USING BITS (BINARY NUMBERS) (2.44)
最后更新于:2022-04-01 04:43:46
This is a guide for students attempting Representing Data using Bits in digital technologies achievement standard 1.44 (AS91074). You will need to cover **two**different types of data to meet the requirements of the standard (each assessment guide only covers one).
In order to fully cover the standard, you will also need to have done one more project for representing data using bits and projects covering the topics of *Encoding*and *Human Computer Interaction*, and included these in your report.
## 17.10.1\. OVERVIEW
The topic of representing data using bits has the following bullet points in achievement standard 1.44, which this guide covers. Note that there is no excellence criteria for this topic. This assessment guide only covers one of the two types of data required for achieved.
**Achieved**: “describing ways in which different types of data can be represented using bits”
**Merit**: “comparing and contrasting different ways in which different types of data can be represented using bits and discussing the implications”
As with all externally assessed reports, you should base your explanations around personalised examples.
## 17.10.2\. READING FROM THE COMPUTER SCIENCE FIELD GUIDE
You should read and work through the interactives in the following sections of the CS Field Guide in order to prepare yourself for the assessed project.
Read all of these sections, as they give the necessary introduction of the topic
5.1 - What’s the Big Picture? (General information about bits)
5.4 - Representing numbers with bits (Relevant to the achieved criteria)
5.8 - Computers representing numbers in practice (Relevant to the merit criteria)
## 17.10.3\. PROJECT
### 17.10.3.1\. WRITING YOUR REPORT
**Achieved**
For Achieved, you need to demonstrate that you know how to convert decimal numbers (convention notation with 10 digits) into binary numbers. You can use a tool to help you do this, although you need to be able to describe how the answer was derived. You should show the binary representation for at least three numbers. Some ideas of numbers you could use are:
* Your street number
* The day and month of your date of birth
* Your age
* The age(s) of your sibling(s)
Some more challenging ones if you are keen:
* Your year of birth (e.g. 2002)
* The population of a city or country
* The distance between some cities (e.g. airline flight distances)
Briefly describe how a number is converted to binary.
**Merit**
The material about representing numbers in practice may be challenging, so don’t worry if you need to read over it a couple of times!
Think of a few different examples for different sized integers (both signed and unsigned ones) of a piece of data that you could store in that sized integer. For example, the age of a person could be stored in an 8 bit unsigned integer (people can’t be a negative age!), and the number of students in your school could be stored in an 8 bit or 16 bit integer, depending on how big your school is. Try to include examples of signed and unsigned integers, and of at least two different integer sizes. This means you will need at least three examples.
The field guide gives some other examples (e.g. programming languages and IP addresses) that are affected by the number of bits used to represent a number.
What are the consequences of making a wrong decision about how many bits to use to represent a number? In practice, how much of an issue is each of the consequences? Relate your answer to your examples above.
Optional extra: Give an example of a situation where a 32 bit integer would not be suitable. What do we do in practice to address this problem?
## 17.10.4\. HINTS FOR SUCCESS
* Remember that this part of the standard only goes up to the merit level. While you need to do some evaluation for merit, you should be mindful that the other topics go up to the excellence level, so they should make up the bulk of your in-depth discussions.
* Remember to do a second project on a different type of data for the merit level.
* Be careful to use personalised examples (i.e. represent different numbers to your classmates). It may be a good idea to pick a larger number (e.g. in the millions) to minimise the chance of it being the same as others.
## 17.10.5\. RECOMMENDED NUMBER OF PAGES
We recommend that this project does not take up more than 1 page. Examples should be small, and discussions should be short and to the point, keeping in mind that there is no excellence criteria for this topic.
17.9. 2.44 ASSESSMENT GUIDE
最后更新于:2022-04-01 04:43:44
This document provides a brief introduction to teachers on the Computer Science Field Guide assessment guides for NCEA Achievement standard AS91371 (2.44).
## 17.9.1\. TOPICS[](http://csfieldguide.org.nz/appendices/2.44%20-%20Introduction%20-%20Assessment%20Guide.html#topics "Permalink to this headline")
2.44 has bullet points for the following topics in computer science.
* Representing Data using Bits
* Encoding (split into 3 sub topics) - Compression - Error Control Coding - Encryption
* Human Computer Interaction (different to 1.44)
Each of these topics has a chapter in the Computer Science Field Guide, which this assessment guide is based on.
There are multiple assessment guides for representing data and the encoding topics, of which students need to do a subset. The following explanations outline what students should cover.
Note that the topics can be covered independently, although using a common context for all or most of them (such as considering an mp3 player or photo display that represents data using bits, uses encoding and has an interface that can be evaluated) can make personalisation easier.
### 17.9.1.1\. REPRESENTING DATA USING BITS[](http://csfieldguide.org.nz/appendices/2.44%20-%20Introduction%20-%20Assessment%20Guide.html#representing-data-using-bits "Permalink to this headline")
Students should choose at least **two** data types and cover the “ways in which different types of data can be represented using bits” in order to get achieved, and they should choose at least two different representations for **each** of their chosen data types for the merit level. (While two representations of two types is sufficient to meet the exact requirements of the standard, it needn’t take a lot of space to go a little beyond this, and this can be more convincing for showing student understanding compared with doing the bare minimum.) The following table shows common types of data that students could choose (they should choose two rows from the table to meet the achieved requirement). For merit they should should choose an alternative representation with a different number of bits; examples are shown in the “Merit” column.
Data Type | Achieved | Merit |
| sliderBinary Numbers (Whole numbers)slider | sliderPositive numbersslider | sliderNegative numbers (simple sign bit) or Floating pointslider or Twos complement |
| sliderCharacters/ Textslider | sliderASCIIslider | sliderUnicodeslider |
| sliderImages/ Coloursslider | slider24 bit colourslider | sliderColour with fewer bitsslider |
| sliderSoundslider | WAV file representation (16 bit, 44KHz) | Higher or lower quality sound (24 bit, 8 bit) and/or different sample rates |
Note that data types and representations currently covered in the field guide are in italics. Binary numbers is a prerequisite for colours, and are recommended for all students. Students who struggle with binary numbers should just aim to represent a few numbers in binary (e.g. their age, birthday, etc) and then move onto representing text.
In general, we recommend choosing binary numbers for all projects.
If students are using a common device as an example, chances are they won’t be able to find out how it represents data, but they could say how they would represent the data if they had to write the program that is running on the device e.g. how they might store the name of a song, a date, the length of a file, the number of tracks etc. These will typically have minimum and maximum values that will dictate the number of bits needed to store them.
This topic does not have excellence requirements.
### 17.9.1.2\. ENCODING[](http://csfieldguide.org.nz/appendices/2.44%20-%20Introduction%20-%20Assessment%20Guide.html#encoding "Permalink to this headline")
For the standard, students need to describe each of the three encoding topics in order to get achieved, and do a more in-depth project on one in order to get merit or excellence.
Students should choose do projects that cover **one** of the following selections (i.e. just the shaded entries).
| **Compression** | **Error Control Coding** | **Encryption** |
| Achieved | Achieved | Achieved |
| Merit | Merit | Merit |
| Excellence | Excellence | Excellence |
OR
| **Compression** | **Error Control Coding** | **Encryption** |
| Achieved | Achieved | Achieved |
| Merit | Merit | Merit |
| Excellence | Excellence | Excellence |
OR
| **Compression** | **Error Control Coding** | **Encryption** |
| Achieved | Achieved | Achieved |
| Merit | Merit | Merit |
| Excellence | Excellence | Excellence |
Note that some assessment guides provide projects that cover only achieved, and others go to excellence. For topics that students are only covering to achieved, they can either follow an achieved guide, or the achieved component of an excellence guide.
At the excellence level students are required to evaluate “a widely used system for compression coding, error control coding, or encryption”. The guides discuss some widely used systems, but the thing to note is that only *one* system need be considered (e.g. JPEG is a widely used compression system, so evaluating JPEG would be sufficient; an alternative would be checksums used in bar codes). The evaluation would need to involve a comparison with *not* using the system, so for JPEG it might be with a RAW or BMP file; for bar codes, it would be to consider what would be different if a check digit isn’t used.
One issue to be aware of is that the data representation section includes reducing the number of bits (the “bit depth”) for images and sound to reduce the space that they take. This overlaps with the idea of compression, but is should *not* be used for the compression part of the standards, as it’s a very crude way to reduce file size, but not generally regarded as a compression method that takes advantage of the content of a file to make it smaller. For example, students could use examples of images with 16-bit and 24 colour to illustrate two representations of a type of data for data representation, but they should use an image compression method like JPEG, GIF and PNG to illustrate compressing image files.
Another issue is that hexadecimal is not a good example for students to use as a different representation of data, as it is simply a shorthand for binary. Writing a number as 01111010 (binary) or 7A (hexadecimal) represents exactly the same bits stored on a computer with exactly the same meaning; the latter is easier for humans to read and write, but both are 8-bit representations that have the same range of values. It is a useful shorthand, but shouldn’t be used as a second representation for a type of data, or as a different type of data.
### 17.9.1.3\. HUMAN COMPUTER INTERACTION[](http://csfieldguide.org.nz/appendices/2.44%20-%20Introduction%20-%20Assessment%20Guide.html#human-computer-interaction "Permalink to this headline")
Human Computer Interaction is straightforward, and we provide one 2.44 guide for it. Note that the requirements for 2.44 HCI are different to 1.44 HCI.
## 17.9.2\. ORDER OF TOPICS[](http://csfieldguide.org.nz/appendices/2.44%20-%20Introduction%20-%20Assessment%20Guide.html#order-of-topics "Permalink to this headline")
The three topics can be completed in any order, although encoding is best covered after representing data.
It may be a good idea to cover Human Computer Interaction (HCI) first, as students should already have some familiarity with it if they did 1.44, and it can help if they are able to start work on it early, then work on the other topics, and come back to HCI once they’ve had a while to reflect on the issues.
## 17.9.3\. PERSONALISATION AND STUDENT VOICE[](http://csfieldguide.org.nz/appendices/2.44%20-%20Introduction%20-%20Assessment%20Guide.html#personalisation-and-student-voice "Permalink to this headline")
It is important that students use personalised examples to base their explanations around, and that the explanations are in their own words, and based on their example (rather than being a paraphrase from wikipedia, for example).
Personalised means that the student’s example is different to their classmates. For example, they may represent their age or name using bits, carry out the parity trick (error control coding) with a friend choosing random combinations and take photos, and they may carry out their own usability exploration of a device they chose, and report on it in their own words.
## 17.9.4\. REPORT LENGTH[](http://csfieldguide.org.nz/appendices/2.44%20-%20Introduction%20-%20Assessment%20Guide.html#report-length "Permalink to this headline")
It is important to note that the page limit given by NZQA is not a target. The markers prefer reports that are short and to the point.
A possible breakdown is:
* Representing Data using Bits: 2 pages (1 per data type)
* Encoding: 5 pages (1 for each achieved project and 3 for the achieved/ merit/ excellence project)
* Human Computer Interaction: 3 pages
The assessment guides provide further guidance on how to stay within these limits. With 2.44, it is particularly important to try and keep each individual project in the report within the recommended limit, as space is tighter than for 1.44 and 3.44.
Some hints to reduce total length
* Only include what is relevant to the standard. While covering additional material in class is valuable for learning, additional content that doesn’t demonstrate understanding of the topics in the standard is only a distraction in the report.
* Resize screenshots and photos so that they are still readable, although don’t take up unnecessary space. Use cropping to show the relevant parts of the image.
* Don’t leave unnecessary spaces in the report. It both looks untidy and makes it more difficult for the marker to find what they are looking for.
17.8. PROGRAMMING LANGUAGES (1.44)
最后更新于:2022-04-01 04:43:42
This is a guide for students writing about the topic of Programming Languages in Digital Technologies achievement standard 1.44 (AS91074).
In order to fully cover the standard, you will also need to have done projects covering the topics of *Algorithms* and *Human Computer Interaction*, and included these in your report.
## 17.8.1\. OVERVIEW[](http://csfieldguide.org.nz/appendices/1.44%20-%20Programming%20Languages%20-%20Assessment%20Guide.html#overview "Permalink to this headline")
Programming Languages has the following bullet points in achievement standard 1.44, which this guide covers. Note that merit is split into two bullet points.
**Achieved**: “describing the role and characteristics of programming languages, including the different roles and characteristics of high level languages and low level (or machine) languages, and the function of a compiler”
**Merit**: “explaining how the characteristics of programming languages, including the different characteristics of high level and low level (or machine) languages, are important for their roles”
**Merit**: “explaining the need for programs to translate between high and low level languages”
**Excellence**: “comparing and contrasting high level and low level (or machine) languages, and explaining different ways in which programs in a high level programming language are translated into a machine language
As with all externally assessed reports, you should base your explanations around personalised examples.
## 17.8.2\. READING FROM THE COMPUTER SCIENCE FIELD GUIDE[](http://csfieldguide.org.nz/appendices/1.44%20-%20Programming%20Languages%20-%20Assessment%20Guide.html#reading-from-the-computer-science-field-guide "Permalink to this headline")
You should read and work through the interactives and activities in the following sections of the CS Field Guide in order to prepare yourself for the assessed project.
4.1 - What’s the Big Picture? (and an introduction to what programming is, intended for those of you with limited programming experience)
4.2 - Machine Code (Low Level Languages)
4.3 - A Babel of Programming Languages (High Level Languages)
4.4 - How does the Computer Process your Program? (Compilers and Interpreters)
Note that you don’t need to read about all the programming languages in 4.3\. It is important that you actually do the activities in 4.2 (and 4.1 if you don’t know much about programming).
## 17.8.3\. PROJECT[](http://csfieldguide.org.nz/appendices/1.44%20-%20Programming%20Languages%20-%20Assessment%20Guide.html#project "Permalink to this headline")
This project consists of two main components. The first involves making a couple of examples
### 17.8.3.1\. MAKING EXAMPLES FOR YOUR REPORT[](http://csfieldguide.org.nz/appendices/1.44%20-%20Programming%20Languages%20-%20Assessment%20Guide.html#making-examples-for-your-report "Permalink to this headline")
You will need two examples of programs to include in your report; one that is in a high level language and one that is in a low level language. For the high level language example, you should use a program you wrote yourself, or make a small modification of a high level language program from the field guide
Include your program examples in your report as either screenshots or plain text. Note that the Hints for Success section has some advice on displaying code in a report.
Briefly explain what each of the programs does (ideally you should have run them). e.g. does it add numbers, or does it print some output?. You do not need to explain how it does it (i.e. no need to explain what each statement in the program does). What output do your programs give? The purpose of this is to show the marker that you do know what your example does.
### 17.8.3.2\. HIGH AND LOW LEVEL LANGUAGES (ACHIEVED/MERIT/ EXCELLENCE)[](http://csfieldguide.org.nz/appendices/1.44%20-%20Programming%20Languages%20-%20Assessment%20Guide.html#high-and-low-level-languages-achieved-merit-excellence "Permalink to this headline")
What is the main difference(s) you see between the high level language and the low level language? Why would a human not want to program in the language shown in your low level programming language example? What made modifying the low level programs in section 4.2 of the field guide challenging? Given that a human probably doesn’t want to program in a low level language, why do we need low level programming languages at all? What is their purpose?
When you wrote your high level program (or modified an existing program), what features of the language made this easier compared to when you attempted to modify a low level program? Why are there many different high level programming languages?
In order to make your answers really clear, you might like to quote a few lines of your code examples which illustrate the points you make (e.g. some code that is cryptic and some code that you can tell easily what it does).
### 17.8.3.3\. COMPILERS AND INTERPRETERS (ACHIEVED/MERIT/ EXCELLENCE)[](http://csfieldguide.org.nz/appendices/1.44%20-%20Programming%20Languages%20-%20Assessment%20Guide.html#compilers-and-interpreters-achieved-merit-excellence "Permalink to this headline")
If you have a compiler for the language your high level program example is written in, how would you use it to allow the computer to run your program? (Even if your language is an interpreted one, such as Python, just explain what would happen if you had a compiler for it, as technically a compiler could be written for any language).
If you have access to a compiler, you could explain how you have to use it, and show an example of its output (the compiled program)
What about an interpreter? How does the interpreter’s function differ from a compiler in the way interpreted programs and compiled programs are run? Which is mostly used?
Here are some more ideas for comparing compilers and interpreters: One way to consider the difference is to explain what happens if a program is transferred from one computer to another. Does it still run on the other computer? Does someone else need the same compiler or interpreter to run your software? Can you type in each line of a program and have it executed as you type it, or does the whole program have to be available before it can be run?
## 17.8.4\. HINTS FOR SUCCESS[](http://csfieldguide.org.nz/appendices/1.44%20-%20Programming%20Languages%20-%20Assessment%20Guide.html#hints-for-success "Permalink to this headline")
* You should easily be able to explain the concepts in half to one page of writing (in addition to the program examples). Any more than this is probably unnecessary.
* Don’t use large programs in the examples. Keep it to 5 to 10 lines (slightly fewer is okay!) for the high level program, and a bit more for the low level program. A good trick for displaying the low level program without wasting space is to use 2 columns, because the low level language statements are so short ( you could remove the comments in the code). If using a screenshot, get 2 screenshots with roughly half the program each and put them side by side, and if using text directly in report, just format it to 2 columns.
* If displaying the program examples as plain text in your report, then make the font size smaller for the code to try and prevent lines splitting (8pt or 9pt should be fine, as long as your explanations in the rest of your report are using the font size that NZQA requires!) Preferably use a fixed width font for program code as a variable width font can mess up the layout.
* If displaying the program examples as screenshots and the editor background is darker than the text colour, invert the colours using an image editor so as to make it easier to read on paper, and not waste black ink/toner!
* Paraphrasing definitions of high level languages, low level languages, compilers, and interpreters from Wikipedia or another site is not satisfactory for the standard. The marker needs to see what you understand, not what Wikipedia understands! You can show your understanding by explaining the ideas using your own examples.
## 17.8.5\. RECOMMENDED NUMBER OF PAGES[](http://csfieldguide.org.nz/appendices/1.44%20-%20Programming%20Languages%20-%20Assessment%20Guide.html#recommended-number-of-pages "Permalink to this headline")
Within the 2 pages we recommend using for programming languages, a possible breakdown is:
* ½ page: Example of low level program
* ½ page: Example of high level program
* ½ page: High Level and Low Level languages discussion
* ½ page: Compilers and Interpreters discussion
These are *maximums*, not targets!
Note that if you go over 2 pages for Programming Languages, then you may have to use fewer pages for one of the other two topics, which could be problematic. No other material should be included for Programming Languages
17.7. HUMAN COMPUTER INTERACTION (1.44)
最后更新于:2022-04-01 04:43:39
This is a guide for students attempting Human Computer Interaction in digital technologies achievement standard 1.44 (AS91074).
In order to fully cover the standard, you will also need to have done projects covering the topics of Algorithms and Programming Languages, and included these in your report.
## 17.7.1\. OVERVIEW[](http://csfieldguide.org.nz/appendices/1.44%20-%20HCI%20-%20Assessment%20Guide.html#overview "Permalink to this headline")
Human Computer Interaction has the following bullet points in achievement standard 1.44, which this guide covers.
**Achieved**: “describing the role of a user interface and factors that contribute to its usability”
**Merit**: “explaining how different factors of a user interface contribute to its usability”
**Excellence**: “discussing how different factors of a user interface contribute to its usability by comparing and contrasting related interfaces”
As with all externally assessed reports, you should base your explanations around personalised examples.
## 17.7.2\. READING FROM THE COMPUTER SCIENCE FIELD GUIDE[](http://csfieldguide.org.nz/appendices/1.44%20-%20HCI%20-%20Assessment%20Guide.html#reading-from-the-computer-science-field-guide "Permalink to this headline")
You should read and work through the interactives in the following sections of the CS Field Guide in order to prepare yourself for the assessed project.
Read all of these sections, as they give the necessary introduction of the topic
3.1 - What’s the Big Picture?
3.2 - Users and Tasks
Read one (or both if you are keen) of these sections as they will give you some ideas for evaluating an interface in your project.
3.3 - Interface Usability
3.4 - Usability Heuristics
## 17.7.3\. PROJECT[](http://csfieldguide.org.nz/appendices/1.44%20-%20HCI%20-%20Assessment%20Guide.html#project "Permalink to this headline")
In this project, you will carry out a usability evaluation carrying out a specific task with a chosen interface. Unless you are good at seeing things from other people’s perspectives, it is best to find a helper who will carry out the task with the interface with you observing them
### 17.7.3.1\. CHOOSING AN INTERFACE[](http://csfieldguide.org.nz/appendices/1.44%20-%20HCI%20-%20Assessment%20Guide.html#choosing-an-interface "Permalink to this headline")
The interface you choose should be one your helper is not familiar with,
Because you will need to compare related interfaces for excellence, make sure you choose an interface for which you will also be able to find a second related interface to compare with (e.g. two different alarm clocks). The second interface should also be one you are not familiar with (otherwise you will be biased).
Your interface should also be specific. By this we mean it should just have one obvious function. e.g. texting capabilities of a cellphone, file chooser on a computer, etc. iPhone vs Samsung Phone, or Windows vs Macintosh are too general as there are thousands of aspects to these interfaces! You would need to pick specific apps or programs within them that typically only need a few steps to complete a task.
Some possible pairs of interfaces you could use are:
* Online booking systems for two different airlines (e.g. Air NZ vs Jetstar)
* Two different friend’s cell phones
* Two different email clients you have never used before (don’t forget about the many webmail clients. Even signing up for webmail addresses could prove to be challenging in some cases!)
* Try heating something in 2 different microwaves. Cheap microwaves are notorious for being inconsistent and illogical to use. [Note that running a microwave with nothing in it will damage it! You would be best to put something inside it while you are experimenting with its interface. Water in a microwave safe glass is fine]
* Find a couple of apps/ programs/ for setting an alarm (many exist). You could choose ones that go on a phone or on your computer, or one of each. A physical alarm clock would be good.
* Two different drawing programs you have never used before
Note that an interface you designed yourself is unsuitable because you will know how it works in great detail.
### 17.7.3.2\. CHOOSING A TASK WITH THE INTERFACE[](http://csfieldguide.org.nz/appendices/1.44%20-%20HCI%20-%20Assessment%20Guide.html#choosing-a-task-with-the-interface "Permalink to this headline")
Once you have chosen an interface, you need to think of one or two common tasks that are carried out with your chosen interface. The tasks should be specific. Some tasks (depending on the interfaces you chose) could be:
* Setting an alarm that will ring at 4:25am tomorrow to catch an early flight (or for a more sophisticated interface, at 7:25am on Monday, Tuesday, Wednesday, and Friday i.e. all weekdays except Thursday)
* Sending a text to a friend that says “What are you doing at 3pm today? :-)” [Symbols are good to include in the message]
* Changing a phone background to a photo you found online
* Heating some food or water in a microwave for 1 minute, 20 seconds
* Booking the cheapest flight that will arrive before 11 AM in Auckland from Christchurch, on the next Saturday (stop once you get to the part that asks for payment details!)
* Draw a smiley face with a drawing program. Put your name below the smiley face.
### 17.7.3.3\. WRITING YOUR REPORT[](http://csfieldguide.org.nz/appendices/1.44%20-%20HCI%20-%20Assessment%20Guide.html#writing-your-report "Permalink to this headline")
In order to satisfy the requirements of the standard, you should do the following and include all your answers in your report. A photos and screenshots of your interface and various aspects of it are useful to include.
**Achieved**
What is the purpose of the interface(s) you have chosen? How will they help the user achieve their task?
**Achieved/ Merit (Note that this is needed for achieved, but should also cover merit)**
Try carrying out your chosen task with one of the interfaces, or observe a helper carrying out the task. Take notes of every time you or your helper are confused, select an incorrect option (or menu), something happens you didn’t expect (no matter how minor it is), something happens that wastes time, etc. (there is some more detail on doing this here: [http://www.cs4fn.org/usability/cogwalkthrough.php](http://www.cs4fn.org/usability/cogwalkthrough.php))
Think back to sections 3.3 and/or 3.4 of the book. Explain the characteristics of the interface that caused the problems you identified. Which characteristics of the interface made it easy for the user to figure out how to carry out the task?
Be sure to briefly describe the context of each characteristic (e.g. what was the user trying to accomplish at the time? What were they expecting to see happen)? You should explain 2 or 3 characteristics (2 is fine if you are attempting excellence, as you will have 4 characteristics between the 2 interfaces which is enough!).
**Excellence**
Carry out the chosen task with the second interface, and do the same as you did for Achieved/Merit with it (consider similar characteristics to before, and focus on seeing if the second interface has similar issues to the first interface). What was different between the two interfaces? Which interface did you (or your helper) prefer using? Why? If you were designing an interface that could be used for the same task, which ideas would you take from each interface?
## 17.7.4\. HINTS FOR SUCCESS[](http://csfieldguide.org.nz/appendices/1.44%20-%20HCI%20-%20Assessment%20Guide.html#hints-for-success "Permalink to this headline")
* Be careful to talk about interface usability rather than just features. For example, a cell phone might have a fancy camera able to take very high resolution photos (a feature), but what we’re interested in is how easy it actually is for somebody to take a photo with the camera (a usability factor), especially how easy it is to go from having the phone in your pocket to getting the photo, or from taking the photo to sharing or printing it.
* If your helper struggles to complete the task with the interface, it is likely to be because the interface was not designed well for them. This gives you great material for your project - look for the reasons they had trouble and don’t blame them, as it isn’t their fault.
* Choose an interface that you or your helper rarely/ never use, otherwise you may be blind to usability issues because you’ve got used to working with them!
* Don’t evaluate an interface you designed yourself. As we said in the book, the designer knows the interface really well, and is the worst person to evaluate it!
* The page limit given by NZQA for the length of your report includes your work on algorithms and programming languages. The limit provides enough space to write an excellent report, but to avoid blowing out the page length:
* Try to keep photos/ screenshots large enough to see, but not so large they take up needless amounts of space.
* If you write concisely and clearly, you may be able to cover all the requirements with a page or less of writing (excluding pictures). This is fine, and in fact desirable for the marker as long as you have covered all the requirements.
## 17.7.5\. RECOMMENDED NUMBER OF PAGES[](http://csfieldguide.org.nz/appendices/1.44%20-%20HCI%20-%20Assessment%20Guide.html#recommended-number-of-pages "Permalink to this headline")
Within the 3 pages we recommend for Human Computer Interaction, you should include a few images of your interface, and some explanations of the usability factors. For the project outlined above, a possible breakdown is:
* ½ page of text introducing the topic, your chosen interface, and chosen tasks. (**Achieved**)
* ½ page of text explaining the usability factors identified in the first observation. (**Achieved/Merit**)
* ½ page of text explaining usability factors identified in the second observation (**Excellence**)
* ½ page of text discussing comparing the two interfaces (**Excellence**)
* Up to 1 page worth of images (mixed with the above); ensure they are shrunk down enough that they are legible but not wasting space. You may decided instead to do a little more writing and include a fewer images.
These are *maximums*, not targets!
The key to this topic is writing succinctly. Be careful to not ramble. You might not be able to include everything you wanted to; this is okay. Just prioritise and focus on the most interesting 2 or 3 issues for each interface.
Note that if you go over 3 or 4 pages for Human Computer Interaction, then you may have to use fewer pages for one of the other two topics, which could be problematic.
No other material should be included for Human Computer Interaction. For example, don’t include a list of heuristics explaining each one, or a list of general usability factors. You should only describe factors that directly relate to your chosen user interfaces.
17.6. ALGORITHMS (1.44) – SORTING ALGORITHMS
最后更新于:2022-04-01 04:43:37
This is a guide for students attempting the *Algorithms* topic of digital technologies achievement standard 1.44 (AS91074).
In order to fully cover the standard, you will also need to have done projects covering the topics of *Programming Languages* and *Human Computer Interaction* in the standard, and included these in your report.
## 17.6.1\. OVERVIEW
The topic of *Algorithms* has the following bullet points in achievement standard 1.44, which this guide covers. This guide separates them into two categories.
### 17.6.1.1\. COMPARING ALGORITHMS, PROGRAMS, AND INFORMAL INSTRUCTIONS
**Achieved** (A1): “describing the key characteristics, and roles of algorithms, programs and informal instructions”
**Merit** (M1): “explaining how algorithms are distinct from related concepts such as programs and informal instructions”
**Excellence** (E1): “comparing and contrasting the concepts of algorithms, programs, and informal instructions”
### 17.6.1.2\. DETERMINING THE COST OF ALGORITHMS AND UNDERSTANDING VARIOUS KINDS OF STEPS IN ALGORITHMS
**Achieved** (A2): “describing an algorithm for a task, showing understanding of the kinds of steps that can be in an algorithm, and determining the cost of an algorithm for a problem of a particular size”
**Merit** (M2): “showing understanding of the way steps in an algorithm for a task can be combined in sequential, conditional, and iterative structures and determining the cost of an iterative algorithm for a problem of size *n*”
**Excellence** (E2): “determining and comparing the costs of two different iterative algorithms for the same problem of size *n*”
As with all externally assessed Digital Technology reports, you should base your explanations around personalised examples.
## 17.6.2\. READING FROM THE COMPUTER SCIENCE FIELD GUIDE
You should read and work through the interactives in the following sections of the CS Field Guide in order to prepare yourself for the assessed project.
2.1 - What’s the bigger picture?
2.3 - Sorting Algorithms
Note that 2.2 is not necessary for this project, as 2.2 focuses on *searching* algorithms, whereas this project focuses on *sorting* algorithms.
## 17.6.3\. PROJECT
This project involves understanding how selection sort works and the types of steps that can be in it and other algorithms, and then comparing the cost of selection sort and quicksort.
### 17.6.3.1\. WRITING YOUR REPORT FOR THE MAIN BULLET POINTS THAT COVER ALGORITHMS
**Achieved**
Carry out selection sort on a small amount of data. You can do this either using the balance scale interactive in the field guide (recommended), a physical set of balance scales if your school has them (normal scales that show the exact weights are unsuitable), or as a trace you did using pencil and paper (not recommended). Count how many comparisons you made to sort the items.
Take screenshots/ photos of you using the interactive or balance scales to do the sorting. Three or four pictures would be ideal (i.e. one showing the initial state of the scales and weights, one or two in the middle where you are comparing weights, and one at the end where all the weights are sorted). Use a drawing program to draw on each of the pictures and show which weights have been sorted so far, and which have not. Put on the screenshots how many comparisons have been made so far in the sorting process. Write a short explanation of what is happening in the images. Make sure you include the total number of comparisons that was needed to sort the items in your report.
Describe (in your own words with a few sentences) the overall process you carried out to sort the weights or numbers. Try and make your explanation general, e.g. if you gave the instructions to somebody who needs to know how to sort 100 numbers, or 500 numbers, the instructions would be meaningful.
**Merit**
For merit, you need to make it clear that you understand that algorithms can contain iterative, conditional, and sequential steps. If you don’t know what these terms mean, go have another look at the field guide. Get a Scratch program (or another language if you are fairly confident with understanding the language) that implements selection sort. Take a screenshot of it, or a large part of it (you want to ensure that the screenshot takes up no more than half a page in the report, but is still readable) and open it in a drawing program such as paint. Add arrows and notes showing a part of the algorithm that is sequential, part that is conditional, and part that is iterative.
Remember that some algorithms are a lot faster than others, especially as the size of the problem gets bigger. It isn’t necessarily the case that if you try to sort twice as many items then it will take twice as long. As a quick warm up investigation to give you some idea of this, try the following.
Get an implementation of selection sort (there are some linked to at the end of the chapter in the field guide). Start by choosing a number between 10 and 20\. How many comparisons does it take to sort that many randomly generated numbers with your chosen algorithm? Now, try sorting twice as many numbers. How many comparisons did it take now? Does it take twice as many? Now, try sorting 10 times as many numbers. Does it take 10 times as many comparisons? How many more times the original problem size’s number of comparisons does it actually take? Hopefully you are starting to see a trend here.
*If you aren’t attempting excellence,* include the numbers you got from the warm up investigation, along with an explanation of the trend you found. *If you are attempting excellence, you should do the warm up investigation as it will help you (and will only take a few minutes), but you don’t need to write about it.*
**Excellence**
You probably found in the activity for merit that selection sort isn’t a very good algorithm. So how much better is quicksort? Does the difference become more noticeable as you try to sort more numbers? For your report, you are going to compare selection sort with quicksort. Your objective is to show how much the difference in comparisons between selection sort and quicksort changes as the number of items to be sorted is increased.
Choose 10 numbers in the range of 1 to 1000 (you will need a good variety of numbers, some high and some low. Do not pick the same numbers as your classmates!) For each of your 10 numbers, try sorting that many values with each of the sorting algorithms. Record your results in a table that has a column for the problem size, a column for how many comparisons selection sort used, and a column for how many comparisons quicksort used.
The best way of visualising the data you have just collected is to make a graph (e.g. using Excel). Your graph should have 2 lines; one for quicksort and one for selection sort, showing how the number of comparisons increases as the size of the problem goes up. Make sure you label the graph well. A simple way of making the graph is to use a scatter plot and put in lines connecting the dots (make sure the data for the graph is increasing order with the smallest problem sizes first and largest last so that the line gets drawn properly). Ask your teacher for guidance if you are having difficulty with excel.
Look at your graph. Does the rate of increase for the two algorithms seem to be quite different? Discuss what your graph shows. If you aren’t sure what to include in the discussion of your findings, you could consider the following questions (optional).
* What happens to the number of comparisons when you double how many numbers you are sorting with quicksort? What about when you sort 10 times as many numbers? How is this different to when you used selection sort at the start?
* What is the largest problem you can solve within a few seconds using selection sort? What about with quicksort?
* If you had a database with 1 million people in it and you needed to sort them by age, which of the two algorithms would you choose? Why? What would happen if you chose the other algorithm?
### 17.6.3.2\. WRITING THE PART OF YOUR REPORT THAT ADDRESSES “COMPARING ALGORITHMS/ PROGRAMS/ INFORMAL INSTRUCTIONS”
**Achieved/ Merit/ Excellence**
We recommend doing this part after you have done programming languages.
All three levels (A/M/E) are subsumed by the E requirement, so you should try to do that i.e. “comparing and contrasting the concepts of algorithms, programs, and informal instructions”. You should refer to examples you used in your report or include additional examples (e.g. a program used as an example in the programming languages topic, or an algorithm describing the sorting process, etc). If you are confused, have another look at the field guide. You should only need to write a few sentences to address this requirement.
## 17.6.4\. HINTS FOR SUCCESS
* Don’t confuse “algorithm cost” with the “algorithm length”. The number of lines in the algorithm or program normally unrelated to the cost. Cost is the time the algorithm actually takes to run, or the number of comparisons that have to be made. You can find more information in the Field Guide if you are not sure.
* While we recommend using the balance scales interactive, if you do include a pen and paper trace, don’t give yourself more than 5 or 6 values to sort, and use an efficient layout that ensures the entire trace takes no more than about half a page.
* Resize screenshots/ photos so that they are large enough to see what is on them, but not taking up unnecessary space.
* Be sure to label the axis of your graph clearly so that the marker knows what your graph shows.
## 17.6.5\. RECOMMENDED NUMBER OF PAGES
Within the 4 pages we recommend for algorithms, a possible breakdown is:
* 1 ½ pages: Screenshots and explanations of you carrying out a chosen algorithm and determining the cost of it for your example problem (**Achieved**)
* ¼ page: General instructions for carrying out your chosen algorithm (**Achieved**)
* ½ page: Example of the iterative, conditional, and sequential steps that can be in an algorithm (**Merit**)
* 1 ½ pages: Your investigation and data collected for merit/ excellence. Including results and discussion (**Merit/ Excellence**)
* ¼ page: Explanation of the difference between algorithms, programs, and informal instructions (**Achieved/ Merit/ Excellence**)
These are *maximums*, not targets!
Note that if you go over 4 pages for Algorithms, then you may have to use fewer pages for one of the other two topics, which could be problematic. No other material should be included for Algorithms.
17.5. ALGORITHMS (1.44) – SEARCHING ALGORITHMS
最后更新于:2022-04-01 04:43:35
This is a guide for students attempting the *Algorithms* topic of digital technologies achievement standard 1.44 (AS91074).
In order to fully cover the standard, you will also need to have done projects covering the topics of *Programming Languages* and *Human Computer Interaction* in the standard, and included these in your report.
## 17.5.1\. OVERVIEW
The topic of *Algorithms* has the following bullet points in achievement standard 1.44, which this guide covers. This guide separates them into two categories.
### 17.5.1.1\. COMPARING ALGORITHMS, PROGRAMS, AND INFORMAL INSTRUCTIONS
**Achieved** (A1): “describing the key characteristics, and roles of algorithms, programs and informal instructions”
**Merit** (M1): “explaining how algorithms are distinct from related concepts such as programs and informal instructions”
**Excellence** (E1): “comparing and contrasting the concepts of algorithms, programs, and informal instructions”
### 17.5.1.2\. DETERMINING THE COST OF ALGORITHMS AND UNDERSTANDING VARIOUS KINDS OF STEPS IN ALGORITHMS
**Achieved** (A2): “describing an algorithm for a task, showing understanding of the kinds of steps that can be in an algorithm, and determining the cost of an algorithm for a problem of a particular size”
**Merit** (M2): “showing understanding of the way steps in an algorithm for a task can be combined in sequential, conditional, and iterative structures and determining the cost of an iterative algorithm for a problem of size *n*”
**Excellence** (E2): “determining and comparing the costs of two different iterative algorithms for the same problem of size *n*”
As with all externally assessed Digital Technology reports, you should base your explanations around personalised examples.
## 17.5.2\. READING FROM THE COMPUTER SCIENCE FIELD GUIDE
You should read and work through the interactives in the following sections of the CS Field Guide in order to prepare yourself for the assessed project.
2.1 - What’s the bigger picture?
2.2 - Searching Algorithms
## 17.5.3\. PROJECT
This project involves understanding linear search and binary search.
### 17.5.3.1\. WRITING YOUR REPORT FOR THE MAIN BULLET POINTS THAT COVER ALGORITHMS
**Achieved**
Try both the box searching interactives linked to in the field guide. For one of them you have to use linear search, and for the other you have to use binary search.
Pick one of these algorithms to focus on for achieved. Carry out the interactive and then take a screenshot. Show on your screenshot which boxes you opened, and put how many boxes you opened. The number of boxes you opened is the *cost* of the algorithm in this particular case.
If you did the search with this same number of boxes lots of times (but with different numbers in the boxes), on average how many boxes would you need to check? This is the *cost* for a problem of this particular size (the problem size is the number of boxes).
Describe (in your own words with a few sentences) the overall process you carried out to search through the boxes. Try and make your explanation general, e.g. if you gave the instructions to somebody who needs to know how to search 100 boxes, or 500 boxes, the instructions would be meaningful.
**Merit/ Excellence**
For merit, you need to make it clear that you understand that algorithms can contain iterative, conditional, and sequential steps. If you don’t know what these terms mean, go have another look at the field guide. Get a Scratch program (or another language if you are fairly confident with understanding the language) that implements your sorting algorithm. Take a screenshot of it, or a large part of it (you want to ensure that the screenshot takes up no more than half a page in the report, but is still readable) and open it in a drawing program such as paint. Add arrows and notes showing a part of the algorithm that is sequential, part that is conditional, and part that is iterative.
It should be obvious by now that binary search is far better than linear search! Although you still might say, why not just use a faster computer? To explore this possibility, you are now going to analyse what happens with a **huge** amount of data. Pick a really large number (e.g. in the billions, or even bigger - this is the amount of data that large online companies have to search). Imagine you have this number of boxes that you have to search. Rather than actually carrying out the searching, you are going to determine how long it would take if you use linear search, and how long it would take if you used binary search. Computer scientists call this*analysing* an algorithm, and often it is better to work out how long an algorithm can be expected to take before waiting years for it to run and wondering if it will ever complete.
*Remember that you can use the big number calculator and the time calculator in the field guide.*
How many boxes on average will you have to search if you use a linear search?
What about with binary search? If you are unsure on how to calculate this, remember that each box you check cuts the number of boxes you still need to consider in half. Therefore, you can determine approximately how many boxes you will need to check by continually halving the total number of boxes until it gets down to 1\. You should include all the working (i.e. the result of each division by 2) in your report.
Don’t worry if your answer isn’t perfect; it’s okay to be within 5 or so of the correct answer. This means that if while halving your number it never gets down to exactly 1 (e.g. it gets down to 1.43 and then 0.715), your answer will be near enough. As long as you have halved your number repeatedly until it gets down to a number that is less than 1, your answer will be accurate.
Calculate how long it would take for each algorithm, assuming you have a computer that can look in a million boxes per second. Don’t worry about being too accurate (e.g. just round to the nearest second, minute, hour, day, month, or year).
You should see a very big difference between the two numbers. What will happen if you have twice as many boxes? What about four times as many? How long will it take for each algorithm? You should easily be able to calculate these numbers based on your previous calculations.
Include a table in your report that shows the time it would take for your 15 digit number of boxes using each algorithm, and then for two times, four times, and eight times the number of boxes. If you are keen you could look at 128 times as well (that is doubling the problem size 7 times).
Write about what you observe in the time increase when you have doubled the number of boxes.
With such a large number of boxes, how important is it to use binary search if you can? Imagine if you were a computer scientist with the task of searching these boxes, and in order to do your work you need to search for many pieces of data each day. What would happen if you were trying to use linear search?
### 17.5.3.2\. WRITING THE PART OF YOUR REPORT THAT ADDRESSES “COMPARING ALGORITHMS/ PROGRAMS/ INFORMAL INSTRUCTIONS”
**Achieved/ Merit/ Excellence**
We recommend doing this part after you have done programming languages.
All three levels (A/M/E) are subsumed by the E requirement, so you should try to do that i.e. “comparing and contrasting the concepts of algorithms, programs, and informal instructions”. You should refer to examples you used in your report or include additional examples (e.g. a program used as an example in the programming languages topic, or an algorithm describing the searching process, etc). If you are confused, have another look at the field guide. You should only need to write a few sentences to address this requirement.
## 17.5.4\. HINTS FOR SUCCESS
* Don’t confuse “algorithm cost” with the “algorithm length”. The number of lines in the algorithm or program normally unrelated to the cost. Cost is the time the algorithm actually takes to run, or the number of comparisons that have to be made. You can find more information in the Field Guide if you are not sure.
* Resize screenshots/ photos so that they are large enough to see what is on them, but not taking up unnecessary space.
## 17.5.5\. RECOMMENDED NUMBER OF PAGES
Within the 4 pages recommended for algorithms, a possible breakdown is:
* 1 ½ pages: Screenshots and explanations of you carrying out a chosen algorithm **(Achieved)**
* ¼ page: General instructions for carrying out your chosen algorithm **(Achieved)**
* ½ page: Example of the iterative, conditional, and sequential steps that can be in an algorithm **(Merit)**
* 1 ½ pages: Your investigation and data collected for merit/ excellence. Including results and discussion **(Merit/ Excellence)**
* ¼ page: Explanation of the difference between algorithms, programs, and informal instructions **(Achieved/ Merit/ Excellence)**
These are *maximums*, not targets!
For the topic of searching algorithms you probably won’t need this much space (sorting algorithms tends to require more space). In particular, you should only need 1 page to introduce your chosen algorithm for achieved, and 1 page or less for your investigation for merit/ excellence. This might allow you to allocate more pages to one of the other two topics.
Note that if you go over 4 pages for Algorithms, then you may have to use fewer pages for one of the other two topics, which could be problematic. No other material should be included for Algorithms.
17.4. 1.44 ASSESSMENT GUIDE
最后更新于:2022-04-01 04:43:32
This document provides a brief introduction to teachers on the Computer Science Field Guide assessment guides for NCEA Achievement standard AS91074 (1.44).
## 17.4.1\. TOPICS[](http://csfieldguide.org.nz/appendices/1.44%20-%20Introduction%20-%20Assessment%20Guide.html#topics "Permalink to this headline")
1.44 has bullet points for the following three topics in computer science.
* Algorithms
* Programming Languages
* Human Computer Interaction
Each of these topics has a chapter in the Computer Science Field Guide, which this assessment guide is based on.
Currently, we provide two different assessment guides for algorithms (sorting and searching), and one for each of human computer interaction and programming languages. Note that students only need to follow one assessment guide for each of the three topics (i.e. they do not need to do both searching and sorting for the topic of algorithms).
## 17.4.2\. SORTING VS SEARCHING FOR ALGORITHMS[](http://csfieldguide.org.nz/appendices/1.44%20-%20Introduction%20-%20Assessment%20Guide.html#sorting-vs-searching-for-algorithms "Permalink to this headline")
For the topic of algorithms, students can demonstrate their understanding of algorithms and their costs by using either sorting algorithms or searching algorithms as their example.
For students who are weak at math, searching algorithms is probably the better choice. Sorting algorithms requires either being good at understanding trends from data in a table or understanding how to read trends from a graph in order to achieve merit or excellence, whereas the cost of Searching algorithms can easily be seen by students carrying out the algorithms themselves.
Sorting algorithms provide a slightly richer range of possibilities, including more ways to demonstrate how they work in a student’s report, and intriguing new approaches to a common and easily described task that may not have been obvious.
## 17.4.3\. ORDER OF TOPICS[](http://csfieldguide.org.nz/appendices/1.44%20-%20Introduction%20-%20Assessment%20Guide.html#order-of-topics "Permalink to this headline")
The three topics can be completed in any order, although the first bullet point in each level (comparing algorithms, programs, and informal instructions) is probably best left until both algorithms and programming languages have been completed, since they can provide examples to illustrate the points in the first bullet points.
Covering Human Computer Interaction first may make the Algorithms topic more relevant to students. In many cases, a not so good algorithm will take a second to run, whereas a better algorithm will take less than a tenth of a second. This is very significant in terms of a good user interface, so covering HCI first will make students more aware of issues like this.
## 17.4.4\. PERSONALISATION AND STUDENT VOICE[](http://csfieldguide.org.nz/appendices/1.44%20-%20Introduction%20-%20Assessment%20Guide.html#personalisation-and-student-voice "Permalink to this headline")
It is important that students use personalised examples to base their explanations around, and that the explanations are in their own words, and based on their example (rather than being a paraphrase from wikipedia, for example).
Personalised means that the student’s example is different to their classmates. For example, they may have a program that prints their name or favourite saying, they may use a different number of items to sort or search through, their choice of the values being sorted or searched in examples is unique, and they may carry out their own usability exploration of a device they chose, and report on it in their own words.
If the teacher provides too many headings or leading questions for students to structure their work, this can reduce the opportunity for the report to reflect a personal understanding.
## 17.4.5\. REPORT LENGTH[](http://csfieldguide.org.nz/appendices/1.44%20-%20Introduction%20-%20Assessment%20Guide.html#report-length "Permalink to this headline")
It is important to note that the page limit given by NZQA is not a target. The markers prefer reports that are short and to the point, and the requirements of the standard can easily be met within the limit.
The page limit for 1.44 is now 10 pages to cover the three topics. A possible breakdown that leaves one additional page is:
* Algorithms: 4 pages
* Programming Languages: 2 pages
* Human Computer Interaction: 3 pages
The assessment guides provide further guidance on how to stay within these limits. Students should be mindful of the recommended limits while they are working on their reports, in order to avoid having to delete work they put a lot of effort into.
Some hints to reduce total length
* Only include what is relevant to the standard. While covering additional material in class is valuable for learning, additional content that doesn’t demonstrate understanding of the topics and bullet points in the standard is only a distraction in the report.
* Resize screenshots and photos so that they are still readable, although don’t take up unnecessary space. Use cropping to show the relevant parts of the image.
* Don’t leave unnecessary space in the report. It both looks untidy and makes it more difficult for the marker to find what they are looking for.
## 17.4.6\. PRESENTING THE REPORT[](http://csfieldguide.org.nz/appendices/1.44%20-%20Introduction%20-%20Assessment%20Guide.html#presenting-the-report "Permalink to this headline")
Always check your report trying to think of it from the marker’s point of view. A common mistake is to put in graphs without labels on the axes, so the marker doesn’t know what the graph is showing. Also make sure you give units for measurements (e.g. 5 seconds, 5 minutes?). If you refer to colour in an image don’t print the report in black and white!
If you are using examples, don’t use ones taken from the Field Guide or other sources - make up your own. For sorting and searching, makes up a set of numbers or words (perhaps about 8, but not 2 or 3) to demonstrate the algorithms. For HCI, use your own device. For algorithms, don’t use the “glass of water” example in the Field Guide - think of your own example to show that you’ve understood the point!
## 17.4.7\. GENERAL ADVICE[](http://csfieldguide.org.nz/appendices/1.44%20-%20Introduction%20-%20Assessment%20Guide.html#general-advice "Permalink to this headline")
In 2012 we did a study that looked over 151 student submissions for 1.44 in 2011\. This was the first year 1.44 was offered, although the lessons learnt are still relevant, particularly for teachers teaching the standard for the first time. A WIPSCE paper was written presenting our findings of how well students approached the standard and our recommendations for avoiding pitfalls. Our key findings are reflected in the teacher guides, although reading the entire paper would be worthwhile.
The paper was Bell, T., Newton, H., Andreae, P., & Robins, A. (2012). The introduction of Computer Science to NZ High Schools — an analysis of student work. In M. Knobelsdorf & R. Romeike (Eds.), The 7th Workshop in Primary and Secondary Computing Education (WiPSCE 2012). Hamburg, Germany. Available from:[http://nzacditt.org.nz/system/files/Student-work-WiPCSE2012-final-submission-dl.pdf](http://nzacditt.org.nz/system/files/Student-work-WiPCSE2012-final-submission-dl.pdf)
17.3. INTERACTIVES
最后更新于:2022-04-01 04:43:30
This chapter is for help on getting the interactives (previously referred to as widgets) working. The current interactives are prototypes and have not been heavily tested across different browsers and operating systems. Most of the interactives will work in the latest version of Chrome.
The interactives are currently not designed for mobile or touch devices, but are a focus when we redesign them over the coming months.
## 17.3.1\. WEBGL ON WINDOWS, LINUX AND MAC OS X[](http://csfieldguide.org.nz/appendices/Interactives.html#webgl-on-windows-linux-and-mac-os-x "Permalink to this headline")
The graphics chapter makes a lot of use of the WebGL system, which can render 3D images in a web browser. It is relatively new, so older browsers and operating systems may not have it setup correctly.
### 17.3.1.1\. QUICK FIXES[](http://csfieldguide.org.nz/appendices/Interactives.html#quick-fixes "Permalink to this headline")
If you are using an up-to-date version of Chrome or Firefox and the drivers for your operating system are up-to-date and the computer has a suitable GPU, then it should work. It won’t be possible to use it in Internet Explorer. For Safari you will need to adjust some settings. The details for getting WebGL set up are below.
**Updating your operating system**
If you’re on **Windows**, make sure you have [the Microsoft DirectX runtime](http://www.microsoft.com/en-us/download/details.aspx?id=35) installed — this is a free download from Microsoft. Once you’ve done that, make sure that you’ve got the very latest versions of the drivers for your graphics card. We recommend doing this manually, there are good tutorials on the internet. There is a good[video](http://www.pctecmech.com/tutorials/Video-Card-Drivers.php) here that explains how to do this. The easiest way is to install an free driver update program like [SlimDriver](http://download.cnet.com/SlimDrivers-Free/3000-18513_4-75279940.html) which will find missing and out-of-date drivers.
For **MacOS**: 1\. Click the Apple logo. 2\. On the “Apple” menu, click “Software Update.” 3\. If there is a Mac OS X update available, you can install it. If there is a graphics driver update, it will be included in the Mac OS X update.
**Updating your browser**
This depends on which browser you are using. If you can use Chrome it can be a little easier to get working.
* [Firefox](http://www.mozilla.org/en-US/firefox/new/): just make sure you have version 4 or higher.
* Chrome: all you need to do is [install it](https://www.google.com/intl/en/chrome/browser/), or if you’re already using it, just check whether it’s updated itself to version 10 or later — this will almost certainly have happened automatically (it was released in March 2011), but you can check from the “About Google Chrome” option on the tools menu to confirm.
* Safari: on Macs, OS X 10.7 has WebGL support, but it’s switched off by default. To switch it on, enable the developer menu and check the “[Enable WebGL](http://www.google.com/url?q=http%3A%2F%2Fwww.ikriz.nl%2F2011%2F08%2F23%2Fenable-webgl-in-safari&sa=D&sntz=1&usg=AFQjCNFn42c02vQLy95tRoAoDxdprFGPJA)” option.
All older version of these browsers require manual enabling of WebGL. For more information on getting a WebGL implementation follow this [link](http://www.google.com/url?q=http%3A%2F%2Fwww.khronos.org%2Fwebgl%2Fwiki%2FGetting_a_WebGL_Implementation&sa=D&sntz=1&usg=AFQjCNEnTnBdVMIaarDTponyCLS5rHphOA).
### 17.3.1.2\. TROUBLE IN LINUX, WINDOWS OR MAC OS X[](http://csfieldguide.org.nz/appendices/Interactives.html#trouble-in-linux-windows-or-mac-os-x "Permalink to this headline")
If the above doesn’t work then you may unfortunately have a blacklisted GPU / graphics card, or your graphics drivers may be out of date because the company has discontinued their support. In most cases we can get around this (see below).
You can find an explanation of [blacklisted](http://www.google.com/url?q=http%3A%2F%2Fwww.khronos.org%2Fwebgl%2Fwiki%2FBlacklistsAndWhitelists&sa=D&sntz=1&usg=AFQjCNFATCzIoQU6-Fo8xMSQZPPKtYktjQ) cards/GPU’s for Chrome. As of January 2013 the “blacklisted” Chrome GPU’s are as follows; some may be removed from the list later.
**All operating systems**
* NVIDIA GeForce FX Go5200
**Windows**
* Intel GMA 945
* ATI FireMV 2400
**Mac**
* ATI Radeon HD2400
* ATI Radeon 2600 series
* ATI Radeon X1900
* ATI Radeon HD 6490M on OS X 10.6
* GeForce 7300 GT
**Linux**
* AMD/ATI cards
* Nvidia QuadroFX 1500
* Nvidia cards with Nouveau drivers
* Nvidia cards with Nvidia drivers older than 295
* Optimus dual-GPU configurations
* Intel for Mesa drivers earlier than 7.9 (just update drivers)
### 17.3.1.3\. THE WORK-AROUND[](http://csfieldguide.org.nz/appendices/Interactives.html#the-work-around "Permalink to this headline")
To work around this it is easiest done in Chrome by typing “[about:flags](about:flags)” in the address bar, it will open a page. On this page find “Override software rendering list” in the list and click ‘enable’. Then look for and click the “relaunch google chrome” button or close all chrome browser windows and restart/reload Chrome.
In Firefox type “[about:flags](about:flags)” in the address bar. (On this page there is a search input available) Search in this for “force-enabled”. Double click on both*layers.acceleration.force-enabled* and *webgl.force-enabled* which will set their value **true**. Then close all firefox browser windows and restart/reload firefox.
### 17.3.1.4\. EXTRA TROUBLE[](http://csfieldguide.org.nz/appendices/Interactives.html#extra-trouble "Permalink to this headline")
Graphics drivers must be working, some graphics cards are not fully compatible with some operating systems. In the case of Linux OS make sure is fully updated ie. Intel Mesa drivers should be higher than 7.9 otherwise it will default to software rendering.
### 17.3.1.5\. DIAGNOSE YOUR GPU IN CHROME[](http://csfieldguide.org.nz/appendices/Interactives.html#diagnose-your-gpu-in-chrome "Permalink to this headline")
You can diagnose what’s happening by typing ‘chrome://gpu’ in the location bar. You can also see your driver version in here and other details.
If webgl is enabled then you should get a graphics feature status, ie. - Canvas: Hardware accelerated - WebGL: Hardware accelerated - WebGL multisampling: Hardware accelerated - Flash 3D: Hardware accelerated - Flash Stage3D: Hardware accelerated
The GL_RENDERER also should have the name of your GPU, otherwise if its not working correctly it may have something like “Software Rasterizer” and will be really slow. In this case again check your drivers are up to date.
17.2. CONTRIBUTORS
最后更新于:2022-04-01 04:43:28
Note
If there is an error in the list, please contact [Jack Morgan](mailto:jack.morgan%40canterbury.ac.nz)
* Tim Bell - International Field Guide, co-organiser
* Peter Denning - International Field Guide, co-organiser
* Jack Morgan - Editor and Technical Lead
* Heidi Newton - Writer for Artificial Intelligence, Complexity and Tractability
* Janina Voigt - Writer for Software Engineering
* Ian Witten, writer and advisor
* Jon Rutherford - Writer for Software Engineering
* Wal Irwin - Advisor for Software Engineering
* Peter Andreae - Advisor for Artificial Intelligence, Complexity and Tractability
* Walter Guttmann - Advisor for Formal Languages
* David Thompson - Interactive games and Writer for Computer Vision
* Rhem Munro- Interactive games and Writer for Computer Graphics
* Sumant Murugesh - Research
* Ben Gibson - Interactive games and related material
* Linda Pettigrew - Formal languages material
* Joshua Scott - Computer Graphics material: Bresenham’s methods
* Michael Bell (Orange Studio) - Video production
* Patrick Baker, Jenny Baker, Neil Leslie - NZ teachers providing advisory role
* Dr Mukundan - Advisor for Computer Graphics & Vision
* Richard Green - Advisor for Computer Vision
* DongSeong Kim - Advisor for networking/security
* Mike Fellows, co-authored CS unplugged (source material)
* Andrea Arpaci-Dusseau, co-author of a Chinese version of “Unplugged” (source material)
* Renate Thies and Jan Vahrenhold (Münster University, Germany), advisors
* Anthony Robins - advisor
* Shadi Ibrahim - advisor
* Paul Curzon - CS4FN material
* Quintin Cutts - “Computing Science Inside” material
* Paul Matthews (IITP) - advisor
* Calvin Lin, Bradley Beth - The University of Texas at Austin “Thriving in our Digital World” project
* Brad Miller and David Ranum - advisors for authoring tools - our web system is based on their books at [Runestone Interactive](http://runestoneinteractive.org/).
## 17.2.1\. ACKNOWLEDGEMENTS[](http://csfieldguide.org.nz/appendices/Contributors.html#acknowledgements "Permalink to this headline")
This project has grown out of a partnership for an international field guide to computing. In the CSSE department, it grew from the CS Unplugged project (csunplugged.org) and the CS resource guides (nzacditt.org.nz/resources). At the at Naval Postgraduate School in Monterey, California, it grew from a project called “Field Guide to the Science of Computing” (csfieldguide.org) and the Great Principles of Computing project (greatprinciples.org), both led by Peter Denning.
Funding for this online textbook has been provided by Google Inc. In addition, countless hours of volunteer time have been contributed by those listed above. Tim Bell prepared an initial draft of this material while visiting Huazhong University of Science and Technology, Wuhan, China, whom we thank for providing an excellent environment for writing. The project is based at the University of Canterbury, Christchurch, New Zealand; other authors are at Victoria University of Wellington, New Zealand, and Cambridge University, UK.
Partial funding for the US field guide project was provided by the US National Science Foundation under Grant No. 0938809.
17.1. GLOSSARY
最后更新于:2022-04-01 04:43:26
ALC
Apple Lossless Coding, a lossless compression method for audio.
Algorithm
Algorithm a process for achieving an outcome, normally for a general problem such as searching, sorting, finding an optimal path through a map and so on.
Algorithm analysis
Algorithm analysis working out the complexity of an algorithm.
Algorithm complexity
Algorithm complexity how long the algorithm takes to run (or how much memory it uses). These are almost always specified in terms of the size of input.
Alphabet
Alphabets
In formal languages, this is the set of characters that might be processed. For many compilers and text processing systems the alphabet is the set of all ASCII characters, but for example, for a finite state automaton controlled by an “up” and “down” button, the alphabet is just the two symbols “up” and “down”. For systems processing binary numbers, the alphabet would usually be “0” and “1”. Many of the small examples just use a small alphabet of a few characters (typically “a”, “b”, “c” etc.) to keep things simple.
ASCII
ASCII the commonly used code for representing characters as 8-bit numbers (although only 7 of the 8 bits are usually used).
Attack
Gaining access to or decrypting a file that is using encryption, without having the key. There are several types of attacks, some of which are also defined in this list.
Binary Number System
The base 2 number system, i.e. numbers only made up of the digits “0” and “1”. All numbers that can be represented in the decimal number system can be uniquely represented in the binary number system.
Binary search
Binary search searching a sorted list by looking at the middle item, and then searching the appropriate half recursively (used for phone books, dictionaries and computer algorithms).
Bit
Bit short for “binary digit” - a digit that is either 0 or 1.
Brute force attack
A type of attack that is carried out by trying every possible key.
Bubble sort
Bubble sort a sorting algorithm based on swapping adjacent items that are out of order. It is not a good method, but serves as an example of a slow method in contrast to others like quicksort.
Byte
Byte a group of 8 bits, able to represent numbers from 0 to 255, can store one ASCII character (also known as an octet).
Caesar Cipher
A very simple cipher that offsets each letter in the alphabet by a certain amount, specified by the key. It is no longer used in practice due to being very easy to attack.
Chatterbot
An AI system that has text conversations with the user, typically based on simple pattern matching.
Check digit
An extra digit that is added onto the end of a number such as an ISBN, credit card number, or barcode number. This digit is calculated using a formula based on the other digits in the number. Error detection works by using the check equation to determine whether or not the check digit is as expected.
Check equation
An equation that is used to check whether or not the check digit for a number is correct.
Chomsky hierarchy
A hierarchy of types of languages ranging from the simple “regular expression” through to unrestricted grammars. Each level of the hierarchy can describe more complex rules, but is also harder to implement. It is named after the linguist Noam Chomsky.
Cipher
An algorithm used to encrypt a piece of plain text.
Cipher text
Text which has been encrypted.
Compiler
Compiler translates an entire program written in a high level language to machine language in advance before running it.
Complexity
Complexity how long it takes to solve a problem. A problem has an inherent complexity (minimum time needed to solve it); any algorithm to solve the problem will have a higher complexity (take at least that long). See also algorithm complexity.
Compression
Compression making a file smaller by removing redundant information (typically using standards like zip, jpeg, mpeg, mp3).
Decimal Number System
The standard base 10 number system that is used in everyday math, using the digits “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, and “9”.
Decrypt
Decryption
Decipher
Getting the plain text for a piece of cipher text by either using the key or an attack.
Encryption
Encryption changing the representation of data so it can’t be read by an eavesdropper who doesn’t have the encryption key.
Encryption key
Encryption key the password or secret code that will unlock an encrypted file.
Error correction
Correcting an error that has been detected in some data. This can be demonstrated in the Parity trick, where a person is able to flip the changed bit back over so it is correct again (after they have “detected” which bit was incorrect). Not all error control schemes are able to correct errors; some are only able to detect them.
Error detection
Detecting when an error has occurred in some data, such as a number getting typed incorrectly or a bit getting flipped. Some simple examples of this are parity bits or a check digit.
Feature
A function available on a digital device or software, such as copy/paste, autofocus, voice dialling or undo. Features are often used to sell a device, but having features (functionality) should not be confused with people being able to use the device effectively (usability).
Feedback
Responding to or acknowledging a user action. Users find the devices hard to use if the feedback is slow, confusing, or non-existent.
Finite state automaton
FSA
A simple notation for processing input symbols to determine if they obey some specified. An FSA has a starting state, transitions between states based on the next input symbol, and “accepting” states, which indicate that the input is accepted if the processing ends up in one.
Frequency Analysis Attack
An attack on substitution ciphers that takes advantage of the fact that some letters are generally more common than others in a piece of text (e.g. in English, the letter “e” is usually the most common letter) by looking at which letters appear the most in the cipher text and guessing that they must be the substitutions for the most common letters.
GIF
A lossless image compression system typically used for small images with few colours in them (in practice it can be lossy because it has only 256 colours, and if the original has more colours then some will be lost).
Gigabyte
About 1000 megabytes (1,000,000 kilobytes and 1,000,000,000 bytes). This is 8,000 million individual bits (i.e. 0’s and 1’s). [Like a kilobyte, there are other definitions, such as 1024x1024x1024 bytes, but usually this level of accuracy isn’t important]. Commonly referred to as a “GB”.
Grammar
Rules that specify a language, typically used for defining programming languages.
Graphics
Graphics in computer science, designing algorithms that can produce images on a computer.
HCI
HCI human computer interaction; an area of computer science looking at how people interact with a digital device, with an emphasis on the quality of the experience to complete tasks.
Heuristic
A heuristic is rule or guideline, usually devised from experience. The term is used in both HCI and algorithms. In **HCI**, heuristics are often used as a benchmark to evaluate interfaces — they aren’t strict rules, but usually highlight issues with designs. A very common set is given at www.useit.com . In **algorithms**, and heuristic is an approximate solution to a problem; it doesn’t guarantee to give the best possible answer (such as the shortest route on a map), but by using simple rules the calculation can be done quickly, and the solution is hopefully good enough for practical use.
Hexadecimal
The base 16 number system. Uses the digits “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “A”, “B”, “C”, “D”, “E”, and “F”. All numbers that can be represented in decimal can be uniquely represented in hexadecimal (just like binary). It is most often used as a shorthand notation for binary, by assigning 1 hexadecimal digit to each 4 bit pattern (the assigning is done in numeric order).
Hexadecimal colour codes
A representation for colours that tells the computer how much red, blue, and green light to display in a pixel (to make the desired colour). Uses 1 byte for each of these 3 primary colours, which is 3 bytes (24 bits) in total. These 24 bits are often written as 6 hexadecimal digits to make them easier for humans to read, which is why they are called “Hexadecimal colour codes”. They are commonly encountered when specificying colours in HTML for web pages.
High level language
High level language a programming language that is designed for humans to read and write (e.g. Java, Python, C, C#, Basic, Scratch…) as opposed to machine languages.
Insertion sort
Start with an empty list, and insert each item in the correct place; this is a relatively slow method, usually between selection sort and quick sort in speed.
Intelligent Systems
Intelligent systems an area of computer science that investigates ways to simulate or approximate human intelligence on computers; often referred to as artificial intelligence (AI).
Interface
The part of a computer, software, or electronic device that a human interacts with, whether this is by sight, hearing, or touch.
Interpreter
Interpreter runs a programming language by translating each line of code as it is execute.
ISBN
Stands for International Standard Book Number. Every published book has one of these numbers on the back of it. ISBN is significant to error control coding because it uses a check digit for error detection.
JPEG
A lossy image compression system typically used for photographs.
Key (in algorithms)
It is an item of data that is being searched for or sorted, and therefore will be compared with other data.
Key (in cryptography)
The password or secret value that is used to encrypt and decrypt an encrypted file (without having to use an “attack”). Some widely used methods have different keys for encryption and decryption.
Kilobyte
About 1000 bytes. This is 8,000 individual bits (i.e. 0’s and 1’s). [We say “about” 1000 bytes because the term is ambiguous and it is often taken as 1024 bytes; however, rounding it to 1000 is close enough for most calculations]. Commonly referred to as a “KB”.
Known plain-text Attack
Working out the key or method of encryption (cipher) based on having access to both the original plain-text and its encrypted form.
Language
A set of strings, typically obeying some rules defined by a regular expression or grammar e.g. all strings containing the letter “a” exactly twice, or all strings that are legal Java programs.
Lexical analysis
When compiling a computer program, working out what the components of the program are e.g. identifiers, keywords, integers.
Linear Complexity
Linear complexity grows in proportion to the size of the problem - if the problem is twice as big, it will take roughly twice as long to solve.
Logarithm
Logarithm is a very slow growing mathematical function written as \log n. In computer science logarithms are usually in base 2, that is, \log_2 n, which is the inverse of the incredibly fast growing exponent function 2^n. Logarithms are not needed to understand the material in this book, but they are used a lot in computer science and are a useful concept to understand. Logarithms happen to come up a lot with algorithms, and the two words are often confused. The value \log_2 n is just the number of times you can halve n until you get down to 1; for example, \log_2 32`is 5, and :math:log_2 1024` is 10\. Binary search takes \log_2 n steps to search *n*items; storing the number *n* in binary takes \log_2 n bits.
Lossless
A compression method that does not cause any loss of data. This means that the uncompressed file will be identical to the original file that was compressed (which is important for text). In the case of images and sound, it means they will be of the same quality before and after compression. For example, ZIP and ALC use lossless compression.
Lossy
A compression method that trades off quality for file size. Lossy compression methods can make files smaller than lossless compression methods can, but the quality of the resulting file will be lower. For example, MP3 and JPEG use lossy compression.
Machine language
The native language for instructions for a computer, not very easy for humans to read and write.
Megabyte
About 1000 kilobytes (1,000,000 bytes). This is 8 million individual bits (i.e. 0’s and 1’s). [Like a kilobyte, there are other definitions, such as 1024x1024 bytes, but usually this level of accuracy isn’t important]. Commonly referred to as a “MB”.
MP3
A lossy audio compression system.
Nibble
4 bits (half a byte), sometimes called a nybble.
Nielson’s Heuristics
A widely used set of heuristics for evaluating computer interfaces that was devised by Jakob Nielson (available from [http://useit.com](http://useit.com/)).
Octal
The base 8 number system. Like hexadecimal, it is significant to computer scientists as it allows a shorthand notation for writing binary numbers. Octal assigns a digit to each possible 3 bit pattern. Note: You probably don’t need to know this for the achievement standard, although it is included here in case you come across the term.
Parity
Adding an extra bit to a set of bits to make it so that there is an even number of 1’s. Storing the parity makes it possible to detect and correct errors later. [This is known as an even parity bit; an odd parity bit is also possible where the extra bit ensures there is an odd number of 1’s]
Parse tree
The structure derived by parsing some input.
Parsing
Reading some input (typically a computer program) and making sense of it by breaking it into parts according to their function.
Pattern matching
Finding strings of characters that match simple rules, typically based on a regular expression.
Plain Text
Text before it has been encrypted or after it has been decrypted (so essentially text in plain language, without any encryption).
PNG
A lossless image compression system typically used for small images with few colours in them.
Quadratic complexity
Quadratic complexity grows with the square of the size of the problem - if the problem is twice as big, it will take roughly 4 times as long to solve.
Quick sort
Quick sort pick an item at random, put all the smaller items in a group on its left and the larger items in a group on its right. Now do quick sort on the two groups. This is one of the better sorting algorithms, and is good for comparing with others. Students don’t need to understand how it works, but some may be curious.
Redundant Bits
Extra bits that are not part of the actual data but instead have been added for error detection and possibly error correction.
Regular expression
A simple expression used for pattern matching, typically using characters combined with “*” (repetition), “|” (selecting one or the other) and parenthesis (to group operations). Some systems allow more complex patterns such as ”.” (matches any character), “{n}” (repeated n times), and “\d” (digit).
Search
Find a key in a large amount of data.
Selection sort
Selection sort select the smallest item, then the second smallest, and so on. This is not a very fast algorithm, but it’s not as bad as bubble sort, and provides a good contrast with quick sort.
Sort
Sort puts keys (numbers, names or other values) in order from smallest to largest (outside computer science this is usually called ordering).
String
Strings
A sequence of characters or symbols from an alphabet. For example, the two-character strings that can be made from the alphabet {“a”,”b”} are “aa”, “ab”, “ba” and “bb”.
Substitution Cipher
A type of cipher that works simply by replacing each letter or combination of letters in a plain text with a certain other letter or combination of letters to make up the cipher text. The result of this is that each unique letter combination of letters in the plain text (e.g. “t”) is represented by the same unique letter combination of letters in the cipher text (e.g. “y”) Caesar Cipher is a simple example of a substitution cipher. Substitution ciphers are vulnerable to Frequency Analysis Attacks, so are not used in practice.
Syntactically correct
A string is syntactically correct if it matches the specifications for a formal language. For example, the string “()(())” is correct for a grammar that gives the rules for balanced parentheses. In a computer program, a syntax error is when a character occurs in the input which isn’t allowed, and the program is therefore not syntactically correct.
Syntax
Syntax rules about what text can appear in a programming language, used by a compiler or interpreter and therefore need to be followed by a programmer to avoid syntax errors.
Syntax diagram
Also known as railway (or railroad) diagrams, these are a graphical representation of a grammar using arrows (the “train tracks”) to show the options for each component of a language.
Task
Something a user might do with a piece of software or electronic device to achieve a goal. In the case of a cellphone this might be “send a text message” or in the case of a microwave it might be “heat up yesterday’s leftovers”. Interfaces are best evaluated when considering how they help a user to perform a task.
Time complexity
Time complexity the usual meaning of the complexity of an algorithm; this makes it clear that we’re talking about the time taken. Normally it’s expressed in terms of steps, not real time on a particular computer, as different computers are different speeds.
Unicode
Unicode an extension of ASCII; it supports characters from multiple languages, using 16 bits per character.
Usability heuristic
See [*Heuristic*](http://csfieldguide.org.nz/appendices/Glossary.html#term-heuristic).
User
The human using the computer system or electronic device.
Visual computing
Visual computing designing systems that can perceive, process, understand and generate images; images typically come from scanners and cameras, and may be displayed on monitors, head mounted displays, or as movies.
17. APPENDICES
最后更新于:2022-04-01 04:43:23