Synopsis

In this course we will cover the basics of UNIX systems programming, including 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, sprinkled with a little C++ (at the end of the semester). You may write shell scripts using available UNIX utilities and tools.

The 3 Pillars of Knowledge (Prerequisite)

I. We assume basic understanding of programming concepts (e.g., basic data structures, the main program, utilization of procedures (or functions), run / execute, reading & writing, files, and basic debugging).

II. We further assume that you have in-depth knowledge of one high-level language programming language such as Java, or Python.

III. We also assume you have some understanding of the basic use of the Linux Operating System (e.g., tasks such as traversing directories and listing files in a directory).

General Information


Lectures: Tue/Thu:    02:00 PM - 03:15 PM Life Sciences (picture)
(Bldg 1057), Room: # C127
120 East Green St.,
Athens, GA 30602
Break-out
Tutorials
Sessions.

Wed:        10:10 AM - 11:00 AM (MH, Jinze)
Wed:        11:15 AM - 12:05 PM (Dash)
Wed:        12:20 PM - 13:10 PM (Church)
Wed:        13:25 PM - 14:15 PM (Jinze)

Boyd
(Bldg 1023)
Room: # 0201
Instructor: Maria Hybinette maria (at) cs.uga.edu
Office hours: Thu: 3:30 PM-4:30 PM (and by appointment) Boyd 219C
TAs

Jinze Li (Lead TA) -- Fr 09:00 AM-- 10:00 AM
Sambitesh Dash ----- Tu 12:30-PM -- 01:30 PM
Michael Church------ We 3:20 PM - 4:30 PM

Jinze Li
Sambitesh Boyd 307 lab
Michael 223A

 


jinze.li25 (at) uga.edu
samdash (at) uga.edu
church (at) cs.uga.edu

     
     
Mailing lists: cs1730@LISTSERV.UGA.EDU mandatory subscription


Course Textbook and Materials

The main text book for class is the classic ;"The Stevens' Book" (and we will use the newest edition, 3E, which includes author Rago);

  • W. Richard Stevens, Stephen A. Rago, and is Published May 14, 2013 by Addison-Wesley Professional. The book Web Site here.
  • The book is available electronically.
  • ISBN-10: 0-321-63773-9 or ISBN-13: 978-0-321-63773-4.

We will implement systems program primarily in the programming language C, and sometimes embellish with 'shell scripts' .

To facilitate this: We will use the textbook (see above) and a wide array of web resource. These will be announced as needed, e.g., we will learn C++ towards the end of the semester, so we will not post that resource early on.

For people who enjoy books to follow along, the following books are recommended for your reference. They're not particularly used in the class as a text, but are related and very useful books to have (some of these are available in electronic format (pdf).

  1. ``The C Programming Language'' -- important: make sure you get the 2nd Edition (or later) covering ANSI C. by Brian W. Kernighan and Dennis M. Ritchie. Prentice Hall, Inc., 1988. ISBN 0-13-110362-8 (paperback), 0-13-110370-9 (hardback).
  2. King, K. N. (April 2008). C Programming: A Modern Approach (2nd ed.). Norton.ISBN 978-0-393-97950-3.
         
  • Targeted Budget: Textbook, resources and materials will be about $200.00.

     

    Grading Policy and Evaluation

    You are evaluated via exams & quizzes, in-class tutorials (assignments) and labs, quizzes and implementation of software projects. The distribution is below, but is subject to change.

    Participation (web and in class) 05%
    Quizzes (Lecture & Lab) 05%
    Exam 1 10%
    Exam 2 10%
    Final 15%
    Projects 30%
    Hackathons / Labs 25%

     

    The general grading philosophy is the following (the context is "programs" and "projects" but it should generalize to other assignments, and other required elements).

    A+ (95-100) 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 (90-94) 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 (80-89) 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 (70-79) Fair, minimum criteria met, but could have been executed with more depth and forethought.

     

    Grading Scale for the +- system (see here).

    http://www.collegeboard.com/html/academicTracker-howtoconvert.html

     

    Late Policy

    Homework assignments and summaries (if applicable to class) are due on the date and time specified in the assignment or project (email as a time stamp and hand-in hardcopy the next day). Late homework will not be accepted.

    Programming assignments turned in after the due date lose 10% per day, including weekends and holidays.

    There may be a time where you submit a project but it doesn't work for the TA (the TA will not fix your programs for you). If this happens, your project will be returned to you and you will be given the opportunity to fix and resubmit the project (after this point you may have to meet with the TA to demonstrate it). After the project is returned to you, every 24 hour period used to fix the project we will deduct 10% for every day late. If you feel that the project should have worked, and you are not at fault, please contact the TA immediately in order to schedule an appointment to resolve the issue.

    Homework and 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 web 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.

    Participation and Attendance

    Class attendance is mandatory; we typically do not take attendance - but it happens, and class participation is 5% of your grade. So how do we know? Don't worry, we know.

    Homework, assignments, and important dates will be posted on the scheduling page and is provided as a courtesy and is not always complete. It's **your** responsibility to find out what you missed if you don't attend class (preferable from another student since we are a large class). You are also required to subscribe to the class email list or forum - and be aware that sometimes homework is assigned via the forum - or there are some hints posted in the forum - you probably do not want to miss that.

    Office hours are of-course optional. They're your chance to ask the professor and TA questions about the material being covered, programming assignments, or anything else about operating systems (or other general computer science issues) you want to discuss.

    Other Class Policies

    The purpose of the assignments and projects is familiarization of concepts and details of systems 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. Direct exchange of code is prohibited, as is line-by-line assistance from anyone or thing. This is checked for every assignments. If you do get help from other sources than book, slides, or TA you must acknowledge the source in the material that you turn in - still no copying is allowed.

    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.

    Missed Assignments/Exams or Project: A doctor's diagnostic note is required. The final grade will be scaled accordingly. You must subscribe to the class email list, see details HW1 listed on the schedule page. Assigned homework (if any) must be typed, you must also email a copy to the class email account.

    Class Photo:

     
     
     
     
    ~~ Spring 2013 Programming Language Class ~~
     


    Acknowledgments

    The course may use materials from previous systems programming courses taught at other universities.