Welcome to CPS 4200 (Systems Programming)
This course focuses on the knowledge of Unix system and use the C programming language to implement the systems level programming, Operating System services and application interface programming. There are many hands-on exercises and assignments. If you don't like coding, please do NOT take this course. For CS Major, you can take the alternate course - CPS 4150 (Computer Architecture) in the fall semester.
The following topics are covered:
- Unix shell environment, filesystem, process and commands
- Editor - vi
- C language: struct, dynamic array, pointer, address, call by value/reference/address, file I/O
- Memory management
- Process control, threads, scheduling
- Synchronization, signals
- Compile, execute and debug C programs on Linux
- Debugger: gdb
- Interprocess communcation, socket, client/server
- Parallelism, multi-threading, concurrent, fork
- Implement Linux commands
Prerequisite: CPS 3250 (Operating Systems) with grade C and above.
Notes
- This is a hands-on course. Students are required to bring a personal laptop to every class.
- Assignments should be implemented on a Linux server that is announced on the first day of the class.
- Instructional methods: lecture with slides, class discussions and exercises, and project creations.
- This course is available only in the spring semester.
- C or better is needed for CS and IT majors.
Instructors
CPS 4200 Course Description
Investigation of applied systems level programming as it relates to operating system services and application interface programming. Topics will include: operating system service calls, file I/O, directory structure, memory management, process control, tasks, threads, concurrency, parallelism event driven programming, inter-process communication, sockets, servers and network protocols.
Student Learning Outcomes
Upon completion of this course, the student will be able to:
- Explain operating system services available to systems programmers.
- Design and code systems programs to create, manage and synchronize programs, tasks, threads and processes.
- Utilize operating system services to access and manage I/O devices, files and directories.
- Implement systems programs to control memory management.
- Utilize protocols and interfaces to communicate across computer systems.
Books and resources
- Required Textbook: Advanced Programming in the Unix Environment. 3rd Edition. Stevens, R., Rago S., Addison-Wesley Professional, 2013. ISBN-13 : 978-0321637734.
- Required Textbook: Understanding Unix/Linux Programming, a Guide to Theory and Practice. B. Molay. Prentice Hall, Englewood, NJ, 2003, ISBN-13 : 978-0130083968.
- Required Textbook: C Programming Tutorial (K&R version 4)
- Reference Textbook: The UNIX Programming Environment. Kernighan, B. and Pike R. Prentice Hall, 1983. ISBN-13: 978-0139376818
- Reference book: Systems Programming in Unix/Linux. Wang, K.C., Springer, 2018. ISBN-13: 978-3319924281
- Reference book: Linux Command Line and Shell Scripting Bible. 3rd Ed. Blum, R. Wiley, 2015. ISBN-13: 978-1118983843
- Reading: Basic Unix commands
- Powerful Unix editor vi (vim) online tutorial
- Practice Unix commands at Coding Ground,
Online Linux Terminal
- Linux resources on Samurai website
- C language on GeeksforGeeks
- Learn C
- W3adda C tutorial
- C Tutorial
- W3resource C programming exercises
Class information (Dr. Wei):
- Grading Scale: A 93+%, A- 90+%, B+ 87+%, B 83+%, B- 80+%, C+ 77+%, C 70+%, D 60+%, F 59.9-%
Class information (Dr. Huang): Note: Dr. Huang won't teach this course in spring 2022
- For Dr. Huang's class, all the class materials (syllabus, slides, assignments, tools) are posted on the class Google drive. Students must use the Kean email account to access the folder.
- Students can access the latest syllabus here.
- Course grading: 2 Midterms (2x180 pts), 3 homework (3x100), 1 term project (180 pts), 1 final exam (180 pts)
- Grading policy: Total 1000 points.
A: >=940, A-: 939-890, B+: 889-840, B: 839-800, B-: 799-760, C+: 759-720, C: 719-680, D: 679-640, F: below 640
Requirements - Students will need the followings to do exercsies and assignments:
- Students will need an account on yoda.kean.edu (a Linux server). The instructor will create the accounts so students can do exercises and assignments from the first day of class.
- Students will need the following tools to connect to a Linux server. hostname: yoda.kean.edu, port: 22, protocol: ssh
Windows: Use "PuTTY" software to connect to the Linux server. You can download putty from http://www.putty.org/
Mac: Use "terminal" software. Please refer to this tutorial.
- Familiar with the Linux vim editor on the command-line. Please refer these tutoirals - vim 101 for beginners, vi (vim) online tutorial
- Create CPS4200 folders under your home directory on eve.kean.edu, and set proper permission for the folders and files. Please refer to this procedure.
- Practice these basic Unix commands: cd, ls -la, more, pwd, mkdir, rm, mv, cp, chmod, etc. Please
refer to this Unix command document.
Other advanced Unix commadns will be covered in the lectures.