CS252: Systems Programming Gustavo Rodriguez-Rivera Computer Science Department Purdue University General Information Web Page: http://www.cs.purdue.edu/homes/cs252 Office: LWSN1210 E-mail:
[email protected] Textbook: Book Online: “Introduction to Systems Programming: a Hands-on Approach” https://www.cs.purdue.edu/homes/grr/SystemsProgrammingBook/ Recommended: Advanced Programming in the UNIX Environment by W. Richard Stevens. (Useful for the shell. Good as a reference book.) Mailing List We will use piazza PSOs There is lab the first week. The projects will be explained in the labs. TAs office hours will be posted in the web page. Grading Grade allocation Midterm: 25% Final: 25% Projects and Homework: 40% Attendance 10% Exams also include questions about the projects. Course Organization 1. Address space. Structure of a Program. Text, Data, BSS, Stack Segments. 2. Review of Pointers, double pointers, pointers to functions 3. Use of an IDE and debugger to program in C and C++. 4. Executable File Formats. ELF, COFF, a.out. Course Organization 5. Development Cycle, Compiling, Assembling, Linking. Static Libraries 6.Loading a program, Runtime Linker, Shared Libraries. 7. Scripting Languages. sh, bash, basic UNIX commands. 8. File creation, read, write, close, file mode, IO redirection, pipes, Fork, wait, waitpid, signals, Directories, creating, directory list Course Organization 9. Project: Writing your own shell. 10. Programming with Threads, thread creation. 11. Race Conditions, Mutex locks. 12. Socket Programming. Iterative and concurrent servers. 13. Memory allocation. Problems with memory allocation. Memory Leaks, Premature Frees, Memory Smashing, Double Frees. Course Organization 14. Introduction to SQL 15. Source Control Systems (CVS, SVN) and distributed (GIT, Mercurial) 16.