Computer Architecture

Title Computer Architecture (52010)
Quarter Winter 2016
Instructor TBD
Website

Syllabus

Course Description
Computer architecture is the science and art of selecting and interconnecting hardware components to create a computer that meets functional, performance and cost goals to run software.  With the recent switch from uniprocessor to multicore microprocessors, it has become more important for the programmer to understand the hardware which will run their software.  For programs to run fast now, they must become parallel.  What this means to the programmer varies depending if they are dealing with an imbedded system, mobile smart phones, laptops or cloud servers.  This class will introduce students to the architectural knowledge they need to write high performance software for modern systems.

The class will start with a review of modern computer architecture using a freshly updated classic book, Patterson and Henessy’s Computer Organization and Design.  There will be written homeworks the first few weeks and a midterm.  This material will give the programmer and system architect a through grounding in modern computer architecture.

The second part of the class will focus on creating a cloud driven distributed microcontroller project.  We will use the wi-fi enabled Electric Imp (https://electricimp.com ) microcontroller.  Students will write cloud server software and microcontroller software which will interact to create a distributed system for the management of local devices over wi-fi and the Internet.  Since the security of the Internet of Things is looking as bad as everyone is expecting, we will also discuss the special security issues associated with such distributed systems.

Schedule

Week 1

  • Computer Abstractions, Technology and Instructions, (P&H Chapter 1-2)

Week 2

  • Processors and Arithmetic units with a focus on parallesm.  (P&H chapter 3.6-4)

Week 3

  • Memory Hierarchy (P&H Chapter 5)

Week 4

  • Memory in parallel, multicore and multiprocessor systems

Week 5

  • Midterm.  Storage and I/O Topics

Week 6

  • Imbedded Systems.  Cloud programming and microcontroller systems.  UARTs, SPIs, DACs, PWM outputs. Intro to Electric Imp (https://electricimp.com)​

Week 7

  • In class electric Imp demos and setup.  Multi-cores

Week 8

  • Multiprocessors, Clusters, Graphics and GPUS

Week 9

  • Cloud and imbedded systems

Week 10

  • Security topics in the Internet of Things.

Course Grade

  • Homework: 50%
  • Midterm examination: 20%
  • Final examination: 20%
  • Class participation: 10%

The first half of the class will feature weekly homeworks and the second half of the class will focus on the final project.

Course Materials
Book: Computer Organization and Design (5th edition [2013]) Patterson and Hennessy

In addition to the book, students will need to purchase an Electronic Imp Wi-Fi Microcontroller ($30) and developer board ($14) from Amazon, Digikey, Adafruit other resellers.  Depending on the electronics maker skills the student brings to the class, other hardware may be used as part of the final project.  However, no hardware or soldering skills are required for the class.

Prerequisites (Courses)

Core Programming

Prerequisites (Other)

The Electric Imp is programmed in the Squirrel language, which is an object oriented language similar to Javascript. Some object oriented programming experience would be helpful.

Satisfies

Core - Systems

Time

Thursdays 5:30-8:30

Location

Ryerson 276