Spring2012.CSCI340CourseSyllabus History

Hide minor edits - Show changes to markup

Changed line 65 from:
  1. Understand the concept of process (vs. thread), as well as key elements of process description and control, states, and scheduling algorithms (both pre-emptive and non-pre-emptive).
to:
  1. Understand the concept of process (vs. thread), as well as key elements of process description and control, states, and scheduling algorithms (both preemptive and non-preemptive).
Changed lines 59-70 from:
  • Understand the function, basic principles, and desirable characteristics of an operating system (OS).
  • Understand the historical milestones, advances, and terms in OS evolution.
  • Learn and apply the fundamentals of the Unix OS (architecture, file system, editor, basic utilities and shell commands).
  • Learn and apply the C programming language for systems development (on Unix environments).
  • Understand and explain OS architectures including monolithic, layered, virtual machine, client-server, kernel, multiprocessor.
  • Understand the relationship between an OS and hardware (including processor, memory, disks, I/O devices, and buses).
  • Understand the concept of process (vs. thread), as well as key elements of process description and control, states, and scheduling algorithms (both pre-emptive and non-pre-emptive).
  • Understand the principles of interprocess communication, including mutual exclusion, synchronization, semaphores, monitors, and message passing.
  • Understand the principles of memory management, including memory partitioning, fitting algorithms, swapping, paging and replacement algorithms, segmentation, virtual memory, working sets, Belady's Anomaly, and thrashing.
  • Understand the principles of deadlocks, including prerequisite conditions (mutual exclusion, hold-and-wait, no preemption, circular wait), avoidance, prevention, detection, and recovery.
  • Understand basic principles of file management and I/O device management.
to:
  1. Understand the function, basic principles, and desirable characteristics of an operating system (OS).
  2. Understand the historical milestones, advances, and terms in OS evolution.
  3. Learn and apply the fundamentals of the Unix OS (architecture, file system, editor, basic utilities and shell commands).
  4. Learn and apply the C programming language for systems development (on Unix environments).
  5. Understand and explain OS architectures including monolithic, layered, virtual machine, client-server, kernel, multiprocessor.
  6. Understand the relationship between an OS and hardware (including processor, memory, disks, I/O devices, and buses).
  7. Understand the concept of process (vs. thread), as well as key elements of process description and control, states, and scheduling algorithms (both pre-emptive and non-pre-emptive).
  8. Understand the principles of interprocess communication, including mutual exclusion, synchronization, semaphores, monitors, and message passing.
  9. Understand the principles of memory management, including memory partitioning, fitting algorithms, swapping, paging and replacement algorithms, segmentation, virtual memory, working sets, Belady's Anomaly, and thrashing.
  10. Understand the principles of deadlocks, including prerequisite conditions (mutual exclusion, hold-and-wait, no preemption, circular wait), avoidance, prevention, detection, and recovery.
  11. Understand basic principles of file management and I/O device management.
Changed line 121 from:

(:tableend:)

to:

(:tableend:)

Changed line 112 from:
  • No compilation policy: No credit will be given for a lab assignment which does not compile. It is your responsibility to verify that what you submit compiles on stono. If you develop your lab on another system, port it to stono and re-compile (and run) it there (before you submit it) to verify that everything works.
to:
  • No compilation policy: No credit will be given for an assignment which does not compile. It is your responsibility to verify that what you submit compiles on stono. If you develop your lab on another system, port it to stono and re-compile (and run) it there (before you submit it) to verify that everything works.
Changed line 103 from:
  • You are expected to attend all classes. You are responsible for announcements made in class, assignment due dates, etc. If you miss class, you must get an absence memo from the Associate Dean of Students Office. The grade 'WA' may be given for excessive absences.
to:
  • You are expected to attend all classes. You are responsible for announcements made in class, assignment due dates, etc. If you miss class, you must get an absence memo from the Associate Dean of Students Office. The grade 'WA' may be given for excessive (> 4) absences.
Changed line 87 from:
  • It is relatively easy to find related code, modify it, incorporate it into (or even worse, present it as) your own work. Such activity is considered cheating. This is a serious offense and will affect your grade in ths class and your academic career at the College. If in doubt, check with the instructor before you look at any code or solution related to your assignment.
to:
  • It is relatively easy to find related code, modify it, incorporate it into (or even worse, present it as) your own work. Such activity is considered cheating. This is a serious offense and will affect your grade in this class and your academic career at the College. If in doubt, check with the instructor before you look at any code or solution related to your assignment.
Changed line 87 from:
  • It is relatively easy to find related code, modify it, incorporate it into (or even worse, present it as) your own work. Such activity is considered cheating. This is a serious offense and will affect your academic career. If in doubt, check with the instructor before you look at any code or solution related to your assignment.
to:
  • It is relatively easy to find related code, modify it, incorporate it into (or even worse, present it as) your own work. Such activity is considered cheating. This is a serious offense and will affect your grade in ths class and your academic career at the College. If in doubt, check with the instructor before you look at any code or solution related to your assignment.
Changed line 65 from:
  • Understand the concept of process (vs. thread), as well as key elements of process description and control, process states, and process scheduling algorithms (both pre-emptive and non-pre-emptive).
to:
  • Understand the concept of process (vs. thread), as well as key elements of process description and control, states, and scheduling algorithms (both pre-emptive and non-pre-emptive).
Changed line 65 from:
  • Understand the concepts of the process (vs. thread), as well as key elements of process description and control, process states, and process scheduling algorithms (both pre-emptive and non-pre-emptive).
to:
  • Understand the concept of process (vs. thread), as well as key elements of process description and control, process states, and process scheduling algorithms (both pre-emptive and non-pre-emptive).
Changed line 62 from:
  • Learn and apply the C programming language (for systems development on Unix environments).
to:
  • Learn and apply the C programming language for systems development (on Unix environments).
Changed line 61 from:
  • Learn and apply the fundamentals of the Unix OS (architecture, file system, basic utilities and shell commands).
to:
  • Learn and apply the fundamentals of the Unix OS (architecture, file system, editor, basic utilities and shell commands).
Changed line 59 from:
  • Understand the function, basic principles and desirable characteristics of an operating system (OS).
to:
  • Understand the function, basic principles, and desirable characteristics of an operating system (OS).
Changed line 65 from:
  • Understand the concepts of the process (vs. thread), as well as key elements of process description and control, process states, and process scheduling, including first-come-first-serve, shortest-job-first, round-robin, and shortest-remaining-time.
to:
  • Understand the concepts of the process (vs. thread), as well as key elements of process description and control, process states, and process scheduling algorithms (both pre-emptive and non-pre-emptive).
Changed lines 67-86 from:
  • Understand the principles of memory management, including memory partitioning, fitting algorithms (including first fit, next fit, best fit, and worse fit), swapping, paging, (including page-replacement algorithms such as random replacement, optimal replacement, not-recently-used, FIFO, and second-chance), segmentation, virtual memory, working sets, Belady's Anomaly, and thrashing.

basic operating system (OS) principles and major OS design issues.

  • Learn how to use the Unix environment (i.e., shell command line, file structure, etc.)

including command-line interaction, shells, and eitors

  • Demonstrate an understanding of the context within which an OS works, as well as what an OS is expected to accomplish.
  • Demonstrate historical knowledge of OS evolution (development) including major milestones and advances.
  • Demonstrate understanding of the relationship of an OS to, and dependence on, hardware (processor, memory, disks, I/O devices, Buses, and BIOS).
  • Demonstrate understanding, including supported services, of the different OS varieties including: mainframes, server, multiprocessor, personal, handheld, embedded, sensor, real-time, and smart-card.
  • Demonstrate understanding of the concepts of the process and of the thread, as well as the key elements of process description and control, the relationship of threads to processes, and thread management.
  • Demonstrate understanding of scheduling issues in both uniprocessor and symmetric multiprocessor environments, of the major scheduling algorithms, both pre-emptive and non-pre-emptive, their advantages and disadvantages, and the special problems related to scheduling in a real-time environment.
  • Demonstrate understanding of the principles of memory management, including memory partitioning, segmentation, swapping, paging, and virtual memory (including working sets and thrashing).
  • Demonstrate understanding of the basic principles of file management, including file organization, file directories, file sharing, record blocking, and management of secondary storage.
  • Demonstrate understanding of the major issues in I/O device management, including buffering, disk scheduling, disk caching, RAID, and recovery from failure.
  • Demonstrate understanding of concurrent processing and of the interrelated principles of mutual exclusion, synchronization, semaphores, monitors, message passing, and deadlock (including the techniques of deadlock avoidance, deadlock prevention, deadlock detection, and deadlock resolution).
  • Demonstrate capability of writing programs in the language, C, which executes successfully on a Linux environment.
to:
  • Understand the principles of memory management, including memory partitioning, fitting algorithms, swapping, paging and replacement algorithms, segmentation, virtual memory, working sets, Belady's Anomaly, and thrashing.
  • Understand the principles of deadlocks, including prerequisite conditions (mutual exclusion, hold-and-wait, no preemption, circular wait), avoidance, prevention, detection, and recovery.
  • Understand basic principles of file management and I/O device management.
Changed line 87 from:
  • It is relatively easy to find solutions (or related code), modify them, incorporate them into (or even worse, present them as) your own work. Such activity is considered cheating. This is a serious offense and will affect your academic career. If in doubt, check with the instructor before you look at any code or solution related to your assignment.
to:
  • It is relatively easy to find related code, modify it, incorporate it into (or even worse, present it as) your own work. Such activity is considered cheating. This is a serious offense and will affect your academic career. If in doubt, check with the instructor before you look at any code or solution related to your assignment.
Changed lines 90-91 from:
  • Any violation of these rules is an honor offense. See the College of Charleston Student Handbook, especially sections on The Honor Code (p. 11), and Student Code of Conduct (p. 12). There is other useful information there.
to:
  • Any violation of these rules is an honor offense. Also see the College of Charleston Student Handbook, especially sections on The Honor Code (p. 11), and Student Code of Conduct (p. 12). There is other useful information there.
Deleted line 103:
Deleted line 105:
Changed lines 120-124 from:

(:cellnr valign=top align=right style='padding:5px;':)

(:cell style='padding:5px;':)

(Some material adopted from Prof. Leclerc's CSCI 340 syllabus)
to:
Changed lines 59-60 from:
  • Understand and explain the function, basic principles and desirable characteristics of an operating system (OS).
  • Understand and explain the historical milestones, advances, and terms in OS evolution.
to:
  • Understand the function, basic principles and desirable characteristics of an operating system (OS).
  • Understand the historical milestones, advances, and terms in OS evolution.
Changed lines 65-69 from:
  • Learn and apply the concepts of the process (vs. thread), as well as key elements of process description and control, process states, and process scheduling, including First-Come-First-Serve, Shortest-Job-First, Round-Robin, and Shortest-Remaining-Time.
  • Understand the principles of interprocess communication, including Semaphores, Message Passing, Monitors
to:
  • Understand the concepts of the process (vs. thread), as well as key elements of process description and control, process states, and process scheduling, including first-come-first-serve, shortest-job-first, round-robin, and shortest-remaining-time.
  • Understand the principles of interprocess communication, including mutual exclusion, synchronization, semaphores, monitors, and message passing.
  • Understand the principles of memory management, including memory partitioning, fitting algorithms (including first fit, next fit, best fit, and worse fit), swapping, paging, (including page-replacement algorithms such as random replacement, optimal replacement, not-recently-used, FIFO, and second-chance), segmentation, virtual memory, working sets, Belady's Anomaly, and thrashing.
Added line 80:
Changed lines 64-65 from:
  • Learn and apply the concepts of the process and thread, as well as the key elements of process description and control, and process management.
to:
  • Understand the relationship between an OS and hardware (including processor, memory, disks, I/O devices, and buses).
  • Learn and apply the concepts of the process (vs. thread), as well as key elements of process description and control, process states, and process scheduling, including First-Come-First-Serve, Shortest-Job-First, Round-Robin, and Shortest-Remaining-Time.
  • Understand the principles of interprocess communication, including Semaphores, Message Passing, Monitors
Deleted line 76:
Deleted line 77:
Added lines 1-140:
College of CharlestonJanuary 6, 2012

CSCI 340 Operating Systems

Course Syllabus

(:table border=0 width=100%:)

(:cell width=20% align=right style='padding:5px;':) Professor: (:cell width=80% style='padding:5px;':) Dr. Bill Manaris
(:cellnr valign=top align=right style='padding:5px;':) Office: (:cell style='padding:5px;':) Room: 223 J.C. Long Building
Phone: (95)3-8159
E-mail: manarisb@cofc.edu
Web: http://www.cs.cofc.edu/~manaris/
(:cellnr valign=top align=right style='padding:5px;':) Office Hours: (:cell style='padding:5px;':) Monday, Wednesday, Friday 1 - 2PM.
Tuesday 1:15 - 2:15PM
Other hours available by appointment.
(:cellnr valign=top align=right style='padding:5px;':) Course Description: (:cell style='padding:5px;':) A course introducing operating systems principles including device management, process management, memory management, virtual memory, file management, and protection mechanisms. Laboratory exercises (using Unix) will allow students to gain hands-on experience with the details of how these operating systems principles are implemented.

Prerequisites: CSCI 230, CSCI 250, and MATH 207.
(:cellnr valign=top align=right style='padding:5px;':) Tentative Outline: (:cell style='padding:5px;':) Syllabus, Survey, Intro to Unix, Intro to C, Definition, History of Operating Systems and Concepts, Processes and Threads, Memory Management, File Systems, I/O, Deadlocks, and other topics as time permits.
(:cellnr valign=top align=right style='padding:5px;':) Textbook: (:cell style='padding:5px;':)

  • Andrew Tanenbaum, (2008), ''Modern Operating Systems", 3rd ed., Prentice Hall - recipient of the Text and Authors Association (TAA) 2010 Longevity Award.

(:cellnr valign=top align=right style='padding:5px;':) References: (:cell style='padding:5px;':)

  • Daniel J. Barrett, "Linux Pocket Guide", O'Reilly.
  • Brian W. Kernighan and Dennis M. Ritchie, "The C Programming Language", Prentice Hall.
  • H.M. Deitel and P.J. Deitel, "C - How to Program", Prentice Hall.

Additional reading materials will provided via handouts and the class website.
(:cellnr valign=top align=right style='padding:5px;':) Learning Outcomes: (:cell style='padding:5px;':)

  • Understand and explain the function, basic principles and desirable characteristics of an operating system (OS).
  • Understand and explain the historical milestones, advances, and terms in OS evolution.
  • Learn and apply the fundamentals of the Unix OS (architecture, file system, basic utilities and shell commands).
  • Learn and apply the C programming language (for systems development on Unix environments).
  • Understand and explain OS architectures including monolithic, layered, virtual machine, client-server, kernel, multiprocessor.
  • Learn and apply the concepts of the process and thread, as well as the key elements of process description and control, and process management.

basic operating system (OS) principles and major OS design issues.

  • Learn how to use the Unix environment (i.e., shell command line, file structure, etc.)

including command-line interaction, shells, and eitors

  • Demonstrate an understanding of the context within which an OS works, as well as what an OS is expected to accomplish.
  • Demonstrate historical knowledge of OS evolution (development) including major milestones and advances.
  • Demonstrate understanding of the relationship of an OS to, and dependence on, hardware (processor, memory, disks, I/O devices, Buses, and BIOS).
  • Demonstrate understanding, including supported services, of the different OS varieties including: mainframes, server, multiprocessor, personal, handheld, embedded, sensor, real-time, and smart-card.
  • Demonstrate understanding of the concepts of the process and of the thread, as well as the key elements of process description and control, the relationship of threads to processes, and thread management.
  • Demonstrate understanding of scheduling issues in both uniprocessor and symmetric multiprocessor environments, of the major scheduling algorithms, both pre-emptive and non-pre-emptive, their advantages and disadvantages, and the special problems related to scheduling in a real-time environment.
  • Demonstrate understanding of the principles of memory management, including memory partitioning, segmentation, swapping, paging, and virtual memory (including working sets and thrashing).
  • Demonstrate understanding of the basic principles of file management, including file organization, file directories, file sharing, record blocking, and management of secondary storage.
  • Demonstrate understanding of the major issues in I/O device management, including buffering, disk scheduling, disk caching, RAID, and recovery from failure.
  • Demonstrate understanding of concurrent processing and of the interrelated principles of mutual exclusion, synchronization, semaphores, monitors, message passing, and deadlock (including the techniques of deadlock avoidance, deadlock prevention, deadlock detection, and deadlock resolution).
  • Demonstrate capability of writing programs in the language, C, which executes successfully on a Linux environment.

(:cellnr valign=top align=right style='padding:5px;':) Grading: (:cell style='padding:5px;':) To receive a passing grade for the course, you must average a passing grade on each of the following: assignments, tests, and final exam.

Scale: A: 90-100; B: 80-89; C: 70-79; D: 60-69; F: <60. The grades of B+/, C+/, and D+/ may be given at the professor's discretion.

Final Grade Computation: Assignments (4-6) 30%, Tests (2) 40%, Comprehensive Final Exam or Final Project 20%, and Class Participation 10%.

(:cellnr valign=top align=right style='padding:5px;':) Honor Code: (:cell style='padding:5px;':)

  • You must do your assignments alone (or with your teammates, for group assignments).
    • It is relatively easy to find solutions (or related code), modify them, incorporate them into (or even worse, present them as) your own work. Such activity is considered cheating. This is a serious offense and will affect your academic career. If in doubt, check with the instructor before you look at any code or solution related to your assignment.
  • You are not allowed to discuss assignments and possible solutions with any person other than the instructor, lab instructor, tutor, grader (or with your teammates, for group assignments).
  • On assignments you will be asked to identify the person(s) you received help from, if any.
  • Any violation of these rules is an honor offense. See the College of Charleston Student Handbook, especially sections on The Honor Code (p. 11), and Student Code of Conduct (p. 12). There is other useful information there.

(:cellnr valign=top align=right style='padding:5px;':) Test Policies: (:cell style='padding:5px;':)

  • Attendance at tests is mandatory. You must complete tests with no discussion or sharing of information with other students.
  • Calculators, computers, cell phones, etc. may not be used during a test, unless otherwise directed.

(:cellnr valign=top align=right style='padding:5px;':) Classroom Policies: (:cell style='padding:5px;':)

  • You are expected to take good notes during lecture.
  • You are expected to participate in class with questions and invited discussion.
  • You are expected to attend all classes. You are responsible for announcements made in class, assignment due dates, etc. If you miss class, you must get an absence memo from the Associate Dean of Students Office. The grade 'WA' may be given for excessive absences.
  • You should turn off all electronic devices (e.g., cell phones, pagers, etc.).
  • You must use computers only as directed (e.g., no checking email, or playing games) during class.
  • In summary, you should contribute positively to the classroom learning experience, and respect your classmates right to learn
    • See College of Charleston Student Handbook, section on Classroom Code of Conduct (p. 58).

(:cellnr valign=top align=right style='padding:5px;':) Assignment Policies: (:cell style='padding:5px;':)

  • No compilation policy: No credit will be given for a lab assignment which does not compile. It is your responsibility to verify that what you submit compiles on stono. If you develop your lab on another system, port it to stono and re-compile (and run) it there (before you submit it) to verify that everything works.
  • Submission policy: All assignments must be submitted electronically using the submission instructions provided. No email submissions will be accepted.

(:cellnr valign=top align=right style='padding:5px;':) Late Policy: (:cell style='padding:5px;':)

  • You have four "late" days for the whole semester. You may use these days as you wish for assignment submission. If you use them up, no late assignments will be accepted.
  • If you submit everything on time (i.e., use no late days), you will earn an additional 2.5 bonus points on your course grade.

(:cellnr valign=top align=right style='padding:5px;':)

(:cell style='padding:5px;':)

(Some material adopted from Prof. Leclerc's CSCI 340 syllabus)

(:tableend:)