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 | 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 |
psahu2@gmu.edu |
Your GTA will be responsible for grading the course projects.
This is a 3-credit course.
1.3 Office Hours
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
Required:
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
Recommended:
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
-
Piazza Forum Link: piazza.com/gmu/fall2019/cs531/home
Piazza Sign-up Link: piazza.com/gmu/fall2019/cs531
- 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
- http://mymason.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 (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 |
---|---|---|
Projects |
30% | at least 2 |
Midterm Exam |
30% | |
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 |
Cut-Off |
---|---|---|---|---|---|---|---|
A | 90% | B | 80% | C | 70% | F |
0% |
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.
- 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; cde@gmu.edu).
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.