under 5 pages!
authorGodmar Back <godmar@gmail.com>
Fri, 29 Aug 2008 22:26:57 +0000 (22:26 +0000)
committerGodmar Back <godmar@gmail.com>
Fri, 29 Aug 2008 22:26:57 +0000 (22:26 +0000)
sigcse2009/abstract.tex
sigcse2009/assignments.tex
sigcse2009/introduction.tex
sigcse2009/principles.tex
sigcse2009/racedt.tex
sigcse2009/sigcse2009.bib
sigcse2009/sigcse2009.tex

index 2656271fa21a92a272bd987aae7267d074359686..b472f73d33aa6688696ff4a4ef45810300b222c5 100644 (file)
@@ -2,7 +2,7 @@ Pintos is an instructional operating system, complete with documentation
 and ready-made, structured assignments that introduce students to
 the principles of multi-programming, scheduling, virtual memory,
 and file systems.  By allowing students to run their work product on
-actual hardware, while simultaneously benefiting from the debugging
+actual hardware, while simultaneously benefiting from debugging
 and dynamic analysis tools provided in simulated and emulated environments,
 Pintos increases student engagement.  Unlike tailored versions of
 commercial or open source OS such as Linux, Pintos is designed from the
index 3d8ff0ff154a5fb0eea3c4b946c08110d78918df..b68289c293598ea6e17cc865283820ed68ee7f63 100644 (file)
@@ -54,29 +54,28 @@ of how much CPU time a thread has received recently.
 \paragraph{Testing and Grading}
 Project 1 is accompanied by 27 tests as shown in Table~\ref{table:tests}, which are 
 run using the Bochs simulator by a grading script.  
-Most tests are designed to test a single aspect, but some tests 
-test more involved scenarios.  Most of the tests are designed to produce a deterministic 
-output; the grading script will point out differences between the expected and the actual output. 
+Most of the tests are designed to produce deterministic output; 
+the grading script will point out differences between expected and actual output. 
 Usually, a test failure leads students to study the documented source code of the test
 and understand how the expected output derives from it.
 
-The MLFQS scheduler tests are graded differently. Since those tests rely on estimating CPU
+The MLFQS scheduler tests require a different approach.  Since those tests rely on estimating CPU
 usage, they depend on how much CPU time a specific implementation uses, which in turn depends on how
 efficient it is.  We compute the expected CPU consumption values by simulation and provide an
 envelope within which the output is accepted.  The envelope is large enough to allow for minor
 inefficiencies, but major inefficiencies will usually lead to test failures.  Such failures
-convey the importance of using efficient algorithms and data structures within a kernel,
-because wasting CPU cycles in the kernel reduces the amount available to applications.
+convey the importance of using efficient algorithms and data structures within a OS kernel.
+% cfl: because wasting CPU cycles in the kernel reduces the amount available to applications.
 
 % intro
 \paragraph{Learning Objectives}
 Project 1 has three learning objectives.  First, students will understand how
 the illusion that ``computers can do multiple things at once'' is created by a sequence
 of thread state transitions and context switches.  Second, they will understand how
-a simple underlying mechanism - such as priority-based scheduling - can lead to more
-sophisticated scheduling policies.  Third, having seen the mechanisms a preemptive scheduler
-uses to create apparent concurrency, students gain a better intuition of the non-determinism
-inherent in concurrent systems. 
+sophisticated scheduling policies can be built on top of a simple priority-based scheduler.
+Third, having seen the mechanisms a preemptive scheduler uses to create apparent 
+concurrency, students gain a better intuition of the non-determinism inherent 
+in concurrent systems. 
 
 %
 %
index cd76579f1ac5e7c7949cc2e1bd0073353590236e..e591bb848403c4124a7aad2ac616b39b980fbbfc 100644 (file)
@@ -45,8 +45,8 @@ Assignments should include and emphasize the use of modern software
 engineering practices and tools, such as dynamic program analysis.
 
 This paper introduces Pintos, an instructional operating system kernel that 
-has been in use at several institutions for about 4 years.  Pintos provides 
-a bootable kernel for standard personal computers.  We provide several
+has been in use at multiple institutions for about 4 years.  Pintos provides 
+a bootable kernel for standard personal computers.  We provide four
 structured assignments in which students implement a basic priority
 scheduler, a multi-level feedback queue scheduler, a process-based 
 multi-programming system, page-based virtual memory
@@ -77,11 +77,11 @@ the three environments in which the same kernel can be run.
 Others have used Linux, either on dedicated devices (e.g., iPodLinux~\cite{1352199}),
 or in virtualized environments~\cite{1008027,1352648,Nieh2005Experiences}, to provide
 an internal, concrete perspective.  Compared to those approaches, Pintos provides
-a similar level of realism to students in that they can see the result of their
+a similar level of realism in that students can see the results of their
 work on concrete or virtualized hardware, but does not require that students 
 understand the often arcane and ill-documented interfaces of the Linux kernel,
-which were not designed from an educational perspective.  By contrast, all
-Pintos code is written to be studied by students.
+which were not designed from an educational perspective.  
+By contrast, all Pintos code is written to be studied by students.
 
 %This paper summarizes the design philosophy that underlies Pintos,
 %details its structure, and outlines the nature and learning goals of each
index 681234893245bc075e3d64764eb3873244fbb00f..221fb438fe8cea31663712e3639c4774ec14d7dc 100644 (file)
@@ -23,9 +23,9 @@ portions that initially proved difficult to understand or confusing.
 
 \paragraph{Maximize Creative Freedom}
 OS design involves a tremendous amount of creative freedom, both in the
-choice of algorithm and data structures.  Our projects are designed to
+choice of algorithms and data structures.  Our projects are designed to
 stimulate creativity by avoiding the prescription of specific approaches
-to accomplish each project's goals.  Instead, students must design their
+to accomplish each project's goals.  Instead, students design their
 own data structures and associated algorithms as much as possible.
 
 \paragraph{Practice Test-driven Development}
@@ -57,16 +57,17 @@ is substantially similar to how user programs are being debugged.
 
 \paragraph{Include Analysis Tools}
 Static and dynamic analysis tools are now being widely used; an OS course should
-be no exception.  We have extended the QEMU emulator~\cite{Bellard2005QEMU} to 
-perform tailored analyses that point out errors such as race conditions.
+be no exception.  In Section~\ref{sec:dynamicanalysis}, we describe how we 
+extended the QEMU emulator~\cite{Bellard2005QEMU} to 
+perform tailored analyses that find errors such as race conditions.
 
 \paragraph{Provide Extensive and Structured Documentation}
 If using an instructional system requires too much undocumented knowledge,
-the system is often not shared, or falls into disuse, because the learning curve
-for instructors wishing to use it is too steep and training teaching assistants is difficult.
+the system is often not shared or falls into disuse because the learning curve
+for instructors is too steep and training teaching assistants is difficult.
 Pintos includes an extensive 129 page manual, a sample solution,
-and instructions for teaching assistants.  The assignment documentation separates sections 
-students must read from sections that merely provide supplemental information.
+and grading instructions for teaching assistants.  The project documentation 
+highlights sections students must read from sections that merely provide supplemental information.
 %Even though Pintos uses an existing and complex architecture, our experience indicates
 %that the manual is sufficient for most students.
 
index 5200655b6cf4d2cacd48d91a3162e6fc6de2038d..d5e28719d4460c42892af90c5e9222c047da0ffb 100644 (file)
@@ -1,4 +1,5 @@
 \section{Dynamic Analysis Tools}
+\label{sec:dynamicanalysis}
 
 Data races and invalid memory accesses are some of the most common and
 difficult to debug errors that may occur in concurrent C code.
index c121f76c76abecb292bec97e75403951f4d4393d..ccb0239fcf24ca33ed2ffa6df944156b38ce2f43 100644 (file)
@@ -15,7 +15,7 @@
 @inproceedings{Yu2005RaceTrack,
        address = {New York, NY, USA},
        author = {Yu, Yuan   and Rodeheffer, Tom   and Chen, Wei  },
-       booktitle = {SOSP '05: Proceedings of the twentieth ACM symposium on Operating systems principles},
+       booktitle = {SOSP '05: Proc. 20th ACM Symposium on Operating Systems Principles},
        citeulike-article-id = {2373000},
        doi = {10.1145/1095810.1095832},
        isbn = {1595930795},
 
 
 @inproceedings{1008027,
-       address = {New York, NY, USA},
        author = {Davoli, Renzo  },
-       booktitle = {ITiCSE '04: Proceedings of the 9th annual SIGCSE conference on Innovation and technology in computer science education},
+       booktitle = {ITiCSE '04: Proc. 9th annual SIGCSE conf. on Innovation and tech. in comp. sc. ed.},
        citeulike-article-id = {3170960},
        doi = {http://doi.acm.org/10.1145/1007996.1008027},
        location = {Leeds, United Kingdom},
        pages = {112--116},
        posted-at = {2008-08-29 02:36:03},
        priority = {2},
-       publisher = {ACM},
        title = {Teaching operating systems administration with {User Mode Linux}},
        url = {http://dx.doi.org/http://doi.acm.org/10.1145/1007996.1008027},
        year = {2004}
 
 
 @inproceedings{563384,
-       address = {New York, NY, USA},
        author = {Atkin, Benjamin   and Sirer, Emin  G. },
-       booktitle = {SIGCSE '02: Proceedings of the 33rd SIGCSE technical symposium on Computer science education},
+       booktitle = {SIGCSE '02: Proc. 33rd SIGCSE technical symposium},
        citeulike-article-id = {3170954},
        doi = {http://doi.acm.org.ezproxy.lib.vt.edu:8080/10.1145/563340.563384},
-       location = {Cincinnati, Kentucky},
        pages = {116--120},
        posted-at = {2008-08-29 02:32:08},
        priority = {2},
-       publisher = {ACM},
-       title = {{PortOS:} an educational operating system for the Post-PC environment},
+       title = {{PortOS}: an educational operating system for the Post-PC environment},
        url = {http://dx.doi.org/http://doi.acm.org.ezproxy.lib.vt.edu:8080/10.1145/563340.563384},
        year = {2002}
 }
 @inproceedings{Bellard2005QEMU,
        address = {Berkeley, CA, USA},
        author = {Bellard, Fabrice  },
-       booktitle = {ATEC'05: Proceedings of the USENIX Annual Technical Conference 2005 on USENIX Annual Technical Conference},
+       booktitle = {ATC'05: Proc. USENIX Annual Technical Conference},
        citeulike-article-id = {2373099},
        pages = {41},
        posted-at = {2008-08-29 02:02:24},
 
 
 @book{Deitel2003Operating,
-       abstract = {The third edition of \_Operating Systems\_**\_ has been entirely updated to
-reflect current core operating system concepts and design considerations. To
-complement the discussion of operating system concepts, the book features two
-in-depth case studies on Linux and Windows XP. The case studies follow the
-outline of the book, so readers working through the chapter material can refer
-to each case study to see how a particular topic is handled in either Linux or
-Windows XP. Using Java code to illustrate key points, \_Operating Systems\_**\_
-introduces processes, concurrent programming, deadlock and indefinite
-postponement, mutual exclusion, physical and virtual memory, file systems,
-disk performance, distributed systems, security and more. New to this edition
-are a chapter on multithreading and extensive treatments of distributed
-computing, multiprocessing, performance, and computer security. An ideal up-
-to-date book for beginner operating systems readers.},
+       abstract = {The third edition of \_Operating Systems\_**\_ has been entirely updated to reflect current core operating system concepts and design considerations. To complement the discussion of operating system concepts, the book features two in-depth case studies on Linux and Windows XP. The case studies follow the outline of the book, so readers working through the chapter material can refer to each case study to see how a particular topic is handled in either Linux or Windows XP. Using Java code to illustrate key points, \_Operating Systems\_**\_ introduces processes, concurrent programming, deadlock and indefinite postponement, mutual exclusion, physical and virtual memory, file systems, disk performance, distributed systems, security and more. New to this edition are a chapter on multithreading and extensive treatments of distributed computing, multiprocessing, performance, and computer security. An ideal up- to-date book for beginner operating systems readers.},
        author = {Deitel, Harvey  M.  and Deitel, Paul  J.  and Choffnes, David  R. },
        citeulike-article-id = {3138498},
        edition = {3},
@@ -280,7 +263,7 @@ to-date book for beginner operating systems readers.},
        posted-at = {2008-08-20 05:38:59},
        priority = {2},
        publisher = {Prentice Hall},
-       title = {Operating Systems (3rd Edition)},
+       title = {Operating Systems},
        url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0131828274},
        year = {2003}
 }
@@ -288,15 +271,7 @@ to-date book for beginner operating systems readers.},
 
 
 @book{Bryant2002Computer,
-       abstract = {This book explains the important and enduring concepts underlying all computer
-systems, and shows the concrete ways that these ideas affect the correctness,
-performance, and utility of application programs. The book's concrete and
-hands-on approach will help readers understand what is going on “under the
-hood” of a computer system. This book focuses on the key concepts of basic
-network programming, program structure and execution, running programs on a
-system, and interaction and communication between programs. For anyone
-interested in computer organization and architecture as well as computer
-systems.},
+       abstract = {This book explains the important and enduring concepts underlying all computer systems, and shows the concrete ways that these ideas affect the correctness, performance, and utility of application programs. The book's concrete and hands-on approach will help readers understand what is going on “under the hood” of a computer system. This book focuses on the key concepts of basic network programming, program structure and execution, running programs on a system, and interaction and communication between programs. For anyone interested in computer organization and architecture as well as computer systems.},
        author = {Bryant, Randal  E.  and O'Hallaron, David  R. },
        citeulike-article-id = {3138486},
        edition = {US Ed},
@@ -351,13 +326,13 @@ systems.},
 @inproceedings{Christopher1993Nachos,
        address = {Berkeley, CA, USA},
        author = {Christopher, Wayne  A.  and Procter, Steven  J.  and Anderson, Thomas  E. },
-       booktitle = {USENIX'93: Proceedings of the USENIX Winter 1993 Conference},
+       booktitle = {USENIX'93: Proc. USENIX Winter 1993 Conf.},
        citeulike-article-id = {2757938},
        pages = {4},
        posted-at = {2008-08-20 04:38:57},
        priority = {2},
        publisher = {USENIX Association},
-       title = {The {Nachos} instructional operating system},
+       title = {The Nachos instructional operating system},
        url = {http://portal.acm.org/citation.cfm?id=1267307},
        year = {1993}
 }
@@ -376,7 +351,7 @@ systems.},
        posted-at = {2008-08-20 04:37:53},
        priority = {2},
        publisher = {ACM},
-       title = {PortOS: an educational operating system for the Post-PC environment},
+       title = {{PortOS:} an educational operating system for the {Post-PC} environment},
        url = {http://portal.acm.org/citation.cfm?id=563340.563384},
        year = {2002}
 }
@@ -405,14 +380,14 @@ systems.},
 @inproceedings{Nieh2005Experiences,
        address = {New York, NY, USA},
        author = {Nieh, Jason   and Vaill, Chris  },
-       booktitle = {SIGCSE '05: Proceedings of the 36th SIGCSE technical symposium on Computer science education},
+       booktitle = {SIGCSE '05: Proc. 36th SIGCSE technical symposium},
        citeulike-article-id = {1557532},
        doi = {10.1145/1047344.1047508},
        issn = {0097-8418},
        pages = {520--524},
        posted-at = {2008-08-20 04:36:38},
        priority = {2},
-       publisher = {ACM},
+       publisher = {ACM Press},
        title = {Experiences teaching operating systems using virtual platforms and {Linux}},
        url = {http://portal.acm.org/citation.cfm?id=1047508},
        year = {2005}
@@ -423,7 +398,7 @@ systems.},
 @inproceedings{Holland2002New,
        address = {New York, NY, USA},
        author = {Holland, David  A.  and Lim, Ada  T.  and Seltzer, Margo  I. },
-       booktitle = {SIGCSE '02: Proceedings of the 33rd SIGCSE technical symposium on Computer science education},
+       booktitle = {SIGCSE '02: Proc. 33rd SIGCSE technical symposium},
        citeulike-article-id = {1557559},
        doi = {10.1145/563340.563383},
        issn = {0097-8418},
@@ -441,7 +416,7 @@ systems.},
 @inproceedings{Hovemeyer2004Running,
        address = {New York, NY, USA},
        author = {Hovemeyer, David   and Hollingsworth, Jeffrey  K.  and Bhattacharjee, Bobby  },
-       booktitle = {SIGCSE '04: Proc. of the 35th SIGCSE technical symposium on Computer science education},
+       booktitle = {SIGCSE '04: Proc. 35th SIGCSE technical symposium},
        citeulike-article-id = {3138451},
        doi = {10.1145/971300.971411},
        isbn = {1581137982},
@@ -450,7 +425,7 @@ systems.},
        posted-at = {2008-08-20 04:19:33},
        priority = {2},
        publisher = {ACM},
-       title = {Running on the bare metal with GeekOS},
+       title = {Running on the bare metal with {GeekOS}},
        url = {http://portal.acm.org/citation.cfm?id=971300.971411},
        year = {2004}
 }
index aff1217e1eb57578775de51b367816c2104c8528..d9307259cda5c856d4f0e7524ee7e6c63e654157 100644 (file)
 %
 %
 { \small
-\vskip .2in
+\vskip .3in
 \bibliography{sigcse2009}  % sigproc.bib is the name of the Bibliography in this case
 }
 \end{document}