General Information

  • Course Title: Computer Organization

  • Course code: ECSE 324

  • Credits: 4

  • Contact Hours: (3,4,5)

  • Course Prerequisite(s): ECSE 200, ECSE 222 and COMP 206

  • Course Corequisite(s): N/A

  • Course Description: Basic computer structures; instruction set architecture; assembly language; input/output; memory; software; processor implementation; computer arithmetic. Lab work involving assembly language level programming of single-board computers.

Introduction

In this class we will learn about the design of computers, both hardware and software. In previous classes you have learned about the building blocks of digital hardware (ECSE 222) and how to write programs in ahigh-level computer language such as C or Java (COMP 206). In this class we will fill in the missing details to find out how a digital machine run programs. You will learn about the basics of computer organization, seeing how the hardware is implemented out of the digital circuits you already know. We will peek “under the hood“ of the machine, and see how programs you write in high-level languages (such as C or Java) actually execute on a real machine.

You will learn how to program a computer at the machine level, in what is known as assembly language.

What will you take away from this class:

  • You will learn about the main computer structures and how the processor hardware executes a program.

  • You will learn how to write programs at the machine level in “assembly language” for one of the most popular modern processors (ARM). ARM processors are used in almost every smartphone (95%).

  • You will learn how high-level languages are translated into assembly language.

The knowledge and skills you learn in this class will not only prepare you to design and analyze computer hardware, but also write better computer software.

Format

The course has three hours of weekly lecture, two hours of weekly tutorials and two hours of weekly labs. The laboratory experiments are meant to reinforce the lecture material and form an integral part of the learning experience in this course. There will be a total of 4 lab experiments, done individually. Lab 0 will be ungraded and labs 1-3 will be graded.

Prerequisites

ECSE 200 -(Electric Circuits 1), ECSE 222-(Digital Logic) and COMP 206 (Introduction to Software Systems).

The chain of courses ECSE 200 (Electric Circuits 1), ECSE 222 (Digital Logic) and COMP 206 (Introduction to Software Systems) contain the key prerequisite knowledge to be successful in this course. I expect you to be able to write programs in a “C-like” high-level language, such as C or Java and to be able to think in terms of algorithmic models. I also expect that you know all about the basics of digital logic: binary numbers, logic gates, binary addition, and finite-state machines. These are the building blocks of computers.

Textbook

Carl Hamacher, Zvonko Vranesic, Safwat Zaky, and Naraig Manjikian, “Computer Organization and Embedded Systems”, 6 th Edition, McGraw-Hill, 2012. Available at:

Webpage

Information for the course will be posted on this website http://ecse324.ece.mcgill.ca and this should be the first place you look to get information about the course.

Communication

All communications with the instructors or TAs should be done via the online forum. You should register using this link: https://edstem.org/us/join/j2yNaK

Professor Office hours

In person, location: MC-758.

  • Wednesday 2.00-3.00pm

Evaluation

  • Mid-Term Exam: 20%

  • Lab Experiments: 25%

  • Final Exam: 55%

  • Online participation bonus: 5%

Each of the three graded labs bears the same weight.

Online participation bonus

The Online participation bonus will reward students who provide useful inputs on the online forum. The amount of bonus points will be a function of the number of endorsed answers (answers are endorsed by the TAs/instructor). The bonus distribution will be normalized using quantile normalization. The normal distribution with a mean of 2.5% will be used as reference (i.e. half of the students who contribute will receive at least 2.5% of bonus point). Any student reaching over 20 endorsed answers, will automatically be awarded the full bonus.

Warning

Any student trying to game the system, for instance by teamig up with other students to ask/answer each other’s question, will be reported to the faculty as a case of academic misconduct.

Staff

Instructor: Prof. Christophe Dubach (Dept. of Electrical and Compute Engineering / School of Computer Science)

Office: McConnell Engineering Building, Room 758

TAs

  • Jiajie Li

  • Jonathan Van der Cruysse

  • Marwan Jalaleddine

  • Negin Firouzian

  • Tzung-Han Juang

  • Paul Teng

Important

Instructors and TAs will not reply to any email (unless it is a very personal matter). All communications/questions should go through the online forum.

Canadian Engineering Accreditation Board (CEAB)

Accreditation Unit (AU) breakdown:

  • Engineering Design: 50%

  • Engineering Science: 50%

Graduate Attributes:

  • Design (DE): Developed (D)

  • Use of Engineering Tools (ET): Developed (D)

  • Knowledge Base for Engineering (KB): Developed (D)

Learning Outcomes (and graduate attributes)

  1. KB - Define computer terminology and discuss fundamental units of digital computers.

  2. DE - Construct a RISC instruction set.

  3. KB - Describe the role of the system software (assembler, linker, loader, compiler, operating system)

  4. DE - Implement different methods of dealing with I/O devices

  5. KB - Describe different bus protocols and parallel/serial interfaces

  6. KB - Describe different types of memories and how they are organized and demonstrate how CPU caches operate.

  7. KB - Demonstrate how a typical 5-stage RISC processor is implemented and compare the performance trade-offs of multi-cycle and pipelined processor execution.

  8. KB - Describe how integer and floating-point arithmetic operations are implemented in hardware.

  9. ET - Utilize instruction-set technical specification and embedded board simulators to write, run, and debug, assembly programs.

  10. DE - Develop correct assembly code given a high-level (C, Java) description of a program and discuss implementation choices for assembly programs.