3
9/26/13 The Hardware/Software Interface | Coursera https://www.coursera.org/course/hwswinterface 1/3 | Courses Partners About | Nguyen Ngoc... Global Partners Sessions: No upcoming sessions Remove from watchlist 154 Tweet 60 About the Course This course examines key computational abstraction levels below modern high-level languages; number representation, assembly language, introduction to C, memory management, the operating-system process model, high-level machine architecture including the memory hierarchy, and how high-level languages are implemented. We will develop students’ sense of “what really happens” when software runs — and that this question can be answered at several levels of abstraction, including the hardware architecture level, the assembly level, the C programming level and the Java programming level. The core around which the course is built is C, assembly, and low- level data representation, but this is connected to higher levels (roughly how basic Java could be implemented), lower levels (the general structure of a processor and the memory hierarchy), and the role of the operating system (but not how the operating system is implemented). Course Syllabus This course should develop students’ sense of “what really happens” when software runs — and convey that this question can be answered at several levels of abstraction, including the hardware architecture level, the assembly level, the C programming level and the Java programming level. The core around which the course is built is C, assembly, and low-level data representation, but this is connected to higher levels (roughly how basic Java could be implemented), lower levels (the general structure of a processor), and the role of the operating system (but not how the operating system is implemented). For (computer science) students wanting to specialize at higher levels of abstraction, this could in the extreme be the only course they take that considers the “C level” and below. However, most will take a subset of Systems Programming, Hardware Design and Implementation, Operating Systems, Compilers, etc. For students interested in hardware, embedded systems, computer engineering, computer architecture, etc., this course is the introductory course after which other courses will delve both deeper (into specific topics) and lower (into hardware implementation, circuit design, etc.). The course has three principal themes: 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. About the Instructors The Hardware/Software Interface Gaetano Borriello and Luis Ceze Examines key computational abstraction levels below modern high-level languages. From Java/C to assembly programming, to basic processor and system organization. Workload: 10-15 hours/week Taught In: English Subtitles Available In: English You're Watching! 451 Like Gaetano Borriello University of Washington Luis Ceze University of Washington

The Hardware_Software Interface _ Coursera

Embed Size (px)

DESCRIPTION

g

Citation preview

Page 1: The Hardware_Software Interface _ Coursera

9/26/13 The Hardware/Software Interface | Coursera

https://www.coursera.org/course/hwswinterface 1/3

| Courses Partners About ▾ | Nguyen Ngoc.. . ▾Global Partners

Sessions:

No upcoming sessions Remove from watchlist

154

Tweet

60

About the Course

This course examines key computational abstraction levels below modern high-level

languages; number representation, assembly language, introduction to C, memory

management, the operating-system process model, high-level machine architecture

including the memory hierarchy, and how high-level languages are implemented. We

will develop students’ sense of “what really happens” when software runs — and that

this question can be answered at several levels of abstraction, including the hardware

architecture level, the assembly level, the C programming level and the Java

programming level. The core around which the course is built is C, assembly, and low-

level data representation, but this is connected to higher levels (roughly how basic

Java could be implemented), lower levels (the general structure of a processor and

the memory hierarchy), and the role of the operating system (but not how the

operating system is implemented).

Course Syllabus

This course should develop students’ sense of “what really happens” when software

runs — and convey that this question can be answered at several levels of

abstraction, including the hardware architecture level, the assembly level, the C

programming level and the Java programming level. The core around which the

course is built is C, assembly, and low-level data representation, but this is connected

to higher levels (roughly how basic Java could be implemented), lower levels (the

general structure of a processor), and the role of the operating system (but not how

the operating system is implemented). For (computer science) students wanting to

specialize at higher levels of abstraction, this could in the extreme be the only course

they take that considers the “C level” and below. However, most will take a subset of

Systems Programming, Hardware Design and Implementation, Operating Systems,

Compilers, etc. For students interested in hardware, embedded systems, computer

engineering, computer architecture, etc., this course is the introductory course after

which other courses will delve both deeper (into specific topics) and lower (into

hardware implementation, circuit design, etc.). The course has three principal themes:

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.

About the Instructors

The Hardware/SoftwareInterfaceGaetano Borriello and Luis Ceze

Examines key computational abstraction levels below modern high-level

languages. From Java/C to assembly programming, to basic processor

and system organization.

Workload: 10-15 hours/week

Taught In: English

Subtitles Available In: English

You're Watching!451

Like

Gaetano Borriello

University of Washington

Luis Ceze

University of Washington

Page 2: The Hardware_Software Interface _ Coursera

9/26/13 The Hardware/Software Interface | Coursera

https://www.coursera.org/course/hwswinterface 2/3

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.

At the end of this course, students should:

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).

Topics:

Number representation

Assembly language

Basics of C

Memory management

Operating-system process model

High-level machine architecture

Memory hierarchy

Implementation of high-level languages

Recommended Background

Introductory programming in C or Java.

Suggested Readings

Text are recommended but not required:

Computer Systems: A Programmer’s Perspective, 2nd Edition (CS:APP2e)

Randal E. Bryant and David R. O’Hallaron

Prentice-Hall, 2010

Purchase direct from Pearson

Purchase eBook from CourseSmart

Purchase print or Kindle edition from Amazon.com

Students are also encouraged to have access to a good C reference – any will do –

there are many available on the web as well:

The C Programming Language (Kernighan and Ritchie)

C: A Reference Manual (Harbison and Steele)

Course Format

Video lecture topics. Written homework and programming assignments. Only the

programming assignments will be graded. The written assignments provide students

with a sense for the kinds of topics and analysis are considered most important.

Categories:

Computer Science: Systems & Security