Computer Systems and Programming (CS367)
Syllabus - Spring 2023
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.
Lecture Sections: Prof. Kevin Andrea
Section |
Time |
Location |
001 |
M/W 9:00am - 10:15am |
Horizon Hall 2009 |
002 |
M/W 3:00pm - 4:15pm |
Enterprise Hall 80 |
003 |
T/Th 1:30pm - 2:45pm |
Art and Design 2003 |
Recitation Sections
Section |
Time |
Location |
GTA Instructor |
308 |
F 8:30am - 9:20am |
Innovation Hall 326 |
Huayu Zhou (hzhou8 @ gmu.edu) |
301 |
F 9:30am - 10:20am |
Innovation Hall 326 |
Huayu Zhou (hzhou8 @ gmu.edu) |
302 |
F 10:30am - 11:20am |
Innovation Hall 326 |
Runyu Ma (rma5 @ gmu.edu) |
303 |
F 11:30am - 12:20pm |
Innovation Hall 326 |
Runyu Ma (rma5 @ gmu.edu) |
304 |
F 12:30pm - 1:20pm |
Innovation Hall 326 |
Jingyuan Zhang (jzhang33 @ gmu.edu) |
305 |
F 1:30pm - 2:20pm |
Innovation Hall 326 |
Jingyuan Zhang (jzhang33 @ gmu.edu) |
306 |
F 2:30pm - 3:20pm |
Innovation Hall 326 |
Yixiao Gao (ygao24 @ gmu.edu) |
307 |
F 3:30pm - 4:20pm |
Innovation Hall 326 |
Yixiao Gao (ygao24 @ gmu.edu) |
Schedule
Planned Schedule: https://cs.gmu.edu/~kandrea/S23/CS367_Andrea_Schedule_S23.html
Timeline Version of Schedule: https://cs.gmu.edu/~kandrea/S23/schedule_timeline.html
- The planned course schedule is also found on Blackboard under Schedule
Office Hours
Times and Locations will be kept updated on Piazza.
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 Location
Blackboard and Piazza
Blackboard
Blackboard Link: https://mymasonportal.gmu.edu
There are 2 different Blackboard pages for our course.
- CS367 - Lectures
- Lecture Slides, Livecode, Worksheets, Project Assignments, Quizzes, Videos, Course Grades
- All Projects are Posted here and are Submitted here.
- All Quizzes are taken online through this Blackboard page.
- CS367 - Recitations
- Recitation Materials, Recitation Solutions, Participation Grades, Recitation Feedbacks
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 myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza.
For security, we will be adding everyone to Piazza manually. Once the semester begins, if you do not have access through your netid@gmu.edu address, please email Prof. Andrea and he'll add you to the board.
Piazza Link: https://piazza.com/gmu/spring2023/cs367
Piazza Policies
- Project Updates, Clarifications, and FAQ Posts will be made on Piazza.
- You will be required to check Piazza or the Blackboard 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 Prof. Andrea directly.
- Do not post any questions about the Weekly Quiz until after the Answers are Released
Grading
The course will have one midterm 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 |
36% |
Four Projects (9% Each) |
Quizzes |
7% |
Lowest Two Quizzes Dropped |
Recitation |
7% |
Participation Based, One Dropped |
Midterm |
20% |
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% |
Grade Contesting
- For Exams and Quizzes: Contact Prof. Andrea
- For Projects and Recitations: Contact Your Recitation GTA
- If you are unable to come to a resolution with your GTA, please contact Prof. Andrea
Grading Policies
- There are no make-up projects, quizzes, recitations, or exams.
- There are no additional extra-credit assignments.
- There are no points associated with unused late-tokens.
- There is no course-long curve at the end of the semester.
Project Policies
- Blackboard 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).
- 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 willbe 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.
- 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 Prof. Andrea 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 Prof. Andrea 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 Blackboard 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 Prof. Andrea know.
- This is still legal, but Blackboard marks it as Late. Prof. Andrea will fix it to on-time.
- 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 GTA with a grading issue.
- After this one week period, all participaton 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 Prof. Andrea 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 Computer Lab rooms, but feel free to bring your own computer.
- During the Assembly Programming topics, we will be doing a lot of programming in recitations.
- 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.
Accommodations
Disability Services provides a variety of Academic Accommodations that include Extended Time of Quizzes and Exams, Extended Project time, Reduced Distraction Environments for Exams, Additional Breaks during Tests, and other forms of support to help ensure fair access to the lectures and materials.
Disability Services will also work with students with temporary needs, such as following an accident or other short-term injury. This is important, because the Accommodations will be provided for all of your classes and provide for the necessary time for your recovery as well.
Disability Accommodations Policies
- Please email or hand your Contact Sheet to Prof. Andrea at the beginning of the semester.
- Accommodations for Test Times will use the Proctoring Center.
- Quiz Times will be Extended in Accordance with the Contact Sheet Accommodations.
- For Projects, Contact Prof. Andrea before the Original Deadline for an approved Extension.
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.
Honor Code
The honor code at George Mason is an important part of our academic culture. A degree from this institution should be a direct measure of your own progress and abilities, and as such at all times we must ensure that all work that should be your own is your own.
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 Office of Academic Integrity. 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 recommendation is 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!
Honor Code 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 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.
Honor Code 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 367 files are protected.
- Make sure none of your work is possible to access by any other student.
- UTAs and GTAs are allowed to help you in your Projects! 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.
Honor Code Links and Specifics
- All Students are required to abide by GMU's Honor Code. (Student Conduct)
- 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.
Privacy
All course materials posted to Blackboard 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, I 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.
My own 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.
Disability Services
Students with a disability or other condition (documented with GMU's Office of Disability Services) that may impact academic performance should speak with the professor as soon as possible to discuss appropriate accommodations.
If you are in a situation that even
temporarily affects your ability to learn or work, such as with a broken limb or other such injury, contact the Office of Disability Services to get accommodations.
We are quite happy to assist as is appropriate, but it must be documented ahead of time by ODS.
Policies
- Bringing the paperwork with you to a scheduled exam or at the deadline for a project or an assigned quiz is far too late!
- Even if you don't know if you plan on utilizing the accommodations ahead of time, it's in your best interest to prepare them ahead of time.
- Policies for Extended Time on Assignments: https://ds.gmu.edu/wp-content/uploads/2020/11/Extended-Time-on-Out-of-Class-Assignments-Policy.pdf
- Extended Time does not apply if the Due Date has already passed.
- Extended Time cannot go beyond the end of course date.
Sexual Harassment and Interpersonal Violence Policies
As a faculty member and designated "Responsible Employee," I am required to report all disclosures of sexual assault, interpersonal violence, and stalking to Mason's Title IX Coordinator per university policy 1412.
If you wish to speak with someone confidentially, please contact:
- Student Support and Advocacy Center (703-380-1434)
- Counseling and Psychological Services (703-993-2380)
- Student Health Services (703-993-2831)
- Mason's Title IX Coordinator (703-993-8730; cde@gmu.edu)
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!
Put [CS 367] at the front of your subject so I can filter it into the right folder.
Example Subject:
- [CS 367] Question about my quiz 8 grade
Email Policies
- I can only answer email from a GMU email account.
- I cannot respond to messages sent from or to a non-Mason email address.
- 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.