Advanced Programming in the UNIX EnvironmentCS810 D - APUENote: The first day of classes will be 2008-09-02, not 2008-08-26.
Course OutlineIn this course, students will learn to develop complex system-level software in the C programming language while gaining an intimate understanding of the UNIX operating system (and all OS that belong to this family, such as Linux, the BSDs, and even Mac OS X) and its programming environment. Topics covered will include the user/kernel interface, fundamental concepts of UNIX, user authentication, basic and advanced I/O, fileystems, signals, process relationships, and interprocess communication. Fundamental concepts of software development and maintenance on UNIX systems (development and debugging tools such as "make" and "gdb") will also be covered. While there are no prerequisite courses, students are expected to have a good working knowledge of the C programming language and to be able to competently use a UNIX system with a command-line shell interface. You will be writing a lot of code in this class. You may also find the need to read a lot of code not written by you as well as the manual pages accompanying the sources. On lab.cs.stevens-tech.edu, you can find the complete source tree of NetBSD in /usr/src -- feel free to snoop around in there. Time, Date & Place:Fall 2008: Tuesdays 6:15-8:45pm, Babbio Center 221Note: The first day of classes will be 2008-09-02, not 2008-08-26.Resources:Textbooks:The textbook used in this class is:
The following books are recommended purely for your own personal reference. They're not used in the class as a text, but are related and very useful books to have:
Instructor:Jan Schaumann [jschauma@cs.stevens.edu]Systems UsedAll software development will be done on the linux-lab.cs.stevens-tech.edu and lab.cs.stevens-tech.edu systems. It is your responsibility to get an account on these systems. All grading will be done on these systems. While you may choose to develop on your own personal host, you should make sure that your code compiles and runs flawlessly on these systems. Grading:There will most likely be:
Plagiarism, Cheating and other ways to get an FThis really should not be necessary, but just to preempt any complains that I did not make myself clear:Students are responsible for their own work. It is unethical (and in some cases illegal) to present as one's work the ideas, words or representations of another without the proper indication of the source. Therefore, it is the student's responsibility to give credit for any quotation, idea or data (such as statistical data or source code) borrowed from an outside source. Midterm Project:Not yet finalized. In previous years, a common midterm assignment was to implement the ls(1) or cp(1) command. See this midterm project description for an example of a previous midterm assignment.Final Project:Not yet finalized. In previous years, example final assignments included a smsync client and server (smsync(1), smsyncd(8), smsyncd.conf(5) and smsync(4)), a simple chat client and server, or an http server capable of serving CGIs.Syllabus:Notes, slides, etc. below are from previous semesters for your reference. They will be updated as the semester progresses.
|