CMPS 2240 Computer Architecture I - Assembly Language Programming
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 11:00am - 11:50am in Sci-III 311 (lecture 82737)
Thurs 10:00am - 12:30am in Sci-III 311 (lab 82738)
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 jumps & branches, instruction encoding
Week 4 Subroutine linkage & call frames
Week 5 Recursion and stack frame
Week 6 Logical and bit-field operations & condition testing
Week 7 Multiplication, division, branch delay slot
Week 8 Project introduction
Week 9 System calls
Week 10 Floating-point formats 8-bit, IEEE 32-bit
Week 11 Introduction to x86-32
Week 12 x86-64 calling conventions
Week 13 x86 inlining with C/C++
Week 14 Additional topics
Week 15 Project completion
Week 16 Final exam
Grading Policy:
Labs, homework, quizzes, etc. 50% **********
Midterm exam-1 10% ***
Project 20% ****
Final exam 20% ***
--------------------------------------------
Total 100%
Grading scale used during the semester...
A 93%
A- 90%
B+ 87%
B 83%
B- 80%
C+ 77%
C 73%
C- 70%
D+ 67%
D 63%
D- 60%
F 0%
Other course details...
Attendance
----------
Class attendance is required.
Please be in your seat and ready when the period begins.
Attendance marks:
Late arrival to class - 1 mark
Unexcused absence - 1 mark
Each attendance mark is a small deduction from your overall grade.
Deduction amount begins at 0.5%
Deduction increases slightly with each occurance.
Repeated disruptions of class due to late arrivals can cause added penalties.
Labs
----
Lab attendance is required.
Labs are hands-on assignments to be done during the class period.
Lab rules:
1. Must not be late to lab.
2. Must work the entire lab period.
If you finish a lab, ask instructor if it's ok to leave.
3. Your program must compile and run at the end of a lab period.
A program that does not compile could receive a score of zero.
Lab assignments are designed to run on the classroom computers.
Use of a personal laptop requires the following...
1. Installation of any utilities needed.
2. Ability to enlarge your screen text for better viewing.
More lab rules:
1. If you arrive late to lab, do not copy from another student.
2. If you need help, be ready to enlarge your screen text
for viewing by your instructor.
Lab programs are collected at the end of lab period.
A lab score will be given based on your work.
Lab programs may sometimes turn into homework.
Homework
--------
Homework assignments will be posted on our web page.
General requirements of programming assignments
-----------------------------------------------
Your programs will be files stored on the Odin server inside your
2240/ directory, and in the proper subdirectory.
Your 2240/ directory must be created using a script provided. The 2240/
directory is created so that your work is visible only to you and your
instructor. Do not change the permission of the directory after running
the provided script.
Other general requirements:
. Your name on the top line of a program or text file
. Correct file name
. Correct file location
Programming assignments:
. No compile warnings or errors
. Program must run
. Program output must be neat, clean, and complete.
. C/C++ program code must follow the K&R coding style.
. C/C++ program code must have consistent and correct indenting.
Text file written assignments:
. Neatly written text
. Correct spelling and grammar
Each assignment will also have some specific requirements in addition to
those listed above.
Final Exam
----------
A final exam will be given.
A date and time for the final exam will be posted.
Late Assignment Policy
----------------------
Late assignments will not be accepted and can result in a score of zero.
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.
Asking or searching for 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.
Semester Project
----------------
There will be a semester project in this course.
It will consist of several programs to be written that expand on program
elements you learn in lab assignments.
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 in the classroom.
If you need headphones as an accommodation, please speak with your
instructor to make arrangements.
- Please do not use your cellphone during class time.
Repeated use of social media is not allowed!
- If you arrive late, please do not walk past the instructor while a lecture
is in progress. Do not walk in front of other students.
- Use of an electronic recording device is not allowed.
For example: If you want to take a picture of lecture materials on
the big-screen, ask for permission first please.
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 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 class.
If you miss a class, it is your responsibility to inform your instructor 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. Some assignments cannot be made up.
Excusable absences include, but are not limited to:
Illness, injury, death of an immediate family member, etc.
See a complete list at CSUB Catalog. Search for "University Absence Policy".
If you receive a summons for Jury Duty, immediately call the number on the
summons to reschedule your service to a time when you are not in school,
such as holiday break or summer.
Telling your instructor in advance of an absence gives you the
best chance of being excused.
No Recordings Allowed:
---------------------:
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.
The instructor for this course DOES NOT give consent for recording of any kind.
If a disability requires you to record a class session, then please
contact SSD so accommodations can be made.
Your instructor reserves the right to amend this syllabus during the semester.
=========================================================================
| AMENDMENT 9/6/2024 - Assignment Instructions Clarification |
=========================================================================
| An assignment will give you some tasks to complete. There will be a |
| list of things to do, but no list of things not to do. The list of |
| things not to do would be infinite. Use your best judgement to |
| complete an assignment. Ask questions during a lab. |
=========================================================================