User:Patryk Dombrowski/sandbox

Advanced Higher Computing, SQA course code C206 13, is a computing course taught in secondary schools in Scotland. The Advanced Higher course is the highest computing course that can be taught in Scottish secondary schools. It consists of two mandatory units, Software Development, Developing a Software Solution and one optional unit chosen from Artificial Intelligence, Computer Networking and Computer Architecture.

Assessment
The course is assessed on two components, a coursework project worth 40% of the final grade and a exam paper worth 60%.

The coursework is a programming project assigned to candidates during the first term around October/November. It is assigned whilst learning the Developing a Software Solution unit. The project is marked out 80 in accordance with the SQA. The Advanced Higher Computing coursework differs from the Higher computing coursework by allowing the candidates to choose their own project. The coursework project needs to meet relevant Advanced Higher material such as using a file construct taught in the Software Development unit.

The exam question paper is sat in late May to early June. The paper is a 2 hour and 30 minute written examination on the mandatory and optional units of Advanced Higher Computing. The paper is split into two sections.

Section one consists of 60 marks and is comprised of questions on the two mandatory units, Software Development and Developing a Software Solution.

Section two is made up of questions on each of the optional units (each with their own sub-section), Artificial Intelligence, Computer Networking and Computer Architecture. This section is also worth a total of 60 marks.

Mandatory Units
The course consists of two mandatory units, Software Development and Developing a Software Solution. Each unit lasts for 40 hours and is worth 1 credit.

Software Development
Software development is one of the mandatory units in Advanced Higher computing course. It is divided into 7 topics.

Software Development Process

The topic builds on the software development process from higher computing - analysis, design, implementation, testing, documentation, evaluation and maintenance. It introduces a new model
 * Project proposal
 * Feasibility study
 * Analysis of the problem
 * System design
 * Implementation and Testing
 * Evaluation and maintenance

Interface Design

The topic covers compares different types of user interfaces. It highlights the advantages and disadvantages of each type. Candidates are expected to compare the following types :
 * command line interfaces
 * graphical user interfaces
 * menu driven interaces
 * special purpose (such as touchscreens)

Software Development languages and environments

The topic introduces object-oriented languages and how they compare to the types introduces in Computing Higher (procedural], [low level programming|low level, declarative and event-driven). The trends in the development of these languages is also covered, including 4th generation programming languages.

Software Testing and Tools

The topic covers methods of testing and debugging software and the use of Computer-Aided Software Engineering (CASE) tools. Testing methods include module, component and beta testing. Debugging methods include dry runs, trace tables and break points. Candidates are also expected to know about the use and advantages of CASE tools.

Higher level programming language constructs 1 and 2

The first topic covers file handling and actions associated with it: writing to and reading from a file, deleting and creating a new file. It also covers the use of 2-D arrays.

The second topic covers dynamic data types – stacks, queues and records. Candidates are expected to “describe and exemplify” the above data types.

Standard Algorithms

This topic introduces a number of algorithms; candidates are expected to describe and compare these algorithms. They include:
 * binary search
 * linear search
 * simple sort
 * bubble sort
 * selection sort

Candidates are also expected to “describe and exemplify of user-defined module libraries”.

Developing a Software Solution
Developing a Software Solution is one of the 2 mandatory units in the course. It is worth 1 credit and consists of 40 hours of teaching time. This Unit is designed to develop the ability to analyse a complex computing problem and to design, implement and test a software based solution.

The content of the unit consists of:

Definition and exemplification of a problem specification. Definition and exemplification of the elements of the analysis stage: Statement of the requirements, Identification of the scope and boundaries of the problem, Identification of functional requirements. Definition and exemplification of the elements of a project plan: Identification of sub-tasks, Setting a realistic time-scale,  Application of appropriate project management technique. Definition of the need to: Consider and compare possible strategies using clearly specified criteria, Select and justify a strategy. Definition and exemplification of aspects of a good user interface. Definition and exemplification of the elements of the testing stage of the process: Creation of a test plan, creation of test data, systematic testing, user questionnaire, summary of results, rectifying errors and bugs.

The project is worth 80 marks and is therefore worth 40% of the final exam mark.

The project must be: The marking of the project is split into 6 sections:
 * At an appropriate level for Advanced Higher Computing.
 * Must involve the use of: file handling, the sort algorithms and / or the binary search algorithm, 2D arrays
 * Build on learning from the mandatory units and Higher grade programming.
 * Be achievable within 40 hours.


 * Specification and plan (15 marks)
 * Implemented product (28 marks)
 * Process skills (11 marks)
 * User documentation (6 marks)
 * Technical documentation (4 marks)
 * Evaluation report (16 marks)

Artificial Intelligence
The optional module, artificial intelligence, is split into the following four sections, requiring a demonstration of knowledge, understanding, practical skills and problem solving to be demonstrated in each :


 * Search techniques
 * Knowledge representation
 * Rule-based systems
 * Applications and uses of artificial intelligence

Search techniques is designed to encourage candidates to demonstrate a systematic problem solving approach to any problems that arise by employing a search strategy and search techniques and abstracting and representing that problem in respect to the start states, goal states and transitions between states with the transitions represented with symbolic representation (represented by state space graphs, tree, production rules or AND-OR graphs for appropriate problems) and an understanding of heuristics, advantages and disadvantages of both heuristic search techniques and search techniques.

Knowledge representation requires a demonstration of knowledge in in the software development process in respect to declarative language programming, with distinction between classes and instances. It also requires demonstration in inheritance, both multiple and the benefit of the rules as well as the frames used to represent inheritance. Alongside inheritance, it is designed to exhibit knowledge in the use of slots, current values and default values, concepts of goal and sub-goal and instantiation. In accompaniment to these, the module requires a demonstration of a comparison of frames and semantic networks, using frame notation to represent hierarchies of domain knowledge, a description and examples of recursion and list processing in a declarative language.

Rule-based systems necessitates a demonstration of a representation of knowledge in terms of conditional rules, explanation and examples of the usage of certainty factors, identification and subsequent explanation of chaining inference and how it’s used or combined to resolve given problems. In accompaniment to these, it necessitates description of the characteristics of a forward chaining system and why conflict resolution strategies are required. In addition, it requires understanding of the certainty of a conclusion utilising given formulae.

Applications and uses of Artificial Intelligence necessitates an understanding in 4 areas;
 * Computer vision, respect to the role of search and the application of the Waltz algorithm and a description of the causes and effects of uncertainties.
 * Natural language processing, in particular a description of the stages of natural language understanding and the uncertainties that can occur at each individual stage and a definition of grammar rules for a simple subset of English. In accompaniment to these, it also expects a demonstration and examples in the implementation of parse trees and the roles of searches in the parsing process
 * Robotics, in particular explaining the classical ‘blocks world’ environment and describing the actions and states in the blocks world, utilising these to solve simple problems. In accompaniment, a description of planning and the role of searching in the problem solving process.
 * Machine Learning which looks for a distinction between learning means and examples of, and a recommendation of a learning method for a given scenario.

Computer Networking
In advance higher computing, Networking is one of the optional part of this course, the core skills of this course are


 * Network Protocols
 * Network Applications
 * Network Security
 * Data Transmission

Network protocols covers:

Mapping TCP/IP layers to OSI model layers, purpose of common protocols (SMTP, POP and MIME), understanding of CIDR and binary subnet masks and also learn the ping and trace route in terms of troubleshooting, it also covers overview of connection types such as end to end TCP connection and not end to end TCP connections,

Understanding of three forms of intermediate - proxy, gateway and tunnel

Network application covers:

Understanding of the option of email message and working of HTML, header, recipient address, and body of the message are some examples of it. Understating how email sending and receiving data including the role of SMTP, this unit also give information about setting up mail transfer and connection termination.

Network Security covers:

Examines a security risks and understanding of how to prevent risk by encryption and authentication method, Uses of different type of services to denies unauthorized service access, those services are following firewalls, backup policies, anti virus etc.

Data transmission covers:

Understanding of different bandwidth transmission systems and their functions, Fibre Optic, UTP, Co-axial and radio waves are different types of system to transmit data, in data transmission part of networking computing student learn how these data transmission system works. The process of requesting a web page by a client from a server and its transfer using HTTP from a server to a client. Advantages and disadvantages of each data transmission system are also covered in this unit.

Computer Architecture
The Computer Architecture unit is an optional unit where candidates are expected to display knowledge and understanding, as well as practical abilities and problem solving skills based on four main areas of learning:


 * Computer Structure
 * Processor Structure
 * Processor Development
 * Operating Systems

Computer Structure is designed to teach candidates to be able to convey a detailed understanding of sections relating to the topic. This includes candidates being able to describe the processor and registers, as well as the relationship between registers and buses and the fetch-execute cycle. Candidates will also be expected to describe multiple types of internal and external memory such as cache, main memory, magnetic disk and tape - as well as describing the hierarchy of these technologies with reference to a number of factors and their importance in relation to system performance. Description of the various effects that things such as cache memory, memory interleaving, direct memory access and increasing clock speeds can have on system performance is also expected from candidates as well as a description of characteristics relating to PCI and PCI-X buses and their respective effects on system performance.

Processor Structure expects candidates to be able to describe and give examples of the structure and classification of assembly language instructions, as well as give descriptions of key features distinguishing RISC from CISC and the performance improvements from the use of SIMD. Candidates will also be expected to provide a description of how techniques such as branch prediction, data flow analysis and speculative loading of data among others are used to optimise the instruction and data stream. Also things such as pipelining, how it improves system performance and possible problems caused by branch instructions and instructions of varying lengths must also be described. An understanding of superscalar processing and its uses to improve system performance will also need to be conveyed.

Processor Development requires candidates to provide descriptions of the evolution of microprocessor architectures such as the Power PC series and the Intel x86 among others, as well as descriptions of features and techniques including increasing clock speeds and data bus widths and many others with relevance to the area of processor development - An explanation of the relation between these things and system performance is also expected. This area will also require candidates to describe the ways in which parallel computers function with reference to the use of cache and main memory and pipelining and achieving communication between CPUs using local pathways and packet switching, as well as the performance benefits related to parallel computers.

Operating Systems expects candidates to describe a number of techniques used by operating systems to manage memory including things such as variable partitioning of memory and use of best, worst and first fit algorithms. A comparison of the operation of best, worst and first fit algorithms in terms of efficient memory use is also required. Candidates will also be expected to be able to describe the relationship between data block size and access speed, the necessity of scheduling programs in a multitasking system as well as being able to compare the types of preemptive scheduling: round robin scheduling and multi-level feedback queue and their respective effects on system performance. This area will also require candidates to describe using direct memory access for managing the transfer of input and output data to improve system performance, the key function of the file management system as a mapping between the physical location and logical view of files and descriptions of contiguous and non-contiguous methods of file allocation. A description of how the trend of GUI's based on user convenience have led to things such as increased complexity of software and increased resource demands as well as making clear the demands GUI's have on system resources by explaining the processing of simple operations are also needed. Operating systems will also cover the demands a CLI makes on a system, a description of the expanding role of operating systems to include and provide various capabilities previously only found within applications and also descriptions of those capabilities and of the use of libraries of objects called by applications.