Computer Systems and Programming (CS 367)
Syllabus - Spring 2022
1 Course Basics
1.0 Course Overview
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.
Topics for this semester will include:
- Data and Number Representation
- Linking and Loading
- Machine Level Representation of Data and Programs
- Exceptional Control Flow
- Processes
- Signals and Unix I/O
- CPU Architecture and Design
- Virtual Memory and Caching
- Dynamic Memory Allocation
1.1 Schedule
- The planned course schedule will be found on
Blackboard under Schedule, when the Blackboard Page is
Available.
- All courses will meet at the times listed in the following sections.
- Your Professor will contact you with information
about their classes.
1.2 Professor and Section Information
Face Masks and In-Person Classes:
- As of August 11, 2021, everyone, including those who are
vaccinated, are required to wear a face mask in buildings.
- In-Person Classes are all going to be held as scheduled.
- If anything changes, we will let you know any
alternate meeting policies as needed.
- Blackboard Collaborate is the online instructional
method that we would be using in that scenario.
- More Information on the Safe Return to Campus is in
Section 3 of the Syllabus.
Lecture Sections:
Lecture | Professor | Class Time | Class Location | ||
---|---|---|---|---|---|
001 |
Prof. Ivan Avramovic |
iavramo2 (at) gmu (dot) edu | MW 9:00am - 10:15am |
Lecture Hall 3 |
|
002 | Prof. Ivan Avramovic |
iavramo2 (at) gmu (dot) edu | TR 1:30pm - 2:45pm | Horizon Hall 1014 |
|
003 | Prof. Kevin Andrea | kandrea (at) gmu (dot) edu | MW 9:00am - 10:15am | David King Jr. Hall 1006 |
|
004 |
Prof. Ivan Avramovic | iavramo2 (at) gmu (dot) edu |
TR 9:00am - 10:15am |
Enterprise Hall 178 |
Your lecture Professor will be responsible for all
lecture and course material, as well as grading your
quizzes and examinations.
Recitations Sections:
Recitation | Recitation Time | Recitation Location |
---|---|---|
301 | F 9:30am-10:20am | Innovation Hall 134 |
302 |
F 10:30am-11:20am | Innovation Hall 134 |
303 | F 11:30am-12:20pm | Innovation Hall 134 |
304 | F 12:30pm-1:20pm | Innovation Hall 134 |
305 | F 1:30pm-2:20pm | Innovation Hall 134 |
306 | F 2:30pm-3:20pm | Innovation Hall 134 |
307 | F 3:30pm-4:20pm | Innovation Hall 134 |
308 | F 8:30am-9:20am | Innovation Hall 222 |
Your Recitation Instructor (GTA) will be responsible for
grading both your recitation exercises and the course
projects.
Their Contact Information and Office Hours will be
available on Piazza (link in section 1.7).
This is a 4-credit course.
1.3 Office Hours
You may visit any Professor or GTA for questions about course material.
- For Exam and Quiz Grading Questions, see your
Professor
- For Recitation and Project Grading Questions, see your Recitation GTA
1.4 Prerequisites
The prerequisites are automatically and strictly enforced.
- Grade of C or better in MATH 125, and
- Grade of C or better in CS 262 (or CS 222), and
- Grade of C or better in CS 110
1.5 Course Outcomes
The CS department has identified these outcomes as ones that must be met throughout the semester.
- 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.
1.6 Required Textbook
Computer Systems: A Programmer's Perspective (3rd ed.). Randal Bryant and David O'Hallaron (Prentice Hall).
- Note - we've updated to the third edition, which is a significant update to 64-bit throughout the text.
- Do not get the Global Edition (or Paperback
Version)
- The sample problems are wrong and their answers are
wrong.
- Link to Author's Warning: Author's
Errata
- This is one of those text books that can actually make a big difference in a pivotal course; actually read it!
1.7 Piazza
-
Piazza Course Link: https://piazza.com/gmu/spring2022/cs367
-
You will be added to Piazza by your Professor at the
beginning of the Semester.
- There is an access code to protect the site.
- If you do not have access to Piazza, please email
your Professor and they will manually add you to
Piazza.
- All correspondence will go through Piazza. You can send private messages to the instructors (professors, GTA, UTA) as well as post public questions visible to all students, collaborate on responses, and tag everything by topic.
- Assignments will be posted to Blackboard.
1.8 Blackboard
- http://mymasonportal.gmu.edu
- All digital work is submitted to Blackboard by the given deadlines.
- Grades are posted on Blackboard for all assignments.
1.9 Computer Accounts
- All work must compile and run on Zeus. This is the reference machine architecture and all projects will be tested and graded on the Zeus server.
- Zeus is an x86-64 Architecture server running Linux.
- All grading occurs on this system; other systems might be more forgiving for memory errors, and you don't want to find that out with your grade!
- To access Zeus from off campus, you will need to set up a Virtual Private Network (VPN).
- Instructions for accessing Zeus in general, and from off campus, are in the following link.
2 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 one week after turning it in.
2.1 Semester Grades
Weighting of Assessments:
Category | grade % | notes |
---|---|---|
Projects | 36% |
Four Projects (9% each) |
Quizzes | 7% | Approximately 14 Quizzes |
Recitation | 7% | Participation-based |
Midterms |
30% |
Two Midterms (15% each) |
Final Exam | 20% | Cumulative |
Project grades will be normalized for even distribution.
For example, with four projects, each project will be
worth 9% of your course grade.
2.2 Grading Scale
Grades will be assessed on the following 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% |
Grades will not be rounded prior to assessing the letter grades.
2.3 Calculating Semester Grades
- You should always be able to calculate your semester grade at any point in the semester with the weightings and the scales above.
- There will be no make-up or extra-credit assignments at the end of the semester; your grade should be a measure of your semester-long progress.
- This is not a course that receives a magic, gigantic curve at the end. Wherever your grade is headed, that is the outcome you should expect after continued efforts.
2.4 Projects
- All project grades are normalized (your project score / project possible points) and each contribute to your final grade evenly.
- Projects are more involved than in previous classes.
-
- Start your projects early. You will need extra time to design your solution before programming.
- You will need time to design test cases for your projects as well. Test cases will not be provided.
- Projects are due at a specific time on a specific day.
- No work is accepted 48 hours after the deadline (even if you're using late-day tokens!)
-
- Submit your projects early and often.
- Do not wait until the last minute, submission may take extra time at the deadlines.
- Always submit at least a few minutes before the deadline.
- Late work (with no late tokens left) incurs a 25%
ceiling penalty each 24-hour period entered after the
deadline.
- example: one day of penalty would mean:
RecordedGrade = min(75, Raw_Score)
- example: one day of penalty would mean:
- You begin the semester with three One-Day-Late
tokens available that each add 24 hours to the deadline
of a project.
- These are automatically applied to late
work.
- Any submissions after the deadline will use one of these tokens automatically.
- Late Tokens have no value at the end of the semester if you do not use them.
- Think of them as a no-questions-asked 24 hour personal extension for your project.
- This also means that you have full control over your
own deadlines, so if you feel like you just need an
extra day, take it! That's what the late tokens
are for. If you get caught with a flat tire on
the submission night, or you have the need to focus on
another paper, that's fine!
- That's what the late tokens are for, to empower
you to make the best scheduling decisions for your
own circumstances around our deadlines.
- Since no work is ever accepted more than 48 hours
after the official deadline, you can use at most two
tokens on a project.
- Code that doesn't compile will likely get a very, very
low score. It specifically must compile on the
zeus
server. - Turning it in on BlackBoard: You can submit
your work an unlimited number of times to
BlackBoard, and only the last version (within 48 hours
of the posted deadline) will be graded. Late tokens
are automatically used based on submission timestamps.
You should also download your submitted attempts, and
verify that you turned in a working copy and what was
intended to be submitted.
- Turning in the wrong files will likely result in a zero.
- Backup your work! Catastrophic computer
failure/file corruption will not be cause
for an extension.
- Use a backup service such as DropBox (or any
cloud service), emailing yourself, storing to a
USB drive, whatever it takes.
- Just don't put it in a public git
repository where others can find it (this has
happened before).
- Every semester multiple students' computers die, are stolen, or otherwise 'lose' programs and digital work. Don't be the student who forgot to (frequently) back up your work!
- You will have up to 1 week after the
grading of a Project to contact your
Recitation GTA to contest any grades before
they become fixed.
2.5 Recitations
- All students are registered for an in-person recitation as well as their lecture.
- The recitation sections are mixed between the lecture sections, so you may see different students there.
- All lectures and recitations are coordinated.
- There will be work to complete either during recitation or by some short duration after recitations are complete.
- The work and their solutions will ultimately be provided following each recitation.
- Attendance and effort are the main components of your recitation grade - this is where you practice and get the most feedback.
- Your effort will contribute to the course recitation
grade.
- You may miss one recitation during the semester, however, you are still responsible for the material covered in that recitation.
- If you show up late or do not participate, you will not get any points for that recitation.
- This includes showing up 10 minutes late, or
leaving early.
- You will be given a score between 1 and 3 for each recitation submitted. This is for your feedback only, you will receive the same number of graded points regardless of how you score on the recitation itself, for any recitation in which you participate during the recitation meeting.
- Your score (1 to 3) has no effect on your course grade. Only your participation for that recitation will affect your grade.
- You will have up to 1 week after the
posting of your attendance grade for a Recitation
session to contact your Recitation GTA to contest the
grade, after which it will be locked.
2.6 Quizzes
- There will be weekly quizzes, to bridge the gap
between recitation-level work and test-level work.
- The quizzes will be released on Blackboard every
Tuesday and will be due the following Thursday.
- Each quiz will be due by 11:59pm on Thursday nights.
- This means you need to START by the
deadline.
- If you start on time, but you submit after the deadline, Blackboard will mark it as LATE, however, as long as you start the quiz on time, then you will be ok.
- If you are in this situation, email your
Professor directly to let them know, so that
we can regrade it as on-time. This is not
automatic.
- You will have up to 1 week after the
grading of a quiz to contest any grades before they
become fixed.
2.7 Tests and Final Exam
- There will be two Midterms and one Final Exam.
- All exams will be adminstered in your normal lecture sections.
- Details will be provided by your Professor ahead of any exam.
- If you know you will miss a test, let your Professor know as soon as possible to coordinate an alternate time.
-
- The reason for missing a test must be verified with documentation and will not be automatically granted.
- If you miss a test (without prior approval), and a valid reason is verified with documentation (ER visit, traffic accident, etc.), we may elect to allow the final exam to count the extra amount to give you a sort of do-over. This policy is not automatic, however.
- If you miss the final, there is very little I can do for you. Don't miss the final!
-
- The Dean of the College of Engineering and Computing has to approve any requests to take missed final exams.
- This is only granted for medical or other extraordinary circumstances.
- The final can not be given early. You are starting the course with knowledge of the schedule (see GMU's Final Exam Calendar for the latest schedule, updated as weather events require).
2.8 Contested Grades
- If you feel points have been incorrectly deducted, contact the grader.
-
- Tests and Quizzes: Contact your Professor.
- Recitation Scores and Projects: Contact
your Recitation Instructor.
- If you have not initiated contact within one week
of any grade being made available, it is permanent.
- No grade-hunting in the last couple of weeks!
- We strive to grade each student's work fairly and uniformly, often through specific test cases and grader-group-discussions, which might even be automated as part of the grading process.
2.9 Course Repetition
- There is a limit of three graded attempts for this course.
- A Withdrawal (W) does not count as a graded attempt.
- Please see AP. 1.3.4 in the University Catalog and consult with your academic advisor if you have any questions.
3 Safe Return to Campus
- All students taking courses with a face-to-face
component are required to take Safe Return to Campus
Training prior to visiting campus.
- Training is available in Blackboard
- https://www2.gmu.edu/safe-return-campus/communications-and-training
- Similarly, all students in face to face and hybrid courses must also complete the Mason COVID Health Check daily, seven days a week. The COVID Health Check system uses a color code system and students will receive either a Green, Yellow, or Red email response.
- Students are required to follow the university's public health and safety precautions and procedures outlined on the university Safe Return to Campus webpage.
- Websites on Face Masks and Vaccination Requirements:
- https://www2.gmu.edu/safe-return-campus/personal-and-public-health/face-coverings
- https://www2.gmu.edu/safe-return-campus/vaccination-requirements
- Student Assistance (Financial):
- Only students who receive a "green" notification are permitted to attend courses with a face-to-face component. If you suspect that you are sick or have been directed to self-isolate, please quarantine or get testing. Faculty are allowed to ask you to show them that you have received a Green email and are thereby permitted to be in class.
4 The 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!
4.0
General Constraints
- You are not allowed to use code from the Internet.
- This includes Stackoverflow, Chegg, 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.
4.1
General Responsibilities
- It is your responsibility to ...
- lock your computers with a password,
- not post your code to websites like Pastebin 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.
4.2 Some Specifics and Links
- All students will abide by GMU's Honor Code.
- All work must be your own. If you are caught cheating, you and every other involved student will be turned in to the honor court.
- See the 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.
5 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.
6 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 ASAP 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.
-
- 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.
- Here are some rules about Accommodations and their
use on Projects and Homework Assignments:
(source: https://ds.gmu.edu/wp-content/uploads/2020/11/Extended-Time-on-Out-of-Class-Assignments-Policy.pdf) - The
extended time on out of class assignments
accommodation does not apply for the following:
• Assignments for which due date has already passed (accommodations are not retroactive)
• Extending assignments beyond the end of course date (not intended to replace an
“incomplete”)
7 Sexual Harassment and Interpersonal Violence
- 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 the Student Support and Advocacy Center (703-380-1434), Counseling and Psychological Services (703-993-2380), Student Health Services, or Mason's Title IX Coordinator (703-993-8730; cde@gmu.edu).
8 Privacy and Email
- Students must use their GMU email account to receive
important University information, including
communications related to this class.
- I can not respond to messages sent from or send messages to a non-Mason email address.
- 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.
- 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.
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.