Course Staff
- Instructor: Dr. Jun Yuan
- Teaching Assistant: Ms. Iris Nguyen
The content of this course changes as technology evolves, to keep up to date with changes follow me on GitHub.
- Section 20102. Spring 2021
- Lecture: Monday & Wednesday, 3:30 PM, Lecture Zoom Link
- Recitation: Friday, 2:00 PM, Recitation Zoom Link
- Make an appointment with course staff: Scheduling Jun's office hours or Scheduling Iris's office hours
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.
- [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)
- 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.
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.
Week | Content | Recording | Reading | Recitation | Deadline |
---|---|---|---|---|---|
Week 1 First class on 01/25/2021 |
Week 1: Course Intro and Logistics
|
Problems | None | ||
Week 2 Week of 02/01/2021 |
Week 2: Toward C
|
C Exercises |
|
||
Week 3 Week of 02/08/2021 |
Week 3: Deep Dive into C
|
Scope & C pointers |
|
||
Week 4 Week of 02/15/2021 |
Week 4: C pointers, structs and strings
|
C pointers and meomory management |
|
||
Week 5 Week of 02/22/2021 |
Week 5: Advanced C
|
Trace your code in memory |
|
||
Week 6 Week of 03/01/2021 |
Week 6: C wrap up and 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
|
|
|||
Week 8 Week of 03/15/2021 |
Week 8: Combinational Logic Gates
|
|
|
||
Week 9 Week of 03/22/2021 |
Week 9: Combinational Logic Gates to ALU
|
|
|
||
Week 10 Week of 03/29/2021 |
Week 10: Sequential logic gates to RAM
|
|
|
||
Week 11 Week of 04/05/2021 |
Week 11: Computer Archtecture and machine code
|
|
|
||
Week 12 Week of 04/12/2021 |
Week 12: Intro to X86
|
|
|||
Week 13 Week of 04/19/2021 |
Week 13: X86: Control Flow and Function Convention
|
|
|