Textbook Information
- None
Published Remarks
- This course may require you to take exams using certain proctoring software that uses your computer’s webcam or other technology to monitor and/or record your activity during exams. The proctoring software may be listening to you, monitoring your computer screen, viewing you and your surroundings, recording and storing any and all activity (including visual and audio recordings) during the proctoring process. By enrolling in this course, you consent to the use of the proctoring software selected by your instructor, including but not limited to any audio and/or visual monitoring which may be recorded. You will need to use an approved browser and one of the compatible operating systems which are listed in Honorlock’s Minimum Requirements table. Please contact your instructor with any questions.
Hardware Requirements
- Computer
- Webcam for use with Honorlock, which is a proctoring software for exams
Software Requirements
- You will need to use an approved browser and one of the compatible operating systems which are listed in Honorlock’s Minimum Requirement table (https://honorlock.com/support/).’
Proctored Exams
- This course uses Honorlock to proctor exams.
Course Description
The main topic of this class is how software interfaces with hardware. Toward this end we will be studying the assembly language that is what compilers turn your code written in other languages into. Additionally, we will examine how other hardware devices are controlled from software and using some services that the operating system provides to programs.
Course Prerequisites
- CMPEN 270 (or 271/275)
- Suggested: CMPSC 122
Overview
- assembly language programming
- how software interfaces with hardware.
Minor topics that will be covered include:
- instruction sets
- data representation
- memory system design/hierarchy
- stacks, subroutines, and interrupts
- memory and I/O interfacing
For those of you only used to object-oriented programming, this course will give you a view of procedural programming, how a processor actually does things you ask, below the languages you have experiences with. For software engineers, this course will provide you with another language you could work with and give you a bit of computer architecture. Hopefully, the insight you gain will help you understand performance issues, help find potential optimizations, and help you understand what the compiler that reads your code has to work with, along with helping you understand how to work with hardware if you are ever deep enough in an operating system. For the computer engineers, this course does all that but is only an introduction to architecture. You will go into much further detail in CMPEN 431.
Course Outline:
Module 0 – Orientation Module 1 – Introduction to Assembly Language Module 2 – Data Reading, Writing, and Math Module 3 – Procedures and Stacks Module 4 – Pointers and Fixed Point Module 5 – Advanced Assembly Module 6 – Example/Lab and Memory Mapped Display Module 7 – Polling I/O and Keyboard Interface Module 8 – Interrupts and Exceptions Module 9 – Floating Point Module 10 – Opcodes and Introduction to Computer Architecture Module 11 – Performance Analysis Module 12 – Caches
Learning Goals
By the end of this course, students will be expected to demonstrate competency in the following areas, students should be able to:
- write, assemble and debug assembly programs using a simulator
- document an assembly language program so that it can be understood by others
- create data definitions, addressing modes, arithmetic, conditional processing and load/store operations
- write a program which interfaces with a system service
- write procedures and in an assembly language
- use the stack for parameter passing and the storage of local variables in procedures
- write a recursive function
- use memory-mapped I/O for peripheral devices
- control peripheral devices via polling or interrupts
- write an interrupt service routine
- show the machine representation of data and instructions
- describe microprocessor components and the fetch-execute cycle
- describe the fundamental microcomputer organization
Outcomes
Upon completion of the course, students should possess the following skills:
Course Requirements and Grading
Day to Day Course Requirements:
HW:
There will be a few homework assignments as well due at the time specified.
Lab: The lab grade will consist of several labs. Longer, more involved labs will be worth more than others.
Labs will be due at the end of the week, typically Saturday. It should be in the drop box by then or it is late. You will demo your turned-in work in the lab the following week while getting help on the upcoming one. Notice that, according to the late policy, if it is not in the dropbox by the due date 0 points (but you will still have to complete it).
Grading Policy
Final grades will be assigned based on the following scale (post adjustment):
A 93.3% – 100% | A- 93.3% – 90% | B+ 86.7% – 90% |
B 83.3% – 86.7% | B- 80% – 83.3% | C+ 76.6% – 80% |
C 73.3% – 76.6% | D 65% – 73.3% | F < 65% |
Your final grade will be made up of the following:
Final PROJECT | 20% |
Homework | 10% |
Labs | 45% |
Quizam | 20% |
Participation | 5% |
Late policy:
Work that is not turned in by the due date/time will lose 99% of it’s points. I also will not grade later labs if earlier labs are not in yet. You will most likely not be able to do them anyway. I *may* modify this policy for an individual’s assignment for extenuating circumstances, but the probability drops as the due date approaches.
Exam Policy
There will be 4 small exams (quizams roughly 25 minutes each) and a final project. There will be no final exam. Instead, the final project (of the student’s choosing) demonstrates what you have learned to convince me and your fellow students. This project will include documentation with drafts of some parts due earlier. Additionally, students will demonstrate their final project to other students. During quizzes, you will usually only be allowed to use a pen/pencil/eraser and scratch paper. I will usually supply or allow a limited amount of reference material, such as a list of assembler mnemonics, to try to help the test cover student’s understanding and not just memorization. You will not be allowed to use any resources unless specified by me. This ban includes the web, MARS, and other students. I try to minimize the amount of coding students must do on an exam because of its time consuming nature and the difficulties in writing and grading code without a development environment, but some will be required.