CS 375 ­ UNIX System Programming Spring 2014 ­ Syllabus

advertisement
CS 375 ­ UNIX System Programming
Spring 2014 ­ Syllabus
Instructor
Dr. Deborah Hwang KC­264, 488­2193, hwang@evansville.edu Home page: http://csserver.evansville.edu/~hwang
Office Hours: See instructor's home page.
Course Home Page
Handouts will be available only at the course home page (http://csserver.evansville.edu/~hwang/s14­
courses/cs375.html). Although announcements regarding handouts and assignments will be made in class, it is your responsibility to consult the course home page on a regular basis. Grades will be posted to Blackboard (http://bblearn.evansville.edu).
Catalog Description
Coverage of UNIX software development and UNIX administration. Includes discussion of common shells and scripting languages, X Windows and interprocess communication.
Objectives and Outcomes
The main objective of this course is to become proficient in the use of system programming tools and techniques used in the UNIX operating system. Specific outcomes for this course include:
●
●
●
●
●
●
●
●
●
●
●
Students will be able to write C/C++ programs using UNIX systems for file I/O.
Students will have a basic understanding of UNIX filesystem security features (file ownership and permissions) and file types (regular, directory, special, and links).
Students will be able to use use essential UNIX tools effectively from the command line and/or in scripts. These tools include: grep and find.
Students will be able to write UNIX shell scripts employing redirection, pipes, loops, selection and iteration statements, argument passing, command substitution, and HERE documents.
Students will be able to write C/C++ routines that use the Curses library for terminal I/O.*
Students will be able to write programs in a scripting language such as PHP.
Students will be able to write graphical applications using a C++ toolkit.
Students will be able to create new processes using fork and exec.
Students will be able to send signals to processes and be able to wait and handle signals.
Students will have a basic understanding of TCP/IP networks and protocols.
Students will be able write programs that communicate via standard UNIX interprocess communication methods: pipes, sockets, semaphores, message queues and shared memory.
Prerequisites: CS 215
01/13/2014
Page 1 of 5
D. Hwang
Required Textbooks
Neil Matthew and Richard Stones, Beginning Linux Programming, 4ed, Wrox, 2008, ISBN 978­0­470­
14762­7.
Marc J. Rochkind, Advanced UNIX Programming, 2ed, Addison­Wesley, 2004, ISBN 978­0­13­141154­
8
Links to supplemental on­line references at: http://csserver.evansville.edu/~hwang/s14­courses/cs375/references.html Daily Requirements
Assigned daily reading. Written in­class and homework assignments as needed.
Programming Projects
There will be 7­8 programming assignments of 1­2 weeks in duration. In addition, there is a final programming project that is due at 11:00am, Tuesday, May 6 (the end of the scheduled final exam period for this class).
Evaluation
There are no exams in the class. Final grades will be based on project work only using the following weighted distribution:
75%
15%
10%
Programming projects (weighted as indicated on the assignment)
Final programming project
In­class and homework assignments (weighted as indicated on the assignment)
Late Homework, Late Projects
All assignments (homework, projects) are due at the instructor's office and/or electronically as appropriate by 4:30pm on the date specified unless otherwise noted. Any assignments arriving after 4:30pm are considered late. The following automatic late penalties will be applied:
10%
20%
30%
if handed in by 4:30pm, one day late
if handed in by 4:30pm, two days late
if handed in by 4:30pm, three days late
Unexcused late work will not be accepted for credit after three days after the due date without prior arrangements. For the purpose of counting days, Friday 4:30pm to Monday 4:30pm is considered one day. Please note that the purpose of the automatic late extension is to allow students leeway when needed. It is usually better to hand in something late and completed than on­time and incorrect. However, chronically handing in late submissions will lower your final grade.
Valid excuses for missing exams, missing classes, and handing assignments in late include illness, family emergencies, religious observances, official UE events such as varsity games and concerts, etc. They do not include (most) work conflicts, studying for other classes, leaving a day early or staying home an extra day over a weekend or holiday, etc. In general, an excused absence is one caused by circumstances beyond your control.
01/13/2014
Page 2 of 5
D. Hwang
The instructor will rely on your integrity for getting work excused. If you have a valid excuse, send an email to the instructor explaining the excuse. For religious observances and official UE events, you must inform the instructor that you will be absent before the absence occurs, otherwise it will be considered an unexcused absence. The instructor reserves the right to ask for official documentation in cases of chronic absences.
Excused work must be made up within one calendar week from the original due date for full credit. Late excused work will not be accepted Exceptions will be made for serious or prolonged illness, or other serious problems. Please note: It is your responsibility to take care of missed or late work.
Attendance Policy
Attendance is important and expected. Attendance records will be maintained in accordance with Federal Law, but will not be used in the determination of grades, except to the extent it affects the in­class exercise portion of your grade and in borderline cases. However, the instructor reserves the right to reduce a final grade in this course for excessive absences. Students will be warned prior to such action. Students are responsible for all material covered in class. If you miss a class, find out what was covered from another student. You are responsible for checking the course home page for new assignments even if you miss class.
Honor Code
All students are expected to adhere to the University's Honor Code regarding receiving and giving assistance. The following specific guidelines are in force for this course.
●
Written in­class and homework exercises are for you to gain experience and practice. You may collaborate with your classmates, but each student should submit a solution in his/her own words that reflect his/her understanding of the solution. Ultimately you will be required to demonstrate your proficiency of the material on exams. Therefore, it is highly recommended that you attempt all homework problems on your own before finding a solution from another source.
●
Programming projects are to be your own work unless otherwise noted. Discussing the meaning and general solution techniques of an assignment with other students is permitted. For example, discussing “How is this assignment similar or different from problems presented in the text or in lecture?” is acceptable.
Asking another person for assistance on specific items in your own project also is permitted, but you may not observe another person’s code in its entirety for the purposes of studying or copying it, with or without that student's permission. For example, asking, “What does this compiler error mean?” or “Do I have the correct PHP syntax here?” is acceptable. Whereas asking “Can I see how you coded your server sockets?” is not acceptable.
In particular, since UNIX systems tend to be open by default, it is absolutely forbidden to “rummage” around the csserver file system looking at anyone else's work even if they have not set the file permissions to prevent such observation. For those that would rather not rely on the integrity of others, it is suggested that most work for this class be put into a subdirectory that has its permissions set to owner only. Unfortunately, this generally is not possible with web pages. 01/13/2014
Page 3 of 5
D. Hwang
Giving or receiving unauthorized aid on a programming project will result in a grade of 0 for the first offense. Any subsequent violations will result in a grade of F for the course and possibly formal disciplinary action.
If there is any doubt as to whether assistance is acceptable, consult the instructor.
Course schedule
Here is a tentative schedule showing the daily reading assignments for this term. Adjustments will be made as needed. The "acronyms" appearing below correspond to reference material. BLP is the Beginning Linux Programming book and AUP is the Advanced UNIX Programming book (the course texts). All other references are on­line and may found through links on the course web site.
Week of
Tuesday
Thursday
01/13
UCRE, UOVE: History of UNIX
BLP Ch 1: Getting Started
AUP: Ch 1: Fundamental Concepts
BLP Ch 1: Getting Started
UITL Ch 2, 3: Basic Commands
01/20
BABS, BLP Ch 2: Shell Programming
BABS, BLP Ch 2: Shell Programming
01/27
BLP Ch 3: Working with files
AUP Ch 2: Basic File I/O
BLP Ch 3: Working with files
AUP Ch 4: Advanced File I/O
02/03
BLP Ch 4: The UNIX Environment
BLP Ch 5: Terminal Programming
BLP Ch 6: Curses
AUP Ch 4: Terminal I/O
02/10
BLP Ch 6: Curses
AUP Ch 4: Terminal I/O
BLP Ch 7: File Locking, GDBM Database Routines
02/17
PINT, PZND, PW3S: Introduction to PHP
PINT, PZND, PW3S: Introduction to PHP
02/24
PINT, PZND, PW3S: Introduction to PHP
BLP Ch 11: Processes (fork and exec)
AUP Ch 5: Processes and Threads
03/03
BLP Ch 11: Signals and Signal Handling
AUP Ch 5: Processes and Threads
Instructor out of town
No class
03/10
SPRING BREAK – No class
03/17
BLP Ch 12: POSIX Threads
AUP Ch 5: Processes and Threads
03/24
BLP Ch 13: Pipes
BLP Ch 14: Semaphores, Shared Memory
AUP Ch 6: Basic Interprocess Communication AUP Ch 7: Advanced Interprocess Communication
01/13/2014
BLP Ch 12: POSIX Threads
AUP Ch 5: Processes and Threads
Page 4 of 5
D. Hwang
Week of
Tuesday
Thursday
03/31
BLP Ch 14: Shared Memory, Message Queues BLP Ch 15: Sockets
AUP Ch 7: Advanced Interprocess AUP Ch 8: Networking and Sockets
Communication
04/07
BLP Ch 15: Sockets
AUP Ch 8: Networking and Sockets
BLP Ch 15: Sockets
AUP Ch 8: Networking and Sockets
04/14
BLP Ch17: Using Qt4
CS 497 Senior Project Presentations
No class
04/21
BLP Ch17: Using Qt4
BLP Ch17: Using Qt4
04/28
BLP Ch17: Using Qt4
Finals Week
No Class
There is no Final Exam for this course.
The Final Programming Project is due by 11:00 AM on Tuesday, May 6, 2014
(end of the final exam period scheduled for this class)
01/13/2014
Page 5 of 5
D. Hwang
Download