The Hardware/Software Interface
University of Washington via Coursera
-
466
-
- Write review
Overview
Class Central Tips
Syllabus
- Representation: how different data types (from simple integers to arrays of data structures) are represented in memory, how instructions are encoded, and how memory addresses (pointers) are generated and used to create complex structures.
- Translation: how high-level languages are translated into the basic instructions embodied in process hardware with a particular focus on C and Java.
- Control flow: how computers organize the order of their computations, keep track of where they are in large programs, and provide the illusion of multiple processes executing in parallel.
- understand the multi-step process by which a high-level program becomes a stream of instructions executed by a processor;
- know what a pointer is and how to use it in manipulating complex data structures;
- be facile enough with assembly programming (X86) to write simple pieces of code and understand how it maps to high-level languages (and vice-versa);
- understand the basic organization and parameters of memory hierarchy and its importance for system performance;
- be able to explain the role of an operating system;
- know how Java fundamentally differs from C;
- grasp what parallelism is and why it is important at the system level; and
- be more effective programmers (more efficient at finding bugs, improved intuition about system performance).
- Number representation
- Assembly language
- Basics of C
- Memory management
- Operating-system process model
- High-level machine architecture
- Memory hierarchy
- Implementation of high-level languages
Taught by
Luis Ceze
Related Courses
-
Build a Modern Computer from First Principles: From Nand to Tetris (Project-Centered Course)
Hebrew University of Jerusalem
4.9 -
Introduction to Embedded Systems Software and Development Environments
University of Colorado Boulder
5.0 -
Master of Computer and Information Technology
Pennsylvania State University
-
IoT: from hardware to practice
ITMO University
-
Art of C Programming
CEC, University of Calicut
-
C Programming with Linux
Dartmouth College, Institut Mines-Télécom
Reviews
4.5 rating, based on 11 reviews
-
Sami Laine completed this course, spending 6 hours a week on it and found the course difficulty to be hard.
This course starts by taking off most of the nice things most programmers are accustomed to and tosses simple bit manipulation exercises on the face of students. While this may seem backward and antiquate, it forces students to think hard. This is especially... -
Farsan Rashid completed this course and found the course difficulty to be hard.
Coursera does not offer this course anymore. This was a tough course. Usually coursera courses have pass mark around 80% but this course demanded only 65% which is indicator of how difficult course it was. But if you have time, patience and interest to know how high level computer programs are broken down into low level machine readable codes you might want to try it. Memory management was also covered in the course. -
Emmebi is taking this course right now and found the course difficulty to be hard.
It seems a very well crafted and interesting course, but not at all for beginners: you must have already had exposure to C language, and in general the pace of the course is fast -
Radomirs Cirskis completed this course, spending 6 hours a week on it and found the course difficulty to be hard.
A few years ago I was trying to take this course. It wasn't easy and had plenty of quite challenging and very interesting hand-on assignment that gave understanding of the material. Regretfully the course was taken off by Coursera with no further explanation. I wish it was back. -
HARI NARAIN R completed this course.
-
Juliano Ignacio completed this course.
-
Andrei Dumitrescu completed this course.
-
Andrei Razvan Maresu completed this course.
-
Ilya Rudyak completed this course.
-
Christopher Pitt completed this course.
-
Andrew Yablokov completed this course.