Contents

Textbooks

Electronic options are available for all required sources. At least one physical copy of each text is also available in the physical SCI L037 CS Systems Lab for use within the CS department area. Please use them in the data lab area and return them to the shelf when you are done.

We use one primary textbook extensively:

Other textbooks are used during the first part of the course:

We recommend a good reference on the C programming language. Here are a couple solid options:

Additional materials will be posted directly on the course website.

Preparing for Class Meetings

Before each class meeting, complete the required preparation steps listed in the topics for the day. Preparation varies from day to day, but usually consists of some combination of watching videos, reading, or trying small exercises. Expect the preparation to take more than a few minutes. Synchronous class activities will build on ideas in preparation material.

How to watch videos for CS 240

Many topics will have videos attached. When asked to watch these videos for preparation, or if you use them for reference at any time:

  • You can view them on YouTube (nocookie version without tracking) or download/watch the MP4 files directly.
  • Take notes like you would in class.
  • You might find it helpful to download a copy of the slides to follow along or take notes.
  • It’s fine to pause and take breaks whenever you want!
  • You do not need to watch all the videos from one topic or even all the videos assigned for one day of preparation in one sitting. The videos are usually broken up into chunks usually between 5 and 15 minutes length, occasionally a little shorter or longer.
  • When the talking head says to “try this,” pause the video to freeze the talking head in a bizarre pose, then actually try the example, just like you would in class when we do an exercise together.

How to read for CS 240

Effective reading for computer science courses demands a staged approach. Aim for two types of reading:

Before class, do an initial reading of the any reading material assigned as preparation for class.

Do not worry about understanding every last detail.

Do aim to acquire:

  • A big-picture view of the pieces we will consider about this topic.
  • Some familiarity with basic mechanics of the ideas introduced.

To help distinguish core points from secondary concerns during initial reading, each reading is listed with one of two style directives:

  • Read means read for enough detail to do indicated reading exercises. If you do get stuck or confused by some details, do not worry. Make a note and move on. If we do not clear up your confusion in class, ask a question or come to office hours.
  • Skim means read for high-level ideas. Perhaps pick out a couple details that look interesting and accessible. Do not spend much time trying to understand all the details before moving on.

Learning how to identify essential vs. inessential details during a first reading is an important skill that takes time to develop. As the semester progresses, we will leave more of this to you.

Readings assignments may indicate specific exercises to try as you read before class. These are typically practice problems from the reading.

  • Try means work through enough of the exercise to see how the basics work. Do not feel obligated to finish every example. Do what is useful to you. (Do not submit anything.)

We typically highlight exercises that practice mechanics. Feel free to try other practice problems as well. They may require more time and critical thinking. We will explore such interesting examples in class.

After class, revisit readings in more depth and try more practice problems to work out details as needed.

More advice for reading

Our main text (CSAPP) sometimes goes into more detail than we will cover, so learning to “read around” extra detail is a useful skill, especially in your pre-class reading.

When reading from CSAPP:

  • “Asides” are optional. If you read them, skim them.
  • “New to C?” blocks can be useful, but usually only if they are short.
  • Some sections (e.g., 2.2 - 2.4 on integer and floating point representations) can be too dense for our purposes. We try steer you around them, but if you find other things getting dense, flip to another reading or just make a note and jump ahead.
  • This book really shines with later material about machine/assembly language, caching, memory management, and other topics. We use it intermittently in the first section of the course, then extensively for the latter two.

Tia Newhall (Swarthmore College) has more good advice on reading computer science textbooks.

Material by Topic

This list of topics includes:

  • Topics covered in class meetings, with preparation directions and listings of all lecture materials, associated readings, and activities.
  • +Optional items that offer opportunities to explore further, but are not required.

The Plan

Preparation

Welcome to CS 240! Labs and lectures–including the first lab and lecture this week–are generally preceded by some asynchronous preparation to allow us to use meeting time productively. Please complete these steps in advance.

Before your first CS 240 lecture:

  1. Watch videos 1-3 for this topic (listed just below, in “Materials”) to understand the motivation for this course.
  2. Prepare for topics listed on the first day of lecture on the course calendar. Each lecture topic on the calendar links to a section on this page with preparation steps to complete ahead of lecture and materials for the topic.

By the end of the day of your first CS 240 lecture:

  1. Complete the intros assignment, in which you will introduce yourself to your instructors, learn about the course, and remind yourself how to connect to cs.wellesley.edu = tempest.wellesly.edu.

Before your first CS 240 lab:

  1. Complete the first lab assignment by watching this playlist of three “Computer Science Crash Course” videos about computing history and basic electronic building blocks for digital computation. For following labs, lab preparation and materials will be provided separately by Peter on the lab page.
  2. Bookmark and tour the main CS 240 course website, your central source for all course info and materials, and review course logistics and policies.

Before the end of this week:

  1. Skim reading 3 (listed just below, in “Materials”) for general background on the working of modern computers.

Materials

Slides: ➊ plan.pdf ➍ plan-4up.pdf

Videos: YouTube☰ yt playlist The Plan

  1. ▸ mp4 YouTube yt What is CS 240?
  2. ▸ mp4 YouTube yt Basic Computer Model
  3. ▸ mp4 YouTube yt Why take CS 240?

Readings:

  1. Read: About CS 240 (syllabus and policies)
  2. Read: Lab policies
  3. Skim: CSAPP 1.0 - 1.7, 1.9.2 - 1.10

Computational Building Blocks

Digital Logic

Preparation

For Friday, Jan 27:

  • Review basic digital logic gates and Boolean algebra notation from lab and lecture.
  • Reading 1 (below)

For Tue, Jan 31:

  • Carefully review slides 14-15 and do all the exercises along the way.
  • In Tue’s lecture, we’ll go over any questions you have about these slides/exercises and complete these slides.

Materials

Exercises:

Slides: ➊ gates.pdf ➍ gates-4up.pdf

Readings:

  1. Read: DDCA 1.5, 2.1-2.4 (pages 51-65)

Data as Bits

Preparation

For Tue Jan 31:

  1. Reading 1 (below)
  2. Watch videos 1–7

The YouTube viewing option may be useful if you wish to watch faster or slower.

During Class on Fri Feb 03:

We will work on this worksheet on Binary & Hex + Bitwise, Logical & Shift Operators in C

After Class:

  1. Follow up with videos on any remaining topics we did not cover in class.
  2. Flesh out the parts of the Binary & Hex + Bitwise, Logical & Shift Operators in C we did not finish in class, and compare your solutions with the SOLUTIONS doc.
  3. Review extra detail in Readings 2-4 as needed.

During Class on Tue Feb 07:

Class will begin by answering any lingering questions on this topic, especially questions on the Binary & Hex + Bitwise, Logical & Shift Operators in C worksheet and the accompanying SOLUTIONS.

Materials

Exercises:

Slides: ➊ bits.pdf ➍ bits-4up.pdf

Videos: YouTube☰ yt playlist Data as Bits

  1. ▸ mp4 YouTube yt Positional Number Representation and Binary
  2. ▸ mp4 YouTube yt Conversion Between Binary and Decimal
  3. ▸ mp4 YouTube yt Binary Arithmetic
  4. ▸ mp4 YouTube yt Bytes and Hexadecimal
  5. ▸ mp4 YouTube yt Fixed-size Data Types
  6. ▸ mp4 YouTube yt Bitwise Operators
  7. ▸ mp4 YouTube yt Bitwise Operator Practice
  8. ▸ mp4 YouTube yt Bit Sets
    Errors:
    • The ~a set complement example should be ~b. The slides have been updated.
  9. ▸ mp4 YouTube yt Boolean Logical Operators
  10. ▸ mp4 YouTube yt Card Encoding Ideas
  11. ▸ mp4 YouTube yt Compact Encodings with Bit Fields and Masks
  12. Mask Practice (see exercise above)
  13. ▸ mp4 YouTube yt Bit Shifting
  14. ▸ mp4 YouTube yt Shift-and-Mask Puzzle
  15. ▸ mp4 YouTube yt Shift-and-Mask Review

Readings:

  1. Preparing for Class Meetings in CS 240, including tips for effective watching and reading.
  2. Binary and hexadecimal number systems
  3. Information as bits + context
    • Read: CSAPP 2 - 2.1.2
    • Skim: CSAPP 2.1.4 - 2.1.5.
  4. Bitwise Boolean algebra and bit manipulation
    • Read: CSAPP 2.1.6 - 2.1.9 (including the Asides.)
    • Optional: K&R 2.7, 2.9 for C reference

Integer Representation

Preparation

Before lecture on Tue Feb 7:

  1. Videos 1-9

During lecture on Tue Feb 7:

Refer to these Notes on Representing Information as Bits

After lecture on Tue Feb 7:

  1. Follow up with videos on any remaining topics we did not cover in class, most likely including:
    • Shifts as arithmetic (video 11) and how to compose them to accomplish general multiplication (videos 12-14).
    • Converting between types (video 15).
  2. Complete the Fixed-Sized Integer Exercises and review their solutions. These are excellent practice to prepare for the two’s-complement puzzles in the Bits assignment.
  3. Review any other videos or readings as needed.

During lecture on Wed Feb 10: We continued to flesh out more exericises in these Notes on Representing Information as Bits

Materials

Exercises:

Slides: ➊ integers.pdf ➍ integers-4up.pdf

Videos: YouTube☰ yt playlist Integer Representation

  1. ▸ mp4 YouTube yt Unsigned Representation, Modular Arithmetic, Overflow
  2. ▸ mp4 YouTube yt Sign-Magnitude Representation
  3. ▸ mp4 YouTube yt Two's Complement Representation
  4. ▸ mp4 YouTube yt Two's Complement Examples
  5. ▸ mp4 YouTube yt Two's Complement Addition
  6. ▸ mp4 YouTube yt Two's Complement Overflow
  7. ▸ mp4 YouTube yt Overflow and Reliability
  8. ▸ mp4 YouTube yt Two's Complement is Awesome, Complement Rules
  9. ▸ mp4 YouTube yt Deriving Two's Complement
  10. ▸ mp4 YouTube yt Sign Extension
  11. ▸ mp4 YouTube yt Shift Arithmetic
  12. ▸ mp4 YouTube yt Shift and Add
  13. ▸ mp4 YouTube yt Shift and Add Puzzle Review
  14. ▸ mp4 YouTube yt Muliplication
  15. ▸ mp4 YouTube yt Converting Between Unsigned and Signed Types

Readings:

Refer to this material only after videos/class. We’d like to introduce signed integer representations before you read about them.

As you read, focus on the positional representation of signed integers more than the mechanics of how to convert from integer representation to the representation you know well.

  1. For the basics, read one of:

  2. Then, for reference on integer multiplication and division, their relation to bitwise operations, and sign extension:

    • Skim: CSAPP 2.2.4 - 2.2.8.
    • Read: CSAPP 2.3.4-2.3.8

Combinational Logic

Preparation

Before lab on Wed Feb 08:

  • Do Reading 2 on muxes and decoders.

Before lecture on Fri Feb 10:

  • Do Reading 1 on Karnaugh maps.

After class on Fri Feb 10:

  • Follow up with additional detail in Readings 1-2.

Materials

Slides: ➊ mux.pdf ➍ mux-4up.pdf

Readings:

  1. Karnaugh Maps: DDCA 2.7 (pages 71-79)
  2. Multiplexers and decoders: DDCA 2.8 (pages 79-84)

Arithmetic Logic

Preparation

Before lab on Wed Feb 08:

  • Skim Reading 1

Before lecture on Tue Feb 14:

  • Redo Reading 1 for details

Before lab on Wed Feb 15:

  • Skim Reading 2

Before lecture on Fri Feb 17:

  • Redo Reading 2 for details

Materials

Slides: ➊ alu.pdf ➍ alu-4up.pdf

Readings:

  1. Adders, one of:
    • DDCA 5.1 - 5.2.1 (pages 233-240) up through Ripple Carry Adders (feel free to skim beyond if you are curious, ignore Verilog and VHDL)
    • Digital Circuits: Adders up until Carry Lookahead Adder (feel free to skim beyond if you are curious)
  2. Arithmetic Logic Unit (high-level organization), one of:

    We will look at details of a specific ALU design in class.

Sequential Logic

Preparation

Before lecture on Tue Feb 14:

  • Skim Reading 1.

During lecture on Tue Feb 14: - Note: we didn’t have time to cover any material on Sequential Logic (latches, flip-flops, etc) on Tue Feb 14 and instead spent most of the lecture understanding the ALU architecture for Lab 04 on Wed Feb 15.

Before lab on Wed Feb 15:

  • Redo Reading 1 for details
  • Skim Reading 2 for a bit more on RAM.

Before lecture on Fri Feb 17:

  • Redo Reading 2 for details

During lecture on Fri Feb 17: - Note: we didn’t have time to cover any material on Sequential Logic (latches, flip-flops, etc) on Wed Feb 17 and instead spent all of the lecture understanding assembly code for the HW Instruction Set Architecture (ISA) in preparation for for Lab 05 on on Wed Feb 22. - We’ll cover the Sequential Logic material in class on Fri Feb 24

During lecture on Fri Feb 24: Today we finally covered the Sequential Logic material in class.

Materials

Slides: ➊ registers.pdf ➍ registers-4up.pdf

Readings:

  1. Latches, Flip-Flops, Registers:
    • DDCA 3.0 - 3.2.4 (pages 103-109)
      • Note for context: In class, we use the terms leader and follower to describe the component latches of a D flip-flop. This textbook uses a different terminology that has been widely used in the past to describe flip-flops (and a handful of other computer systems concepts that CS 240 does not consider) by analogy to enslavement. We do not use that terminology in class. We ask that you also use the leader/follower terms.
  2. Random Access memory (basics):

A Simple Processor

Preparation

Before lecture on Friday Feb 17:

  • Skim one option for Reading 1.

During lecture on Friday Feb 17:

We covered slides 1-11 of A Simple Processor and did the exercises on pp 8&9 and 10&11. The solutions to these exercises can be found in pp 8-11 of the solution slides.

Before lab on Wed Feb 22:

  • Carefully study slides 5-11 and understand every detail.
  • Skim slides 12-22

Before lecture on Fri Feb 24:

  • Review slides 12-22. We will study them more in lecture

After lecture on Fri Feb 24:

  • Carefully study slides 12-22 and understand every detail. Ask questions about what you don’t understand!

Materials

Slides: ➊ arch.pdf ➍ arch-4up.pdf

Readings:

Read for general organization and design points about instruction set architecture and microarchitecture. We will build our own toy architecture in class and lab.

  1. Read one of:

+Floating Point Number Representation (optional)

+Optional: This topic is an optional opportunity for further depth or exploration.

Preparation

For Thursday

  • No preparation

Materials

Slides: ➊ floats.pdf ➍ floats-4up.pdf

Readings:

  • In Fall 2022, this topic is completely optional and will not be covered in lecture. To learn more about this topic, skim one of:
  • If you want more detail (e.g., on denormalization as discussed in class, or many in-depth examples), read CSAPP 2.4.

Hardware-Software Interface

Programming with Memory

Preparation

Tue Feb 28 During Class

We’ll cover the slides corresponding to much of the material from videos 1–15. You’ll get lots of practice with these concepts in Lab 6.

Fri Mar 03 During Class

We covered Programming with Memory slides 16-32 and the Memory/Pointer Notes and Examples.

Tue Mar 07 During Class

The plan is to cover (1) Programming with Memory slides 33-49 and (2) Notes on Strings + malloc & free

Fri Mar 10 During Class

Before starting x86 material, we’ll wrap up Programming with Memory material by covering this Pointers Assignement Exercise.

Materials

Slides: ➊ memory.pdf ➍ memory-4up.pdf

Videos: YouTube☰ yt playlist Programming with Memory

  1. ▸ mp4 YouTube yt Byte-Addressable Memory
  2. ▸ mp4 YouTube yt Multi-Byte Values in Memory
  3. ▸ mp4 YouTube yt Data, Addresses, Pointers
  4. ▸ mp4 YouTube yt C Variables as Memory Locations
  5. ▸ mp4 YouTube yt C Pointer Primitives
  6. ▸ mp4 YouTube yt C Pointer Example
  7. ▸ mp4 YouTube yt C Arrays
  8. ▸ mp4 YouTube yt C Arrays and Pointers
  9. ▸ mp4 YouTube yt C Pointer Arithmetic
  10. ▸ mp4 YouTube yt C Array Sizing
  11. ▸ mp4 YouTube yt C Array Expression Examples
  12. ▸ mp4 YouTube yt Pointer Exercises Intro
  13. ▸ mp4 YouTube yt C Strings
  14. ▸ mp4 YouTube yt C Strings as char* and Cursor Pointer Style
  15. ▸ mp4 YouTube yt C 0, '\0', and NULL
  16. ▸ mp4 YouTube yt Memory Address Space Layout
  17. ▸ mp4 YouTube yt C Memory Allocation with malloc/free
  18. ▸ mp4 YouTube yt C Arrays of Pointers to Arrays
  19. ▸ mp4 YouTube yt zipCount Review
  20. ▸ mp4 YouTube yt C scanf and Memory Errors Teaser
  21. ▸ mp4 YouTube yt Why C?

Readings:

General memory model:

  • +Optionally, read: SCO 2.2.2 - 2.2.3, 5.1.2 (stop at “Note that having separate address spaces for instructions and data”)
  • Read: CSAPP 2.1.0, 2.1.3 - 2.1.4

Mix and match to start learning about addresses and pointers in C:

+Reasoning about Programs (optional)

+Optional: This topic is an optional opportunity for further depth or exploration.

Preparation

No preparation.

Materials

Slides: ➊ assertions.pdf ➍ assertions-4up.pdf

Readings:

In most semesters, we do not have time to cover this topic in lecture, but we ask you to skim these resources.

For later:

x86 Basics

Preparation

Materials

Exercises:

Slides: ➊ x86-basics.pdf ➍ x86-basics-4up.pdf

Videos: YouTube☰ yt playlist x86 Basics

  1. ▸ mp4 YouTube yt Intro and History
  2. ▸ mp4 YouTube yt Registers, Data Movement Instructions, and Memory Addressing Modes
  3. ▸ mp4 YouTube yt Memory Examples
  4. ▸ mp4 YouTube yt Memory Addressing Review
  5. ▸ mp4 YouTube yt Load Effective Address (lea)
  6. ▸ mp4 YouTube yt Procedure Call Stack Basics
  7. ▸ mp4 YouTube yt Arithmetic and Logic Instructions, arith Exercise Setup
  8. ▸ mp4 YouTube yt arith Exercise Review, logical Exercise Setup
  9. ▸ mp4 YouTube yt logical Exercise Review

Readings:

  1. Background

  2. Data Movement

    • Read: CSAPP 3.3 - 3.4 (including “New to C?” to help remember those pointers…)
    • Suggested Exercises: try CSAPP practice problems 3.1, 3.2. Take a look at practice problem 3.5, but don’t spend too long on it. We’ll try more like this in class.
  3. Load Effective Address:

  4. Arithmetic

    • Read: CSAPP 3.5 - 3.5.4
    • Suggested Exercises: try CSAPP practice problems 3.8, 3.9. (Note x <<= 4; is the same as x = x << 4;.)
    • Skim: CSAPP 3.5.5
  5. x86 Machine Diagram

x86 Control Flow

Preparation

Materials

Exercises:

Slides: ➊ x86-control.pdf ➍ x86-control-4up.pdf

Videos: YouTube☰ yt playlist x86 Control Flow

  1. ▸ mp4 YouTube yt Condition Codes, Comparisons, and Tests
    Errors:
    • The example for the gt function should use long, not int, as the type of its arguments.
  2. ▸ mp4 YouTube yt Jumps, Translating If-Else, and absdiff Exercise Setup
  3. ▸ mp4 YouTube yt absdiff Exercise Review, goto, and If Compilation Exercise Setup
  4. ▸ mp4 YouTube yt If Compilation Exercise Review and PC-Relative Addressing
  5. ▸ mp4 YouTube yt Translating Loops
  6. ▸ mp4 YouTube yt Conditional Moves
  7. ▸ mp4 YouTube yt Translating Switch Statements with Jump Tables
  8. ▸ mp4 YouTube yt Translating Switch Statement Cases, Reverse Engineering Switches

Readings:

  1. Comparisons, Tests, and Jumps

    • Read: CSAPP 3.6 - 3.6.4
    • Suggested Exercises: Try CSAPP practice problems 3.13 - 3.14. Just consider what operator you’d put in place of COMP or TEST to match the assembly code. (Don’t worry about #define etc. if you don’t remember how macros work.)
  2. Translating if conditionals

    • Read: CSAPP 3.6.5
    • Suggested Exercises: CSAPP practice problem 3.16
  3. Translating loops

    • Read: CSAPP 3.6.7
    • Suggested Exercises: CSAPP practice problems 3.23, 3.24
  4. Translating switch statements

    • Skim: CSAPP 3.6.8, 3.6.6
  5. x86 Machine Diagram

x86 Procedures, Call Stack

Preparation

For Fri Mar 24 during class:

Materials

Exercises:

Slides: ➊ x86-procedures.pdf ➍ x86-procedures-4up.pdf

Videos: YouTube☰ yt playlist x86 Procedures, Call Stack

  1. ▸ mp4 YouTube yt The Call Stack Stores Procedure Context
  2. ▸ mp4 YouTube yt Procedure Control Flow Instructions (call/ret), Data Flow Conventions, Puzzle Setup
  3. ▸ mp4 YouTube yt Procedure Puzzle Review
  4. ▸ mp4 YouTube yt Procedure and Stack Frame Example
  5. ▸ mp4 YouTube yt Register Saving Conventions, Callee-Save Example
  6. ▸ mp4 YouTube yt Recursion Example
  7. ▸ mp4 YouTube yt Stack Storage Example, Procedure Summary

Readings:

  1. Read: CSAPP 3.7 - 3.7.4
  2. Read: CSAPP 3.7.5 - 3.7.6
  3. x86 Machine Diagram

Representing Data Structures

Preparation

For Thursday:

  • Video 1 or reading 1

Materials

Exercises:

Slides: ➊ data-structures.pdf ➍ data-structures-4up.pdf

Videos: YouTube☰ yt playlist Representing Data Structures

  1. ▸ mp4 YouTube yt Simple Arrays
  2. ▸ mp4 YouTube yt Multi-Level Arrays (Arrays of Pointers to Arrays of...)
    Errors:
    • In the copyleft example, the second and third movq should be movl and should be moved to and from %ecx instead of %rcx.
  3. ▸ mp4 YouTube yt Row-Major Multidimensional Arrays
  4. ▸ mp4 YouTube yt Row-Major Array Review
  5. ▸ mp4 YouTube yt Structs
  6. ▸ mp4 YouTube yt Struct Alignment
  7. ▸ mp4 YouTube yt Linked List Representation

Readings:

  1. Read: CSAPP 3.8.1 - 3.8.2 (review simple arrays)
  2. Read: CSAPP 3.8.3 - 3.8.4 (nested arrays)
  3. Read: CSAPP 3.9 (heterogeneous data structures)
  4. Read: CSAPP 3.10.1 (pointer review)
  5. x86 Machine Diagram

Buffer Overflows

Preparation

For Tuesday:

  • No preparation.

Materials

Exercises:

Slides: ➊ buffer.pdf ➍ buffer-4up.pdf

Videos: YouTube☰ yt playlist Buffer Overflows

  1. ▸ mp4 YouTube yt Overview
  2. ▸ mp4 YouTube yt Stack Layout and No Bounds Checking in C
  3. ▸ mp4 YouTube yt Example Overview
  4. ▸ mp4 YouTube yt Example 1 - Overwrite Padding (Lucky)
  5. ▸ mp4 YouTube yt Example 2 - Corruption and Segfault
  6. ▸ mp4 YouTube yt Example 3 - Silent Corruption and Arbitrary Code Execution
  7. ▸ mp4 YouTube yt Remote Code Execution and Avoiding Vulnerabilities

Readings:

  1. Read: CSAPP 3.10.3-3.10.4
  2. x86 Machine Diagram

Abstractions for Practical Systems

Memory Allocation

Preparation

For Lab on Wed Apr 19:

This week’s lab will launch the malloc assignment, in which you (and a strongly recommended partner) will flesh out an implementation of malloc and free from the Memory Allocation lecture).

To prepare for lab (and as part of the malloc assignment), it is recommended that you review the malloc slides/videos. Optionally, you can do readings 1–3.

Materials

Slides: ➊ malloc.pdf ➍ malloc-4up.pdf

Videos: YouTube☰ yt playlist Memory Allocation

  1. ▸ mp4 YouTube yt Allocator Basics
  2. ▸ mp4 YouTube yt Determining Block Size
  3. ▸ mp4 YouTube yt Block Format and Heap Layout
  4. ▸ mp4 YouTube yt Implicit Free List Search
  5. ▸ mp4 YouTube yt Implicit Free List Allocation and Splitting
  6. ▸ mp4 YouTube yt Implicit Free List Freeing and Coalescing
  7. ▸ mp4 YouTube yt Explicit Free Lists
  8. ▸ mp4 YouTube yt Explicit Free List Search, Allocation, and Splitting
  9. ▸ mp4 YouTube yt Explicit Free List Freeing and Coalescing
  10. ▸ mp4 YouTube yt Seglists and Allocation Summary
  11. ▸ mp4 YouTube yt Malloc Assignment - Block Format
    Errors:

Readings:

  1. Read: CSAPP 9.9 - 9.9.5 (basics)
  2. Read: CSAPP 9.9 - 9.9.12 (implicit free lists)
  3. Read: CSAPP 9.9.13 - 9.9.14 (explicit free lists and beyond)
  4. Skim: CSAPP 9.10 - 9.11 (garbage collection, C memory errors)

Memory Hierarchy, Cache

Preparation

In class on Tuesday, Apr 24, 2023

We covered only slides 1-5 of the Memory Hierarchy/Cache slides today.

In class on Friday, Apr 28, 2023

We’ll cover only the key high-level aspects of memory hierachcy & caches today.

After the Friday, Apr 28, 2023 class

  • Learn about the memory hiearchy/cache material in more detail by watching the videos and doing the reading.

Materials

Exercises:

Slides: ➊ cache.pdf ➍ cache-4up.pdf

Videos: YouTube☰ yt playlist Memory Hierarchy, Cache

  1. ▸ mp4 YouTube yt Motivating Example
  2. ▸ mp4 YouTube yt Cache Overview
  3. ▸ mp4 YouTube yt Cache Mechanics
  4. ▸ mp4 YouTube yt Locality
  5. ▸ mp4 YouTube yt More Locality Examples
  6. ▸ mp4 YouTube yt Cache Performance and the Hierarchical Memory Design
  7. ▸ mp4 YouTube yt Cache Organization
  8. ▸ mp4 YouTube yt Cache Blocks
  9. ▸ mp4 YouTube yt Direct-Mapped Cache Placement Policy and Cache Tags
  10. ▸ mp4 YouTube yt Address Fields
  11. ▸ mp4 YouTube yt Why Not Another Direct Mapping (Aside)
  12. ▸ mp4 YouTube yt Cache Puzzle 1
  13. ▸ mp4 YouTube yt Cache Conflicts and Associative Cache Placement Policies
  14. ▸ mp4 YouTube yt Cache Puzzle 2
  15. ▸ mp4 YouTube yt General Cache Dimensions and Organization
  16. ▸ mp4 YouTube yt General Cache Read Mechanics
  17. Cache Analysis Example 1: Spatial Locality in Direct-Mapped Caches
  18. Cache Analysis Example 2: Cache Conflicts in Direct-Mapped Caches
  19. Cache Analysis Example 3: Cache Conflicts Resolved by Associativity
  20. Types of Cache Misses
  21. Cache Write Policies
  22. Cache-Friendly Code and Summary

Readings:

  1. Memory Hierarchy, Locality, General Cache Mechanics, Direct-Mapped Caches
  2. Associative Caches, Cache Policies, and Performance
  3. Cache-Friendly Code

Exceptional Control Flow

Preparation

No preparation.

Materials

Slides: ➊ ecf.pdf ➍ ecf-4up.pdf

Readings:

Process Model

Preparation

Tue May 02 During Class

We’ll study some examples from this Process Examples document.

Materials

Slides: ➊ process.pdf ➍ process-4up.pdf

Readings:

  • Read: CSAPP 1.7, 8.2 - 8.4

Beyond 240

Preparation

Materials

Slides: ➊ beyond240.pdf ➍ beyond240-4up.pdf

+Shells, Signals (optional)

+Optional: This topic is an optional opportunity for further depth or exploration.

Preparation

No preparation.

Materials

Slides: ➊ shell.pdf ➍ shell-4up.pdf

+Threads (optional)

+Optional: This topic is an optional opportunity for further depth or exploration.

Preparation

No preparation.

Materials

Slides: ➊ threads.pdf ➍ threads-4up.pdf

Readings:

Code Examples: examples

+Virtual Memory (optional)

+Optional: This topic is an optional opportunity for further depth or exploration.

Preparation

No preparation.

Materials

Slides: ➊ virtual-memory.pdf ➍ virtual-memory-4up.pdf

Readings: