CS 531 – Fundamentals of
System Programming (3 Units)
George Mason University
DEPARTMENT OF COMPUTER SCIENCE
Course Description
Office/Hours: Check out CS 531 in Blackboard.
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; 2nd (or 3rd) edition (June 17, 2005), ISBN-10:
0201433079, ISBN-13: 978-0201433074
DESCRIPTION: CS 531 provides a hands-on introduction to systems programming with an emphasis
on data structures and interfacing with the UNIX operating system. While focusing
on the
fundamental data structures necessary for designing and implementing systems
applications,
we introduce
the Unix Application Programming Interface (API), signals, threads, and inter-process communication
(IPC).
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
discussed 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. 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
o
Foundations,
Control Flow, and Functions
o
Memory
and Pointers, Address
Arithmetic, Structures
o Bitwise Operators
o Text and Binary File I/O
o Header Files
o Static and Dynamic Memory Allocation
o Unix API Calls
· Analysis of Algorithm Complexity
· Stacks, Queues, and Linked Lists
· Hashing, Trees, and Graphs
· Heaps and Priority Queues
· Unix Processes, Signals, and Exceptions
· Multithreading and Inter-Process Communication
COURSE
POLICIES
Class: Students are expected to
attend all lectures and are responsible for all material covered in lectures.
Students are expected to work independently outside of class on homework
assignments and projects. Course-related materials are posted on Blackboard in
the folder Starting here! in weekly lessons.
Reading: Be aware that some material
covered in class, which are posted in weekly lessons, may not be found in the
textbook. For any doubts, students have opportunities to ask questions in
class, on Blackboard, or during UTA/GTA/instructor office hours.
Assignments: Homework and project
assignments will be posted on Blackboard in weekly lessons as they are
assigned, and student solutions must be submitted on Blackboard by the
specified deadline. For programming assignments, solution programs must run
without obvious errors (even if not all functionalities are present). Any
solution program that is submitted but either does not compile or has major
errors when it is run will receive no more than 50% of the total credits.
Therefore, develop your program and make sure it works at each developing
stage.
Deadlines: The Blackboard system
permits you, as a student in this course, to resubmit your work until the
deadline for THREE times, so you may submit your work early and resubmit if you
improve your work prior to the deadline. If you cannot finish, you should
submit your work before the deadline for partial credits.
Late
work and missing participation: No late work is accepted. For any missing work, the
missing grade will be the same as the final exam grade if you have a good
reason and provide proofs.
GRADING
POLICY
There are all together 100 points:
·
Homework
assignments (30 points)
·
Quizzes
(30 points)
·
Final
examination (40 points)
·
Participation/Discussion
(Optional: 5 extra points)
Your overall course score, S, will be the sum of these
points.
·
A:
S is at least 90 points
·
B:
S is at least 80 points
·
C:
S is at least 60 points
·
F:
S is fewer than 60 points
CLASS
COMMUNICATIONS
CS
531 will be using the Blackboard system for most class communications. You are
responsible for any notifications/assigments or
information posted on Blackboard either by your instructor or the class GTA/UTA.
Some information may be disseminated through Blackboard or email rather than in
class. Individual communications with the professor/GTA/UTA may be done by
email using your GMU email account. When you email, please be sure to include
the class number and the topic in the subject header. (e.g.: Subject: CS 531 /
Homework 1).
PROGRAMMING
POLICIES
(1) No
sharing or discussion of code for assignments. Unless specifically stated
otherwise, all assignments are individual assignments, not group assignments.
Students are expected to do their own work, not to share programs with each
other, nor copy programs from anyone else. However, you may offer limited
assistance to your fellow students regarding questions or misunderstandings on
their programming assignments by responding to queries on Blackboard. Suspected
honor code violations are taken very seriously, and will be reported to the
Honor Committee. (See CS Honor
Code)
(2) No
incorporation of code from any source external to the course. You may not
incorporate code written by others. Of course, you may freely use any code
provided as part of the assignment specifications, and you need not credit the
source. Working something out together with an instructor or TA will not
require crediting the source.
(3) Back
up your program regularly. You are expected to back up your program in separate
files as you get different pieces working. Failure to do this may result in
your getting a much lower grade on a program if last minute problems occur.
(Accidently deleting your program, having problems connecting, etc., will not
be accepted as excuses.)
(4) Keep
an untouched copy of your final code submission. It is important that you do
not touch your programs once you have made your final submission. If there are
any submission problems, consideration for credit will only be given if it can
be verified that the programs were not changed after being submitted.
(5) Code
must run on Mason gcc. Students may develop programs
using any computer system they have available. However, submitted programs must
run under gcc compiler available on Mason. Your
documentation should clearly state which software was used for compilation, and
once makefiles are introduced, a makefile
should be included with each assignment submission.
OTHER
POLICIES
General
Course Policies
·
GMU
Email Accounts: students must activate their GMU email accounts to receive
important University information, including messages related to this class. You
should understand that your email box may be full, so check your email and make
sure you have enough space daily.
University
Policies, Requirements, and Services
·
The
University Catalog, http://catalog.gmu.edu,
is the central resource for university policies affecting student, faculty, and
staff conduct in university affairs.
·
Academic
Integrity: http://oai.gmu.edu
·
Disability
Statement: http://ods.gmu.edu
·
Counselling
and Psychological Services: http://caps.gmu.edu