COMP15111 Fundamentals of Computer Architecture syllabus 2019-2020
The module introduces the concepts involved in Fundamentals of Computer Architecture. Its aim is to enable the student to develop the skills required to comprehend Computer Systems, be they terminology, models, methodologies, structures (or topologies), timing, number representation and a general introduction to basic computer systems.
This unit builds on the skills developed in your background, covering material that will enable students to comprehend basic computer architecture structures, programming, and topologies.
In particular, students will be able to comprehend the basic of computer systems.
[Knowledge of] Fundamentals of Computer Architecture is becoming increasingly important in business and finance. They are applicable to problems which have been considered mainstream computing. Students should not complete a course in computing (computer science) without some exposure to the subject. Since research is taking place in this subject within the Department it is also appropriate that such expertise is passed on to our students.
The aim of this module is to introduce the concepts behind the Fundamentals of Computer Architecture approach to implementing IT solutions. A broad variety of standard Computer Systems methodologies and theories will be introduced. The theory, techniques, and methodologies will be illustrated to enable students to comprehend the theory. The associated areas of computer hardware and topology of computer systems are also covered to some degree.
To be more specific, the course will help students:
- Understand the basic Von Neumann/Imperative computational model.
- Understand the binary nature of digital computers, and how bit patterns can be used to represent such things as characters, numbers and instructions.
- Understand the essentials of the ARM instruction set and its registers.
- Be able to understand the basics of assembly language programs.
- Understand the correspondence between imperative code & data and assembly language.
- Be aware of the role of Compiler, Assembler, Library, Linker, Loader, Interpreter and Operating System, and of some of the interactions between these and the underlying computer hardware.
Key and Cognitive skills:
The module will expand the student's vocabulary with respect to the technical terminology and understanding of methodologies utilised associated to Fundamentals of Computer Architecture; this will enable the student to extend his/her communication skills.
The student will be empowered to learn by utilising multi-format lectures, and Self-study-learning techniques. The majority of the module is presented through a set of lectures . Each lecture has a set of associated questions (i.e. at the end of each lecture hand-out), which are supported by answers provided on the web (normally two weeks after the lecture has been given). Guidance will be given to student's private study in respect of directed reading. The lectures are also supported by a set of Lab assignments that expand the student's knowledge utilizing a 'learning by doing' approach.
This unit aims to introduce computer instruction sets and the binary representation of information, by exploring the relationship between high-level language programs and the basic structure and operation of digital computers, including the process that implements this relationship. Python and the ARM processor are used as exemplars. Practical experience is gained in the laboratory through exercises which progressively expose features of the ARM instruction set. The course-unit aims to serve as an essential foundation for further studies in the single honours Computer Science degree programme.
Introduction: Processors, simple ARM programs, binary representations, fetch-execute cycle, registers 
ARM code for imperative constructs: Basic data types and expressions, data structures, control structures, functions, input/output, interrupts 
System software: Operating Systems, Assemblers, Compilers, Libraries, Loaders, Interpreters.
22 in total, 2 per week
5 in total, 1 per fortnight
10 hours in total, one 2-hour session per fortnight
Feedback is provided to students in alignment with good pedagogic practice and pedagogic assessment [criterion]; the feedback takes the Kinesthetic approach to learning. Two approaches, #1 and #2, illustrate how to develop the student's skills aligned to the course; such as: theory, process, academic, reading, comprehension, exam skills. The first uses a more reading/writing-preference learner's approach #1. The second, approach #2, uses the visual learning strategy.
The feedback is given: one-to-one and one-to-many. The feedback is given (if time allows) at the start (in the break, & the end) of: lectures, examples classes (if applicable), and laboratories. One-to-one feedback is also given - marked up - in each of the anonymous scripts of the student's exam booklets. One-to-many is also given in a cohort wide exam feedback compiled jointly by all course member whom lecture on the course and mark exams.
Feedback, hints, advice, and extra information also appear on the course's CS web site, courses CS web site, & the universities Blackboard web site. RN also provides real time video multimedia support for all the course's he lectures on; these are composed of video lectures, video tutorials and many associated material designed to help, broaden, and inform the student cohort of possible: approaches, techniques, and learning strategies that will aid and enhance their learning.
- Assessment written exam (2 hours)
- Lectures (44 hours)
- Practical classes & workshops (15 hours)
- Project management
- Oral communication
- Problem solving
- Written communication
On successful completion of this unit, a student will be able to:
- Propose and evaluate methods of representing different classes of data in a digital computer.
- Analyse the suitability of different computer architectures for data processing.
- Write simple programs in assembly language.
- Implement different code structures in assembly language: conditional branch, while, if, table jump.
- Construct different data structures within a program and write code to access them, e.g. strings, arrays, and stacks.
- Create reusable assembly language code using methods.
|ARM Assembly Language: fundamentals and techniques (2nd edition)||Hohl, William and Christopher Hinds||9781482229851||CRC Press||2014||✔|
|Principles of computer hardware (4th edition)||Clements, Alan||9780199273133||Oxford University Press||2006||✖|
|ARM system-on-chip architecture (2nd edition)||Furber, Steve||0201675196||Addison Wesley||2000||✖|
Course unit materials
Links to course unit teaching materials can be found on the School of Computer Science website for current students.
Extra materials will be provided on YouTube & SkyDrive. These take the form of real time video multimedia taken from many of the lectures designed to help and inform the student of possible approaches, techniques, and learning strategies that will aid and enhance their learning.