Info Schedule Final Assignments Policies Canvas Ed

Final Exam

Online, 3 hours, Thu 5/13 9:00 AM - noon

The final will be short answer / multiple choice, and will be taken online in Gradescope.

You will have three hours to complete the exam. If you need to take the exam at a time other than officially scheduled, you must request a time change from the registrar (via TigerHub). We are very willing to work with you to accommodate alternate times. Once you begin the exam, you must complete it in one contiguous 3-hour session. Gradescope will display the time remaining - when time runs out, it will end the exam. (Your answers are autosaved as you enter them, though we don't recommend answering questions until the very last second...)


Rules

This will be a closed-book, closed-note exam, and "cheat sheets" are not allowed. During the exam you must not refer to the textbook, course materials, notes, or any information on the Internet, You may not compile or run any code on armlab or any other machine. The exam will emphasize application of concepts and not memorization, so you will be provided with information such as manual pages, C operator precedence tables, etc. if they are necessary.

You are not allowed to communicate with any other person, whether inside or outside the class. You may not send the exam problems to anyone, nor receive them from anyone, nor communicate any information about the problems or their topics. If you have technical issues or need to ask a clarifying question about the wording of some problem, please post a private message on Ed. Because students may be taking the exam late, please do not post any questions to Ed regarding topics that might be on the exam starting Thursday morning.

You will be required to type out and sign an honor code pledge that you did not use any unauthorized sources of information during the exam.


Topics

You will be responsible for material from the entire course, including the content of required readings, lectures, precepts, and assignments. All questions will assume the ArmLab/Linux/C/gcc217 environment unless otherwise stated. The second half of the course (since the midterm) will be emphasized.

Major topics include (topics since the midterm in blue):

  1. Number Systems
  2. C Programming
  3. Under the hood: language levels
    • High-level languages vs assembly language vs machine language
    • Von Neumann computer architecture, RAM, CPU, ALU, registers
    • Little-endian vs big-endian byte order
    • AARCH64 architecture: general-purpose and special registers
    • AARCH64 assembly language: directives, labels, load/store/manipulation instructions, control flow
    • Accessing variables in data, rodata, bss, and stack
    • Accessing array and struct variables; addressing modes
    • AARCH64 function call conventions: bl and ret instructions, the x30 register, arguments, return values
    • AARCH64 local variables: on stack vs in callee-saved registers
    • AARCH64 machine language: instruction formats, layout after assembly, layout after linking
  4. Programming techniques and tools

Questions from Previous Semesters

A good way to practice for the exam is to go over questions from previous COS 217 final exams. Be aware that both the content of the course and the format of the final do change over the years, so not all questions are guaranteed to be 100% relevant, or good practice for this year. If you have any questions about whether the content of a question would be fair game for this year, please ask on Ed.


Review and Q&A

There will be review and Q&A sessions scheduled in the days immediately after Dean's date:

The Q&A session on 5/11 will prioritize answering questions from lectures, with the remainder spent on working questions from the posted exams. The Q&A session on 5/12 will prioritize working the Fall 2020 exam and the Spring 2019 exam Q1 and Q3, with the remainder spent on working questions from the other posted exams.

Watch this space and Ed for any additional announcements.