Cleveland State University Department of Electrical and Computer Engineering CIS 340: System Programming Catalog Description: CIS 340 System Programming Pre-requisite: CIS 265 This course is designed for CIS/ECE major students and serves as the introduction system-level course. In this course, students will work on Linux systems and use C/C++ programming language to develop the system programs in Unix/Linux systems. While no C programming skill is required, students are expected to be proficient in at least one high level programming language, e.g., Java. Textbook: 1. W. Richard Stevens and Stephen A. Rago, Advanced Programming in the UNIX Environment, 3rd Edition, 2013, Addison Wesley, ISBN: 0321-63773-9 2. Online C Programming (Wikibook) Coordinator: Dr. Haodong Wang Phone: 216-687-4730 Email: hwang@cis.csuohio.edu Expected Outcomes: At the end of this course, a successful student will be able: 1. Master in using the C programming language to create system software; 2. Master in the usage of makefiles, linking, object files, loading, symbol resolution, debugging, and execution of system programs; 3. Master in file I/O (i.e. open, close, read, write, seek); 4. Be familiar with basic UNIX OS concepts such as: process, program, process groups, signals, running programs, process control, address space, user and kernel modes, and system calls. Fulfillment of CS Program Objectives, Outcomes and Characteristics: Objectives: 1. Graduates will apply the concepts of the discipline including analysis, design, and implementation of information and computing systems. 2. Graduates of will be employed in the computing profession, and will be engaged in life-long learning, understanding, and applying new ideas and technologies as the field evolves. 3. Graduates will be informed and involved members of their communities, and responsible engineering and computing professionals. Outcomes: 2) An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution 3) An ability to function effectively on teams to accomplish a common goal 5) An ability to translate fundamental computing concepts to a variety of emerging technologies 7) An ability to apply design and development principles in the construction of software systems of varying complexity. Characteristics: (b) An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution (c) An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs (d) An ability to function effectively on teams to accomplish a common goal (e) An understanding of professional, ethical, legal, security and social issues and responsibilities (i) An ability to use current techniques, skills, and tools necessary for computing practice. (k) An ability to apply design and development principles in the construction of software systems of varying complexity. Contribution of Course to Meeting the Professional Component: Math & Basic Science: 1 credit; Engineering Topics: 2 credits; General Education: 0 credit Prerequisites by Topic: Data Structures and Algorithms Topics: Computer Usage: 1. Class introduction 2 2. Linux 2 3. C Programming Review 8 4. Debug and File I/O system calls 3 5. Linux Files, File Systems, File System I/O and Example 6 6. Processes 3 7. Programmable Shell and Shell Environment 3 8. Pipe and Redirection, Named Pipes 3 9. Terminal I/O 3 10. Socket 3 11. Signal 3 12. CVS 3 13. Test 3 Total 45 Linux