Cleveland State University Department of Electrical and Computer Engineering CIS 345: Operating System Principles Catalog Description: CIS 345 Operating System Principles (4-0-4) Pre-requisite: CIS 340 In this course, we study the basic concepts of computer systems, which are common in most modern computers. In particular, the class focuses on processes (management, scheduling, sychronization), memory management, I/O management and file systems. The successful students are able to understand and use the above basic concepts to implement the system programming assignments via C/C++ programs. Textbook: 1. Modern Operating Systems, 4/E Andrew S. Tanenbaum Publisher: Prentice Hall. ISBN: 0-13-359162-X 2. LINUX for Programmers and Users Graham Glass and King Ables Publisher: Prentice hall. ISBN: 0-13-185748-7 Coordinator: Dr. Haodong Wang Phone: 216-687-4730 Email: hwang@cis.csuohio.edu Expected Outcomes: At the end of this course, a student will be able: 1. Have acquired good programming skills, and understand good programming practices; 2. Have sound understanding of the principle of an operating system; 3. Have basic concepts used in operating system, including process, synchronization, memory management, and etc.; 4. Be able to writing system level programs using system calls; 5. Be able to solve practical problems using multi-thread programming. 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: 1) An ability to apply knowledge of computing and mathematics appropriate to the program’s student outcomes and to the discipline 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 6) An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices. 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: System Programming Topics: 1. Class introduction, OS Basics and OS History 3 2. OS & Architecture, Linux and Shells 3 3. System programming, Process and Thread 4 4. CPU Scheduling, Event-driven Programming 3 5. Synchronization I, II, III 5 6. Deadlocks 5 7. Memory Management 3 8. Paging, Page Replacement Algorithms 5 9. Memory Management Design Issues 2 10. File System: Files Directories 2 11. File System Design and Management, File System Design Issue and Examples 12. Case Study: Android. Tanenbaum 4 13. Final exam 3 3 Total Computer Usage: Linux 45