Computer Systems and
Fundamentals of Programming (CS 531)
Syllabus - Fall 2019

1 Course Basics

1.0 Course Overview

CS531 provides a hands-on introduction to the systems level of programming with an emphasis on data structures and interfacing with the operating system. This course focuses on the fundamental data structures necessary for designing and implementing systems applications and continues with an introduction to the Unix Application Programming Interface (API), signals, threads, and inter-process communications (IPC). This course is instructed from a programmatic perspective using the C programming language, with special topics in both Java and Python.

The objective of this course is to focus on the principles and pragmatic methods for designing and implementing solutions to problems in Computer Science.  The course will be instructed in the C programming language and the techniques instructed will be relevant for low-level or systems programming tasks.  The data structures and algorithmic design aspects of the course are relevant across many different fields and are language independent.  We will, however, implement several of these in C.

This course will prepare you directly for CS571 (Operating Systems) and CS555 (Networking), as well as for CS540 (Language Processors), CS550 (Database Systems), CS551 (Computer Graphics), and CS580 (AI).

Topics for this semester will include.

  • C Programming Language
    • Foundations, Control and Functions,
    • Memory and Pointers, Structures
    • File I/O and Command Line Arguments
    • Unix API Calls
  • Dynamic Memory Access and Dynamic Arrays
  • Analysis of Algorithm Complexity
  • Stacks, Queues, and Linked Lists
  • Hashing, Trees, and Graphs
  • Heaps and Priority Queues
  • Unix Processes, Signals, Exceptions, and I/O
  • Concurrency and Synchronization
  • Inter-Process Communications
  • Python and Java Overviews

1.1 Schedule

  • The planned course schedule can be found on Blackboard under Schedule.

1.2 Professor and Section Information

Lecture Professor Email Class Time Class Location
002 Prof. Kevin Andrea kandrea (at) gmu (dot) edu T 7:20pm - 10:00pm Exploratory Hall L004

Your Professor will be responsible for all lecture and course material, as well as grading your quizzes and examinations.

GTA (Graduate Teaching Assistant)
Prashant Sahu

Your GTA will be responsible for grading the course projects.

This is a 3-credit course.

1.3 Office Hours

Office Hours locations and times are available on Piazza.

You may visit the Professor or GTA for questions about course material.
  • For Exam and Quiz Grading Questions, see your Professor
  • For Project Grading Questions, see your GTA

1.4 Prerequisites

If you are an Accelerated MS/CS Student or a PhD Student, you should not be in this class.

The prerequisites are equivalencies in the following areas.

  • CS 310 (Data Structures) and
  • CS 367 (Computer Systems Programming)

These are undergraduate courses that cover the fundamentals of interfacing with the operating system in programming and the core data structures used in Computer Science.  A subset of the topics covered this semester will cover similar topics as in these courses, albeit at a more accelerated pace.  You do not require any prior C programming experience.

1.5 Textbooks

The C Programming Language, Second Edition by Kernighan and Ritchie. (ISBN 0-13-110362-8))
Mastering Algorithms with C, by Kyle Loudon, O'Reilly, ISBN-10: 1565924533, ISBN-13: 978-1565924536

Advanced Programming in the UNIX Environment by W. Richard Stevens, Addison-Wesley Professional; 3rd edition ISBN-10: 0321637739, ISBN-13: 978-0321637734

  • You can access our textbooks through Library resources on campus.
  • There may be online access to these textbooks through the Library resources (ProQuest Safari Tech Books)

1.7 Piazza

  • All correspondence will go through Piazza. You can send private messages to the instructors (Professor and GTA) 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

  • 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 (CentOS 7.6).
  • 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 one Midterm and a Final Exam.  The remaining assignments will be through Projects.

In general, all grades should be available about one week after turning it in.

2.1 Semester Grades

Weighting of Assessments:

Category grade % notes
30% at least 2
Midterm Exam
Final Exam 40% cumulative

Project grades will be normalized for even distribution.

2.2 Grading Scale

Grades will be assessed on the following scale:

Grade Cut-off Grade Cut-off Grade Cut-off Grade
A 90% B 80% C 70% F

Grades will not be rounded prior to assessing the letter grades.
As a Graduate-level Course, a satisfactory grade is a B or higher.
A passing grade is C or higher, however, a C is an unsatisfactory grade.

2.3 Projects

  • You will have 1 Late-Day token that can be used to extend the deadline by 24 hours.
    • This will be automatically applied to any work submitted late.
    • This is to provide for any personal emergencies, such as having a car break down on the day of the deadline, preventing your submission on time.
  • Late work (with no late tokens left) will only be allowed under exceptional circumstances on a case-by-case basis.
  • 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 will be graded. 
  • Always use some means to backup your work.  Losing your source file will not grant an extension.
2.4 Tests and Final Exam
  • There will be one Midterm and one Final Exam.
  • They will be entirely paper and pencil - no computers, books, etc.
    • You will be allowed one handwritten page of notes.
    • You may use both the front and back of the page.
    • You will be turning the notes page in with the exam.
  • All students must have their GMU identification available on testing days
  • If you miss the final, there is very little I can do for you. Don't miss the final!
    • The Dean has to approve any requests to take missed final exams.

3 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!

3.0 General Rules of Thumb

  • 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.

3.1 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.

4 Learning Disabilities

  • Students with a learning 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.
  • 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.

5 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;

6 Privacy and Email

  • Students must use their Masonlive email account to receive important University information, including communications related tot his 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 Masonlive 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.