drop

 

 

 

 

 

CSCI 1730 UNIX Systems Programming

 

In this course we will cover the basics of systems programming, including programming the file and directory structures, file I/O, process creation, and interprocess communication. We will primarily use the C programming language to implement systems programs. You may write shell scripts using available UNIX utilities and tools. 

Topics will be covered either by lecture (in person or live-feed - zoom), reading, labs, or a combination.

Laptops are required. You are required to bring a laptop to class (or work on a laptop while in live feed), and install the required web development technology. We will occasionally do in-class programming exercises. Please ensure you have a laptop that supports the necessary technology.


Logistics:

Face-to-Face and Live feed Zoom Structure:

The class is synchronous zoom - basically live - feed zoom during class time.   You are required to attend all sessions  via the use of a working camera (it is fine to use your cell phone as a camera) unless you attend your session physically face to face.

We meet the UGA "on-line" requirement of a "UGA hybrid" class by providing students access to all lectures via the on-line live zoom feed. Note: that we do not provide the recorded sessions - it is imperative to attend class either via live feed zoom or attend in the class room.

There will be an option for students to attend class,  physically, face to face on their lecture slot on Thursdays, and during their assigned lab session. Face to face attendance is planned to start Thu Jan 21, unless there is a COVID exception.

We will provide a sign up sheet for this option early next week via survey monkey - there is limited space for the option of attending physically in the classroom. IF there is no demand for this option - we may modify the physical component of our course.

First live feed zoom lecture session will be this Thursday, Jan 14, during class time. Class room attendance is not available this week. We will discuss the syllabus at this time.


Live-feed Lab sessions will start the week of January 25-29.

Lab Day Lab Time @ Boyd 201 CRN Lecture Time @ Chem 430 TA  
Mon 10:20 AM -- 11:10 AM 26313 TR 11:10 AM -- 12:25 PM TA - Steven  
Wed 10:20 AM -- 11:10 AM 44514 TR 03:55 PM -- 05:10 PM TA - Steven  
Wed 12:40 PM -- 01:30 PM 26337 TR 11:10 AM -- 12:25 PM TA - Steven  
Wed 01:50 PM -- 02:40 PM 38860 TR 03:55 PM -- 05:10 PM TA - Akhila  
Fri 11:30 AM -- 12:20 PM 26326 TR 11:10 AM -- 12:25 PM TA - Akhila  
Fri 01:50 PM -- 02:40 PM 26347 TR 11:10 AM -- 12:25 PM TA - Akhila  
Fri 03:00 PM -- 03:50 PM 38861 TR 03:55 PM -- 05:10 PM TA - Akhila  
           
           
           

 

Course Material & Textbook

The course material covered in class is primarily drawn from two text books, both are required.

(1) Advanced Programming in the UNIX Environment 3rd Edition by Stevens & Rago. Available as an E-book on Amazon. Referenced as [UX] in schedule.

(2) The C Programming Language 2nd Edition by Brian W. Kernighan and Dennis M. Ritchie.


 

Advanced Programming in the UNIX Environment
Third Edition

W. Richard Stevens
Stephen A. Rago

ISBN-13: 978-0321637734

Available immediately as an e-book.

Not free. (2nd edition is free and available here )
if you use the free version exercises for example may be on different pages.

Required

     
 

The C Programming Language
Second Edition

Brian W. Kernighan
Dennis M. Ritchie

Available immediately as an e-book.
(git hub e-book -- .pdf)

free.

Required (e-book)

     
 

System Programming with C and Unix.


Adam Hoover

ISBN-13: 978-0136067122

 

Available immediately as an e-book.
(git hub e-book -- .pdf)

free.

Recommended (e-book)

 

The Linux Programming Interface
A Linux and and UNIX System Programming Handbook


Michael Kerrisk

ISBN-13: 978-1593272203

Available immediately as an e-book from no starch press (use code MAMAKU for both hardcopy and e-book).

not free.

$73.47
for e-book and pdf + shipping.
(link to get to 'deal' - here)

Recommended (e-book).

     
     

 

There may be additional recommended books and readings over the course of the semester, we will make sure these books will be available as e-books.

Programming Language

We assume a fluency in Java and learning how to program. In our class we will program in plain C - and we do not assume previous C knowledge. We will provide in-class tutorials and a warm-up code (templates) for projects and labs in C. We may also program using a scripting language (C like syntax) like bash, ksh or sh.


List of Technologies

  • Computer or laptop with a working web camera. We assume you have admin access on your laptop to install software/platforms on your computer.
  • We must ensure you have reliable Internet access, not having Internet access is not an excuse in our class. Campus may be an option and it provides spots with reliable Internet access.
  • We will use our departmental server: odin.cs.uga.edu for testing and submitting programs (and homework)-- make sure you have access to odin (part of first HW), if there are issues with access to odin please contact support@cs.uga.edu.
  • We will use eLC for some homework.
  • We will use survey monkey for some activities.
  • We use Piazza, and eLC as a discussion platforms. You must keep up to date with Piazza.
  • Screen Video - you will need to make a demo video of your projects, and submit a private link as port of your submission of projects and some assignments.
We will post HW/ Projects on a web page, a link to this web page will be provided via eLC. There may be modification of HW or projects on piazza - in this case these modification notes will be pinned posts.

.

Grading Policy and Evaluation:

You are evaluated primarily on programming projects. The labs are primarily programming assignments, and they may have a Q/A component, you will also need to submit a video demonstration of your project.

The distribution is below, but is subject to change.

NOTE: Syllabus & policies are solidified after 3rd week of class is complete. There still may be minor changes after that.

 

Projects (P3-P5)

30%

Final Project: (take home project, live feed presentation during final exam period & code, report)
10%

Participation : on-line ( attendance with camera on, and contributing in piazza discussions).

 

Accommodations Lecture: Attendance: 2 missed attendances are allowed to mitigate any absence.

10%

Homework

20%
Weekly Labs   (live-feed labs start around week 3).
To get to any credit for the lab you must, minimally, be present (and show progress) at your lab session. The labs are interactive.

Accommodations Labs: Absences (excused or in-excused). We will drop the 2 lowest lab grades. We will have no labs the weeks of Feb 15 & Mar 08.
30%

 

The general grading philosophy is the following (the context is "programs" and "projects" but it should generalize to other required elements). See translation from percentage to letter grades finger grade in link further below.

A+ Extraordinary, goes beyond the minimum criteria both in depth and breath. Design is thorough and well thought out, code base and implementation is beautiful- modularized, complete, clear and concise. A well thought out debugging strategy is apparent. Well documented code. The evaluation plan is well executed and well thought out, goes beyond the simple cases and illustrates strong problem solving skills.

A Superior (somewhat less than an A+, almost perfect code, beautiful, concise, minimum criteria met, not as much depth and forethought as an A+ but it is superb), goes beyond meeting the minimum criteria demonstrates depth, can apply solution to a variation of similar problems.

B Good, minimum criteria well executed and well done, shows some depth and understanding, meets most test cases but does not demonstrate as much forethought as an A;

C Fair, minimum criteria met, but could have been executed with more depth and forethought.

We will use the College Board's convention to convert from percent grades to letter grades grades:

(see here).

 

Late Policy

Assignments, projects and summaries (if applicable to this class) are due on the date and time specified in the assignment or the day of demonstration (email as a time stamp and hand-in hardcopy the next day). Late submissions cannot be accepted). There are some exceptions with mitigating circumstances - please discuss these with instructor before due dates).

 

Regrade Policy:

You may request a re-grade of any graded item any time within 7 calendar days (i.e., not 7 class days) of receiving the grade. To make a request, you should submit a written justification for the request via a private to instructors on piazza.


Homework, Lab & Projects Posting

Projects and homework will be posted on the web from the scheduling page (see link top menu bar), and will be accessible from anywhere on the Internet Assignments may be posted before they are officially assigned; however, you should not assume that an assignment on the schedule page is in final form until the date it is assigned. In other words, assignments are subject to change before the date that they are officially assigned. There may be additional required elements. There may be small modification after assignment date, these modifications are for clarification. You may not post our lab description web pages to anyone outside the lab that you are participating in.

 

Culture of Collaboration

A goal of this course is to establish a culture of collaboration. This is important in a programming. We foster the principle of collaboration with interactive classes and labs. You are expected and encouraged and to discuss how to solve programming problems in the general sense discussing how to conceptualize the problem while not copying and sharing code snippets (unless snippets are provided by the TA or instructor).

Level of collaboration may differ across courses, in this course, collaboration is allowed as long as it is credited and is not direct sharing of code, or plagiarism. Plagiarism, such as copying someone else's solution or C-code, is not allowed. The write-ups must always be your own. Modifying someone else's code to make it your "own" is unacceptable. In case of doubt, consult the course instructor or the graduate TA. See more details about this below under Academic Honesty.

We do allow for discussion and help among students, but we expect you to document any significant help that you receive in a README files. You must include the names of your collaborators when submitting an assignment. You should be able to reproduce anything you submit. If the instructor or a TA does not think that you can reproduce a submission, then they can call you out on it and appropriate actions will be taken as per the Academic Honesty Policy (outlined further and in more details further below).

 

Participation, Attendance and Labs

Class attendance is mandatory; we do take attendance frequently, and class participation is % of your grade (see breakdown above). Excused absences count against attendance when taking attendance - we do take it frequently so missing one or two classes should have minor effect on your grade. You may earn bonus points for perfect attendance.

Labs are especially interactive so attendance is particularly important for labs - there is no credit for a lab unless you participate and show progress in the lab. With permission of the instructor you may make up a lab only in the same week if you have an excused absence. You are responsible to make up and coordinate with the instructor.

An excused absence enable you to make up quizzes & labs within the week of your scheduled lab.

When class has an on line (live-feed) component we take attendance via screen capture and you must have camera turned on in-order as being fully connected and to be counted as being in attendance.

 

 

 

Instructor Enforced Withdrawals and Excessive Absences.

Missing 8 days or more of classes (inclusive of excused absences) is considered excessive absentia and may result in an instructor enforced withdrawal.

Missing 2 scheduled exams, not participating in 3 or more labs, or missing 2 or more project submissions (inclusive of excused absences) may result in instructor enforced withdrawal.

 

 

Academic Honesty

As a University of Georgia student, you have agreed to abide by the University’s academic honesty policy, “A Culture of Honesty,”and the Student Honor Code. All academic work must meet the standards described in “A Culture of Honesty” found at:

http://www.uga.edu/honesty.

Lack of knowledge of the academic honesty policy is not a reasonable explanation for a violation. Questions related to course assignments and the academic honesty policy should be directed to the instructor.

The Computer Science Department recognizes honesty and integrity as necessary to the academic function of the University. Therefore all students are reminded that the CS faculty requires compliance with the conduct regulations found in the University of Georgia Student Handbook. Academic honesty means that any work you submit is your own work.

Common forms of academic dishonesty, which students should guard against, are:

  • copying from another student’s test paper or laboratory report, or allowing another student to copy from you;
  • fabricating data (computer, statistical) for an assignment;
  • helping another student to write a laboratory report or computer software code that the student will present as his own work, or accepting such help and presenting the work as your own;
  • turning in material from a public source such as a book or the Internet as your own work.

Three steps to help prevent academic dishonesty are:

  • Familiarize yourself with the regulations.
  • If you have any doubt about what constitutes academic dishonesty, ask your instructor or a staff member at the Office of the Vice President for Instruction.
  • Refuse to assist students who want to cheat.

In addition to the terms expressed above, you also agree not to make any portion of your assignments for this class publicly available for others to view.

This includes, but is not limited to:

1) posting snippets of your code on help websites.

2) Engaging in activities similar to this will be seen as either giving or receiving unauthorized assistance.

3) With regard to question and answer websites (e.g., StackOverflow, Yahoo Answers, etc.), you may ask general questions about programming on such websites that relate to your assignments in this class, however, you must phrase such questions in a way that make them independent of the specific problem you are having.

If you need specific help with portions of your code (while displaying your code), then you must consult with the instructor or teaching assistants first (unless expressly and explicitly stated otherwise in the assignment description). Furthermore, if you copy or extend material from the Web (in any fashion) or other sources and incorporate that material into the submission for one of your assignments then you must cite where you got the code from in order to avoid plagiarism.

All faculty, staff and students are encouraged to report all suspected cases of academic dishonesty. All cases of suspected academic dishonesty (cheating) will be referred to the Office of the Vice President for Instruction for academic dishonesty. Penalties imposed by the Office of the Vice President for Instruction may include a failing grade in the course and a notation on the student’s transcript. Repeated violations are punishable by expulsion from the University.

 

 

Other Class Policies

If you miss class it is your responsibility to find out what you missed if you don't attend class. Please do not email instructor and ask what you have missed - you may ask however after class.

You are required to subscribe to the class email list or forum (Piazza)- and be aware that sometimes homework is assigned or templates are distributed via this forum - or there are some hints posted in the forum - you probably do not want to miss that.

The purpose of the assignments and projects is familiarization of concepts and details of programming.. The assignments & projects are expected to be individual work unless other specified. However, you are encouraged to ask questions of one another, and to respond to other student's questions on the email list.

Unless otherwise specified, exams are closed-book and no additional materials may be used.

Missing an exam: absence due to serious illness will be an acceptable reason for missing an exam. Doctor's diagnostic note is required (these absences may be confirmed with your doctor). The final grade will be scaled accordingly.


COVID guidelines - see here.

 

Course Credits

 

Michael Cotterell, Eileen Kraemer, Kang Li, and Brad Barnes have contributed significantly to this course. Other influences includes: Sheila Widnall (MIT), William Stallings (previously MIT), Andrea & Remzi Arpaci-Dusseau (University of Wisconsin); Andy Wang, (UCLA) now at Florida State University Fred Kuhns (Washington University); Jeff Donahoo (Baylor University - TCP/IP and sockets), Darrell Long (UC Santa Cruz - Scheduling), Chris Kruegel (UC Santa Barbara) and students feedback have also had an impact of this course.

 

Class Photo: A Previous (different) Class