This page is for a past semester (f14) and is for archival purposes only
Computer Organization and Assembly Language Programming (CSE 2312)
University of Texas at Arlington
Computer Science and Engineering
Instructor:
Taylor JohnsonEmail Address:
firstname.lastname@uta.edu (replace firstname with Taylor and lastname with Johnson and note there is no mavs subdomain)Office Number:
Engineering Research Building 559Office Telephone Number:
817-272-3610Section Information:
CSE 2312-002, Fall 2014 (84690)Course Website:
http://www.taylortjohnson.com/class/cse2312/f14/Time and Place of Class Meetings:
Tuesdays/Thursdays 2:00pm-3:20pm, Nedderman Hall 109 (NH 109)Office Hours:
ERB559, Tuesdays/Thursdays 3:30pm-4:30pm and by appointment (email me to schedule)Graduate Teaching Assistant (GTA):
Nathan HerveyGraduate Teaching Assistant Email Address:
nhervey@mavs.uta.eduGraduate Teaching Assistant Office Hours:
Mondays / Wednesday 2:00pm-3:30pm, ERB 562Graduate Teaching Assistant (GTA):
Lalit NaiduGraduate Teaching Assistant Email Address:
firstname.lastname@mavs.uta.eduGraduate Teaching Assistant Office Hours:
Mondays / Wednesday 10:30am-12:30pm, ERB 562Lab Rooms with QEMU and ARM Software:
ERB 124, 125, and 131Course Schedule (Syllabus; note that all information appearing on this website supersedes that appearing in the syllabus PDF, that is, the website is more up-to-date):
The instructor for this course reserves the right to adjust this schedule in any way that serves the educational needs of the students enrolled in this course. All readings refer to Patterson and Hennessy unless otherwise noted. All assignment dates are approximate at this point and will be updated on this website as the semester progresses.Date | Content | Slides / Resources | Assignments |
---|---|---|---|
8/21 | Introduction | Slides (pdf), Covered Through Slide 26 | Reading: Chapter 1 |
8/26 | Structured Computers; Computer Components: Processors, Memory, Input/Output | Slides (pdf). Covered Through Slide 30. | Homework 1 Assigned (pdf, docx); Reading: Chapter 1 |
8/28 | Quantifying Computer Components: Performance Metrics like Clock Speed, Memory Sizes, etc. | Slides (pdf). Covered remaining slides for chapter 1. | Reading: Chapter 1 |
9/2 | Signed Numbers, Hexadecimal, Intro to Instructions | Slides pdf. Covered through slide 33. | Reading: ARM Version Chapter 2 (2.1 to 2.4) |
9/4 | Instructions, Memory, Endianness | Slides pdf. Covered through slide 36. | Homework 1 Due; Homework 2 Assigned (pdf, docx); Assigned; Reading: ARM Version Chapter 2 (2.5 to 2.7) |
9/9 | Logical Operations, Control Flow Instructions (Guest Lecturer: Vassilis Athitsos) | Slides pdf). Covered through slide 51. | Reading: ARM Version Chapter 2 (2.9 to 2.12) |
9/11 | Memory, Caches and Storage (Guest Lecturer: Feraydune Kashefi) | Slides pdf). Covered through slide 50. | Reading: ARM Version Chapter 2 (2.14 to 2.17) |
9/16 | Memory Addressing Modes | Slides pdf). Covered through slide 35. | Homework 2 Due; Homework 3 Assigned (pdf, docx); Reading: ARM Version Chapter 2 (2.8, 2.13, and 2.18 to 2.19) |
9/18 | Procedures, Recursion, and the Stack | Slides pdf. Covered through slide 24. | Reading: Appendix A.1 through A.6 (skip specific details on MIPS) |
9/23 | Stack and Recusion | Slides pdf. Covered through slide 23. | Reading: Appendix A.1 through A.6 (skip specific details on MIPS), and ARM Version Appendix B2 (skim, look at the tables) |
9/25 | More Flow of Control | Slides pdf. Covered through slide 26. | Homework 3 Due; Homework 4 Assigned (pdf, docx); Reading: ARM Version Appendix B1 (read all, except skim section B1.3, although it's a useful resource as it has examples of all the instructions) |
9/30 | Assembly Process and Macros | Slides pdf. Covered through slide 43. | Reading: Review Chapter 1, 2 (ARM), Appendix A1-A6, Appendices B1-B2 (ARM) |
10/2 | Loading and Strings | Slides pdf. Covered all slides. | Reading: Review Chapter 1, 2 (ARM), Appendix A1-A6, Appendices B1-B2 (ARM) |
10/7 | Midterm Review (Guest Lecturer: Feraydune Kashefi) | Slides pdf | Homework 4 Due; Homework 5 Assigned (pdf, docx, extra files); Reading: Review Chapter 1, 2 (ARM), Appendix A1-A6, Appendices B1-B2 (ARM) |
10/9 | Midterm Exam (In Class; Covers Chapter 1, 2 (ARM), Appendix A1-A6, Appendices B1-B2 (ARM)) | ||
10/14 | Running ARM Programs with QEMU and Debugging ARM Programs with gdb | Slides pdf, examples (zip) | |
10/16 | Intro to Pipelines and Parallelism, and Debugging QEMU and ARM with gdb | Slides pdf, examples (zip) | Reading: Chapter 4 (Section 4.5); Homework 5 Due |
10/21 | More Pipelining and Parallelism | Slides pdf (Covered Through Slide 14) | Reading: Chapter 4 (Section 4.6-4.7) |
10/23 | More Pipelining and Parallelism: Data and Control Hazards and Solutions | (slides pdf, ARM pipeline slides pdf [original source for ARM slides]) | Programming Assignment 1 Assigned (pdf, docx, extra files) Assigned; Reading: Chapter 4 (Sections 4.8, 4.10-4.11) |
10/28 | Interrupts, Exceptions/Traps, and Input/Output (I/O) | slides pdf; examples | Reading: Chapter 4 (Section 4.9); UART Manual, Section 3.2 and 3.3.1 [local copy]; versatile pb manual, Section 4.1 and page 4-97 [local copy] |
10/30 | Memory Hierarchies (Registers, Caches, Main Memory, Storage) | slides pdf (Covered through slide 49) | Reading: Chapter 5 (Sections 5.1-5.2); Optional Reading About SRAM vs. DRAM (Appendices B.8-B.9) |
11/4 | Caches | slides pdf (Covered through slide 41) | Programming Assignment 1 Due; Programming Assignment 2 Assigned (pdf, docx, given files); Reading: Chapter 5 (Sections 5.3-5.4) |
11/6 | Direct-Mapped and Associative Caches | slides pdf (Covered through slide 43) | Reading: Chapter 5 (Sections 5.3-5.4) |
11/11 | Cache Coherence / Consistency and Memory Hierarchy Performance | slides pdf (Covered through slide 38) | Reading: Chapter 5 (Sections 5.8-5.10, 5.13, 5.15-5.16) |
11/13 | Virtual and Dependable Memory | slides pdf (Covered through slide 50) | Reading: Chapter 5 (Sections 5.5 and 5.7); Programming Assignment 2 Due; Programming Assignment 3 Assigned (pdf, docx, given files) |
11/18 | Dependable Memory and Overflow, Starting Floating Point Numbers (IEEE 754) | slides pdf (Covered through slide 49) | Reading: ARM Edition Chapter 3 (Sections 3.5 and 3.9) |
11/20 | Floating Point Numbers (IEEE 754); Combining C and Assembly; Multiple Issue and ARM Pipeline Performance | slides pdf (Covered through slide 51) | Reading: Chapter 4.10-4.11 |
11/25 | Computer Organization Review using ARM as an Example | slides pdf, Covered Through Slide 21 | Programming Assignment 3 Due; Programming Assignment 4 Assigned (pdf, docx, extra files) Assigned |
11/27 | Thanksgiving Holiday (no classes) | ||
12/2 | Final Review Class, Last Day of Our Class | final review slides pdf, midterm review slides pdf | |
12/3 | Last Day of University Classes | Programming Assignment 4 Due | |
12/9 | Final Exam (2:00pm-4:30pm) |
Required Textbook and Other Course Materials:
- David A. Patterson and John L. Hennessy, Computer Organization and Design, Fifth Edition: The Hardware/Software Interface, Morgan Kaufmann, September 2013 (Required, Main Textbook; Book Website)
- gdb Tutorial
- ARM Instructions Simplified
- Quick-EMUlator (QEMU): Overview, Homepage
- ARM and Thumb-2 Instruction Set Quick Reference Card
- ARM Writing Assembly Language (Good Reference)
- ARM Instruction Summary
- ARM Register Names
- ARM Memory Map (See Section 4.1, 32-bit memory map)
Linux Tutorials
- Debian Tutorials (applies to most other *nix variants)
- Ubuntu Tutorial
- Another Tutorial Set
Optional Textbooks and Additional References:
- Pete Cockerell, ARM Assembly Language Programming (Online)
- Introduction to ARM Assembly Web Course
- Stack Overflow: ARM Assembly Suggestions
- ARM Floating Point Register Names
- ARM Directives
- ARM Condition Codes
- ARM Detecting Overflow of Arithmetic Operations (Addition)
- ARM Detecting Overflow of Arithmetic Operations (Multiply)
- ARM Conditional Execution
- ARM versatilepb Manual
- ARM PrimeCell UART (PL011) Manual
- ARM Floating Point Instructions
- GNU ARM Assembler (as) Manual
- ARM gcc
- GNU ARM
- Andrew S. Tanenbaum, Structured Computer Organization, 6th Edition. Prentice-Hall, Inc., 2012. (Optional; focuses primarily on x86)
- Kip Irvine, Assembly Language for Intel-Based Computers, 6th Edition, Prentice-Hall, Inc., 2011. (Optional; focuses on x86)
- Paul A. Carter, PC Assembly Language, July 2006. (Optional; focuses on x86; Free PDF Available)
Description of Course Content:
Computer organization from the viewpoint of software, including: the memory hierarchy, instruction set architectures, memory addressing, input-output, integer and floating-point representation and arithmetic. The relationship of higher-level programming languages to the operating system and to instruction set architecture are explored. Some programming in an assembly language.Prerequisites:
All students are expected to have passed the courses CSE 1320 Intermediate Programming and CSE 1310 Introduction to Computers and Programming or an equivalent before attending this course. Students are expected to have working experiences with software development.Student Learning Outcomes:
The objective of this course is to introduce computer science and engineering students to the architecture, organization, and low-level (assembly) programming of computing systems. At course conclusion, students should be able to:- Define components of a computer system, such as input/output devices, memory, processors, etc.
- Define different types and levels of computer systems, such as instruction set architectures, device level architectures, microcontrollers, RISC, CISC, etc.
- Compute and compare basic performance metrics of programs on different architectures and levels
- Convert between binary and decimal representations, binary and character encodings like ASCII, real numbers and floating-point approximations, and perform manipulations of these information representations (arithmetic, etc.)
- Write, assemble, and execute assembly language programs to solve problems
- Write assembly programs using different endianness, addressing modes, stack features, and other architecture and ISA specific features
Descriptions of major assignments and examinations:
Coursework for roughly the first half of the course will include homework assignments and a midterm exam covering roughly chapters 1, 2, and 3 of the Patterson and Hennessy textbook. The second half of the course will include fewer homework assignments, but several programming assignments in assembly language, and a final exam cover roughly chapters 4 and 5 of the Patterson and Hennessy textbook. In class quizzes and discussions will make up a portion of the grade. Approximate due dates of assignments are shown in the course schedule.Attendance:
At The University of Texas at Arlington, taking attendance is not required. Rather, each faculty member is free to develop his or her own methods of evaluating students' academic performance, which includes establishing course-specific policies on attendance. As the instructor of this section, students are strongly encouraged to attend lectures (particularly due to some graded in class quizzes), come to office hours, and make use of all available educational resources.Other Requirements:
Exams will be closed book, but students will be allowed to bring a two-sided sheet of letter-size paper. Students are expected to check the course website for updates to the course schedule throughout the semester.Grading:
Grade percentages will be calculated based on the following weights:- Homework: 25%
- Programming Assignments: 25%
- Quizzes and Participation: 10%
- Midterm Exam: 20%
- Final Exam: 20%
- 100 >= A >= 90
- 90 > B >= 80
- 80 > C >= 70
- 70 > D >= 60
- 60 > F >= 0
Make-Up Assignments, Exams, and Late Assignment Submission:
If you miss an exam or quiz due to unavoidable circumstances (e.g., health), you must notify the instructor in writing via email as soon as possible and request a makeup approval. If it is a planned (non-emergency) abcense, you must inform the instructor ahead of time! Do NOT ask for make-ups if you do not complete something due to travel (except when you are required to travel to represent the university or department on official business, but request at least 3 days ahead of the due date or exam time). If you submit an assignment late, it will have points taken off at a rate of 33% per day.Grade Grievances:
Any appeal of a grade in this course must follow the procedures and deadlines for grade-related grievances as published in the current undergraduate catalog (see here).The first step is as follows. If you do not believe a grade on a particular assignment is correct, you may appeal the grade in writing (by email) within 5 days. Grade appeals must be appealed to the appropriate GTA first, then to the instructor if necessary.