Skip to content
This organization was marked as archived by an administrator on Apr 17, 2024. It is no longer maintained.
@CS-271-nilsstreedain

CS 271

Computer Architecture & Assembly Language

Course Syllabus

Course Name: Computer Architecture and Assembly Language

Course Number: CS271

Credits: 4

Lecture times: T/R 10:00 - 11:50 am at COVL 216 (mask/face covering required)

Instructor name: Yipeng (Roger) Song

Instructor email: [email protected]

TA mailer: [email protected] (distributed to all TAs and the instructor)

Online Discussion Forum: Discord

See the Office Hours page for information on TAs and/or Office Hours.

Two fundamental rules

  1. You are responsible for knowing the contents of the syllabus and all of the information about the course provided on Canvas.
  2. You are responsible for knowing the contents of instructor announcements made on Canvas and Discord, which means that you should make sure you receive such announcements and that you check for new ones at least once a day.

Important Note: Until further notice, the university has a requirement to use a face covering when in indoor spaces in order to contribute to the health and safety of the OSU community during the ongoing COVID-19 pandemic. Accordingly, you are expected to use a face covering when attending class. Failure to so may result in being asked to leave the classroom. Please contact me before class if you have concerns with meeting this expectation. I encourage you to review the Policy yourself, to understand the university's expectations around the use of face coverings outside the classroom, OSU's Vaccination requirement, and OSU's isolation and quarantine requirements.

1. Course Description

  • 1.1. Introduction to functional organization and operation of digital computers. Coverage of assembly language; addressing, stacks, argument passing, arithmetic operations, decisions, macros, modularization, linkers and debuggers.

2. Prerequisites

  • 2.1. Enforced Prerequisites: CS 161

  • 2.2. Other Prerequisites: CS 225 or MTH 231

  • 2.3. Courses that require this class as a prerequisite: CS 344

3. Communication

  • 3.1. Any email sent to the instructor or the TA mailer about this course must originate with an OSU supplied email account and contain the tag [CS271] at the beginning of the subject. Failure to comply with this will result in delayed (or possibly nonexistent) response to your email.

  • 3.2. Office hours will be held in person (See Office Hours page).

  • 3.3. You may post all course-related questions in the "general" channel on Discord so that the whole class may benefit from your conversation.

4. Technical Assistance

  • 4.1. If you experience computer difficulties, need help downloading a browser or plug-in, assistance logging into the course, or if you experience any errors or problems while in your course, contact the OSU Help Desk for assistance. You can call (541) 737-3474 (USA), email [email protected] or visit the OSU Computer Helpdesk online.

5. Learning Resources

  • 5.1. Electronic Textbook: Irvine, Kip R., Assembly Language for x86 Processors (8th ed.), Pearson Education. (ISBN 9780135381793)

    • 5.1.1. Note: I have selected the 8th edition of the textbook for our course because the 7th edition is no longer being published. However, if you have an existing copy of the 7th edition the content is very similar and it will work for this course. (You may access the 7th edition here)

6. Canvas and Discord

  • 6.1. This course will be delivered in person and managed by Canvas. You can also interact with your classmates and with your instructor through Discord. Within the course Canvas site you will access the learning materials, such as the syllabus, lecture slides, assignments, projects, and quizzes.

  • 6.2. Canvas is optimized for the most recent versions of most popular browsers. If your browser of choice is an out-of-date version, you should update for use with Canvas, especially for quizzes and weekly exercises. If you are having browser troubles, seek out the Technical Assistance described above.

  • 6.3. If your device has trouble dealing with Canvas (as some tablets do), make sure you have an alternative available for things like quizzes and weekly exercises. If you are having device troubles, seek out the Technical Assistance described above. Telling me the day after an exam has ended that you had browser issues on your smartphone/tablet is unlikely to get you what you want.

  • 6.4. When I have general announcements for the class I will post them on Canvas and Discord. It is your responsibility to keep up with announcements and messages posted on Canvas and Discord.

7. Course Learning Outcomes

  • 7.1. Access and interpret binary data stored in memory.

  • 7.2. Illustrate the Instruction Execution Cycle.

  • 7.3. Create and analyze well-modularized assembly language programs utilizing decision, repetition, and procedure structures.

  • 7.4. Utilize a debugger to identify and correct bugs in assembly language programs.

  • 7.5. Illustrate the system stack as it is used for procedure calls and parameter passing.

  • 7.6. Illustrate the primary components of a modern computer architecture, and explain their function.

8. Evaluation of Student Performance

  • 8.1. Weekly summaries 20% 10 in total, with each 6 hour time limit, take twice, open book

  • 8.2. Quizzes 10% 5 in total, with each 1 hour time limit, take once, open book

  • 8.3. Midterm 15% 1 hour and 50 minutes time limit during lecture time, closed book

  • 8.4. Final project 20% Due during the last week of the course

  • 8.5. Assignment 35% Programming assignments

  • 8.6. The grading scale is as follows:

Letter Grade A A- B+ B B- C+ C C- D+ D D- F
% 93+ 92-90 89-87 86-83 82-80 79-77 76-73 72-70 69-67 66-63 62-60 59-

REMINDER: A passing grade for core classes in CS is a C or above. A C-, 72 or below, is not a passing grade for CS/ECE majors.

  • 8.7. Other important grading criteria:

    • 8.7.1. All programming projects must be submitted in order to pass the course. Students missing programming projects at the end of the term will receive an F grade.

    • 8.7.2. Students who do not submit the final project will automatically receive an F grade.

    • 8.7.3. I do round, so if you wind up with a grade average of 89.45%, I will round it up to 89.5%, and then 90%. You should expect a A- in the class :)

    • 8.7.4. The intention is to give you a lot of practice. By getting the practice, you perform better and more quickly on the exams (and the programming projects).

9. Weekly Summaries

  • 9.1. Weekly summaries are open book, open note, open Internet, and open lecture. You can use just about anything (including classmates) while taking a weekly summary. The weekly summaries will primarily (but not exclusively) cover assigned reading material and lectures from the week.

  • 9.2. Weekly summaries have a time limit of 6 hours (so I don’t end up with partial tests).

  • 9.3. You will be able to take each weekly summary at most twice. The recorded score will be the higher of the two scores you receive.

  • 9.4. Weekly summaries cannot be taken after the due date.

  • 9.5. Weekly summaries are present to help you pull together the material from the week. This will help you with the quizzes, the exam, and (importantly) the programming projects.

10.Quizzes

  • 10.1. There are 5 quizzes in this course, including the syllabus quiz. Quizzes are open book, open note, and open Internet. You can use just about anything except your fellow students while taking a quiz. Quizzes are not proctored. You will be able to take each quiz once (except for the syllabus quiz). Quizzes cannot be taken after the due date.

  • 10.2. Quizzes become available on Thursday (after lecture) of the week they are due.

  • 10.3. All quizzes are timed. You won’t be able to exceed the time limit on the quizzes. It is not the intent of the quizzes to be time pressured, but to ensure that you can pace yourself and do the work without relying excessively on external help.

11.Midterm Exam

  • 11.1. The Midterm is close-friends, close-book, close-notes, and close-internet.

  • 11.2. You are allowed to use a calculator, and scratch paper.

  • 11.3. You are not allowed to take anything else into an exam.

  • 11.4. Exams have an assigned time (during lecture).

  • 11.5. It is my experience that most students use the entire lecture time for exams. The better you prepare for the midterm, the easier it will be for you to complete the exam within the allotted time.

  • 11.6. Makeup Exams

    • 11.6.1. Makeup exams will be given only for missed exams excused in well in advance by the instructor. Excused absences will not be given for airline reservations, routine illness (colds, flu, stomach aches), or other common ailments. Excused absences will generally not be given after the absence has occurred, except under very unusual circumstances.
  • 11.7. Exam Time Limits

    • 11.7.1. Exams in this class are timed.

12.Incompletes

  • 12.1. Incomplete (I) grades will be granted only in emergency cases (usually only for a death in the family, major illness or injury, or birth of your child), and only if the student has a passing score at the time of the request. If you are having any difficulty that might prevent you completing the coursework, please don’t wait until the end of the term… let me know right away.

  • 12.2. Completion of an incomplete (I) grade will require additional work from you. You won’t simply have an opportunity to do the work late; you’ll do more, possibly a lot more.

  • 12.3. I do not know any instructors who are fans of incompletes.

13.Homework (aka Programming Projects)

  • 13.1. The programming projects (homework) are a significant portion of this class and are the most common place for students to struggle. Several things about this class may be new to you.

    • 13.1.1. You may not have used Visual Studio before.

    • 13.1.2. Intel x86 Assembler code will be new.

    • 13.1.3. Programming at the assembler level is very different from using higher level languages.

    • 13.1.4. Stepping through the assembler code in the debugger will be new.

  • 13.2. All programming projects must be submitted by 11:59pm on the due date to Canvas.

  • 13.3. Late Projects have exactly two (2) days from the due date, no more, to be submitted. Since programming assignments are normally due on a Sunday, 2 days late makes that Tuesday. Late work is penalized 15% per day. Any programming project submitted more than 2 days after the due date will automatically receive a grade of zero (0). Don’t make the mistake of submitting your assignment late just trying and get the last few points by making it perfect. Perfection is the enemy of done. You want to be done.

  • 13.4. You have the right to make use of two grace days for submission of programming projects, used in increments of one day. The grace days allow you to have an un-penalized late assignment by up to two days or 2 assignments up to 1 day each.

    • 13.4.1. The use of grace days does not extend the last day on which you can submit an assignment to be graded, it is still a maximum of 2 days past the assignment due date.

    • 13.4.2. Grace days don’t change the assignment due date, they only change deductions for late. If you use 2 grace days and submit the assignment 3 days late, you’ve used your grace days and received a 0 on the assignment.

    • 13.4.3. I encourage you to not use up your grace days early in the term. Programming assignments get harder as the as the term progresses. You’d hate to waste grace days on early and easy assignments when the assignments get harder. Start your programming assignments as soon as possible. Do not wait until the last weekend to begin them.

    • 13.4.4. Don’t be lulled into over-confidence from early assignments only to be surprised by later assignments. Watching the clock tick past midnight for an assignment that feels far from working is not enjoyable. It causes stress, and stress is bad.

  • 13.5. All source files (.asm files), must include a comment block at the top that contains the following information. Neglecting this information will result in a point deduction. It is easy to do, so please just do it.

    • 13.5.1. Your name.

    • 13.5.2. Your OSU email address.

    • 13.5.3. The class number, and section (CS271-001).

    • 13.5.4. The assignment number.

    • 13.5.5. Assignment due date.

  • 13.6. The programming projects are designed to not build on each other. This is so that you can limit losses on one assignment and move on to the next one. You can overcome a poor grade on one assignment and still do well in the class. Do not allow struggling on one programming assignment to cause you to be late on all programming assignments.

  • 13.7. Don’t miss submitting a programming assignment. You are much better off to submit a partially functional assignment than to not submit anything for an assignment. As stated above, you must submit all programming projects for the class in order to pass the class.

  • 13.8. Your programming assignments must run in Visual Studio to be graded. If your assignment does not run in Visual Studio, then you will get a zero for a grade. Running under some other assembler or emulator in addition to VS is fine, but it must still run under Visual Studio.

  • 13.9. You must submit all your assignments through Canvas.

    • 13.9.1. Submit your work for each assignment as a single asm file through Canvas. You should not need to submit any additional files for a programming assignment. If you use external library other than the Irvine32 library your code will fail to assemble and link in the standard Visual Studio environment that we use to grade the assignment. That means you will be disappointed with your grade. We expect you to make use of the Irvine32 library and no other libraries in your code. If you need to comment on your code, place your comments into the asm file.

    • 13.9.2. You can submit your assignments more than once through Canvas. Each will be time stamped. We will grade only the last one submitted.

  • 13.10. All programs must be done individually unless specifically allowed to work in groups. The homework programming projects are not group projects. You must do your own programming projects. You may share snippets of code for assistance but do not share entire source files. You may share pseudo code and ideas about how to solve or approach problems, but write your own code. If you are getting odd assembler messages, you can share the snippet of code that is producing the message; you don’t need to share the entire file.

    • 13.10.1. There are some very good tools for detecting when students are copying code from each other. I have used those tools. I have found students who copied code. No one enjoyed it, and I’m sick of failing students for it. Programs must be done individually.

    • 13.10.2. Copying code is a violation of the student conduct policy. If you are caught copying code from others, you will receive a grade of 0 on the assignment. Even if the code comes from a previous student’s work, it is still copying.

    • 13.10.3. We reserve the right to ask you to explain a complicated piece of code. If you cannot explain your own code to us, you will receive a grade of 0 on the assignment and I will submit you for a student conduct violation.

  • 13.11. If you are struggling on a programming assignment, the first thing you should do is make sure you have read the assigned readings for the week and prior weeks and watched the lectures (review the notes you’ve taken).

    • 13.11.1. The book has many excellent descriptions and examples of the topics covered in the programming assignments.

    • 13.11.2. The lectures are very often additional examples of those same topics.

    • 13.11.3. Sending your entire source code to the instructor or TA with a note saying “Something is wrong, can you fix it?” is unlikely going to get you the response you want. The instructor and TA are not debuggers.

    • 13.11.4. Run the program in the Visual Studio debugger yourself. The way to get better at debugging code is to use the debugger.

    • 13.11.5. Make sure you read the entire assignment. There can be some really useful information in all that text.

  • 13.12. We will be using Visual Studio as the development environment for this class, specifically MASM (Microsoft Macro Assembler). You can use most versions of Visual Studio after 2010, but I recommend Enterprise 2019. If you use some other assembler (e.g. NASM), your code likely will not assemble and you’ll lose most/all of your points. If you don’t already have Visual Studio, you can get it (free for student use) through Microsoft Azure (See the Setup Instructions).

  • 13.13. Feedback for your programming assignments will be given through Canvas. Once a programming assignment is graded, the rubric results will be available from the Grades tab in Canvas (the icon resembles a clipboard). Please take the time to read this. It is one of the important ways to learn in the class.

  • 13.14. This is important feedback. You don’t want to repeat this sort of error on following assignments. The rubric will also identify by whom you assignment was graded, making it much easier to contact her/him if you have questions about your grade.

  • 13.15. If you are unable to locate the feedback on your assignments, ask a TA to guide you to it.

  • 13.16. It is your responsibility to keep up with your assignment/exam/quiz/summary grades and initiate contact if you have a question.

14.Keys to Success

  • 14.1. This class requires a keen attention to detail. Particularly when you are working with an unfamiliar x86 instruction (and they all start as unfamiliar). Some of the keys to success are:

    • 14.1.1. Attend the lectures and take notes.

    • 14.1.2. Complete the self-check exercises (do this after the lecture, not during!)

    • 14.1.3. Read the assigned material (and take notes)

    • 14.1.4. Take the weekly summaries (more than once if it helps).

    • 14.1.5. Start the programming assignments early and complete them on time.

    • 14.1.6. Read Appendix B (in the textbook), frequently.

    • 14.1.7. Don’t get discouraged if your code initially does not execute correctly; many problems are simple to fix and it just takes time to isolate and identify the problem.

    • 14.1.8. Although mentioned in the course lectures, this cannot be emphasized enough, learn to use the Visual Studio debugger. It’s much faster to troubleshoot a problem while using the debugger, so take the time to understand how it works.

    • 14.1.9. Assemble your code often. Writing a few lines of code and then double-check it to make sure that it assembles correctly. This is especially important when you are first learning to program in assembly. By assembling your code frequently you can locate mistakes more quickly and have a better idea of where a problem originates.

  • 14.2. When struggling with a homework assignment:

    • 14.2.1. Review the lecture slides

    • 14.2.2. Create tests to isolate the problem.

    • 14.2.3. Use the debugger (while running the test cases)

    • 14.2.4. Look in the book

    • 14.2.5. Look online

    • 14.2.6. Look for/create a reply in Discord.

    • 14.2.7. Email the instructor and/or TA

  • 14.3. The best key to success in this class is: keep up. Don't let yourself fall behind.

  • 14.4. Another valuable asset to have in this class (and the entire program) is a study group. I recommend posting on Discord to get connected with some people near you, or at least who have similar schedules.

  • 14.5. One of the skills you’ll develop in this class is how to look for things in the resources listed above. You’ll spend some quality time with your favorite Internet search engine. You’ll learn how to wade through the chaff of Stack Overflow to find the relevant example from the hundreds of search hits. You’ll probably be able to remember the page number of certain examples from the textbook. Some of this won’t be fun, but you’ll learn that you can learn it.

  • 14.6. Make sure the code you submit actually assembles and links. If your code does not assemble (using MASM in Visual Studio), you will receive a zero (0) for that portion of the programming project. I’m not going to try and guess what portions of your code may be correct if it does not assemble. If you are unable to get your program to assemble correctly, comment out the portion of the code that causes the assembly process to fail. You are better off getting partial credit on a programming project than getting a zero for code that does not assemble.

15.Statement Regarding Students with Disabilities

  • 15.1. Accommodations for students with disabilities are determined and approved by Disability Access Services (DAS). If you, as a student, believe you are eligible for accommodations but have not obtained approval please contact DAS immediately at 541-737-4098 or at http://ds.oregonstate.edu. DAS notifies students and faculty members of approved academic accommodations and coordinates implementation of those accommodations. While not required, students and faculty members are encouraged to discuss details of the implementation of individual accommodations.

16.Expectations for Student Conduct

17.Academic Honesty

  • 17.1. Students are expected to do their own work. Individuals are expected to be the sole source of their code. We use software designed to find similarities between programs. Each individual’s program is compared to every other individual’s program to find similarities. Please, do you own work.

  • 17.2. Programming assignments present unique challenges for graders. It is often difficult for a grader to distinguish between legitimate help and plagiarism. Therefore, it is sometimes possible to get a good score without really understanding what you have handed in. Understanding is the real point of the class.

  • 17.3. Honesty is absolutely essential in order for learning to take place. It will form the foundation of your professional integrity in your career.

  • 17.4. If you are having trouble with an assignment, you are encouraged to discuss it with other students, TAs, the instructor, or anyone else, but don't just have someone else tell you how to solve the problem! If other students ask you for help, don't just let them copy your work! It is possible to discuss problems without plagiarizing. One of the best methods of debugging is to explain your solution to someone else.

  • 17.5. If you get help from, give help to, or work together with someone, you must (in the program header block) list that person as a collaborator and describe the help. Programs that are very similar will be subjected to review unless both programs indicate that they were produced collaboratively. We use plagiarism-detection software to check your code against the code from other students. It is quite sophisticated and can easily see through variable name changes and formatting differences.

  • 17.6. If you get help from printed or online sources, you must cite your references. Failure to do this results in me filing an Academic Dishonesty form, and you getting a zero on the assignment. You do not need to cite the Irvine textbook or library examples.

  • 17.7. If you are found in violation of any of the above policies, whether you are the giver or receiver of help, you will receive a zero on the assignment. The academic dishonesty charge will be documented and sent to your school's dean and the Office of Student Conduct. The first offense results in a warning; the second offense results in an academic dishonesty charge on your transcript, a disciplinary hearing, and possible expulsion.

  • 17.8. The bottom line is: Each student is expected to understand all aspects of the programs s/he submits for credit.

18.Academic Integrity

  • 18.1. Students are expected to comply with all regulations pertaining to academic honesty. For further information, visit the OSU informational page, or contact the office of Student Conduct and Community Standards at 541-737-3656.

    • 18.1.1. OAR 576-015-0020 (2) Academic or Scholarly Dishonesty: Academic or Scholarly Dishonesty is defined as an act of deception in which a Student seeks to claim credit for the work or effort of another person, or uses unauthorized materials or fabricated information in any academic work or research, either through the Student's own efforts or the efforts of another.
  • 18.2. It includes:

    • 18.2.1. CHEATING - use or attempted use of unauthorized materials, information or study aids, or an act of deceit by which a Student attempts to misrepresent mastery of academic effort or information. This includes but is not limited to unauthorized copying or collaboration on a test or assignment, using prohibited materials and texts, any misuse of an electronic device, or using any deceptive means to gain academic credit.

    • 18.2.2. FABRICATION - falsification or invention of any information including but not limited to falsifying research, inventing or exaggerating data, or listing incorrect or fictitious references.

    • 18.2.3. ASSISTING - helping another commit an act of academic dishonesty. This includes but is not limited to paying or bribing someone to acquire a test or assignment, changing someone's grades or academic records, taking a test/doing an assignment for someone else by any means, including misuse of an electronic device. It is a violation of Oregon state law to create and offer to sell part or all of an educational assignment to another person (ORS 165.114).

    • 18.2.4. TAMPERING - altering or interfering with evaluation instruments or documents.

    • 18.2.5. PLAGIARISM - representing the words or ideas of another person or presenting someone else's words, ideas, artistry or data as one's own, or using one's own previously submitted work. Plagiarism includes but is not limited to copying another person's work (including unpublished material) without appropriate referencing, presenting someone else's opinions and theories as one's own, or working jointly on a project and then submitting it as one's own.

  • 18.3. Academic Dishonesty cases are handled initially by the academic units, following the process outlined in the University's Academic Dishonesty Report Form, and will also be referred to SCCS for action under these rules.

19. Reach Out for Success

  • 19.1. University students encounter setbacks from time to time. If you encounter difficulties and need assistance, it’s important to reach out. Consider discussing the situation with an instructor or academic advisor. Learn about resources that assist with wellness and academic success at oregonstate.edu/ReachOut. If you are in immediate crisis, please contact the Crisis Text Line by texting OREGON to 741-741 or call the National Suicide Prevention Lifeline at 1-800-273-TALK (8255)

Pinned Loading

  1. finalProject finalProject Public archive

    Final Project - Obfuscation Algorithm

    Assembly

Repositories

Showing 7 of 7 repositories
  • .github Public archive
    CS-271-nilsstreedain/.github’s past year of commit activity
    0 0 0 0 Updated Mar 29, 2022
  • finalProject Public archive

    Final Project - Obfuscation Algorithm

    CS-271-nilsstreedain/finalProject’s past year of commit activity
    Assembly 0 0 0 0 Updated Mar 14, 2022
  • program5 Public archive

    Program 5 - Sorting Random Integers

    CS-271-nilsstreedain/program5’s past year of commit activity
    Assembly 0 0 0 0 Updated Mar 14, 2022
  • program4 Public archive

    Program 4 - Composite Number Spreadsheet

    CS-271-nilsstreedain/program4’s past year of commit activity
    Assembly 0 0 0 0 Updated Mar 14, 2022
  • program3 Public archive

    Program 3 - Integer Accumulator

    CS-271-nilsstreedain/program3’s past year of commit activity
    Assembly 0 0 0 0 Updated Mar 14, 2022
  • program2 Public archive

    Program 2 - Fibonacci Numbers

    CS-271-nilsstreedain/program2’s past year of commit activity
    Assembly 0 0 0 0 Updated Mar 14, 2022
  • program1 Public archive

    Program 1 - Elementary Arithmetic

    CS-271-nilsstreedain/program1’s past year of commit activity
    Assembly 0 0 0 0 Updated Mar 14, 2022

Top languages

Loading…

Most used topics

Loading…