Course Information
Professor
Jason Waterman
Coaching and Office Hours
Description
This course examines the hierarchical structure of computing systems, from logic design and hardware control through machine and assembly languages. Topics include the structure and workings of the central processor, instruction execution, memory and register organization, addressing schemes and caching. Our aim is to help you become a better software developer by teaching you the basic concepts underlying all computer systems. We want you to learn what really happens when your programs run, so that when things go wrong (as they often do) you will have the intellectual tools to solve the problem.
Prerequisites
- CMPU-102
- CMPU-145
Meeting Times
Class: Monday and Wednesday 1:30 PM to 2:45 PM in SP 309
Lab: Tuesday 3:10 PM to 5:10 PM in SP 309
Textbook
- Required: An Introduction to Assembly Programming with RISC-V
- Recommended: The C Programming Language, 2nd edition
Grading
Grades will be weighted as follows:
| Labs | 10% |
| Assignments | 10% |
| Quizzes | 5% |
| Exam 1 | 20%, 25%, or 30% |
| Exam 2 | 20%, 25%, or 30% |
| Final | 20%, 25%, or 30% |
The Exam/Final you do the best on will count for 30% of your overall grade. The Exam/Final you do the least well on will count for 20% of your overall grade. The quiz in the middle will count for 25% of your overall grade.
Note: The final is a regularly scheduled final held during finals period.
Attendance
I would really love to see you in each and every class. We’ll work on problems together during labs, and I will always leave time for questions during lecture. Our classes here at Vassar are small and coming to class is one of the best ways for you to learn the material. That being said, if you are not feeling well, please stay home and review recordings of the lectures posted online. I will make a best-effort attempt to record each lecture and post to the class website.
Electronic Devices in Class
Please turn off or put your phone on “do not disturb” mode in class. Many studies have found a mobile phone to be an impediment to learning in class. Phone use is a distraction to all members of the class — especially yourself. In addition, cognitive and behavioral scientists have found that electronic devices can erode ability to concentrate. Consider this class to be an oasis from your device. If you would like to use your laptop for taking notes in class you are welcome to do so, but please come and talk to me. The use of any electronic devices for non-class related purposes is not allowed.
Late Days
All assignments are due by the deadline stated on the assignment handout. You will receive a budget of five (5) late days for the course. These late days are provided to allow you to cope with most emergencies that prevent completing a lab on time, including computer problems, a cold, getting stuck at the airport, etc. Here is how late days work:
- Late days are applied automatically until you run out. However, no more than two (2) late days can be used on any one assignment.
- Late days work in 24 hour increments. If you use a late day, the new due date will be 24 hours from the original date.
- Late days can only be used on assignments, not quizzes, labs, or finals.
Late days are a tool to allow you to manage your time in the face of personal issues and to help smooth out burstiness in assignment due dates across classes. They are for when you are sick, when a short term emergency situation arises, when you have too many deadlines all at once, etc. Except for serious persistent personal issues (see below), you should not anticipate additional deadline leniency.
Dealing with Serious Persistent Personal Issues
I hope that everyone in this class will remain happy and healthy. But, if you have a serious persistent personal issue, such as being hospitalized for an extended period or needing to leave the country for a family matter, please talk to your class advisor in the dean of studies office as soon as possible. Such issues consistently affect one’s ability to succeed in all classes, rather than just CMPU-224, and the class advisors are equipped to coordinate plans for dealing with them. I will cooperate with such plans, but I cannot construct them independently of the class advisors.
Policy on the Use of AI and Large Language Models (LLMs)
In this course, thh primary objective is for you to develop your own computational thinking and problem-solving skills. The process of struggling with a problem, debugging code, and arriving at a solution is where true learning happens. Tools like ChatGPT, Google Gemini, GitHub Copilot, and other Large Language Models (LLMs) can be powerful aids, but their misuse can severely hinder your learning and constitutes a serious breach of academic integrity. I discourage the use of LLMs in this class but I do not explicitly forbid them.
The guiding principle of the policy is this: You may use AI tools to assist your learning, but not to do the work for you. You are responsible for every line of code and answer you submit.
Permitted Uses (Learning-Focused)
You may use AI assistants for the following purposes, provided you cite their use (see below):
- Conceptual Understanding: Asking for explanations of concepts, definitions, or the purpose of specific components.
- Example prompt: “Explain the RISC-V calling convention, specifically which registers are caller-saved vs. callee-saved.”
- Example prompt: “What is the difference between a mutex and a semaphore in the context of pthreads?”
- Example prompt: “Can you give me an analogy for mutual exclusion?”
- Syntax and Tooling Help: Getting help with assembly syntax or how to use development tools like GDB.
- Example prompt: “What is the syntax for the
lw(load word) instruction in RISC-V assembly?” - Example prompt: “What is the function signature for
pthread_create, and what does each argument do?”
- Example prompt: “What is the syntax for the
- Debugging Assistance (with caution): Using the tool to help identify errors in your code after you have made a significant effort to debug it yourself. You should not simply paste your code and ask the AI to “fix it.”
- Example prompt: “My RISC-V loop is executing one too many times. I’m using
bneto check the condition. What are common off-by-one errors I should look for in assembly loops?” - Example prompt: “I’m getting a deadlock when two threads try to acquire two different mutexes. What is a ’lock ordering’ strategy to prevent this?”
- Example prompt: “My RISC-V loop is executing one too many times. I’m using
Forbidden Uses (Integrity Violations)
The following uses are strictly prohibited and will be treated as academic dishonesty:
- Generating Assignment Code: Submitting any code that was generated by an AI tool. You may not provide an assignment prompt to an LLM and ask it to write the solution.
- Example of a forbidden prompt: “Write a recursive RISC-V function to calculate factorial.”
- Example of a forbidden prompt: “Give me C code that uses pthreads to parallelize a matrix multiplication.”
- Example of a forbidden prompt: “Write a simple TCP client in C using POSIX sockets that connects to a server and sends a message.”
- Writing Explanations or Reports: Generating prose for any part of your assignment, such as code comments,
READMEfiles, or analysis of your program’s performance. All written work must be your own. - Claiming AI-Generated Work as Your Own: Submitting any code, text, or ideas from an LLM without proper and explicit acknowledgement.
Mandatory Acknowledgement Requirement
If you use an AI tool in any of the permitted ways, you must include a specific acknowledgement at the top of your submission files.
Example Acknowledgement:
/*
* Student: [Your Name]
* Assignment: Lab 5 - Thread-safe Queue
*
* AI Usage Acknowledgement:
* I used Google Gemini to help with this assignment in the following ways:
* 1. I asked it to explain the concept of a "race condition" with a simple code example.
* 2. After my program was deadlocking, I asked for common causes of deadlocks
* involving two mutexes. It explained the problem of inconsistent lock ordering,
* which helped me find and fix the bug in my own code.
*/
The Golden Rule: If you find yourself copying and pasting code from an AI into your assignment, you are almost certainly violating this policy. If you are unsure whether your use of an AI tool is acceptable, ask the instructor or a Coach before you proceed.
Academic Integrity Policy
This course is designed to challenge you and help you develop critical skills in understanding how computers really work. The purpose of the lab and homework assignments isn’t just to get the answer, but for you to learn the underlying ideas and concepts in this course. Upholding academic honesty ensures that the work you submit is a true measure of your own understanding and effort.
This policy outlines the specific expectations for this class. It’s built on the principles of honesty, trust, fairness, and responsibility. We expect you to submit your own original work, properly credit the ideas of others, and understand the boundaries of acceptable collaboration. Please read the following guidelines carefully. Violating this policy can result in serious academic penalties, ranging from a zero on the assignment to failure of the course and referral to the university’s academic integrity office. If you’re ever unsure about what is permitted, or if you’re struggling with the material, please ask me for help.
Lab Assignments
Lab assignments are meant for you to practice and build skills. Most lab exercises are automatically graded, and you may submit your answers as many times as needed before the deadline until you get the correct answer. Collaboration on labs is permitted and encouraged. However, the work you submit must be your own and not copied from someone else.
Homework Assignments
Homework assignments must be the sole work of the student turning it in. If you need assistance on a homework assignment, feel free to ask me or the Coaches assigned to this course and please note the policy on the Use of AI and Large Language Models.
What is Cheating?
- Sharing code or other electronic files: either by copying, retyping, looking at, or supplying a copy of a file from this or a previous semester. Also not allowed is verbal or other description of one person’s code to another. Be sure to store your work in protected directories, and log off when you leave classroom or lab computers, to prevent others from copying your work without your explicit assistance.
- Sharing written assignments or exams: Looking at, copying, or supplying an assignment or exam.
- Using other’s code. Using code from this or previous offerings of CMPU 224, from other courses at Vassar or other institutions, or from any other non-224 source (e.g., software or code found on the Internet).
- Looking at other’s code. Although mentioned above, it bears repeating. Looking at other students’ code or allowing others to look at yours is cheating. This includes one person looking at code and describing it to another. There is no notion of looking “too much”, since no looking is allowed at all.
What is not Cheating?
- Clarifying ambiguities or vague points in class handouts or textbooks.
- Helping others use the computer systems, networks, compilers, debuggers, profilers, or other system facilities.
- Using code from the textbook or from the class web pages is always OK.
Title IX
If you (or someone you know) have experienced sexual harassment or sexual violence, including sexual assault, relationship violence, or stalking, know that you are not alone. Vassar has staff trained to support you in navigating campus life, accessing health and counseling services, providing academic and housing accommodations, and more. Vassar strongly encourages all community members to take action, seek support, and report incidents to the EOAA/Title IX Office at (845) 437-7924 or titleix@vassar.edu. For more information about confidential support on- and off-campus, https://offices.vassar.edu/savp/resources/.
Please be aware that faculty members must disclose information about suspected or alleged sexual harassment or other potential sexual misconduct to the EOAA/Title IX Office. When the EOAA /Title IX Office receives information, they will reach out to offer information about resources, rights, and procedural options. Response to this outreach and further participation with the EOAA / Title IX Office is voluntary. Meeting with EOAA / Title IX does not mean you must file a formal complaint or report to another entity, including law enforcement. This meeting can be for information and support only or to file a complaint and receive support.
Academic accommodations
I take accommodations very seriously, and I try to design the course with the ideal of “universal access” in mind. I believe that a course design that benefits students with atypical learning profiles benefits every student.
Academic accommodations are available for students who are registered with the Office of Accessibility and Educational Opportunity (AEO). Students in need of disability (ADA/504) accommodations should schedule an appointment with me early in the semester to discuss any accommodations for this course, which have been approved by the Office of Accessibility and Educational Opportunity, as indicated in your AEO accommodation letter.
Religious Observances During Class Times
Students who wish to request academic accommodations for a religious observance should email me no later than the end of the add period for Full-Term and First Six-Week courses. While requests can be made at any time, accommodations may be more limited if submitted after this period. If you have questions or concerns about your request, please contact the Office of Religious and Spiritual Life and Contemplative Practices or the Office of the Dean of Studies. Please note that accommodations do not exempt you from completing any coursework missed as a result of a religious observance.