AREA 1: PROBLEM SOLVING AND PROGRAMMING (70 HOURS)
Algorithms and programming solutions to a variety of problems are designed and expressed in a variety of forms. Students will develop skills in understanding the problem, exploring problem solving strategies, design and creation of a solution. Algorithms that require mathematical solutions, such as those involving summation and searching, are investigated.
A fundamental understanding of the Software Development Life Cycle (design, code, test, evaluate and refine) is required. Practical activities need to provide experience for learners in all stages of this cycle and to develop an understanding of the importance of analysis and design before beginning to code.
Programs should adhere to established programming styles and significant programs should have formal documentation.
ALGORITHM DESIGN AND PROBLEM SOLVING
This includes
- exploration of a range of problems - some problems cannot be reduced to an algorithm as they have no clear rules, some problems have clear rules but are difficult to put into algorithms because they have many possible responses to rules (e.g. the game of Go). Other problems are those for which rules are still to be discovered such as natural language processing and how to cure certain diseases. The course focuses on problems that can be represented algorithmically. This section should provide a link between Computer Science and other disciplines
- exploration of forms of problem solving – algebraic, algorithmic, trial and error
- the specific requirements of a problem are determined from problem definitions given in a variety of forms
- examination of different solutions to the same problem (critical evaluation, most efficient, reliable)
- problem deconstruction/decomposition – problems need to be broken down into a number of well-defined steps
- visualisation of solution – use of diagrams to illustrate the solution
- expression of the solution to the problem – use an initially/when model for event-driven solutions.
PROGRAMMING
Learners learn the fundamentals of Object-oriented programming and event driven programming.
Learners write a variety of Java applications using the following Java features
- primitive types (promotion and casting)
- arithmetic and logic operators (+, -, *, / , %, &&, !, ||), order of operations, and some mathematical functions -such as (Math.pow(), Math.random())
- classes and information hiding
- graphics (drawing, filling)
- pre-defined objects, including arrays and strings, and modifying and creating objects
- control-flow (selection using if else/switch, iteration using for/while)
- methods, parameters and scope
- GUIs (widgets including buttons, text fields, labels)
- events and listeners using the AWT library.
A key component of programming will be an emphasis on good programming practice. Programs need to adhere to a defined set of standards including good variable name choice, commenting, and indenting. Learners will be introduced to examples of programming style guides, and the reasons why organisations often require their programmers to comply with a specific style.
A key element of this topic is designing applications for genuine solutions. Fundamental notions of HCI (Human Computer Interaction) are introduced.
TESTING AND EVALUATION
In this section
- a structured approach to testing is followed. Testing plans are written from program specifications in the absence of a program
- tracing as a means of debugging programs is introduced, including both hand and automated tracing
- self-review, peer review and external review (including by end users) is used to evaluate applets and applications and identify future refinements.
DOCUMENTATION
Programs of significant size should be accompanied by both technical and user documentation. Technical documentation includes internal comments of programs. User documentation provides a description of the program’s purpose, operating instruction and appropriate online help.
Programming style guides could include (but are not limited to) the original Oracle Java Code Conventions, the Google Java Style Guide and others such as the JavaRanch Style Guide.
The general value of programming style is conveyed in publications such as Stanford’s introductory programming style guide and the Harvard CS50 Style Guide (which is not designed for Java but outlines the reasons for style decisions).
Documentation can take different forms but it is recommended that, where appropriate, technical documentation within programs be undertaken in accordance with the Javadoc “documentation comments” format.
AREA 2: COMPUTER FUNDAMENTALS AND COMPUTER LIMITATIONS (40 HOURS)
In order to come to an understanding of the limitations and possibilities for the use of computer technology into the future, learners need to understand computer architectures, and the role of the operating system.
Areas to be covered:
- binary number system for whole number and fraction and conversions to decimal and hexadecimal
- basic binary arithmetic (addition only)
- two's complement representation and arithmetic (addition and subtraction only)
- representation of primitive data types (integer, char, boolean, float)
- representation of non-numeric data using hexadecimal where appropriate (e.g. characters, colours, instructions)
- implications of representation of floating point numbers for accuracy of calculations
- representation of arrays as well as sound and picture files
- Boolean operators (AND, OR, NOT)
- logic gates, basic computer circuits and the flip-flop
- using truth tables, Karnaugh maps and simplifications using the specified list of logic laws to design logic circuits
- computer architecture – the fundamental components of a computer in the von Neumann architecture and the relevant historical context
- machine code and its relationship to high level languages such as Java
- the machine cycle required to add two numbers (fetch, decode, execute)
- operating systems and the role of the JVM
- newer technologies and their relationship to basic computer architecture.
AREA 3: SOCIAL / ETHICAL ISSUES AND PROFESSIONAL RESPONSIBILITY (10 HOURS)
Computer professionals have specialised knowledge and often have positions with authority. For this reason, they may have a significant impact on society. There is a duty to exercise that power responsibly.
Areas to be covered:
- career pathways, skills and education required
- the role of professional associations and codes of ethics
- responsibilities of the computing professional in the workplace
- responsibilities of those in positions of authority
- examples and consequences of technological errors, such as software bugs
- the consequences of good and bad user interface design, and the obligation to design for all users (for example, http://www.australia.gov.au/accessibility.)
AREA 4: COMPUTING OPTION (30 HOURS)
The skills gained in Computer Science are used to explore an area of interest in more depth. The option chosen must enable learners to demonstrate problem solving skills, research, and technical communication skills. In addition, learners must adhere to ethical and professional standards as they are prescribed in the course. The option product will be used to assess both Criteria 8 and 9 and either Criterion 1 or 6, along with at least one of the remaining criteria.
Providers may wish to direct the nature of the Computing Option based on the interests, needs and skills of individual learners.
Suggested topics include (but are not limited to):
- production of a Java application for a client following the software development lifecycle
- Object-oriented programming in other languages
- game development in a suitable environment
- exploration of network programming
- programming for mobile devices
- Media Computation
- cryptography, compression and security
- artificial intelligence and machine learning
- human-computer interaction
- computer forensics
- ethical and legal aspects of computer science
- application of computer science principles to another field (e.g. life sciences, psychology, law)
- big data and data science
- exploration of Java libraries
- exploration of alternative Java programming environments (e.g. Greenfoot, Robocode)
- programming LEGO® robots using LeJOS
- programming of embedded systems and microcontrollers
- digital electronics.
Note that the topic chosen must provide the learner with opportunity for the assessment of the Criteria stated above.