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
- perface
- 1. INTRODUCTION
- 2. ALGORITHMS
- 3. HUMAN COMPUTER INTERACTION
- 4. PROGRAMMING LANGUAGES
- 5. DATA REPRESENTATION
- 6. CODING — INTRODUCTION
- 7. COMPRESSION CODING
- 8. ENCRYPTION CODING
- 9. ERROR CONTROL CODING
- 10. ARTIFICIAL INTELLIGENCE
- 11. COMPLEXITY AND TRACTABILITY
- 12. FORMAL LANGUAGES
- 13. COMPUTER GRAPHICS
- 14. COMPUTER VISION
- 15. NETWORK COMMUNICATION PROTOCOLS
- 16. SOFTWARE ENGINEERING
- 17. APPENDICES
- 17.1. GLOSSARY
- 17.2. CONTRIBUTORS
- 17.3. INTERACTIVES
- 17.4. 1.44 ASSESSMENT GUIDE
- 17.5. ALGORITHMS (1.44) - SEARCHING ALGORITHMS
- 17.6. ALGORITHMS (1.44) - SORTING ALGORITHMS
- 17.7. HUMAN COMPUTER INTERACTION (1.44)
- 17.8. PROGRAMMING LANGUAGES (1.44)
- 17.9. 2.44 ASSESSMENT GUIDE
- 17.10. REPRESENTING DATA USING BITS (BINARY NUMBERS) (2.44)
- 17.11. REPRESENTING DATA USING BITS (CHARACTERS/TEXT) (2.44)
- 17.12. REPRESENTING DATA USING BITS (IMAGES/COLOUR) (2.44)
- 17.13. COMPRESSION (2.44) - RUN LENGTH ENCODING
- 17.14. ENCRYPTION (2.44) - RSA CRYPTOSYSTEM
- 17.15. ERROR CONTROL CODING (2.44) - CHECK SUMS
- 17.16. ARTIFICIAL INTELLIGENCE (3.44) - TURING TEST
- 17.17. FUTURE PLANS FOR THE FIELD GUIDE
- 17.18. GUIDE TO SYSTEM FOR OPEN SOURCE DEVELOPERS
- JUST BROWSING