- UCAS course code
- G400
- UCAS institution code
- M20
Course unit details:
Fundamentals of Computer Architecture
Unit code | COMP15111 |
---|---|
Credit rating | 10 |
Unit level | Level 1 |
Teaching period(s) | Semester 1 |
Available as a free choice unit? | Yes |
Overview
The module introduces Fundamental concepts involved in Computer Architecture, which is the study and design of Computer Systems. Among others, the module discusses architecture terminology (how do we talk about computer systems), models (how do we think about computer systems), topologies (how are computers structured), how programs are executed by the hardware, and how data (whether numbers, text, colours, or polygons) are represented in hardware using only binary digits.
Understanding the Fundamentals of Computer Architecture is essential for being able to reason about what exactly happens when we run a program. This is important not just for hardware designers and low level (Operating System, embedded) software developers, but for everyone that wants to create high performing, but still correct, software. As such, it is an increasingly important skill in Computer Science roles in business and finance. More generally, demystifying Computer Systems gives students a strong competitive advantage relative to developers that have no concept of what their code does, whether these developers are human ones or AI models.
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 RISC-V 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.
- Reason about the roles and interplay of the standard components of System Software (Compiler, Assembler, Library, Linker, Loader, Interpreter and Operating System), including how they are influenced by the design decision of the underlying computer hardware.
Key and Cognitive skills: The module will expand the student's vocabulary with respect to the technical terminology of Computer Architecture, while also providing the cognitive foundation for understanding the design and operation of Computer Systems. Over the course of this module, the students will become able to reason about how programs are executed, how data is stored, and how to make programs faster.
The student will be empowered to learn through multi-format lectures and Self-study-learning techniques. New concepts are introduced through pre-recorded Lectures, then these concepts are re-examined in a more practical context in Live Lectures. Each pre-recorded lecture comes with a set of associated formative (unmarked) questions that helps students get immediate feedback about their understanding of the material. Additionally, students can take part in an interactive quiz in the live lecture to gauge how well they are doing relative to
the rest of the cohort. Question sets that test wider parts of the taught material are released every two weeks. Finally, the lectures are supported by a set of Lab assignments that expand and solidify the student’s knowledge through a “learning by doing” approach.
Aims
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 RISC-V processor are used as exemplars. Practical experience is gained in the laboratory through exercises which progressively expose features of the RISC-V instruction set. The course-unit aims to serve as an essential foundation for further studies in the single honours Computer Science degree programme.
Learning outcomes
- 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.
Syllabus
- Introduction: Processors, simple RISC-V programs, binary representations, fetch-execute cycle, registers.
- RISC-V 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.
Teaching and learning methods
- Pre-recorded Lectures: 11 sets in total, 1 per week
- Live Lectures: 11 in total, 1 per week
- Laboratories: 4 labs in total, 1 per fortnight
- Example Exercises: 4 in total, 1 per fortnight
- Canvas Quizzes: A set of questions with each pre-recorded lecture
- Mentimeter Quizzes: 1 in each Live Lecture
Employability skills
- Project management
- Oral communication
- Problem solving
- Research
- Written communication
Assessment methods
Method | Weight |
---|---|
Written exam | 70% |
Practical skills assessment | 30% |
Feedback methods
Considering that different students respond and process feedback in different ways, this module implements several different approaches for giving feedback.
Students receive personalised feedback (one-to-one) mainly in the context of the lab exercises. Students can directly ask the instructors or the Teaching Assistants (typically post-graduate researchers in Computer Architecture) any question about the lab exercises and receive immediate high-quality feedback. If the teaching staff have time, they might also be able to provide feedback on any student question, even if it is not related to the lab. On top of that, the student will receive detailed written individual feedback for every submitted lab coursework. Another way for students to receive personalised feedback is by asking questions during the Live Lecture. To lower the barrier for asking questions, the Live Lectures allow anonymous questions submitted through Mentimeter. A final way is by asking questions in the module’s Discussion Board. The lecturers aim to answer questions within one working day, but typically within a few hours.
Additionally, the unit offers several opportunities for group feedback (one-to-many). Canvas quizzes allow students to get immediate feedback on their understanding of the material, including detailed answers explaining the correct answers. Live Mentimeter quizzes provide similar feedback opportunities with the added benefit that the lecturer can elaborate more if the students request that. For each set of Example and Lab Exercises, we release detailed group feedback explaining what the correct answers were and what common mistakes we found in student submissions. We compile similarly detailed group feedback for the exam, which we release soon after we have completed marking. To help students prepare for the exam and get early feedback about their expected exam performance, we also give them a mock exam quiz which follows a similar structure and question difficulty as the actual exam.
Recommended reading
The COMP15111 reading list can be found on the Library's Reading Lists website
Study hours
Scheduled activity hours | |
---|---|
Assessment written exam | 2 |
Lectures | 11 |
Practical classes & workshops | 16 |
Independent study hours | |
---|---|
Independent study | 71 |
Teaching staff
Staff member | Role |
---|---|
Luca Peres | Unit coordinator |
Pavlos Petoumenos | Unit coordinator |
Additional notes
For Independent study hours:
- Pre-recorded Lectures: 11 hours
- Other: 60 hours