CMPS 2240 Computer Architecture I - Assembly Language Programming

Eddie Rangel
Office: Sci III 338
Office Hours: by appointment
Email O365: erangel1@csub.edu
Course meets in Sci III room 240
MW 4:00pm - 5:15pm
F 4:00pm - 6:30pm

Catalog Description
CMPS 2240 Assembly Language Programming Introduction to machine architecture and program structure; code, data, and stack segments; programming with an assembly language. Each week lecture meets for 150 minutes and lab meets for 150 minutes.
Prerequisite: CMPS-221

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

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

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

Attendance:
It is recommended that you attend every class session. Roll is taken on lab Tuesdays. Some or all lab assignments will require attendance for full credit.

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...........  10 points x 10  100  10%
Labs...............  10 points x 10  100  20%
Quizzes............  10 points x 10  100  10%
Final Exam......... 100 points x  1  100  30%
Final Project...... 100 points x  1  100  30%
                                    ----------
Total points possible............... 500  100%

The overall distribution of scoring is reflected above.
The number of assignments may change slightly.
Letter grade will be based on percentage of total possible. 
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 quarter.

Labs
Lab assignments ask you to write some assembly language programs in class. There will usually be a brief lecture at the beginning of each lab session. Roll will be taken during lab. 20% of the lab grade is based on attendance.

Lab Submission
All lab files due should be located in your designated folder on Sleipnir.
This area on the Sleipnir server will be set up for you during the 1st 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. Homeworks are due on Fridays just prior to the weekly quiz.

Late Policy
Late assignments will not be accepted.

Final Exam
The final exam will be given during finals week, and be similar to the quizzes given during the quarter.

Final Project
The final 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-8 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.

Individual Work Policy
All work done in this course is individual work.
Sharing of code is not acceptable.
Possession of code written by other students in not acceptable.
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:
1. Complete all the reading assignments.
2. Ask the tutors some specific questions about what you're stuck on.
3. Come to every class session.
4. Practice your programming every day.
5. Contact the instructor for help.


note: This syllabus could be amended during the semester.