Syllabus
Course Objectives
This course is intended to cover topics on the abstraction hierarchy ranging from a step above silicon to a step below languages you are likely to program. At the end of it, you will be able to
- Read and write C and (to a lesser extent) assembly
- Understand how C become assembly and how assembly is run by a computer
- Describe how both simple and complicated data is stored in memory
- Discuss legal, ethical, and security issues related to these topics
- Use basic command-line development tools
Logistics
Instructors
Robbie Hott and Xinyao Yi
- Robbie Hott
- Email: jrhott_at_virginia.edu
- Office: Rice 210
- Office Hours:
- TBD
- Xinyao Yi
- Email: mrq9gz_at_virginia.edu
- Office: Rice 310
- Office Hours:
- TBD
Getting Connected and Getting Help
For most communication, Piazza is preferred to email. Questions about course content, labs, homework, and general exam questions are best suited for Piazza. All of us (students and course staff) will be keeping an eye on Piazza – if you see a question you know the answer to, please chime in!
For more immediate concerns, direct or personal issues, please email our course ticketing system at cs2130@cshelpdesk.atlassian.net. The instructors and senior course staff will be monitoring this system to ensure that you get answers quickly.
If you need to email a professor directly, include “CSO1” at the beginning of the subject line to help us prioritize your email. However, do not email both us and the ticketing system!
Please Note: Our TAs are students too, with duties and work outside of their TAing. Please do not ask them to act as your TA except at the scheduled on-the-clock times they have listed as their office hours and lab time. They are also kind people; please don’t put them in the position of having to say no or (worse) being nice to you at the expense of their own schooling.
Course Meetings
Mondays, Wednesdays, Fridays:
- 11am @ Rice 130 (Section 002)
- 1pm @ Wilson 402 (Section 001)
Practicing and Measuring Learning
Some tasks are designed to help you learn and practice what you learned enough that the concepts solidify in your mind. Others are designed to measure what you have learned. The primary kinds of tasks are:
Lab
- Labs are primarily learning exercises and most credit is for participation, but learning only occurs if sufficient progress is made so each lab has milestones that need to be reached for full credit.
- We expect everyone to be ill, need to travel, or otherwise miss one lab, which will be excused without the need to provide documentation of your situation. To be excused for more than one lab, more information on why each was missed is needed. You will still need to check off an excused lab with a TA during office hours for credit (see below).
Homework
- Each homework is an individual assignment unless otherwise announced.
- Some homework will be programming assignments; others will be puzzles, worksheets, or other kinds of activities.
Weekly Quizzes
- We will have weekly quizzes, administered online.
- Your lowest quiz score is dropped.
Exams
- Exams will be in-class, written, and must be taken in person.
- There will be 3 exams throughout the semester (two midterms and one final exam).
Readings
Primary readings are write-ups posted on this website and on the schedule. You may also search the course site using the search box above. We may also link to external articles when appropriate. You should complete the readings before coming to class that day, as we will be discussing or using that material in lecture.
If you desire a different take on the same material, the textbook Introduction to Computer Systems: From Bits and Gate to C/C++ & Beyond by Yale Patt and Sanjay Patel contains all of the major topics we’ll cover, with a different presentation than we’ll cover them.
Coding
Inspirational Quote
“If you really want to understand something, the best way is to try and explain it to someone else. That forces you to sort it out in your own mind. And the more slow and dim-witted your pupil, the more you have to break things down into more and more simple ideas. And that’s really the essence of programming. By the time you’ve sorted out a complicated idea into little steps that even a stupid machine can deal with, you’ve certainly learned something about it yourself.”
-Douglas Adams
This course will teach you the basics of x86-64 assembly and quite a bit of C. There will be multiple assignments dealing with each.
Estimating how long it will take someone to complete a coding assignment is always difficult. The target difficulty is 5–10 hours of focused effort each week.
Editors
In this course, we’ll primarily be using the command line interface, which you will set up and begin to get familiar with in the first lab. Compiling and running of code will primarily be done on the CS department servers (portal). While we may provide instructions on how to sync files, such as with git or scp, we expect everyone to become familiar with the shell as we progress through the semester.
Later in the semester, we’ll provide information on using VSCode to connect and edit code on the portal. However, one goal of this course is to help you become more familiar with the command line and command-line editing tools in case you find yourself needing to SSH to a server to tweak something!
You may NOT use online compilers (or editors) for this course. One of the learning goals of the course is to be familiar with the shell, and you will likely use SSH and the shell in future courses and later in your career. Using an online compiler will result in a 0 on the assignment in which it was used.
Grading
Points per Activity Type
Points are awarded per task. Different tasks and different task types are given different weight, as outlined below.
Task | Weight |
---|---|
Quizzes | 5% |
Assignments | 30% |
Lab | 15% |
Midterms | 15% each |
Final Exam | 20% |
Grading Scale
We will use the standard grading scheme for this course, with an additional lower bound for exam averages. Your overall average and exam average must both meet a threshold to achieve that particular letter grade.
Letter Grade | Overall Average Lower Bound | and Exam Average Lower Bound |
---|---|---|
A+ | 98.0 | 78.0 |
A | 93.0 | 73.0 |
A- | 90.0 | 70.0 |
B+ | 87.0 | 67.0 |
B | 83.0 | 63.0 |
B- | 80.0 | 60.0 |
C+ | 77.0 | 57.0 |
C | 73.0 | 53.0 |
C- | 70.0 | 50.0 |
D+ | 67.0 | 47.0 |
D | 63.0 | 43.0 |
D- | 60.0 | 40.0 |
F | 0 | 0 |
For example, if a student earns a 70% overall average but the average of their exam scores is 47%, then they their letter grade is a D+. Conversely, if a student earns a 100% exam score with a 70% overall average, their final letter grade is a C-.
Calculating Exam Average
The exam average is calculated based on the weights of the midterms and final exam. Therefore, to calculate your exam average (out of 100%), you should compute:
- raw_average = midterm_1 * 0.15 + midterm_2 * 0.15 + final * 0.2
- exam_average = raw_average * 2
Why do we have this policy?
Although midterms and the final exam account for only 50% of your overall grade, we feel that they are an important and accurate representation of your knowledge in the class. However, we also did not want to increase the overall weight of the exam scores in the overall grade calculation, which may increase stress around exam times. Therefore, we implemented this policy to balance out the calculation of exam and assignment scores into a better-represented final letter grade.
Late Assignments
Weekly Quizzes
Quiz solutions are released shortly after the quiz closes, and thus quizzes cannot be taken late. However, since we know that life happens, your lowest quiz score is dropped.
Homework Assignments
Since we understand that sometimes life happens, assignments may be submitted up to 48 hours late, with permission, with no grade penalty. However, the following policies apply to late submission:
- Requests must be submitted online using our Extension Request Form (coming soon)
- Requests must include a valid justification (see examples of what counts and what doesn’t below). Note: let us know why, but we don’t need a doctor’s note or a picture of your broken thumb!
- Extension requests must be made 24 hours before the deadline. Requests made less than 24 hours before the deadline must also include a valid reason why the extension request could not be requested earlier and may not be approved before the deadline.
- Significant work must be submitted in the form to justify the extension
Here are non-exhaustive lists of pre-approved and pre-declined reasons for an extension.
The following reasons are NOT sufficient justification for an extension:
- Congestion of assignments/exams/projects/etc. with other courses
- Confusion on course material
- Mild illness
- Job Interviews (tasks are released with sufficient lead time that you can plan around it)
- Club activities or non-varsity sports
- Non-working code
- Most other foreseeable circumstances
The following reasons would be acceptable justification for an extension:
- SDAC accommodation
- Severe Illness
- Personal or family tragedy
- Legal obligations
- Varsity Athletics Competitions
- Religious Observances
In general, there will be no extensions beyond the 48-hour grace period. If extensions beyond the 48 hours grace period are needed (for example due to justified travel), please contact course staff (using the ticketing system) before the deadline to discuss why and if other accommodations are also needed.
Exams
Exams may not be taken late (or early) without special-case permission.
Labs
We expect everyone to participate fully in lab and lab activities.
- No early checkoff
- We hope you will begin labs during lab time, with the guidance of TAs and help of fellow students during the initial stages of the lab. We also want to have the freedom to alter the labs before they begin and want to limit how many labs TAs have to be ready to check off at any one time. For these reasons we do not permit early lab check-off.
- In-lab check-off
- Checking off a lab (meeting the milestones) during lab time gets 100%. We anticipate that labs can be completed within the 75-minute lab time.
- In-lab unfinished work
- If you participated in lab but didn’t quite finish, you get 50% at the end of lab. This can be changed to 100% by checking off the completed lab (meeting the milestones) with a TA during office hours before the start of the next week’s lab.
- Check-off with excused absence
- If you have an excused absence (such as illness or university-sponsored travel), you can get 100% by checking off with a TA during office hours after the lab ends and before the start of next week’s lab (or within a week of feeling better, ending quarantine, or returning from travel).
In all cases, TAs may award lesser credit if your work is incorrect.
TAs will prioritize helping students during the first part of lab. If for some reason you come to lab with it already completed, you’ll be checked off after the TAs have helped everyone else begin to make progress.
Professionalism
In this course, there will be a focus on working well together and learning. Students and staff are all expected to treat each other with respect. This includes, but certainly is not limited to:
- Misuse of class platforms (Piazza, Jira, etc.)
- Disrespectful language or actions to course staff or other students
- Promptness for all deadlines and class meetings
- Quality work
Behave professionally.
Never abuse anyone, including the emotional abuse of blaming others for your mistakes. Kindness is more important than correctness.
Let our TAs be students when they are not on the clock as TAs.
Consequences of Unprofessional Behavior: Unprofessional behavior, such as misbehavior towards instructors, classmates, or TAs, or causing disctractions for other students, can be held against a student when final grades are calculated. The penalty is up to 20% of the final course grade.
Honesty
We always hope everyone will behave honestly. We know we all are tempted to do what we ought not; if you do something you regret, the sooner you tell us the sooner (and more leniently) we can correct it.
No plagiarism (nor anything like it)
You must cite any and every source you consult, other than those explicitly provided by the course itself. Talked to a friend, saw an interesting video, consulted a website, had a tutor? Tell us! Put it in a comment in your code or quiz.
Write your own code
You must write your own code. Not just type it (though you need to do that too): compose it yourself, as your own original work. Don’t ask an LLM (i.e., Claude, ChatGPT, Llama, etc) to write your code; you’ll gain a higher understanding through the process of creating it yourself.
We ask you to program to help you learn the content covered in the programming assignment and to help you demonstrate to us your knowledge. This is unlike industry, where you program to create a product. Because it is your mind we are looking to help develop and measure, it is your mind that must do all the work. Working with others is not OK.
Our TAs have been trained to provide help that does not undermine the primary purpose of helping you learn. Other people (tutors, fellow students, etc) have not. As such, you should not give help to your peers nor accept help from others besides course staff.
Understand what you submit
Your understanding is the primary deliverable of our assignments, not the code itself. As such, we may ask you to explain aspects of a solution you turn in, and may dock points if it appears you simply copied someone else’s ideas (or just guessed a lot of things until one worked) without understanding them.
Do NOT share your code
You should not share any code from an individual assignment. That means you should not push it to GitHub (or any other site), send a copy to a friend who “just needs help with the last part,” turning your screen to your neighbor, coding up solutions together, etc. We know that sometimes you have good intentions–and we’ve seen it before–but it may not always go the way you think, so please do NOT share your code with anyone.
No help on quizzes or exams
It would probably go without saying if we didn’t say it, but no assistance may be given or received on any supervised evaluation or online quiz unless specifically announced otherwise by the professor (or another proctor of the evaluation).
Consequences of Dishonesty
If we believe you have acted dishonestly, including sharing or receiving code, we will communicate this fact to you and propose a penalty. If you have information we lack, please share that with us; we may thereafter change our belief and/or proposed penalty. Penalties may be up to and including a failing grade (F) in the course, independent of and in addition to the operations of the Honor Code.
- A typical first offense penalty: A zero (0) on the assignment in which the dishonesty or plagiarism occurred
- A typical second or later offense penalty: an automatic F in the course.
If the case is particularly egregious and beyond our comfort level handling in-course, we will refer the case to the University Honor System.
Generative AI (LLMs, Copilot, ChatGPT, Claude, etc)
Generative AI is the way of the future, especially in computing. While we encourage embracing it, as your instructors and as computer scientists, we believe that a firm foundation in computer science is necessary for efficient and accurate use of these emerging tools. Namely, expert AI use requires expertise.
Restrictions
Therefore, to help build this firm foundation while also encouraging the use of AI, we have decided to implement the following restrictions around the use of AI in CS 2130 this semester:
- You may not use generative AI to generate solutions to the homework assignments. These assignments are designed to practice and experience the material we’re covering in this class to help build a foundation of knowledge for the future. While these assignments may be difficult, that “struggle” is a good experience to build problem-solving skills and a foundation for using these tools in the future.
- You may use generative AI to: summarize course material, help you study the course content, provide context around the material we’re discussing, generate practice problems to help study and prepare, check the work of any practice problems you generate, aid in debugging your solutions (as long as the AI does not create a solution for you), and clean up your (own) wording. Note: if you use generative AI in connection with any assignment in the course, you must cite that usage as noted below.
If you are ever in doubt as to whether a use of generative AI is acceptable or not, please post on Piazza or send an email to the course ticketing system. We’ll respond as quickly as possible as well as update this section of the syllabus with more details.
Available Models
Two different Generative AI models are available for you to use during this course (within the restrictions above).
- Our Office Hour queuing system (ASCI) has a built-in local LLM model. It has access to our course material, including slides when available, so it will be able to provide direct answers with references to specific course documents. Please note that it takes a few seconds to respond as it is running on a server in the basement of Rice Hall.
- UVA provides access to Microsoft Copilot through Office 365. With UVA’s license agreement, your interactions are not used to train the model, providing some privacy guarantees over other paid models.
Risks of Generative AI
Generative AI tools can be powerful learning aids, but they also come with important limitations and risks. Remember that generative AI can only generate content from their training data, which is out of date, and they may provide incorrect or false information. Therefore, please keep the following in mind:
- Outdated or inaccurate content: AI systems are trained on past data, so their knowledge may be out of date. They may also produce responses that sound confident but are factually incorrect.
- Plagiarism and copyright concerns: AI models are trained on pre-existing material, which may include copyrighted content. Using AI output without proper citation may lead to plagiarism or copyright violations.
- Not designed for accuracy: The goal of these tools is to generate human-like text, not necessarily reliable or correct information. Submissions based solely on AI output may therefore be inaccurate or incorrect.
Ultimately, you are responsible–not the AI–for ensuring that your work is accurate, original, and consistent with the standards of this course. Please carefully evaluate AI responses against course material and, whenever in doubt, don’t hesitate to visit a TA or instructor during office hours. We enjoy discussing the material with you!
Honesty and Generative AI Use
You must properly document and credit the generative AI tools themselves when your use is connected with any assignment in the course. Cite each tool you used, in the form shown below for Copilot. Note: you must include the name of the tool, the URL for the tool, and a brief description of how you used it in relation to the assignment.
Example Generative AI Citation
Microsoft Copilot (UVA licensed version). Accessed from https://copilot.microsoft.com. Generated practice problems similar to the homework assignment to get extra experience before starting on the actual problems. Used Copilot to check my work on the practice problems and provide feedback.
Failure to cite the use of the tool as a source is a serious violation of academic integrity. If you use generative AI tools to complete assignments in this course, in ways that we have not explicitly authorized, we will apply the course’s policies on academic integrity (listed above) appropriate to your specific case. In addition, you must be wary of unintentional plagiarism or fabrication of data. Please act with integrity, for the sake of both your personal character and your academic record.
Illness Policies
In this course, we will diligently follow all University regulations in effect at that time. If you’re not feeling well, for all our safety and health, please watch the virtual or recorded lecture–whether you might think it’s actually a cold or just seasonal allergies. We will ensure that staying home does not impact your grade compared to being in person, so that you can take the time you need to get better, quarantine, and/or isolate.
Life
Bad things happen. People forget things and make mistakes. Bad days coincide with due dates. etc.
If you believe that circumstances warrant an change in deadline, a second chance, or some other accommodation in order to more accurately synchronize grade with knowledge, come talk to your professor and we’ll resolve the situation as best we can.
Special Circumstances
It is our goal to create a learning experience that is as accessible as possible. If you anticipate any issues related to the format, materials, or requirements of this course, please meet with me outside of class so we can explore potential options. Students with disabilities may also wish to work with the Student Disability Access Center (SDAC) to discuss a range of options to removing barriers in this course, including official accommodations. We are fortunate to have an SDAC advisor, Courtney MacMasters, physically located in Engineering. You may email her at cmacmasters@virginia.edu to schedule an appointment. For general questions please visit the SDAC website: sdac.studenthealth.virginia.edu. If you have already been approved for accommodations through SDAC, please send me your accommodation letter and meet with me so we can develop an implementation plan together.
Since we are a large course, we ask that students with special circumstances let us know as soon as possible, preferably during the first week of class.
Religious Accommodations
It is the University’s long-standing policy and practice to reasonably accommodate students so that they do not experience an adverse academic consequence when sincerely held religious beliefs or observances conflict with academic requirements.
Students who wish to request academic accommodation for a religious observance should submit their request in writing to me as far in advance as possible. If you have questions or concerns about academic accommodations for religious observance or religious beliefs may contact the University’s Office for Equal Opportunity and Civil Rights (EOCR) at UVAEOCR@virginia.edu or 434-924-3200. Accommodations do not relieve you of the responsibility for completion of any part of the coursework missed as the result of a religious observance.
Safe Environment
The University of Virginia is dedicated to providing a safe and equitable learning environment for all students. If you or someone you know has been affected by power-based personal violence, more information can be found on the UVA Sexual Violence website that describes reporting options and resources available – www.virginia.edu/sexualviolence.
The same resources and options for individuals who experience sexual misconduct are available for discrimination, harassment, and retaliation. UVA prohibits discrimination and harassment based on age, color, disability, family medical or genetic information, gender identity or expression, marital status, military status, national or ethnic origin, political affiliation, pregnancy (including childbirth and related conditions), race, religion, sex, sexual orientation, veteran status. UVA policy also prohibits retaliation for reporting such behavior.
If you witness or are aware of someone who has experienced prohibited conduct, you are encouraged to submit a report to Just Report It (justreportit.virginia.edu) or contact EOCR, the office of Equal Opportunity and Civil Rights.
If you would prefer to disclose such conduct to a confidential resource where what you share is not reported to the University, you can turn to Counseling & Psychological Services (CAPS) and Women’s Center Counseling Staff and Confidential Advocates (for students of all genders).
As your professor and as a person, know that we care about you and your well-being and stand ready to provide support and resources as we can. As a faculty member, we are responsible employees, which means that we are required by University policy and federal law to report certain kinds of conduct that you report to me to the University’s Title IX Coordinator. The Title IX Coordinator’s job is to ensure that the reporting student receives the resources and support that they need, while also determining whether further action is necessary to ensure survivor safety and the safety of the University community.
Well-being
If you are feeling overwhelmed, stressed, or isolated, there are many individuals here who are ready and wanting to help. The Student Health Center offers Counseling and Psychological Services (CAPS) for all UVA students. Call 434-243-5150 (or 434-972-7004 for after hours and weekend crisis assistance) to get started and schedule an appointment. If you prefer to speak anonymously and confidentially over the phone, Madison House provides a HELP Line at any hour of any day: 434-295-8255.
Support for Your Career Development
Engaging in your career development is an important part of your student experience. For example, presenting at a research conference, attending an interview for a job or internship, or participating in an extern/shadowing experience are not only necessary steps on your path but are also invaluable lessons in and of themselves. We wish to encourage and support you in activities related to your career development. To that end, please notify us as far in advance as possible (at least one-week in advance of such an event) to arrange for appropriate accommodations.
Student Support Team
At UVA, you have many resources available to you when you experience academic or personal stress, and we understand that it’s hard to know where to go, especially for CS students as our undergraduates span both the College of Arts and Sciences (BACS) and SEAS (BSCS).
In addition to your professor, the Computer Science department has staff members located in Rice Hall who you can contact to help talk through your academic or personal challenges and get you connected to the right resources. You may reach out directly to either SJ Jimènez-Calhoun (smj4z@virginia.edu) or Sheri Grimes (prk2zq@virginia.edu), or visit during walk-in advising hours posted on the CS Advising Site. Please do not wait until the end of the semester to ask for help!
Learning
- Lisa Lampe, Assistant Dean for Undergraduate Affairs, ll4uu@virginia.edu
- Georgina Nembhard, Director of Student Success, gnembhard@virginia.edu
- Courtney MacMasters, Accessibility Specialist, cmacmasters@virginia.edu
- Free tutoring is available for many CS and Engineering classes
- More academic support programs around Grounds for a wide variety of other courses, too
Health and Wellbeing
You may schedule time with the CAPS counselors through Student Health. You are also urged to use TimelyCare for either scheduled or on-demand 24/7 mental health care. If you need immediate assistance, call (434) 243-5150 to speak with an on-call clinician.
Accommodations
Learn abou thte process of applying for Student Disability Access Center (SDAC) services, completing an online application, submitting documentation, undergoing a review, and attending an appointment to establish accommodations.
Community and Identity
The Center for Connection (The Connect) is a dedicated student space within UVA Engineering that fosters academic success and personal growth. Through its programs and initiatives, The Connect helps students strengthen their engineering identity while providing resources to help them thrive during their studies and beyond. Our work centers on three key areas: student belonging and development, academic support, and community programming grounded in intentional, data-driven strategies.
The Connect features an open study area, a flexible event space, and on-site staff who provide direct support and advising to students. It is part of the Office of Community, Opportunity, and Engagement.
Additional Notes
Syllabus Note: This syllabus is to be considered a reference document that may be adjusted throughout the course of the semester to address necessary changes. This syllabus can be changed at any time without notification; it is up to the student to monitor the website for news of any changes. Final authority on any decision in this course rests with the professor, not with this document.
Research: Your class work and related data might be used for research purposes. For example, we may use anonymized scores from student assignments to compare to other student performance data. Any student who wishes to opt out can contact the instructor or TA to do so after final grades have been issued. This has no impact on your grade in any manner.