User:Jeffj/CS4-5223/Syllabus
CS 4-5223 Unix Systems Programming
Fall 2019, Section 001, TR 9:30am-10:45am, CSM 211 (3 credits)
Instructor
Dr. Jeff Jenness | |||
Office | CSM 132 | Office Hours | TR 11:00am-12:00pm and MW 11:00pm-12:00pm |
Phone | 870-972-3978 ext. 8117 | jeffj@astate.edu |
Course Description
- CS 4-5223. UNIX Systems Programming
- System level programming in UNIX systems. Prerequisites: CS 3113. Fall.
Objectives
The student will learn the fundamentals of the Unix programming environment. The student will be able to understand and program with the Unix application programmer interfaces including the file, directory, process, and communication APIs.
Outcomes
- Understand the following concepts:
- Unix command-line environment
- Regular Expression syntax and construction
- basic Unix system structures
- Unix streams and file I/O
- Unix process structure and signals
- threads and thread interaction
- IPC communication protocols
- Networking with TCP/IP
- Understand and use the following software (minimally):
- Unix command shell (bash)
- GNU make and gdb
- GNU compiler suite (C or C++)
- Unix POSIX APIs on Debian Linux
- Explore aspects and understand the Unix APIs:
- I/O APIs (File, Directory, Formatted, Asynchronous)
- Process APIs (Control, Signals, Threads, Daemons)
- Communication APIs (Interprocess, Networking)
- Be able to construct Unix programs using the tools and APIs
Grading
Grades are assigned on a standard scale with the following weights:
Quizes 50% Projects (3) 50%
Schedule
(subject to change)
Week | Topic | Reading | Assignment |
---|---|---|---|
1 | The Unix environment and basic commands | ||
2 | Regular Expressions in Unix | ||
3 | The Unix programming environment: GCC, vi, make, gdb | Chapter 1 & 2 | |
4 | Basic File I/O and streams | Chapter 3 | |
5 | Advanced File I/O, Directories and Control | Chapter 4 & 5 | |
6 | System File Structure and Information | Chapter 6 | |
7 | The Process Environment | Chapter 7 | |
8 | Process Control and Relationships | Chapter 8 & 9 | |
9 | Signals and Signal Processing | Chapter 10 | |
10 | Threads and Thread Control | Chapter 11 & 12 | |
11 | Daemons Processes | Chapter 13 | |
12 | Asychronous I/O | Chapter 14 | |
13 | Interprocess Communication | Chapter 15 | |
14 | Networks and Socket Programming | Chapter 16 |
Dates to Remember
Assignments
Projects
- Go here for past and posted projects. Submit all projects by email to jeffj@astate.edu.
Materials
*NEWS*
Textbook
The Linux Programming Interface: A Linux and UNIX System Programming Handbook, 1st ed. (ISBN: 978-1593272203), by Michael Kerrisk. No Starch Press, 2010. (Amazon)
Online Resources
- Go here to browse the course online file repository.
- 25 Free Books To Learn Linux For Free
Software Downloads
Course Policies
See Department Policies which will be adhered to within the course.
See Also
*LATEST NEWS*
IBM Vows To Spend $1 Billion To Promote An Operating System That Competes With Windows www.appy-geek.com/Web/ArticleWeb.aspx?regionid=1&articleid=13120775 Apply Geek, Sep 17, 2013
Online
- Advanced Programming in the Unix Environment www.apuebook.com/apue3e.html Another excellent book describing the Unix API
- The UNIX System www.unix.org The official UNIX system at The Open Group with some good historical information and standard specifications
- Unix Timeline www.levenez.com/unix/ Chart of Unix system history from 1969 to present
- The Unix Programming Environment markburgess.org/unix/unix.html An older book by Mark Burgess, but still relevant [PDF]
- GCC, The GNU Compiler Collection gcc.gnu.org Contains all the information for the GNU compilers and add-ons
- clang Compiler Family clang.llvm.org Contains all the information for the C language family frontend for LLVM
- Regular Expression (Wikipedia) en.wikipedia.org/wiki/Regular_expression Article on regular expressions
- Regular-Expressions.Info www.regular-expressions.info In-depth information on regular expression syntax in software
- regular expressions 101 regex101.com Online regular expression tester
- RegExr regexr.com Another online regular expression tester