1. Live Programming Exam ( 6/6/16)
1.1. Fundamentals of Programming
1.1.1. Data Types
1.1.1.1. Understand the concept of a data type
1.1.1.2. Understand and Use :
1.1.1.2.1. Integer
1.1.1.2.2. Real/Foat
1.1.1.2.3. Boolean
1.1.1.2.4. Character
1.1.1.2.5. String
1.1.1.2.6. Date/Time
1.1.1.2.7. Records
1.1.1.2.8. Arrays
1.1.1.3. Define and use User Defined Data Types based on language-defined data types
1.1.2. Programming Concepts
1.1.2.1. Use , Understand and Use:
1.1.2.1.1. assignment
1.1.2.1.2. iteration
1.1.2.1.3. constant declaration
1.1.2.1.4. selection
1.1.2.1.5. subroutine (procedure/function).
1.1.2.1.6. Variable Declaration
1.1.2.2. Definite and Indefinite iteration.
1.1.2.3. Nested Selection and Nested Itteration
1.1.2.4. Meaningful variable names
1.1.3. Arithmetic Operations in a programming Language
1.1.3.1. addition
1.1.3.2. subtraction
1.1.3.3. multiplication
1.1.3.4. real/float division
1.1.3.5. integer division, including remainders
1.1.3.6. exponentiation
1.1.3.7. rounding
1.1.3.8. truncation.
1.1.4. Relational Operators in a programming language
1.1.4.1. equal to
1.1.4.2. not equal to
1.1.4.3. less than
1.1.4.4. greater than
1.1.4.5. less than or equal to
1.1.4.6. greater than or equal to.
1.1.5. Boolean Operations in a programming language
1.1.5.1. NOT
1.1.5.2. AND
1.1.5.3. OR
1.1.5.4. XOR.
1.1.6. Know Differences and Advantages of Variables and Constants
1.1.7. String Handling
1.1.7.1. length
1.1.7.2. position
1.1.7.3. substring
1.1.7.4. concatenation
1.1.7.5. character → character code
1.1.7.6. character code → character
1.1.7.7. string conversion operations.
1.1.8. Be familiar and use random number generation
1.1.9. Be familiar with subroutines and know advantages
1.1.9.1. Know that a subroutine can call code outside of it.
1.1.9.2. Use subroutines that return a value to the calling routine
1.1.9.3. Be able to use local variables and explain why it is good practice
1.1.10. Know the Difference between global and local variables
1.1.11. Understand the importance and advantages of structured programming
1.2. Understand the concept of exception handling and be able to use it in Java
1.3. Fundamentals of Data Structure
1.3.1. Understand the concept of Data Structure
1.3.2. Use arrays to design solutions for problems
1.3.3. Read/Write to both binary and text files
1.4. Systematic Approach to Problem Solving
1.4.1. Analysis
1.4.1.1. Understand the Importance of defining the program, understanding the requirements of the system and creating a data model
1.4.2. Design
1.4.2.1. Understand that a solution must be designed and specified
1.4.3. Implementation
1.4.3.1. Be aware models and algorithms need to be implement in a way that computers can understand.
1.4.4. Testing
1.4.4.1. Be aware that a program must be tested for errors and test data must include normal, boundary and erroneous.
1.4.5. Know the criteria for evaluation.
1.5. Theory of Computation
1.5.1. Problem Solving
1.5.1.1. Develop solutions for simple logic problems
1.5.1.2. Check the aforementioned solutions
1.5.2. Following and Writing Algorithims
1.5.2.1. Know what algorithim means
1.5.2.2. Express solutions as pseudo code
1.5.2.3. Hand-Trace algorithims
1.5.2.4. Convert and Algorithm from pseudo code into high level language
1.5.2.5. Articulate how a program works and argue for its efficiency and correctness
1.5.3. Abstraction
1.5.3.1. Be familiar with the concept of abstractions and know the definitions
1.5.3.1.1. Representational Abstraction removes unnecessary detail
1.5.3.1.2. Abstraction generalization groups common characteristics to arrive at a hierarchical relationship.
1.5.4. Understand the process of information hiding
1.5.5. Understand procedural abstraction represents a computational method
1.5.6. Know that functional abstraction hides the computation method
1.5.7. Know that data abstraction hides data allowing new data objects to be constructed from previously defined data objects
1.5.8. Know Decomposition means breaking a problem down into a number of easier sub problems
1.5.9. Know that composition builds procedures to making a single more complex procedure.
1.5.10. Know that automation puts models of real world problems into action to solve real world problems.
1.6. Finite State Machines
1.6.1. Know how finite state machines wrk and how to follow and construct them.
2. Written Exam (14/6/16)
2.1. Fundamentals of Data Representation
2.1.1. Number Systems
2.1.1.1. Natural Numbers
2.1.1.2. Integer Numbers
2.1.1.3. Rational Numbers
2.1.1.4. Irrational Numbers
2.1.1.5. Real Numbers
2.1.1.6. Ordinal Numbers
2.1.1.7. Use Natural and Real Numbers for counting and measuring
2.1.2. Number Bases
2.1.2.1. Understand the concept of bases and convert between them
2.1.3. Units of Infomation
2.1.3.1. Understand that base n can represent 2^n values.
2.1.3.2. Know names, Symbols and powers of 2 for:
2.1.3.2.1. kibi, Ki - 210
2.1.3.2.2. mebi, Mi - 220
2.1.3.2.3. gibi, Gi - 230
2.1.3.2.4. tebi, Ti - 240
2.1.3.3. Undestand the difference between bits and bytes
2.1.3.4. Know names, symbols and powers of 10 for:
2.1.3.4.1. kilo, k - 103
2.1.3.4.2. mega, M - 106
2.1.3.4.3. giga, G - 109
2.1.3.4.4. tera, T - 1012
2.1.4. Binary
2.1.4.1. Know the Difference between unsigned and signed binary
2.1.4.2. Know how to add and multiply two unsigned binary integers
2.1.4.3. Know how to use two's compliment
2.1.4.4. Know how to use binary numbers with a fractional part
2.1.4.5. Use all of the above to convert between decimal and binary.
2.1.5. Information Coding System
2.1.5.1. Differentiate between the character code representation and pure binary representation
2.1.5.2. Describe ASCII and Unicode and explain why unicode was introduced
2.1.5.3. Describe and explain the usefulness of various error checking techniques
2.1.5.3.1. parity bits
2.1.5.3.2. majority voting
2.1.5.3.3. check digits.
2.1.6. Representing images, sound etc
2.1.6.1. Describe how bit patterns can present data such as images and sound
2.1.6.2. Understand the difference between analogue and digital data & signals
2.1.6.3. Describe the principles of analogue digital conversion (both ways)
2.1.6.4. Explain how bitmaps work
2.1.6.4.1. resolution
2.1.6.4.2. colour depth
2.1.6.4.3. size in pixels.
2.1.6.4.4. Be familiar with metadata and what it normall represents
2.1.6.5. Explain the digital representation of sound
2.1.6.5.1. Understand sampling resolution
2.1.6.5.2. Know & Understand nyquists theorem
2.1.6.5.3. Calculate sound sample bytes
2.1.6.6. Understand and describe MIDI and its advantages and disadvantages
2.1.6.7. Understand the concept of data compression
2.1.6.7.1. Know why they are compressed and how they can be compressed
2.1.6.7.2. run length encoding (RLE)
2.1.6.7.3. dictionary-based methods.
2.1.6.8. Understand the concept of encryption
2.1.6.8.1. Be familiar with Caesar and Vernam ciphers
2.1.6.8.2. Compare ciphers based on efficiency.
2.2. Understand the relationship between hardware and software and define the two
2.3. Fundamental of computer systems
2.3.1. Hardware and Software
2.3.1.1. Explain what system software and application software is and the needs for tem
2.3.1.2. Understand the need for and functions of system software
2.3.1.2.1. operating systems (OSs)
2.3.1.2.2. utility programs
2.3.1.2.3. libraries
2.3.1.2.4. translators (compiler, assembler, interpreter).
2.3.1.3. Understand the role of the operating system and what it handles
2.3.1.3.1. resource management,
2.3.1.3.2. managing hardware to allocate processors,
2.3.1.3.3. memories and I/O devices among competing processes
2.3.2. Classification of programming languages
2.3.2.1. Know about the development of different types of programming languages
2.3.2.2. Know about low-level languages
2.3.2.2.1. machine-code
2.3.2.2.2. assembly language.
2.3.2.3. Know high level languages include imperative high level languages
2.3.2.4. Understand advantages and disadvantages of high/low level languages
2.3.3. Program Translators
2.3.3.1. Understand the role of:
2.3.3.1.1. assembler
2.3.3.1.2. compiler
2.3.3.1.3. interpreter.
2.3.3.2. Understand and know the importance of the difference between compilation and interpretatino
2.3.3.3. Understand how bytecode is used
2.3.3.4. Know the difference between source and object (executable) code
2.3.4. Logic Gates
2.3.4.1. Know and Construct Truth Tables
2.3.4.1.1. NOT
2.3.4.1.2. AND
2.3.4.1.3. OR
2.3.4.1.4. XOR
2.3.4.1.5. NAND
2.3.4.1.6. NOR.
2.3.4.2. Be familiar with drawing and interpreting logic gate diagrams
2.3.4.3. Write Boolean expressions for logic gates
2.3.4.4. Draw Logic Gates for equations
2.3.5. Boolena algebra
2.3.5.1. Be familiar with identities and DeMorgans Laws to manipulate and simplify
2.4. Fundamentals of computer organisation and architure
2.4.1. Internal Hardware
2.4.1.1. Understand the internal components of a computer system
2.4.1.2. Understand the role of the following components and how they work together
2.4.1.2.1. processor
2.4.1.2.2. main memory
2.4.1.2.3. address bus
2.4.1.2.4. data bus
2.4.1.2.5. control bus
2.4.1.2.6. I/O controllers.
2.4.1.3. Understand the need for communication between components
2.4.1.4. Know and understand the difference between Neumann and Harvard architectures
2.4.1.5. Understand addressable memory
2.4.2. Know the meaning of the stored program concept
2.4.3. The Processor
2.4.3.1. Understand and explain the structure of the processor
2.4.3.1.1. arithmetic logic unit
2.4.3.1.2. control unit
2.4.3.1.3. clock
2.4.3.1.4. general-purpose registers
2.4.3.1.5. dedicated registers, including:
2.4.3.1.6. program counter
2.4.3.1.7. current instruction register
2.4.3.1.8. memory address register
2.4.3.1.9. memory buffer register
2.4.3.1.10. status register.
2.4.3.2. Understand the fetch execute cycle
2.4.3.3. Understand the concept of a proccessor instruction set
2.4.3.4. Understand the difference between direct and immediate addressing
2.4.3.5. Understand and apply basic machine code
2.4.3.5.1. load
2.4.3.5.2. add
2.4.3.5.3. subtract
2.4.3.5.4. store
2.4.3.5.5. branching (conditional and unconditional)
2.4.3.5.6. compare
2.4.3.5.7. logical bitwise operators (AND, OR, NOT,
2.4.3.5.8. XOR)
2.4.3.5.9. logical
2.4.3.5.10. shift right
2.4.3.5.11. shift
2.4.3.6. Understand the factors that affect processor performance
2.4.3.6.1. multiple cores
2.4.3.6.2. cache memory
2.4.3.6.3. clock speed
2.4.3.6.4. word length
2.4.3.6.5. address bus width
2.4.3.6.6. data bus width.
2.4.4. External Hardware Devices
2.4.4.1. Know characteristics, purposes of some devices
2.4.4.1.1. digital camera
2.4.4.1.2. laser printer
2.4.4.1.3. barcode reader
2.4.4.1.4. RFID.
2.4.4.2. Explain the need for seondary storage
2.4.4.2.1. hard disk
2.4.4.2.2. optical disk
2.4.4.2.3. solid-state disk (SSD).
2.5. Consequences of Compuing
2.5.1. Understand the moral, ethical and cultural risks of computing
2.5.1.1. Developments mean that people have the capacity to
2.5.1.1.1. monitor behaviour
2.5.1.1.2. amass and analyse personal information
2.5.1.1.3. distribute, publish, communicate and disseminate personal information
2.5.1.2. Some feel this gives computer scientists too much power
2.5.1.3. Understand the issue with software and algorithims setting cultural attitudes and values
2.5.1.4. Understand the worldwide issue of scale
2.6. Fundamentals of Networking
2.6.1. Communication
2.6.1.1. Define Serial and Parallel transmission and know advantages/disadvantages
2.6.1.2. Define synchronous and synchronous transmission
2.6.1.3. Know the purpose of start and stop bits
2.6.1.4. Define
2.6.1.4.1. baud rate
2.6.1.4.2. bit rate
2.6.1.4.3. bandwidth
2.6.1.4.4. latency
2.6.1.4.5. protocol.
2.6.1.5. Know the relationship between bit rate and bandwidth
2.6.2. Networking
2.6.2.1. Understand different topologies and compare them
2.6.2.1.1. Physical Star and logical bus
2.6.2.2. Know the difference and situations for Peer to Peer and Client-Server Networking
2.6.2.3. Know the purpose of Wifi
2.6.2.4. Understand the components required for wireless networking
2.6.2.5. Understand wireless network security
2.6.2.6. Explain the CSMA/CA and RTS/CTS Protocls
2.6.2.7. Be familiar with the purpose of SSID