Skip to content

jyuan2pace/CS232S21

Repository files navigation

CS232: Computer Organizations

Pace University

Course Staff

The content of this course changes as technology evolves, to keep up to date with changes follow me on GitHub.

Course Description

This course facilitates the development of a deep understanding of the hardware environment of computing devices and the interface it provides to the associated software. Students need to understand computer organization to develop software artifacts that can achieve high performance through their awareness of concurrency, consistency, parallelism, and latency. They will acquire an understanding and appreciation of a computer system’s characteristics, performance, interactions, and functional components as well as the challenge of harnessing parallelism to sustain performance improvements. In selecting a system to use, students will be able to understand the tradeoff among various components, such as CPU clock speed, cycles per instruction, memory size, average memory access time, pipelining, vector processing, and multiprocessors, and multicomputers.

Textbook

  • [Required] [DIS] Dive into Systems https://diveintosystems.org/
  • [Recommended] [CSAPP] Computer Systems: A Programmer's Perspective (2nd Edition) (ISBN-10: 0136108040)
  • [Recommended] [CPABG] C Programming: Absolute Beginner's Guide, 3rd ed., Aug 2013, (ISBN 978-0789751980)
  • [Recommended] [TECS] The Elements of Computing Systems: Building a Modern Computer from First Principles (ISBN:9780262640688)

Objectives

  • Demonstrate how to convert numerical data from one format to another.
  • Discuss the many equivalent representations of computer functionality, including logical expressions and gates, and use mathematical expressions to describe the functions of simple combinational and sequential circuits.
  • Design the basic building blocks of a computer: arithmetic-logic unit (gate-level), registers (gate-level), central processing unit (register transfer-level), and memory (register transfer-level).
  • Write and analyze Assembly language program segments.
  • Explain why instruction set architecture and stored program concepts are important design principles.
  • Describe and show the relative utility of how negative integers are stored in sign-magnitude and two's-complement representations.
  • Explain how fixed-and floating-point number representations affect accuracy and precision.
  • Understand the basic concepts of interrupts/exceptions and explain how interrupts are used to implement I/O control and data transfers.
  • Describe instruction-level and data-level parallelisms, and pipeline hazards and how they are managed.
  • Explain how instructions are represented at both the machine and the Assembly language levels.
  • Identify and discuss the main types of memory technology (e.g., SRAM, DRAM, flash, and magnetic disk) and their relative costs and performance.
  • Analyze and describe how the use of memory hierarchy (e.g., cache, main memory, and virtual memory) is used to reduce effective memory latency.
  • Understand how a program’s locality of reference property supports memory hierarchy design.

Syllabus

This syllabus presents the expected class schedule, due dates, and reading assignments. Check current syllabus. Check this page often for the most up-to-date schedule.

Live Schedule

Week Content Recording Reading Recitation Deadline
Week 1
First class on 01/25/2021
Week 1: Course Intro and Logistics
  • Part 1.1: Course Overview
  • Part 1.2: Admin and Logistics
  • Part 1.3: Intro to binaries
  • Part 1.4: 2's complements
  • Part 1.5: Number systems and number conversion
Problems None
Week 2
Week of 02/01/2021
Week 2: Toward C
  • Part 2.1: IO and Compilation
  • Part 2.2: C types and Declaration
  • Part 2.3: Conditionals and Loops
  • Part 2.4: Functions
  • Part 2.5: Arrays and strings
C Exercises
Week 3
Week of 02/08/2021
Week 3: Deep Dive into C
  • Part 3.1: Pointers and functions
  • Part 3.2: Dynamic Memory Allocation
  • Part 3.3: GDB debugging
Scope & C pointers
Week 4
Week of 02/15/2021
Week 4: C pointers, structs and strings
  • Part 4.1: Strings and arrays
  • Part 4.2: Structs
  • Part 4.3: Dynamic Memory Allocation
C pointers and meomory management
Week 5
Week of 02/22/2021
Week 5: Advanced C
  • Part 5.1: Little Endian
  • Part 5.2: C library
  • Part 5.3: Study case of vector
  • Part 5.4:Floating point representation
Trace your code in memory
Week 6
Week of 03/01/2021
Week 6: C wrap up and intro to logic gates
  • Part 6.1: Shared objects
  • Part 6.2: Floating point numbers
  • Part 6.3: Review
  • Part 6.4: Intro to logic gates
No new exercises/submission, review time
Week 7
Week of 03/08/2021
Week 7: Intro to computer architecture and midterm
  • Part 7.1: Intro to computer architecture
  • Part 7.2: Midterm review
  • Part 7.3: Midterm exam in class
Week 8
Week of 03/15/2021
Week 8: Combinational Logic Gates
  • Part 8.1: Midterm Retrospection
  • Part 8.2: Logic gates review
  • Part 8.3: Adders
  • Part 8.4: Mux/DeMux
Week 9
Week of 03/22/2021
Week 9: Combinational Logic Gates to ALU
  • Part 9.1: Selector and Switch
  • Part 9.2: Expanding 2-way 1-bit selector to Multi-way Multi-bit selector
  • Part 9.3: Unary ALU
  • Part 9.4: ALU
  • [TECS] Chapter 2-3
Week 10
Week of 03/29/2021
Week 10: Sequential logic gates to RAM
  • Part 10.1: Wrap up ALU
  • Part 10.2: Flip-lops, latches and clocks
  • Part 10.3: Registers
  • Part 10.4: Memory
  • Part 10.5: Program Counter
  • [TECS] Chapter 3
Week 11
Week of 04/05/2021
Week 11: Computer Archtecture and machine code
  • Part 11.1: Wrap up RAM
  • Part 11.2: Revisit computer arch
  • Part 11.3: Intro to machine code
  • Part 11.4: Memory hierarchy
  • Part 11.5: Assembly
  • [TECS] Chapter 4
Week 12
Week of 04/12/2021
Week 12: Intro to X86
  • Part 12.1: CPU controller
  • Part 12.2: Intro to X86
  • Part 12.3: Function call convention
  • Part 12.4: Condition and jump
  • Part 12.5 Arrays and Structs
Week 13
Week of 04/19/2021
Week 13: X86: Control Flow and Function Convention
  • Part 13.1: Direct and indirect addressing mode
  • Part 13.2: Control flow
  • Part 13.3: Stack
  • Part 13.4: Function Convention and Stack
  • No recitation

Hands-out

About

Course materials

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published