Syllabuses - UG

CS106 - Computer Systems & Organisation

TIMETABLETEACHING MATERIAL
Credits20
Level1
SemesterSemester 1, Semester 2
AvailabilityCan be chosen as an elective.
PrerequisitesNone
Learning Activities Breakdown44 lectures, with 10 tutorials and 10 practicals
AssessmentThis class is assessed 100% via coursework. This mark is usually made of the following assessments. 

There will be a total of 8 assessed lab activities worth 5% each in semester 1 making up 40% of the final grade. The last 10% of semester 1 comes from short homework assignments. 

In semester 2 there will be one assignment worth 15%  and one class test worth 25%. The final 10% of semester 2 is made up of 10 short weekly quizzes worth 1% each.

 

LecturerAlasdair Lambert, Conor McBride

Aims and Objectives

Semester 1: to enable the student to develop an understanding and appreciation of a computer system’s functional components – both hardware and software, their characteristics, their interactions, and their fundamental role in the manipulation of data.

Semester 2: to further the student’s knowledge of the design parameters of a typical computer system and the impact these have on the functionality, and implementation, of the hardware and software components.

Learning Outcomes

On completion of the first half of the class, a student should have developed an understanding of:

  1. The function and basic operation of the fundamental hardware components of computer systems.
  2. The function and basic operation of the fundamental software components of computer systems.
  3. The hierarchy of, and the interaction between, the components of a typical computer system.
  4. The concept of a logical layer and the benefits of building abstract layers in hierarchical fashion.
  5. The need for APIs and middleware and how computing resources are used by application software and managed by system software.
  6. The evolution of early networks and the Internet and the structure of a typical, current, network architecture.
  7. The concept of an instruction set architecture (ISA), and the nature of a machine-level instruction in terms of its functionality and use of resources (registers and memory).
  8. The various classes of instruction: data movement, arithmetic, logical, and flow control; their use and abuse in simple programs.
  9. The typical types of data/number/information representations and the implications of these for calculations and transformations.
  10. Boolean functions and logic expressions and their implementation in digital logic gates, and combinational and sequential circuits.

On completion of the second half of the class, a student should be able to:

  1. Demonstrate their knowledge of data/number/information representations and the limitations of such representations.
  2. Appreciate how a CPU may be constructed from combinational and sequential logic circuits.
  3. Understand the relationship between instruction set architecture, micro-architecture, and system architecture and their roles in the development of the computer.
  4. Understand the differences between the two main types of instruction set architecture and be aware of the major strengths and weaknesses of the alternative types of ISA.
  5. Appreciate how conditional operations are implemented at the machine level.
  6. Understand the way in which subroutines are invoked, how their parameters are passed and how their local workspace is created and accessed, and how they return to the point of invocation.
  7. Appreciate how an ISA has an impact on high-level languages and the design of compilers.
  8. Understand the basic principles of operation of the memory, I/O and network subsystems of a typical computer.
  9. Appreciate how future developments in computer systems may be influenced by current trends and technologies.

Syllabus

Semester 1:

  • Machines and Computation: Brief history of computers and the nature of computation, e.g. how arithmetic expressions are evaluated.
  • Introduction to Operating Systems: brief history, role and purpose, basic functionality and operation, the tradeoffs in operating systems design, the influences of different computer systems and environments, security and open source software on operating system design.
  • Introduction to Net-centric computing: brief history and the development of the Internet, the range of specialisations within net-centric computing, emerging technologies and their capabilities, limitations and near-term potential.
  • Introduction to a simple computer: CPU basics and organisation (registers, the ALU, the Control Unit and datapath); the bus; clocks; I/O; memory; interrupts).
  • Basic Functional (Hardware) Components of Computer Systems: for example, CPU, memory, I/O, networks.
  • Basic Functional (Software) Components of Computer Systems: for example, assemblers, compilers, and operating systems.
  • Elementary assembly language programming: simple computations involving loops, counters, and accumulation; awareness of bugs.
  • Representation of numeric data: unsigned binary, signed magnitude, and twos complement, floating point; twos complement arithmetic; range, precision, and errors in floating point arithmetic.
  • Representation of text, audio, and images; issues associated with compression and communication, e.g. how JPEG works and when it doesn’t; Huffman coding.
  • Function of logic gates; sum of products expressions, Boolean algebra, combinatorial and sequential logic circuits, for example those for multiplexers, adders, registers, shift registers, counters, overflow detection; PLAs.

Semester 2:

  • Introduction to instruction set architecture, micro-architecture and system architecture.
  • Processor instruction set architecture: instruction types and formats, register sets, addressing modes.
  • Processor structures: memory-to-register architectures; load/store architectures; overview of Flynn’s classification of computer architectures.
  • The relationship between low-level and high-level programming languages.
  • Instruction sequencing, flow-of-control, subroutine call and return mechanisms.
  • Low-level architectural support for high-level languages.
  • Low-level architectural support for operating systems.
  • Low-level architectural support for concurrency.
  • Memory: types of memory, overview of the memory hierarchy.
  • Input/Output: types of I/O; overview of common I/O devices and interfaces.
  • Networks: types of network; overview of common network standards, protocols, and interfaces.
  • Current and future trends in computer systems: an overview of the current trends in state-of-the-art computer systems and an extrapolation of these (in an attempt) to predict future developments.

Recommended Reading

This list is indicative only – the class lecturer may recommend alternative reading material. Please do not purchase any of the reading material listed below until you have confirmed with the class lecturer that it will be used for this class.

The Essentials of Computer Organisation and Architecture, 2nd edition, Linda Null and Julia Lobur, Jones and Bartlett, 2006, 0763737696

Last updated: 2024-02-05 14:41:54