Computer Systems and Programming (CS367)
Syllabus - Fall 2024
Course Overview
Course:
| CS 367 |
Credits:
| 4 |
Repetition:
| Limited to 3 Attempts (see AP. 1.3.4 in the Catalog) |
Modality:
| In-Person Lecture (Online Lectures only in Snow Days or Campus Shutdowns) |
Course Description:
CS367 provides an introduction to the field of Systems Programming.
This is an area of programming wherein the software written generally
provides services to other software.
Examples of Systems Programming are Operating Systems, Game Engines, Embedded Systems Programming, Industrial Automation, and Networking.
This course will prepare you for CS471 (Operating Systems), CS465
(Architecture), CS455 (Networking), and various other courses with
systems level programming.
Textbook
Required Textbook: "Computer Systems: A Programmer's Perspective (3rd ed.) by Randal Bryant and David O'Hallaron (Prentice Hall).
- Earlier editions will not work as they use a different Assembly Lanaguage (IA32 vs. x86-64)
- Do not get the Global Edition
- The sample problems and their answers are wrong in this version.
- Author's Personal warning about this: Errata
Course Outcomes
- Demonstrate understanding of data representation at machine
level, including binary numeric encodings, data structures, and Boolean
operations.
- Demonstrate understanding of program representation at the
machine level using assembly language, including control flow,
procedures, and file linking.
- Demonstrate practical techniques of system tools to understand low level behaviors of programs, including debuggers.
- Understanding of basic CPU design including circuits, pipelining, and digital logic.
- Demonstrate understanding memory concepts including virtual memory, caching, and dynamic memory layout.
- Demonstrate understanding of computer processes, including its lifecycle and communications with the system.
Prerequisites
- Grade of C or better in MATH 125 (Discrete Math), AND
- Grade of C or better in [CS 262 or CS 222] (C Programming), AND
- Grade of C or better in CS 110 (Essentials of Computer Science)
Topics for this Semester Will Include:
- Data and Number Representation
- Assembly Programming
- Processes and Signals
- Unix I/O
- CPU Architecture and Design
- Memory Management
- Linking and Loading
Sections
All sections are taught in-person.
i
Contact Information for all Professors and GTAs are on the Piazza Pinned Post @11
Lecture Sections: Prof. Kevin Andrea
Section |
Time |
Location |
003 |
T/Th 1:30pm - 2:45pm |
Horizon Hall 2009 |
004 |
T/Th 3:00pm - 4:15pm |
Horizon Hall 2009 |
Lecture Sections: Prof. Angkul Kongmunvattana
Section |
Time |
Location |
007 |
T/Th 9:00am - 10:15am |
Exploratory Hall L102 |
Lecture Sections: Prof. Yutao Zhong
Section |
Time |
Location |
002 |
T/Th 12:00pm - 1:15pm |
Horizon Hall 2009 |
006 |
T/Th 3:00pm - 4:15pm |
Horizon Hall 2014 |
Recitation Sections
Section |
Time |
Location |
GTA Instructor |
301 |
F 9:30am - 10:20am |
Buchanan Hall D023 |
Huayu Zhou |
302 |
F 10:30am - 11:20am |
Buchanan Hall D023 |
Bo Lu |
303 |
F 11:30am - 12:20pm |
Exploratory L102 |
Yixiao Gao |
304 |
F 12:30pm - 1:20pm |
Horizon Hall 1012 |
Runyu Ma |
305 |
F 1:30pm - 2:20pm |
Horizon Hall 1008 |
Atul Khatri |
306 |
F 2:30pm - 3:20pm |
Horizon Hall 1012 |
Sina Yari Karin |
307 |
F 3:30pm - 4:20pm |
Horizon Hall 1012 |
Andrew Hartman |
Schedule
These schedules are subject to change as needed during the semester.
Planned Schedule: CS367 Planned Schedule
- The planned course schedule is also found on Canvas under Schedule
Office Hours
Office Hours Policies
- Feel free to go to any Office Hours for this course!
- Occasionally the session may be too busy to look at individual code questions.
- If so, please feel free to post your code-related questions to Piazza, Private to Instructors
- This allows a much larger group of TAs to take time to read through your question and code.
- Just make sure to limit it to the portion of code in question, and provide context!
Office Hours Times
Times and Locations will be kept updated on Piazza and on Canvas.
Professor's Office Locations
GTA Office Hours
Canvas and Piazza
Canvas
- Canvas is currently being prepared for the semester.
- An email will be sent once it is ready to login.
Canvas Link: https://canvas.gmu.edu
Important Notice: This course will be hosted on Canvas this
semester. Please ensure you are familiar with accessing and navigating
this platform. Resources and support are available at: https://lms.gmu.edu/getting-started-students/ to help you get started. If you have any questions, do not hesitate to reach out to me or contact the ITS Support Center (support@gmu.edu) for assistance.
Piazza
This term we will be using Piazza for class discussion. The system
is highly catered to getting you help fast and efficiently from
classmates, the TA, and your Professors. Rather than emailing questions
to the teaching staff, we encourage you to post your questions on
Piazza.
For security, we will be posting the Piazza Access Code on Canvas.
- To join Piazza, use the link below and then enter the code from Canvas.
- Note: This will only be accessible once we go live with Canvas. An email will be sent ahead of time.
Piazza Link: https://piazza.com/gmu/fall2024/cs367
Piazza Policies
- Project Updates, Clarifications, and FAQ Posts will be made on Piazza.
- You will be required to check Piazza or the Canvas Assignment itself during Projects for such Errata
- Make sure you can access Piazza before the first Project!
- Do not post Project-Related Code Publicly on Piazza
- You are free to post Design related questions or Project-related code Private to Instructors
- Piazza is the best place to post Code related questions.
- Feel free to post your code-related questions to Piazza, Private to Instructors
- This allows a much larger group of TAs to take time to read through your question and code.
- Just make sure to limit it to the portion of code in question, and provide context!
- Make sure to provide information about what debugging steps you've already taken to narrow the problem down.
- Please do not post cell phone photos of your code. You can copy and paste into Piazza, which does have Syntax Highlighting
- Please ask any question about topics, policy clarifications, sample exam questions, etc on Piazza!
- If you have any questions about Midterm problems or Quiz Grading, email your Professor directly.
- Do not post any questions about the Weekly Quiz until after the Answers are Released on Friday mornings.
Grading
The course will have two midterms and a final. Much of the work
during the semester will be completing projects, as well as regular
recitation activities (written and digital).
In general, all grades should be available about two weeks after submission.
Semester Grades
Category |
Grade % |
Notes |
Projects |
28% |
Four Projects (7% Each) (Note: Projects Average >= 60% to Pass the Course) |
Quizzes |
6% |
Lowest Two Quizzes Dropped |
Recitations |
6% |
Participation Based, One Dropped |
Midterms (2x) |
15% each (30% total) |
No Replacement Policies |
Final |
30% |
Cumulative |
Grading Scale
Grade |
Cut-Off |
Grade |
Cut-Off |
Grade |
Cut-Off |
Grade |
Cut-Off |
A+ |
98% |
B+ |
88% |
C+ |
78% |
D |
60% |
A |
92% |
B |
82% |
C |
72% |
F |
0% |
A- |
90% |
B- |
80% |
C- |
70% |
Grading Policies
- You must have a Project Average of at least 60% to Pass the Course.
- This will be averaged across all Four projects.
- There are no replacement points for Midterms.
- No exams are dropped and there are no midterm replacements.
- There are no make-up projects, quizzes, recitations, or exams.
- There are policies for excused absences from exams in a subsequent section.
- No additional work can be given to help increase your grade.
- There are no additional extra-credit assignments.
- Each project has some ability to earn extra-credit, however.
- There are no points associated with unused late-tokens.
- There is no course-long curve at the end of the semester.
- We believe it is important to know where you are at any point during the semester.
- Your grade should always be computable from all of your posted grades.
- There will not be any hidden adjustments or overall curves to the course.
Grade Contesting
- For Exams and Quizzes: Contact your Professor
- For Recitations: Contact Your Recitation GTA
- For Projects: Contact your assigned Project Grader GTA
- Your Grader is the Primary GTA for your Reciation. See Piazza post @11.
- If you are unable to come to a resolution with your GTA, please contact your Professor.
Project Policies
- Canvas Submission must be made by the Project Due Date
- No Project is Accepted more than 48-hours after the Project Due Date.
- You may only use up to 2 of your total Late Tokens for a single Project.
- Your code must compile and run on Zeus to be graded.
If your code does not compile on Zeus, it cannot be graded.
- Check your submission to make sure it is the correct files!
- Turning in the wrong files will likely result in a zero.
- Back up your work!
- Catastrophic computer/file failure or corruption will not be cause for an extension.
- Do not put your code in any public repository where others can find it.
- You may use private repositories (github has a private mode).
- Extra credit for early submissions:
- 1% extra credit rewarded for every 24 hours your submission made before the due time for the Coding Projects.
- Up to 5% extra credit will be rewarded towards your project grade.
- Your latest submission before the due time will be used for grading and extra credit.
- You CANNOT choose which submission should count.
- Late Tokens:
- Everyone starts with 3 Late Tokens total for all Projects during the Semester.
- Each Late Token adds 24 hours to the Deadline of a Project.
- Late Tokens are Automatically Used when you submit Late.
- You don't need to tell your GTA, they will deduct Late Tokens based on Submission Time.
- You may only use up to 2 of your total Late Tokens for a single Project.
- Unused Tokens have no Grade Value at the end of the semester.
- Late Work (No Tokens Remaining):
- You may only submit up to 48 hours after the Official Deadline of the Project.
- If you run out of Late Tokens, each additional day late will have a grade penalty.
- For every late day without a token, a 25% Ceiling Pentalty will be Applied
- So, for one day late without a token, your max possible score will be a 75%.
- And for two days late without tokens, your max possible score will be a 50%.
- Contesting Project Grades:
- You have One Week After Grades are Released to contact your GTA with a grading issue.
- After this one week period, all grades will be fixed.
Exam Policies
- There are no make-up exams.
- There are no drops or replacements for exams.
- Exams are in-person using pencil and paper.
- General Exam Policies: (Unless specified otherwise by Professor)
- In general, no computers, cell phones, books, calculators, or other such resources are allowed.
- You can bring in one page (8.5"x11" US Letter) with handwritten notes (both sides of the paper are allowed) for each exam.
- Missing an Exam:
- If you will miss an exam, let your Professor know immediately and we can coordinate alternate times.
- The reason will be verified with documentation and an alternate time is not automatically granted.
- If an exam is missed without excuse, a valid reason with documentation will be required.
- This is not commonly granted, but would cover ER visits, accidents, etc.
- With a valid excuse, we may elect to use your Final Exam to replace your Midterm in such a case.
- Missing an exam without an excuse or valid reason will result in a 0 for the exam.
- Do not miss the Final Exam. This requires College Dean's Approval to make-up.
- Midterm Grades will be Posted via Gradescope and open for Grade Contesting through that Program.
- Contesting Exam Grades:
- You have One Week After Grades are Released to initiate a Grade Contest Request in Gradescope with a grading issue.
- This lets you fill in information about the request and we can communicate directly on each contested question.
- After this one week period, all exam grades will be fixed.
- For the Final, the exam will not be returned, however,
you can contact your Professor to get a summary of all missed
questions, or to make an appointment to see the exam.
Quiz Policies
- There are no make-up quizzes.
- Each quiz is on Canvas and you will have 30 minutes to complete it.
- Quizzes are released Tuesdays at 6:00am and close on Thursdays at 11:59pm.
- You must Begin your quiz in this time window. If you do not, it will be Late.
- If you start your quiz on time and finish it after 11:59pm on Thursday, please let your Professor know.
- This is still legal, but Canvas marks it as Late. Your Professor will fix it to on-time.
- The last weekend before each Midterm or the Finals week will also have a weekend quiz.
- There will be two weekend quizzes (see the Schedule/Timeline) during the semester.
- These will run from Friday afternoon through 11:59pm on Saturday night.
- Late Quizzes will get a Zero grade.
- Your Lowest Two Quizzes are Dropped at the end of the semester.
- Contesting Quiz Grades:
- You have One Week After Grades are Released to contact your Professor with a grading issue.
- After this one week period, all quiz grades will be fixed.
Recitation Policies
- There are no make-up recitations.
- If you show up more than 10 minutes late or leave early, you will not earn credit for that recitation.
- You may miss one recitation during the semester without excuse. It will be dropped at the end of the semester.
- If you need to miss a recitation, contact your Professor for an excused absence.
- These are not commonly given for reasons other than illness.
- Each Worksheet/Assignment will be scored from 1-3 for your group.
- This is only for your feedback and has no effect on your course grade.
- Only working on the recitation with your group will count for the course grade.
- Recitations are in standard classrooms, so please bring your own computers when requested by the GTA instructors.
- During the Assembly Programming topics, we will be doing a lot of programming in recitations.
- Computers are only needed for a couple of the recitations and one per group is fine.
- Contesting Recitation Participation Grades:
- You have One Week After Grades are Released to contact your GTA with a grading issue.
- After this one week period, all participaton grades will be fixed.
Computer Accounts
This is a Systems Programming class. Unlike CS 262 or CS
222, which are general-purpose C courses for any computer system, this
course is based on building programs for a specific system. For CS 367,
that system is Zeus.
Zeus is a Linux computer running Red Hat Enterprise Linux and is
administerd by the College of Engineering and Computing for our use.
Some of our programs will involve libraries that have been pre-built on
Zeus, and some programs will use system specific features that may only
build properly on Zeus.
Connecting to Zeus
Zeus Policies
- All Projects must Compile and Run on Zeus
- All Projects will be Tested and Graded only on Zeus.
- You may develop wherever and using whichever tools you like.
- You will need to ensure your work builds and runs on Zeus before submission.
- A project that will not compile on Zeus cannot be graded.
- Remember, C has certain guarantees and others that are only
'system dependent'. It still needs to run properly on Zeus to be graded.
- You will need to set up the Campus VPN to access Zeus from off-campus.
Accommodations
Disability Services at George Mason University is committed to
upholding the letter and spirit of the laws that ensure equal treatment
of people with disabilities. Under the administration of University
Life, Disability Services implements and coordinates reasonable
accommodations and disability-related services that afford equal access
to university programs and activities. Students can begin the
registration process with Disability Services at any time during their
enrollment at George Mason University. If you are seeking
accommodations, please visit https://ds.gmu.edu/ for
detailed information about the Disability Services registration
process. Disability Services is located in Student Union Building I (SUB
I), Suite 2500. Email: ods@gmu.edu. Phone: (703) 993-2474.
Student responsibility: Students are responsible
for registering with Disability Services and communicating about their
approved accommodations with their instructor in advance of any relevant class meeting, assignment, or exam.
Course Accommodations Policies
- Please email or hand your Contact Sheet to your Professor at the beginning of the semester.
- Accommodations for Test Times will use the Proctoring Center.
- Homework Times will be Extended in Accordance with the Contact Sheet Accommodations.
- For Programming Assignments, Contact your Professor before the Original Deadline for an approved Extension.
Academic Standards (Honor Code)
Academic Standards exist to promote authentic scholarship, support
the institution’s goal of maintaining high standards of academic
excellence, and encourage continued ethical behavior of faculty and
students to cultivate an educational community which values integrity
and produces graduates who carry this commitment forward into
professional practice.
As members of the George Mason University community, we are
committed to fostering an environment of trust, respect, and scholarly
excellence. Our academic standards are the foundation of this
commitment, guiding our behavior and interactions within this academic
community. The practices for implementing these standards adapt to
modern practices, disciplinary contexts, and technological advancements.
Our standards are embodied in our courses, policies, and scholarship,
and are upheld in the following principles:
- Honesty: Providing accurate information in all academic endeavors, including communications, assignments, and examinations.
- Acknowledgement: Giving proper credit for
all contributions to one’s work. This involves the use of accurate
citations and references for any ideas, words, or materials created by
others in the style appropriate to the discipline. It also includes
acknowledging shared authorship in group projects, co-authored pieces,
and project reports.
- Uniqueness of Work: Ensuring that all
submitted work is the result of one’s own effort and is original,
including free from self-plagiarism. This principle extends to written
assignments, code, presentations, exams, and all other forms of academic
work.
Violations of these standards—including but not limited to
plagiarism, fabrication, and cheating—are taken seriously and will be
addressed in accordance with university policies. The process for
reporting, investigating, and adjudicating violations is outlined in the university’s procedures.
Consequences of violations may include academic sanctions, disciplinary
actions, and other measures necessary to uphold the integrity of our
academic community.
The principles outlined in these academic standards reflect our
collective commitment to upholding the highest standards of honesty,
acknowledgement, and uniqueness of work. By adhering to these
principles, we ensure the continued excellence and integrity of George
Mason University’s academic community.
Student responsibility: Students are
responsible for understanding how these general expectations regarding
academic standards apply to each course, assignment, or exam they
participate in; students should ask their instructor for clarification
on any aspect that is not clear to them.
We take the honor code quite seriously. Any attempts at copying or
sharing code, algorithms, or other violations of the honor code simply
will not be tolerated.
As seductively simple as it may seem to just copy and paste work
from a friend or online source, remember that it is just as easy to
compare your work electronically, and discover the similarities. We use
automated software to flag suspicious cases, and then review them by
hand to find the cases that must be submitted to the Academic Standards
Office. Repeat to yourself: it's not worth trying to cheat. We will
catch it, and sadly but surely, we will turn it in.
The penalty for cheating will always be far worse than a zero grade, to ensure it's not worth taking the chance.
- The usual Sanction applied is Level 2 (Failure in the course).
- It's a pretty sure-fire way to lose a semester and lose some
implicated friends; please don't put yourself through that experience!
Course Policies
- You are not allowed to use code from the Internet.
- This includes Stackoverflow, Chegg, Github, ReplIt, TutorialPoint, or any other site with code.
- You are not allowed to use code from Generative AI.
- All work submitted in this course must be your own original work.
- The use of AI writing/programming tools, such as CoPilot or
ChatGPT, are prohibited in this course and will be considered a
violation of academic integrity.
- In order to do the higher-level work in this field (CS 471 as
well as CS 475, CS 455, CS 440, CS 468), you need to understand/apply
fundamental concepts and skills without the use of AI tools.
- Practicing without the use of these tools are critical to the process of learning.
- All academic integrity violations will be reported to the office of Academic Integrity.
- You are not allowed to discuss any implementation (code) or design decisions with any other student.
- This includes prior students and students from other sections.
- You are not allowed to share or use any code from any other student (including past students)
- This includes posting your code to a public GitHub repository.
Student Responsibilities
- It is your responsibility to ...
- lock your computers with a password,
- not post your code to websites like Pastebin or ReplIt that are publicly accessible,
- not post code to any public repositories,
- (If you use services like Github/Gitlab) make sure your repo is set private.
- guard your USB drives and computers,
- not upload your files to someone else's computer, etc.
- You will be liable for any access gained to your public or unprotected code.
- If you are in a team with other students for another class, ensure CS 571 files are protected.
- Make sure none of your work is possible to access by any other student.
- GTAs are allowed to help you in your Programming Assignments! But there are some limitations.
- TAs can help you with designing data structures, the overall algorithm used, C programming in general, and fixing any bugs.
- TAs can not give you code, allow you to copy code from someone else, or help you write your code.
Academic Standards Links and Specifics
- All Students are required to abide by GMU's Academic Standards.
- All work must be your own.
- If we see anything we cannot explain by any other means except cheating, we are required to submit to the honor court.
- CS Honor Code Policies Page: https://cs.gmu.edu/resources/honor-code/
- See these CS Honor Code Policies to understand better what constitutes cheating in the CS setting.
- It clarifies some scenarios that are unique to our sorts of assignments.
- Here are Prof. Snyder's thoughts about the Honor Code in a CS classroom.
Sexual Harassment and Interpersonal Violence Policies
As a part of George Mason University’s commitment to providing a
safe and non-discriminatory learning, living, and working environment
for all members of the University community, the University does not
discriminate on the basis of sex or gender in any of its education or
employment programs and activities. Accordingly, all non-
confidential employees, including your faculty member, have a legal
requirement to report to the Title IX Coordinator, all relevant details
obtained directly or indirectly about any incident of Prohibited Conduct
(such as sexual harassment, sexual assault, gender-based stalking,
dating/domestic violence). Upon notifying the Title IX Coordinator of
possible Prohibited Conduct, the Title IX Coordinator will assess the
report and determine if outreach is required. If outreach is required,
the individual the report is about (the “Complainant”) will receive a
communication, likely in the form of an email, offering that person the
option to meet with a representative of the Title IX office.
For more information about non-confidential employees, resources, and Prohibited Conduct, please see University Policy 1202:
Sexual and Gender-Based Misconduct and Other Forms of Interpersonal
Violence. Questions regarding Title IX can be directed to the Title IX
Coordinator via email to TitleIX@gmu.edu, by phone at 703-993-8730, or in person on the Fairfax campus in Aquia 373.
Student opportunity: If you prefer to speak to someone confidentially, please contact one of Mason’s confidential employees in Student Support and Advocacy (SSAC), Counseling and Psychological Services (CAPS), Student Health Services (SHS), and/or the Office of the University Ombudsperson.
Privacy
All course materials posted to Canvas or other course site are
private; by federal law, any materials that identify specific students
(via their name, voice, or image) must not be shared with anyone not
enrolled in this class.
To protect your privacy, we also cannot list your GMU email address
on any public forum or provide it to any other students. You may, of
course, give your email address to any other students.
Video recordings of class meetings that are shared only with the
instructors and students officially enrolled in a class do not violate
FERPA or any other privacy expectation.
Personal Privacy Statements
- If we ever do have to have an online session (eg. Snow Day), I will Never require anyone to have any cameras/webcams active.
- I believe that requiring any video from you for an online lecture is an invasion of your personal privacy and of your space.
- I will never require or even allow the use of any video cameras.
- Others may have different policies, and that's for them to
decide on the best policies for their own courses. This is simply my
own personal policy.
FERPA and Email
The Family Educational Rights and Privacy Act (FERPA) governs the disclosure of education records for eligible students and is an essential aspect of any course. Students must use their GMU email account to
receive important University information, including communications
related to this class. Instructors will not respond to messages sent
from or send messages regarding course content to a non-GMU email
address.
Student responsibility: Students are responsible
for checking their GMU email regularly for course-related information,
and/or ensuring that GMU email messages are forwarded to an account they
do check.
All course materials posted to Canvas or other course site are
private; by federal law, any materials that identify specific students
(via their name, voice, or image) must not be shared with anyone not
enrolled in this class.
To protect your privacy, we also cannot list your GMU email address
on any public forum or provide it to any other students. You may, of
course, give your email address to any other students.
Video recordings of class meetings that are shared only with the
instructors and students officially enrolled in a class do not violate
FERPA or any other privacy expectation.
Personal Privacy Statements
- If we ever do have to have an online session (eg. Snow Day), I will Never require anyone to have any cameras/webcams active.
- I believe that requiring any video from you for an online lecture is an invasion of your personal privacy and of your space.
- I will never require or even allow the use of any video cameras.
- Others may have different policies, and that's for them to
decide on the best policies for their own courses. This is simply my
own personal policy.
Inclusion
Every student in this class is exactly where they belong and it is our
honor to welcome each of you to join us in learning throughout this
semester. Every student in this class, regardless of background, sex,
gender, race, ethnicity, class, political affiliation, physical or
mental ability, veteran status, nationality, or any other identity
category, is an equal member of our class.
You have the right to be called by whatever name you wish, to be
referred to by whatever pronoun you identify, and to adjust these at any
point.
If you feel uncomfortable in any aspect of our instruction that
results in any barrier to your inclusion in this course, please contact
your professor directly.
Email Address and Required Subject Information
Prof. Andrea Email: kandrea @ gmu.edu
- Be very careful when entering my email. kandreas, kandrew, and other addresses are not me!
Prof. Kongmunvattana Email: akongmun @ gmu.edu
Prof. Zhong Email: yzhong @ gmu.edu
Email Policies
- Put [CS 367] at the front of your subject so we can filter it into the right folder.
- Example Subject:
- [CS 367] Question about my quiz 8 grade
- We can only answer emails from a GMU email account.
- We cannot respond to messages sent from or to a non-Mason email address.
- [Prof. Andrea] My Policy is to get a Reply back to you within the next working day.
- This means if you email at 4am on a Tuesday, I should have a reply no later than Wednesday night.
- This also means if you email me at 11:58pm on Friday, I should have a reply no later than the next Monday night.
- Even if my reply is just to let you know I got it, I will reply in this timeframe.
- If you do NOT get a reply the next working day:
- Somehow I missed your email. Send Me a Reply to that Email to make sure I get it.
- This is not annoying me or offending me.
- If you do not get a reply by the next working day, Please email again so I don't miss it!
- I have had a lot of email issues over the last year in particular.
- Please, don't let anything go by without getting a reply from me.