Teaching

Teaching

EEE2007: Computer Systems and Microprocessors (Stage 2)

This is an *important* part of the module in that it will go through the fundamental aspects of computing systems design, including both hardware and software. The teaching contents are carefully organised to strike a good balance between theoretical and practical aspects. The theoretical aspects are based on system-level topics, such as CPU, Memories, Interconnects, IOs and Interrupts, while practical aspects will delve mostly on the software and programming aspects (C/C++). Students are highly encouraged to research further for acquiring greater knowledge.

 

To enable a great learning experience -- please

  1. ATTEND EACH AND EVERY LECTURE AND LAB SESSION
  2. GO THROUGH THE SLIDES BEFORE THE LECTURE (FLIPPED CLASSROOM) FOR BETTER UNDERSTANDING DURING LECTURE
  3. DO NOT PLAGIARISE ASSIGNMENT REPORTS, EVEN IF YOU CANNOT COMPLETE THE REPORT/TASK

 

Introduction to EEE2007 [RS part]

Download notes: PDF-Coloured | PDF-BW 

 

Computer Programming: C++

  

Session 1 (Introduction to C++)

Introduction to C++, data types, programming constructs, introduction to pointers 

Download notes:  Session-1-notes | Example programs: Hello-World.cpp | Count.cpp | data_types.cpp | pointer_example.cpp

Using/Installing GCC in: Linux | Windows | Mac | Computing-Lab

Session 1 exercises: Session-1-exercises | Session-1-Sample-Solutions

 

Lab-1: Lab-1 notes | check_prime.cppmatrix_mult.cppexample3.cpp | gprof_example.cpp

 

Session 2 (Functions and Modular Programming)

Introduction to functions, ways of writing and calling  functions, modular programming

Download notes:  Session-2-notes | Example solutions: Working with pointers and arrays   |   Recursive function excample

Session 2 exercises: Session-2-exercises | Session-2-Sample-Solutions

 

Lab-2: Lab-2 notes | pointer_example2.cpp | arrayreference.cpp |  dynamic_array.cpp |  | pointer_example2.cpp | arrayreference.cpp | dynamic_array.cpp | file_operations.cpp

 

First Project (due by 23 Nov 2018): Project description

 

Session 3 (Dynamic Memory Management, Structures and  Object-Oriented Programming)

Introduction to Dynamic Memory Management, C++ Structures, Classses and Objects

Download notes:  Session-3-notes | Example solutions: tbc

Session 3 exercises: Session-3-exercises | Session-3-Sample-Solutions

 

Lab-3: Lab-3 notes | example1 |  | example1 | example2

 

Example Project: Project description |  | project.tar

 

Computer Systems:

Background Review

A brief overview of  this sub-module

Download notes: PDF-BW   | PDF-COLOURED   

 

Introduction to Computer and Memory Systems

Review of basics and fundamentals; overview of memory systems hierarchy, registers, cache memories (SRAMs), main memories (DRAMs) and Other memory systems -

Download notes: PDF  |  PDF-COLOURED | The missing element paper: PDF | Paper on new flash memories: PDF 

 

Introduction to Computer Interconnects

Types of interconnects, access, protocol and management of interconnects with examples

Download notes: PDF  |  PDF-COLOURED   

 

Processors and Data Flow

Types of processors, pipelined systems, and processor components

Download notes: PDF  |  PDF-COLOURED   

 

All Contents

Download notes [NEW]: PDF | PDF-COLOURED

 

Example Questions and Answers

Download notes [NEW]: EXAM PREP NOTESEXAMPLE QUESTIONS AND ANSWERS

 

The following are not included this year:

 

Parallel Computing Systems

Types of parallel processors and their programming models

Download notes: PDF  |  PDF-COLOURED   

 PDF-COLOURED   

 

System software and Operating Systems (with Live Demo)

Systems software and their main function in modern computing systems.

Download notes: PDF | PDF-COLOURED

 

 

This embedded programming part constitutes 50% of the module. I will generally use C++ as the preferred language and g++ as a preferred compiler; however occasionally we wll also be using some cloud compilers, like Arm mBEd, CodingGround C++ compiler etc.

 

To maximise your chances of succeeding with this part of the module, please attend all lectures and live demos.

 

Embedded  Programming Using: C++

  

Session 1 (Introduction to C++)

Introduction to C++, data types, programming constructs, introduction to pointers 

Download notes:  Session-1-notes | Example programs: Hello-World.cpp | Count.cpp | data_types.cpp |  | Example programs: Hello-World.cpp | Count.cpp | data_types.cpp |  | Example programs: Hello-World.cpp | Count.cpp | data_types.cpp | | Example programs: Hello-World.cpp | Count.cpp | data_types.cpp | pointer_example.cpp

Using/Installing GCC in: 

Using/Installing GCC in: Linux | Windows | Mac | Computing-Lab |   | Windows | Mac | Computing-Lab |   | Windows | Mac | Computing-Lab |  | Windows | Mac | Computing-Lab |  mBed Compiler | CodeAnyWhere | Others

Session 1 exercises: Session-1-exercises |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | Session-1-Sample-Solutions

 

Session 2 (Functions and Modular Programming)

Introduction to functions, ways of writing and calling  functions, modular programming

Download notes:  Session-2-notes | Example solutions: Working with pointers and arrays   |    | Example solutions: Working with pointers and arrays   |    | Example solutions: Working with pointers and arrays   |    | Example solutions: Working with pointers and arrays   |   Recursive function excample

 

Session 2 exercises: : Session-2-exercises | Session-2-Sample-Solutions

 

Lab notes:

Lab-1: : Lab-1 notes | check_prime.cpp |  matrix_mult.cpp |  example3.cpp | check_prime.cpp |  matrix_mult.cpp |  example3.cpp | check_prime.cpp |  matrix_mult.cpp |  example3.cpp | check_prime.cppmatrix_mult.cppexample3.cpp | gprof_example.cpp

gprof_example.cppLab-2: gprof_example.cpp

Lab-2: Lab-2 notes | pointer_example2.cpp | arrayreference.cpp |  dynamic_array.cpp | | pointer_example2.cpp | arrayreference.cpp | dynamic_array.cpp | file_operations.cpp

 

Projects:

Project 1: Real-time File System Handling | stats file

Project 2: Machine Learning (using Linear Regression) on Arduino Nano

 

Session 3 (Dynamic Memory Management, Structures and  Object-Oriented Programming)

Introduction to Dynamic Memory Management, C++ Structures, Classses and Objects

Download notes:  Session-3-notes | Example solutions: example1 | example2 | example3 | example4

Session 3 exercises: Session-3-exercises |  |  |  | Session-3-Sample-Solutions

 

Session 4 (More C++ Structures and  Object-Oriented Programming)

Introduction to inheritance, polymorphism, more C++ Structures of  Classses and Objects

Download notes:  Session-4-notes | Example solutions:  see notes

 

Session 5 (Embedded Programming on Arduino Nano)

Introduction to Arduino Nano and C/C++ on Arduino Nano

Download notes:  notes | Example solutions:  see notes

 

 

 

Copyright 2018 - RA Shafik