CMPS 2240 Computer Architecture I - Assembly Language Programming

(Fall 2022)

Gordon Griesel
Office: Sci III 337
Office Hours: see my schedule, and by appointment
Email: gordon@cs.csub.edu
Course web site: https://www.cs.csub.edu/~gordon/2240/
Class meets:
MWF   8:00am - 8:50am  in Sci-III 240 (lecture 81889)
Thurs 7:20am - 9:50am  in Sci-III 240 (lab 81890)

Catalog Description
Introduction to computer architecture and assembly language programming.
Covers number systems and data representation, CISC and RISC instruction set
architectures, internal organization of a computer, and basics of logic design.
Each week lecture meets for 150 minutes and lab meets for 150 minutes.
Prerequisites: C- or better in the following CMPS 2010 and MATH 1040 or 1050 or
1060 or 2310 or 2510.

Prerequisites by Topic
Programming skill in a high level language such as C, C++, Java. 

Required Textbooks
Purchase of any textbooks is optional.
See textbooks link on our main page.

Appendix A from Computer Organization & Design
by Patterson & Hennessey; 3rd Ed.
Appendix A is available online.
Latest edition places similar material in Appendix B.

MIPS Assembly Language Programming by Robert L. Britton (available online).
Additional material will be available online from our main website. 

Lecture Topics and Rough Schedule
  Week  1  Operations on binary, octal and hexadecimal numbers
  Week  2  Arithmetic, shift & rotate operations
  Week  3  Subroutine linkage & call frames
  Week  4  Instruction encoding, jumps & branches
  Week  5  Program optimization
  Week  6  Logical and bit-field operations & condition testing
  Week  7  Multiplication, division, branch delay slot
  Week  8  Introduction to x86-32
  Week  9  x86-64 code optimization
  Week 10  x86 inlining with C/C++
  Week 11  More x86 inlining with C/C++
  Week 12  Mips file processing
  Week 13  Floating-point formats 8-bit, IEEE 32-bit
  Week 14  Recursion and stack frame
  Week 15  Review of solutions, project completion
  Week 16  Final exam

Grading Policy Homework........... 5 points x 15 75 15% Labs............... 5 points x 15 75 15% Quizzes............ 10 points x 15 150 30% Final Exam......... 100 points x 1 100 20% Final Project...... 100 points x 1 100 20% ---- ---- Total points possible............... 500 100% The overall distribution of scoring is reflected above. The number of assignments may change. Letter grade will be based on percentage of total possible.

Grading Scale
A 100%
A 93%
A- 90%
B+ 87%
B 83%
B- 80%
C+ 77%
C 73%
C- 70%
D+ 67%
D 63%
D- 60%
F 0%
Scores will be posted on the course website during the semester. Attendance Class attendance is both recommended and required. Missing a class period can cause a zero score for the following assignment types: - lab assignment - pop quiz - assignment given verbally - hands-on coding assignment - participation exercise - exam - others that may not be listed Attendance is taken before class begins. When the "bell rings", you should be in your seat and ready to go. Note: Current time is determined using an Andriod phone which runs about 15-seconds behind the official U.S. time presented on www.time.gov. Plan your time using time.gov and never be late. Attendance scoring: Unexcused absence or late arrival will cause a penalty to your overall grade. The exact amount of penalty will be determined near the start of the semester. late arrival: 1-mark unexcused absence: 2-marks Each mark is 0.25% deduction from your overall grade. Strength of penalty is approximately: late every day = 15% overall grade deduction absent every day = 30% overall grade deduction Labs Labs are hands-on assignments designed to be done in the classroom on classroom computers. You may install the necessary components on your own laptop computer, and bring it to class. - Attendance is required for any credit. - Full attendance is required for full credit. Lab Submission All lab files due must be located in your folder on Odin. This area on the Odin server will be set up for you during the first week of class. Instructions will be gived during the course to help you submit your assignments correctly. Homework Homework assignments are posted on our web page. Please work out the problems on paper with a pencil and eraser on lined, graph, or blank paper. The questions do not have to be written, just the answers. Show some care and effort for full credit. Homeworks are due on Fridays at 8:00am just prior to the weekly quiz. Final Exam The final exam will be given during finals week, and be similar to the quizzes given during the semester. The Semester Project The semester project will ask you to write a somewhat complex program using all the assembly language knowledge you have learned throughout this course. A complete description of the project requirements will be available around week-3 of the course. The project could take 20 to 40 hours of programming work to complete, depending upon the grade level you wish to achieve. Late Assignment Policy Late assignments will not be accepted and result in a score of zero. Time Conflicts Time conflicts are not allowed. Your own personal schedule must allow you to arrive on-time to class, and stay for the entire class period. Time conflict should be disclosed to the instructor on the first day of class. CMPS-2240 is a hands-on course taught in-person in the classroom by your instructor. This course is in no way an on-line course. In-class assignments are not to be done at some remote location. Individual Work Policy All work done in this course is individual work. Sharing of source code is not allowed. Possession of code written by other students is not allowed. Copying another student's work is plagiarism. Copying answers or source code from the Internet is also plagiarism. Asking a tutor or another person to do your work for you is cheating. Do your own work please. If you are struggling to learn the material, then do the following: - Complete all the reading assignments. - Ask the tutors some specific questions about what you're stuck on. - Come to every class session. - Practice your programming every day. - Contact Gordon for help. Classroom Behavior - CSUB is a smoke-free and tobacco-free campus! Please do not smoke, vape, chew, or spit in the classroom. - Please do not wear headphones or earbuds in the classroom. Refer to the accommodations section above if needed. Your instructor reserves the right to ask you to remove your headphones inside the classroom. - Please do not use your cellphone during class time. - Please do not walk in front of the instructor while a lecture is in progress. - The use of an electronic recording device is not allowed. Recordings Under California Education Code Section 51512, it is illegal for any person, including a student, to use an electronic device to record what is happening in the classroom without the consent of the instructor. It is a felony offense. The instructor for this course does not give consent for recordings of any kind. If a disability requires you to record a class session, then please contact SSD so accommodations can be made. Academic Integrity Policy All work done in this course is individual work. Please do not share your work with other students. You may discuss assignments with other students, but sharing of source code is simply not allowed. Refer to the Academic Integrity policy printed in the campus catalog and class schedule. Violations are enforced in accordance with the Department's policy on academic honesty. Absence from class A student's responsibilities include attending classes. If you miss a class, it is your responsibility to inform Gordon of the reason for the missed class (documentation may be required) and to arrange to make up any missed assignments, exams, quizzes, and class work, to the extent that this is possible. Excusable absences include, but are not limited to: Illness, injury, death of an immediate family member, etc. See a complete list at CSUB Catalog page 64. Your instructor reserves the right to amend this syllabus during the semester.