{"id":22,"date":"2025-06-04T14:11:24","date_gmt":"2025-06-04T20:11:24","guid":{"rendered":"https:\/\/courses.cs.colostate.edu\/cs003\/?page_id=22"},"modified":"2026-04-01T21:08:35","modified_gmt":"2026-04-02T03:08:35","slug":"syllabus","status":"publish","type":"page","link":"https:\/\/courses.cs.colostate.edu\/cs370\/syllabus\/","title":{"rendered":"Syllabus"},"content":{"rendered":"<p><!--\n.font-color-for-topics {\tcolor: #900;\n}\nbody,td,th {\n\tfont-family: Verdana, Geneva, sans-serif;\n\tfont-size: 10pt;\n}\nh1 {\n\tfont-size: 13pt;\n}\na:link {\n\ttext-decoration: none;\n\tcolor: #009;\n}\na:visited {\n\ttext-decoration: none;\n\tcolor: #009;\n}\na:hover {\n\ttext-decoration: underline;\n\tcolor: #F00;\n}\na:active {\n\ttext-decoration: none;\n\tcolor: #900;\n}\n.orange-font {\tcolor: #C30;\n}\n--><\/p>\n<p><strong>Prerequisites<\/strong>:  CS200 with a C [2.0] or better, CS270 with a C [2.0] or better.<\/p>\n<table width=\"650\" border=\"0\">\n<tr>\n<td colspan=\"2\"><strong>Required Texts<\/strong><\/td>\n<td colspan=\"2\"><strong>Professor<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"7\">&nbsp;<\/td>\n<td width=\"319\" valign=\"top\">\n<p>Avi Silberschatz, Peter Galvin, Greg Gagne.<br \/>\n        <em>Operating Systems Concepts<\/em>, 10th edition<br \/>\n        Publisher &#8211; John Wiley &amp; Sons, Inc.<br \/>\n    ISBN-13: 978-1119800361.<\/p>\n<\/td>\n<td width=\"12\">&nbsp;<\/td>\n<td width=\"294\" valign=\"top\"><a href=\"http:\/\/www.cs.colostate.edu\/~pouchet\"><strong>Louis-Noel Pouchet<\/strong><\/a><br \/>\n      Office Hours: On request<br \/>\nE-mail: compsci_cs370@mail.colostate.edu<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><strong>Additional Useful References<br \/>\n  (1) <\/strong>Andrew S Tanenbaum and Herbert Bos. <em>Modern Operating Systems<\/em>.  4th Edition, 2014. Prentice Hall. <br \/>\nISBN: 013359162X\/978-0133591620. <span class=\"font-color-for-topics\">[AT]<\/span><br \/>\n<strong>(2)<\/strong> Thomas Anderson and Michael Dahlin. <em>Operating Systems: Principles and Practice<\/em>, 2nd Edition. <br \/>\nRecursive Books. ISBN: 0985673524\/978-0985673529. <span class=\"font-color-for-topics\">[AD]<\/span><br \/>\n<strong>(3)<\/strong> Kay Robbins &amp; Steve Robbins. <em>Unix Systems Programming<\/em>, 2nd edition, Prentice Hall<br \/>\nISBN-13: 978-0-13-042411-2. <span class=\"font-color-for-topics\">[RR]<\/span><br \/>\n<strong>(4)<\/strong> <em>C Programming Language<\/em> (2nd Edition). Brian W. Kernighan and Dennis M. Ritchie. <br \/>\nPrentice Hall. ISBN: 0131103628\/978-0131103627<br \/>\n<strong>(5)<\/strong> <em>Concurrent Programming in Java(TM): Design Principles and Pattern<\/em> (2nd Edition).<br \/>\nDoug Lea. Prentice Hall. ISBN: 0201310090\/978-0201310092. <\/p>\n<p><strong>List of Topics<\/strong><\/p>\n<table width=\"627\" border=\"0\">\n<tr>\n<td width=\"35\">&nbsp;<\/td>\n<td width=\"582\"><strong class=\"orange-font\">Introduction to Operating Systems<\/strong><\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td>\n<ul>\n<li>History of Operating Systems<\/li>\n<li>The OS as a resource manager<\/li>\n<li>Key principles underpinning OS design<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td><strong class=\"orange-font\">Processes<\/strong><\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td>\n<ul>\n<li>Processes and multitasking<\/li>\n<li>Operations on processes<\/li>\n<li>Context switches<\/li>\n<li>Process lifecycle and transitions, Shells and Daemons<\/li>\n<li>POSIX      <\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td><strong class=\"orange-font\">Inter Process Communications<\/strong><\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td>\n<ul>\n<li>Shared memory<\/li>\n<li>Pipes<\/li>\n<li>Messages<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td><strong class=\"orange-font\">Threads<\/strong><\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td>\n<ul>\n<li>Thread models<\/li>\n<li>Differences between processes and threads<\/li>\n<li>User and Kernel threads<\/li>\n<li>Multithreading models<\/li>\n<li>Threading issues: system calls, cancellation and signal handling<\/li>\n<li>Support for threading in different operating systems<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td><strong class=\"orange-font\">CPU Scheduling<\/strong><\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td>\n<ul>\n<li>Scheduling criteria including fairness and time quanta<\/li>\n<li>Pre-emptive and non-preemptive scheduling<\/li>\n<li>Scheduling algorithms: FCFS, shortest jobs, priority, round-robin, multilevel queues<\/li>\n<li>Evaluating the effectiveness of scheduling algorithms and criteria<\/li>\n<li>Scheduling on multiprocessors<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td><strong class=\"orange-font\">Process Synchronization<\/strong><\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td>\n<ul>\n<li>Critical Section Problem<\/li>\n<li>Peterson&rsquo;s solution<\/li>\n<li>Synchronization hardware and Instruction Set Architecture support<\/li>\n<li>Semaphores<\/li>\n<li>Classical problems of Synchronization: <\/li>\n<ul>\n<li>Bounded buffers, Readers-Writers, Dining Philosophers<\/li>\n<\/ul>\n<li>Monitors<\/li>\n<li>Synchronization constructs<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td><strong class=\"orange-font\">Atomic Transactions<\/strong><\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td>\n<ul>\n<li>Atomic Transactions and Serializability<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td><strong class=\"orange-font\">Deadlocks<\/strong><\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td>\n<ul>\n<li>The model for deadlocks<\/li>\n<li>Deadlock Characterization<\/li>\n<li>Methods for handling deadlocks<\/li>\n<li>Deadlock Prevention<\/li>\n<li>Deadlock Avoidance<\/li>\n<li>Recovery from Deadlocks<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td><strong class=\"orange-font\">Memory Management<\/strong><\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td>\n<ul>\n<li>Address binding<\/li>\n<li>Address spaces<\/li>\n<li>Swapping of Processes<\/li>\n<li>Contiguous Memory allocation<\/li>\n<li>Paging<\/li>\n<li>Shared Pages<\/li>\n<li>Structure of Page Tables<\/li>\n<li>Hardware support for paging<\/li>\n<li>Memory protection in paged environments<\/li>\n<li>Segmentation<\/li>\n<li>Use of Segmentation and Paging<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td><strong class=\"orange-font\">Virtual Memory<br \/>\n    <\/strong><\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td>\n<ul>\n<li>Demand Paging<\/li>\n<li>Copy-on-Write<\/li>\n<li>Page Replacement<\/li>\n<li>Belady&rsquo;s anomaly and stack algorithms<\/li>\n<li>Allocation of Frames<\/li>\n<li>Thrashing and working sets<\/li>\n<li>Memory-mapped files<\/li>\n<li>Allocation of Kernel Memory<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td><strong class=\"orange-font\">Virtualization<\/strong><\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td>\n<ul>\n<li>Virtual Machine Monitors <\/li>\n<li>Type-1 hypervisor <\/li>\n<li>Type-2 hypervisor<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td><strong class=\"orange-font\">File Systems<\/strong><\/td>\n<\/tr>\n<tr>\n<td>&nbsp;<\/td>\n<td>\n<ul>\n<li>File System Structure<\/li>\n<li>File System Implementation<\/li>\n<li>Virtual file systems<\/li>\n<li>Contiguous allocation<\/li>\n<li>Linked allocations<\/li>\n<li>File Control Blocks<\/li>\n<li>Unix File System and inodes<\/li>\n<li>NTFS, and FAT32<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/table>\n<p>\n<\/p>\n<h1 class=\"font-color-for-topics\">Grading<\/h1>\n<p>The weights associated with different elements of the course are listed below. \n<\/p>\n<table width=\"434\" border=\"0\">\n<tr>\n<td width=\"207\" bgcolor=\"#999999\"><strong>Course Element<\/strong><\/td>\n<td width=\"217\" bgcolor=\"#999999\"><strong>Weight<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Assignments<\/td>\n<td>45% [5, 5, 5, 10, 10, 10]<\/td>\n<\/tr>\n<tr>\n<td>Quizzes<\/td>\n<td>10%<\/td>\n<\/tr>\n<tr>\n<td>Mid Term<\/td>\n<td>20%<\/td>\n<\/tr>\n<tr>\n<td>Final Exam<\/td>\n<td>25%<\/td>\n<\/tr>\n<\/table>\n<table width=\"650\" border=\"0\">\n<tr>\n<td>\n<p>Letter grades will be based on the following standard breakpoints:  &gt;= 90 is an A, &gt;= 88 is an A-, &gt;=86 is a B+, &gt;=80 is a B, &gt;=78 is a B-, &gt;=76 is a C+, &gt;=70 is a C, &gt;=60 is a D, and &lt;60 is an F.  I will not cut higher than this, but I <em>may<\/em> cut lower.<\/p>\n<p>      <strong>Policies for Makeup exams and Late Submissions:<\/strong><br \/>\n      The dates for all exams, excluding quizzes, will be announced. All exams (quizzes, midterm and the comprehensive Final) will be held in the same classroom as regular lectures. There will be no make-up exams for missed quizzes, mid-term, and finals. If you have a family or medical emergency that prevents you from attending  the midterm, or the final, let me know as soon as possible and be able to provide documentation to reschedule.<\/p>\n<p>\n<\/table>\n<table width=\"650\" border=\"0\">\n<tr>\n<td>\n<p><strong>Responsibilities<\/strong><br \/>\n        <span class=\"font-color-for-topics\">Track the schedule page of the course website daily<\/span>. The schedule page includes a time-stamp of when it was last updated. Make sure that you refresh this page. <br \/>\nEnsure that you complete the reading and programming assignments <\/p>\n<p><strong>Policies for Makeup exams and Late Submissions:<\/strong><br \/>\nThe dates for all exams, excluding quizzes, will be announced. All exams (quizzes, midterm and the comprehensive Final) will be held during the same time as regular lectures for in-person students. There will be no make-up exams for missed quizzes, mid-term, and finals. If you have a family or medical emergency that prevents you from attending  the midterm, or the final, let me know as soon as possible and be able to provide documentation to reschedule.<\/p>\n<p>All assignments are due at <span class=\"font-color-for-topics\"><strong>11:59 PM<\/strong> on the due date<\/span>. <strong>There is a late penalty of 10% per-day for up to a maximum of 2 days<\/strong>. Submissions are automatically disabled 48 hours after assignments are due &#8212; if you have not submitted the assignment by then, you will receive an automatic zero. All assignments will be posted at least 2 weeks prior to its due date. We will have a mix of both written and programming assignments. All assignments will be posted on the Activities page<\/a>. All assignments should be submitted using  <strong class=\"font-color-for-topics\">Canvas<\/strong>. <\/p>\n<p>\n      <\/p>\n<p><strong>Conduct<\/strong><br \/>\n      All students are expected to be familiar with the policies in the department&#8217;s student information sheet available <strong><a href=\"http:\/\/www.cs.colostate.edu\/~info\/student-info\">here<\/a><\/strong>. <\/p>\n<p>This course will adhere to the CSU Academic Integrity Policy as found in the <a href=\"http:\/\/www.catalog.colostate.edu\/FrontPDF\/1.6POLICIES1112f.pd\"><strong>General Catalog<\/strong><\/a> and the <a href=\"http:\/\/www.conflictresolution.colostate.edu\/conduct-code\"><strong>Student Conduct Code<\/strong><\/a>. At a minimum, violations will result in a grading penalty in this course and a report to the Office of Conflict Resolution and Student Conduct Services.<\/p>\n<p><\/td>\n<\/tr>\n<\/table>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Prerequisites: CS200 with a C [2.0] or better, CS270 with a C [2.0] or better. Required Texts Professor &nbsp; Avi Silberschatz, Peter Galvin, Greg Gagne. Operating Systems Concepts, 10th edition Publisher &#8211; John Wiley &amp; Sons, Inc. ISBN-13: 978-1119800361. &nbsp; Louis-Noel Pouchet Office Hours: On request E-mail: compsci_cs370@mail.colostate.edu Additional Useful References (1) Andrew S Tanenbaum [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-fullwidth.php","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","footnotes":""},"class_list":["post-22","page","type-page","status-publish","hentry","post-preview"],"taxonomy_info":[],"featured_image_src_large":false,"author_info":{"display_name":"admin","author_link":"https:\/\/courses.cs.colostate.edu\/cs370\/author\/admin_41g0qmxe\/"},"comment_info":0,"_links":{"self":[{"href":"https:\/\/courses.cs.colostate.edu\/cs370\/wp-json\/wp\/v2\/pages\/22","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/courses.cs.colostate.edu\/cs370\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/courses.cs.colostate.edu\/cs370\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/courses.cs.colostate.edu\/cs370\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/courses.cs.colostate.edu\/cs370\/wp-json\/wp\/v2\/comments?post=22"}],"version-history":[{"count":10,"href":"https:\/\/courses.cs.colostate.edu\/cs370\/wp-json\/wp\/v2\/pages\/22\/revisions"}],"predecessor-version":[{"id":146,"href":"https:\/\/courses.cs.colostate.edu\/cs370\/wp-json\/wp\/v2\/pages\/22\/revisions\/146"}],"wp:attachment":[{"href":"https:\/\/courses.cs.colostate.edu\/cs370\/wp-json\/wp\/v2\/media?parent=22"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}