CSCI 1730 UNIX Systems Programming

 

Instructor: Professor Maria Hybinette (Prof. Hybinette, or Dr. Hybinette & She/Her).
Office Hours: via zoom (starts 2nd or 3rd week of classes) See below table.
Contact: ingrid AT uga.edu (or private message on piazza).

Meeting Times:

Please only attend the lecture and breakout lab sections for which you registered for on Athena. Please note that all breakout labs sessions last 50 minutes, even the ones on Tuesdays and Thursdays.

Lectures will begin on a normal UGA schedule.

Office Hours will begin 2nd or 3rd week of classes.

In-person break-out Lab sessions will start once we have TAs assigned (typically 2nd week, or 3rd week of classes).

---> We may assign out-of classroom labs before the in-person laboratories begin.

Location and Times:

Lab Location: Boyd 0202 CRN TA Office Hrs
Mon 10:20 AM -- 11:10 AM 64230 TA -TBD Labs are 50 minutes
Tue 09:35 AM -- 10:25 AM 64238 TA -TBD Labs are 50 minutes
Thu 09:35 AM -- 10:25 AM 64239 TA -TBD Labs are 50 minutes
Fri 11:30 AM -- 12:20 PM 64237 TA -TBD Labs are 50 minutes
Lecture Location: Biology 0404E   Instructor Office Hrs
Tu/Th 12:45 pm-02:00 pm All CRN Hybinette Fr: 1pm-2pm (zoom), Th 4-5pm (in person by appointment (schedule in piazza private msg).


Course Overview:

This is a four-hour lecture/laboratory course that covers the basics of UNIX Systems Programming, including file and directory structures, basic and advanced file I/O, process creation, and interprocess communication. Throughout the semester, the language basics of C will be covered in order to familiarize students with the use of C in systems programming. The C++ language may be briefly discussed at the end of the semester.

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

Time Commitment:

This course is a programming intensive course. Students are expected to spend, on average: eight to twelve hours per week outside of lectures and labs studying course concepts and working on programming assignments.

We calculate eight to twelve since this course is a mix of laboratory and lecture based course. A four credit hour lecture based course typically assumes- at least two hours of outside classroom work per one credit hour. For a four credit hour lecture based course this amounts to eight hours of expected outside the class room work, while a four hour credit laboratory based course expects at least 3 hour per credit - so a total of twelve hours (minimum) of outside classroom work [UGA Bulletin] [FSA].

Prerequisite & Co-requisite Requirements:

CSCI 1301 Introduction to Computing and Programming (Prerequisite)
CSCI 1302 Software Development (Co-requisite - better as a prerequisite).

We do NOT recommend taking CSCI 1730 and CSCI 1302 during the same semester since both courses are programming intensive.

A fully charged laptop with reliable Wi-Fi is required at every in-person meeting.

Able to make a demo video of you screen and post

Learning Objectives:

  1. Navigate a Unix based system and use tools and commands for system programming.
  2. Trace, design, and implement software solutions to non-trivial problems using the C programming language .
  3. Trace, design, and implement programs that spawn multiple processes or multiple threads and utilize inter-process communication.
  4. Understand binary representation of integers in memory and use bitwise operators to solve problems.
  5. Compare and contrast various programming paradigms

Course Material & Textbook

The course material covered in class is primarily drawn from four popular press books (only two the four are required, the other two are optional).

 

    Required -- Textbooks
  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 )

Note 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

ISBN-10 ‏ : ‎ 0131103628
ISBN-13 ‏ : ‎ 978-0131103627

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

Free.

Required (e-book)
    Recommended -- Textbooks
 

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)
     


List of Technologies

A fully charged laptops with reliable Wi-Fi connection is required.

Laptop software and other requirements:

  1. Runs either Windows (8 or newer), Mac (10.13 or newer), or Linux/UNIX.
  2. Capable of running ssh, sftp, and scp to connect to our server odin.cs.uga.edu (odin).
  3. Has sufficiently free hard drive space (minimum 64 GB free)
  4. Has sufficient caches space (minimum 1 GB)
  5. You have administrative (root) access.
  6. Sufficient RAM (minimum 8 GB)
  7. Multiple Browsers installed. Minimally: Mozilla Firefox, and Google Chrome.
  8. Sufficiently charge (bring charger).
  9. A persistent, active & reliable Internet Connection via Wi-Fi

Other Technologies :

  • You will submit assignment & labs on both on eLC and our departmental server: odin.cs.uga.edu.
    • We will use  odin.cs.uga.edu for testing your assignments, make sure your program runs on odin before submitting.
  • We will use survey monkey for some activities.
  • We use Piazza for most communication - you must keep up to date with Piazza- we assume you check this every day. https://piazza.com/uga/spring2023/csci1730
  • We will use a schedule.html (and eLC) to post slide sets and assign the assignments.
  • Screen Video (private demo link on you tube)- you will need to make a demo video (at you tube as a private video) of your projects & assignments, and submit a private link as port of your submission of projects and some assignments on piazza. For creative assignments we may solicit comment from your peers (classmates in our class).

Potentially Additional Requirement(s):

We may utilize to ZOOM - for live feed lectures - only envisioning 0 zoom lectures.

  • Computer or laptop with a working web camera. We assume you have admin access on your laptop to install software/platforms on your computer.

Grading Policy and Evaluation:

You are evaluated on the below component (in table). The distribution is below, but is subject to change.

NOTE: Syllabus & policies are solidified after 3rd week of class - but there still may be minor changes after that.

 

Participation (piazza activity & attendance)

5%

Exam

10%

Final Project: Take home project, required presentation during final exam period & code, report, and a demo video. Presenters will be picked either from volunteers, or randomly if we run out of volunteers.

Everyone must attend the full session to receive final exam credit. Being an active audience is important.

10%

Labs/Breakout Sessions

Lab are in-class / in-person, and grades are based on effort level.

Labs are mandatory for the class, we practice concepts learned by practice in labs.

(At least) the 2 lowest lab grades are dropped.

25%

Homework/Projects:

The assignments are typically extension of the lab(s) the project. No dropped assignments.

50%

 

 

 

Grading Philosophy

The general grading philosophy is the following (the context is "programs" or "projects" or assignments and generalizes to summaries and 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; [threshold].

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


Assignment, Homework and Projects Posting Methods:

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.

For modification of HW or projects we will post these on piazza - in this case these modification notes will be pinned posts at piazza.

Programming Language(s), Odin & Submitting

You will submit your work on both:

  • eLC, and
  • odin.cs.uga.edu (our departmental server ).

The SSH hostname for odin is odin.cs.uga.edu. You can login using your UGA MyID and password. If you are off-campus, you will need to turn on the UGA VPN (https://remote.uga.edu) first before you can log into odin.

All programming assignments should be submitted to the “csci-1730b” account on odin. You will also submit on eLC.

General format for submitting while on odin is:
     submit <Assignment Directory Name> <Grader Account Name>
     submit Assignment1Directory csci-1730b

The assignments, labs & 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 at the labs and on piazza.

[README.txt]: You will implement your programming assignments in C. All submissions that involve code are expected to include a README.txt file explaining how to compile and run the code in the submission.

We will cover specifics of required framework (and guidelines on installing or enable access to the framework) the first couple of weeks of classes, you will be expected to to have access of the resources from your laptop. .

[Makefile]: You will need to submit a proper "Makefile" for all assignments.

[gcc compiler]: All submissions must compile and run on the departmental odin server, and using the gcc compiler on odin @ directory:
        /usr/local/gcc/12.1.0/bin/gcc
.

[editor]: emacs or vi. The instructor will use vi.

We recommend that you install the gcc (and gdb) framework locally on your laptop, instead of logging into odin.

 

Labs/Breakout Sessions

In person lab/breakout sessions typically begin second week of classes. If we do not have a TA assigned the second week of classes the lab will be 'take-home'.

In person labs are interactive, you can talk to each other but not share code. You do need to demonstrate progress and complete tasks required later for more extensive related projects. The labs are designed to be completed during the lab session - we may accept 'late' work up to 24 hours without penalty for students who need extra time.

 

Late Policy

Assignments, 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 homework cannot be accepted. There are some exceptions with mitigating circumstances - please discuss these with instructor before the 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 regrade request, you should follow the following procedures:

  1. Post a private message on piazza to your TA (and to instructors) who graded your assignment (GTA grades projects, UTA grades labs). Please explain to your TA in detail why your assignment should be considered for regrading. Tag the message with the proper tag (e.g., project01, lab02).
  2. If necessary, you may need to set up a time to speak with your TA to resolve the issue.
  3. After attempting the above and the issue is still not resolved, please contact your instructor (via a private piazza message).

Exam(s):

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.

To be considered for an excused exam absence due to emergency, students must email detailed documentation explaining the circumstances to the instructor no more than 7 days after the exam is missed. The instructor has full authority to decide whether or not to excuse an exam absence. If the absence is excused, then the final exam score (or a make-up exam) will be counted for the missed exam. If the absence is not excused, then a grade of 0 will be given.

Participation and Attendance

Class attendance is mandatory; we do take attendance frequently, and class participation is a % of your grade. Excused absences count 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. When class has an on-line component we take attendance via screen capture and you must have camera turned on in order as being counted as being in attendance.

NOTE: We may take photos for checking attendance during live classes.

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 in-person when you return. Please note that we typically do not respond to these email.

Instructor Enforced Withdrawals and
Grade Deduction

Missing 6 days or more of class or labs (inclusive of excused absences) is considered excessive absenteeism and may result in an instructor enforced withdrawal, and grade penalty for continuing missing classes and/or labs.

Missing 2 scheduled exam (inclusive of excused absences) may result in instructor enforced withdrawal.

Course Material & Copyright

Any course material, slides, projects and assignments (including your implementations) downloaded from eLC, odin, or our website must not be shared with anyone, posted on any websites, or used for commercial purposes.

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.

In addition to the terms expressed above, you also agree not to make any portion of your assignments for this class {publicly or non-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.
  4. Unauthorized use of artificial intelligence software or word mixing software to write your assignments or disguise plagiarized work is considered unauthorized assistance in this course.

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

If you 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. Note that you should not 'direct copy' at any time.

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.

Division of Academic Enhancements

The Division of Academic Enhancement (DAE) offers free peer tutoring in over 200 of UGA’s most rigorous courses including writing tutoring. To engage with a tutor, download the Penji app, available on iOS and Android, and create an account using your MyID@uga.edu email address. Don’t have a smart phone? Navigate to https://web.penjiapp.com and create an account using your MyID@uga.edu email address. Need help? Visit our website (https://dae.uga.edu/services/tutoring/) for more information on how to engage with a tutor or email us at tutor@uga.edu. In addition to peer tutoring, the DAE also provides Academic Coaching, Student Success Workshops and more. The DAE is committed to the success of all students at the University of Georgia. For more on these and other resources, please visit dae.uga.edu

Contributions

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 had an impact of this course.

 

Class Photo: A Previous Class