<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These InterfaceOptions for customising TiddlyWiki are saved in your browser

Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)

<<option txtUserName>>
<<option chkSaveBackups>> SaveBackups
<<option chkAutoSave>> AutoSave
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
<<option chkAnimate>> EnableAnimations

----
Also see AdvancedOptions
<<importTiddlers>>
The role of the abstract is to concisely summarize the purpose and result of the work. The abstract should:

 * Say why the work is interesting, relevant or important, possibly by relating it to a general or common problem with solutions that already exist
 * Explain exactly what was investigated, and the methods used
 * Give a very brief summary of the results ('edited highlights')
 * Give a very brief explanation of what the results mean (and how do they compare with previous results in this field, if any ?)
 * What are the implications of your study for further work in this field, or for a wider audience?

You need one or two clear, focussed sentences, in the order given above, on each of these points given above. Do not put detailed discussions or reference citations in an abstract. It is a good idea to leave writing the abstract until you have finished (or almost finished) writing your thesis. 
!Formality
It is very important to realize that clarity and a formal style are essential in any kind of scientific or technical writing. You must be able to express your ideas clearly and precisely in whichever language you choose to write in, and sticking to a formal style of writing helps to maintain clarity. You cannot simply write down words in the same order and style as you would speak them - the reader cannot see you, and pick up on tone of voice, differences of emphasis, pauses and gestures, etc. These factors play a large part in facilitating face-to-face spoken communication, but obviously cannot be transmitted to a reader (in case you wondered, formal academic writing never includes 'smilies' or SMS slang either). This means that you must be especially careful to write clearly and precisely in a formal tone in any scientific or technical writing, and this is a skill that can be acquired by practice and by example (e.g. reading papers in the academic literature to familiarize yourself with the formal style).

Software exists to help improve clarity in writing ,see [[Software Support for Technical Writing]].

!Other points
* Double quotes (") should only be used when reporting what someone else has SAID. Anything else (e.g. unofficial names or terms, etc.) should be in single quotes (').
* Make sure that you always explain acronyms (e.g. 'XML') and provide the full version of the name and a reference citation the FIRST time it is mentioned in the main part (note: NOT the abstract) of your text.
* There are accepted rules for [[QuotingASource]]
Appendices are additional sections at the end of the text, placed ''after'' the [[References]]. Note that Appendices are not always necessary, but can be a useful place to put larger pieces of supplemental information as a resource to the reader, thus avoiding having this information cluttering up or disrupting the 'flow' of the main text. Appendices should be treated as separate sections, each with their own section title, and be 'numbered' by a different section numbering scheme from that used in the main text (e.g. if section in the main text are numbered 1., 2., 3. etc., Appendices can be denoted as 'Appendix A:', 'Appendix B', 'Appendix C' etc.)

When used, Appendices should always be referenced at least once from the main text, e.g. ' .. (see Appendix A for the full set of class diagrams produced in the software design phase).'


Some sample good uses for Appendices are:
* Collections of diagrams (e.g. UML diagrams used in the design of software)
* Use-cases, requirements documentation, or generated user documentation
* Extensive tables of numbers (e.g. comprehensive results of benchmarking or testing procedures undertaken) 
* Detailed descriptions of complex algorithms or mathematical derivations
* ''Commercially-sensitive information'' - in cases where a thesis may contain some commercially-sensitive information, it may be necessary to produce two versions of the thesis, one private (for authorized persons eyes only) and another public (for general publication). In such a case it is a good idea to move any commercially-sensitive information into Appendices. If this is done, then all that is necessary to turn the 'private' version into the 'public' version is to replace the sensitive contents of the relevant Appendices with a single sentence such as:'The contents of this Appendix has been removed from the public version of this work for reasons of commercial secrecy.'  

Appendices should not be used to contain large quantities of raw input data, output data, or source code. There are usually much better places to store such information (e.g. on a CD/DVD or made available for download from a website), and such information (i.e. ''intended'' to be processed by machines, not humans) are much better kept in their original machine-readable form anyway. Recovering source code or data from many printed pages by scanning the page and using optical character recognition (OCR) software is error-prone and ''very'' tedious. It may also look like you are trying to 'pad out' the work to make it look more substantial, and this is never a good impression to give a reader.
BibTeX is a companion program to [[TeX|http://www.tug.org/]], and can be used with the LaTeX system which hides most of the complexity of ~TeX itself. Its function is to manipulate bibliography and reference information for inclusion in the processing of a ~TeX or LaTeX document. In BibTeX, collections of reference information are held in text files (using the filename extension .bib). Bibliography styles (extension .bst) can be defined and used to control how the reference information is presented for inclusion in a LaTeX document. Many [[citation manager programs|Bibliography Software]] and specialized search engines for scientific literature allow import and export of reference information in BibTeX format.
Specialist bibliographic software to help you automate the collection, management and formatting of  your references and citations. Commercial software (e.g. [[EndNote|http://www.endnote.com/]]) exists to address this need, but there are also numerous free and open-source alternatives.

* [[Jabref|http://jabref.sourceforge.net]] is a free cross-platform Java application for importing, managing and exporting bibliographic information, stores its data in ~BibTeX format, and has many powerful features. It can also, for example, export a list of selected database entries into an [[OpenOffice|http://www.openoffice.org]] document. It can be downloaded either as a standalone application or started via Java Webstart from the download page on the website.

* [[Bibus|http://bibus-biblio.sourceforge.net/wiki/index.php/Main_Page]] - bibliographic management software for Linux and Windows. Can import references in a number of formats and export them to (and interact with) both [[OpenOffice|http://www.openoffice.org]] and Microsoft Word.

* [[WIKINDX|http://wikindx.sourceforge.net]] is a complete single-or multi-user bibliographic database system that can be either installed for multiple users on a website, or locally for individual users. It requires PHP, Apache and ~MySQL to be installed on the host.

* [[BibTex4Word|http://www.ee.ic.ac.uk/hp/staff/dmb/dmb.html]] (download links at the bottom of the linked page) is an interface between ~BibTex and Microsoft Word, allowing easy handling of bibliographic references held in a ~BibTex-format database inside a Word document. You will need ~BibTex installed (available as part of the [[MiKTeX|http://www.miktex.org/]] distribution for Windows), and an appropriate ~BibTeX bibliography style file (in the case of the exam works, this would be 'ieeetran.bst'. This system allows the easy integration of Word and ~BibTeX, and once correctly configured, can insert a list of references in correct IEEE format into a Word document with a single mouse click.

* A number of free web-based bibliography management services exist e.g. [[Connotea|http://www.connotea.org/]], [[CiteUlike|http://www.citeulike.org/]] and [[HotReference|http://www.hotreference.com/]]. Most of these allow you to export your bibliography database in a format that software like [[EndNote|http://www.endnote.com/]] and Jabref can read.

* ''RECOMMENDED!'' [[Zotero|http://www.zotero.org]] is an excellent reference manager which is integrated into the Firefox web browser as a plugin. It stores bibliographic details with one mouse click (for a range of popular web information databases-the website has the complete current list), user notes, page snapshots, abstracts etc. It will import (and export) a number of common bibliography data formats, and can produced formatted reference lists using a number of bibliographic standards. This is an extremely useful tool for compiling lists of references when doing any kind of literature search on the Internet, and the Zotero website contains instructional videos on how to use the different features of the software

* ''RECOMMENDED!'' As an HV student you have access to the 'World of Science' literature database (a subset of the larger 'World of Knowledge' database), accessible through the HV library webpages. Through this service, however, you also have the ability to create a [[personal user account|http://www.myendnoteweb.com/]] with the online bibliography manager '~EndNote Web'. This excellent service can import bibliographic references from various file formats (or directly from World of Science), process the reference information, and, importantly, format a list of references in any one of a large number of standard formats for placing in a 'References' section of a report. There is a long list of available reference formats, including, importantly, the IEEE format.

If this were not already useful enough, you can either download a plugin for Microsoft Word called ''Cite As You Write'' which can automatically insert correct reference citation markers into a text as you type, using a live connection to your personal '~EndNote Web' account ''(requires MS Internet Explorer)'', making both of the laborious tasks of keeping track of reference citations and formatting the References section of your report or thesis very easy and painless. Users of other operating systems or WP software are not left out either - you can upload a Rich Text Format (.RTF) file exported from your word processor software, containing specially formatted 'tags' at relevant places in your text, to the 'My ~EndNote' Web site, which will then substitute the correct citation information into your file and give you back an .RTF format file containing your original text with all of the citations neatly formatted, and a References section built to your specifications!
Broadly, the purpose of  a 'Conclusions'  section is to:
* summarise the new knowledge or insights gained,
* clearly state to what extent the original [[Goals]] of the work have been achieved
* Show how the work fits into, and adds new knowledge to, the wider literature on the subject

Contributing to open-source software projects is an excellent way to gain experience in programming, software engineering and working as part of a software development team. Even though the vast majority of such contributions are unpaid, it is a good way to gain documented experience of software development, which can then be quoted in a CV and shown to prospective (paying!) employers.

The following sites are provided as examples, and should not be taken as endorsements.

!General resources
* [[Contributing to Open Source Projects HOWTO|http://kegel.com/academy/opensource.html]]
* [[CodeKindness - Mobilizing Technology Volunteers for Social Good|http://www.codekindness.org/]]

!Specific projects
* [[Contribute/Junior Jobs - KDE TechBase|http://techbase.kde.org/Contribute/Junior_Jobs]]
* [[Ideas for Programmers - Thousand Parsec Wiki|http://www.thousandparsec.net/wiki/Ideas_for_Programmers]]
* [[contributing: Participate in OpenOffice.org|http://contributing.openoffice.org/]]
/***
|''Name:''|CryptoFunctionsPlugin|
|''Description:''|Support for cryptographic functions|
***/
//{{{
if(!version.extensions.CryptoFunctionsPlugin) {
version.extensions.CryptoFunctionsPlugin = {installed:true};

//--
//-- Crypto functions and associated conversion routines
//--

// Crypto "namespace"
function Crypto() {}

// Convert a string to an array of big-endian 32-bit words
Crypto.strToBe32s = function(str)
{
	var be = Array();
	var len = Math.floor(str.length/4);
	var i, j;
	for(i=0, j=0; i<len; i++, j+=4) {
		be[i] = ((str.charCodeAt(j)&0xff) << 24)|((str.charCodeAt(j+1)&0xff) << 16)|((str.charCodeAt(j+2)&0xff) << 8)|(str.charCodeAt(j+3)&0xff);
	}
	while (j<str.length) {
		be[j>>2] |= (str.charCodeAt(j)&0xff)<<(24-(j*8)%32);
		j++;
	}
	return be;
};

// Convert an array of big-endian 32-bit words to a string
Crypto.be32sToStr = function(be)
{
	var str = "";
	for(var i=0;i<be.length*32;i+=8)
		str += String.fromCharCode((be[i>>5]>>>(24-i%32)) & 0xff);
	return str;
};

// Convert an array of big-endian 32-bit words to a hex string
Crypto.be32sToHex = function(be)
{
	var hex = "0123456789ABCDEF";
	var str = "";
	for(var i=0;i<be.length*4;i++)
		str += hex.charAt((be[i>>2]>>((3-i%4)*8+4))&0xF) + hex.charAt((be[i>>2]>>((3-i%4)*8))&0xF);
	return str;
};

// Return, in hex, the SHA-1 hash of a string
Crypto.hexSha1Str = function(str)
{
	return Crypto.be32sToHex(Crypto.sha1Str(str));
};

// Return the SHA-1 hash of a string
Crypto.sha1Str = function(str)
{
	return Crypto.sha1(Crypto.strToBe32s(str),str.length);
};

// Calculate the SHA-1 hash of an array of blen bytes of big-endian 32-bit words
Crypto.sha1 = function(x,blen)
{
	// Add 32-bit integers, wrapping at 32 bits
	add32 = function(a,b)
	{
		var lsw = (a&0xFFFF)+(b&0xFFFF);
		var msw = (a>>16)+(b>>16)+(lsw>>16);
		return (msw<<16)|(lsw&0xFFFF);
	};
	// Add five 32-bit integers, wrapping at 32 bits
	add32x5 = function(a,b,c,d,e)
	{
		var lsw = (a&0xFFFF)+(b&0xFFFF)+(c&0xFFFF)+(d&0xFFFF)+(e&0xFFFF);
		var msw = (a>>16)+(b>>16)+(c>>16)+(d>>16)+(e>>16)+(lsw>>16);
		return (msw<<16)|(lsw&0xFFFF);
	};
	// Bitwise rotate left a 32-bit integer by 1 bit
	rol32 = function(n)
	{
		return (n>>>31)|(n<<1);
	};

	var len = blen*8;
	// Append padding so length in bits is 448 mod 512
	x[len>>5] |= 0x80 << (24-len%32);
	// Append length
	x[((len+64>>9)<<4)+15] = len;
	var w = Array(80);

	var k1 = 0x5A827999;
	var k2 = 0x6ED9EBA1;
	var k3 = 0x8F1BBCDC;
	var k4 = 0xCA62C1D6;

	var h0 = 0x67452301;
	var h1 = 0xEFCDAB89;
	var h2 = 0x98BADCFE;
	var h3 = 0x10325476;
	var h4 = 0xC3D2E1F0;

	for(var i=0;i<x.length;i+=16) {
		var j,t;
		var a = h0;
		var b = h1;
		var c = h2;
		var d = h3;
		var e = h4;
		for(j = 0;j<16;j++) {
			w[j] = x[i+j];
			t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=16;j<20;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=20;j<40;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k2);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=40;j<60;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),(b&c)|(d&(b|c)),w[j],k3);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=60;j<80;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k4);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}

		h0 = add32(h0,a);
		h1 = add32(h1,b);
		h2 = add32(h2,c);
		h3 = add32(h3,d);
		h4 = add32(h4,e);
	}
	return Array(h0,h1,h2,h3,h4);
};


}
//}}}
Welcome
A delimitations subsection usually accompanies a description of the [[Goals]]. It can be used to restrict the scope of the stated goals, e.g. specify that some aspects of the goals will not be considered, or that existing work or software will be used as a base for you to build upon.
/***
|''Name:''|DeprecatedFunctionsPlugin|
|''Description:''|Support for deprecated functions removed from core|
***/
//{{{
if(!version.extensions.DeprecatedFunctionsPlugin) {
version.extensions.DeprecatedFunctionsPlugin = {installed:true};

//--
//-- Deprecated code
//--

// @Deprecated: Use createElementAndWikify and this.termRegExp instead
config.formatterHelpers.charFormatHelper = function(w)
{
	w.subWikify(createTiddlyElement(w.output,this.element),this.terminator);
};

// @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead
config.formatterHelpers.monospacedByLineHelper = function(w)
{
	var lookaheadRegExp = new RegExp(this.lookahead,"mg");
	lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = lookaheadRegExp.exec(w.source);
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var text = lookaheadMatch[1];
		if(config.browser.isIE)
			text = text.replace(/\n/g,"\r");
		createTiddlyElement(w.output,"pre",null,null,text);
		w.nextMatch = lookaheadRegExp.lastIndex;
	}
};

// @Deprecated: Use <br> or <br /> instead of <<br>>
config.macros.br = {};
config.macros.br.handler = function(place)
{
	createTiddlyElement(place,"br");
};

// Find an entry in an array. Returns the array index or null
// @Deprecated: Use indexOf instead
Array.prototype.find = function(item)
{
	var i = this.indexOf(item);
	return i == -1 ? null : i;
};

// Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed()
// @Deprecated: Use store.getLoader().internalizeTiddler instead
Tiddler.prototype.loadFromDiv = function(divRef,title)
{
	return store.getLoader().internalizeTiddler(store,this,title,divRef);
};

// Format the text for storage in an HTML DIV
// @Deprecated Use store.getSaver().externalizeTiddler instead.
Tiddler.prototype.saveToDiv = function()
{
	return store.getSaver().externalizeTiddler(store,this);
};

// @Deprecated: Use store.allTiddlersAsHtml() instead
function allTiddlersAsHtml()
{
	return store.allTiddlersAsHtml();
}

// @Deprecated: Use refreshPageTemplate instead
function applyPageTemplate(title)
{
	refreshPageTemplate(title);
}

// @Deprecated: Use story.displayTiddlers instead
function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,unused3)
{
	story.displayTiddlers(srcElement,titles,template,animate);
}

// @Deprecated: Use story.displayTiddler instead
function displayTiddler(srcElement,title,template,unused1,unused2,animate,unused3)
{
	story.displayTiddler(srcElement,title,template,animate);
}

// @Deprecated: Use functions on right hand side directly instead
var createTiddlerPopup = Popup.create;
var scrollToTiddlerPopup = Popup.show;
var hideTiddlerPopup = Popup.remove;

// @Deprecated: Use right hand side directly instead
var regexpBackSlashEn = new RegExp("\\\\n","mg");
var regexpBackSlash = new RegExp("\\\\","mg");
var regexpBackSlashEss = new RegExp("\\\\s","mg");
var regexpNewLine = new RegExp("\n","mg");
var regexpCarriageReturn = new RegExp("\r","mg");

}
//}}}
This section is generally only necessary in theses and reports that describe the development of a piece of software, and refers ''in this case'' to Software Design - the process of defining and refining the overall architecture of the software. Commonly, this is done using UML (e.g. using class diagrams, sequence diagrams etc.)

Bear in mind that large class diagrams, etc. can be moved to one or more [[Appendices]] and directly referenced in the main text, if they take up too much room or disrupt the flow of the thesis.

'Design' in an experimental or statistical sense of the word, is better placed as a subsection of the [[Methods]] section. 
Writing technical documents in English can be problematic for those for whom it is not their native language. A list of tips can be found below - this list will be expanded as time goes on.

A useful presentation of common difficulties in written technical English can be found [[here|https://nanohub.org/resources/7878]]. This presentation is available in PDF, Flash, ~MP4 (video) and ~MP3 (audio) formats.

!Grammar
* ''Definite vs. indefinite article'':  Many students are unsure as to when to use the definite article (e.g. 'The program was executed ..') and when to use the indefinite article ('A program was executed..'). Yet more students (wrongly) do not use either form, starting the sentence above like this: 'Program was executed ..'. You will need to make sure that you use the correct form - use 'the' if you are referring to a particular, specific program (possibly mentioned in the previous sentence), and use 'a' otherwise.
!Vocabulary and spelling
* Students writing in English often find themselves using homonyms (words which sound the same as their intended word).  These words pass inspection by spell-checking software and hence may not be noticed until much later. A careful manual check for homonyms is recommended before the text is finalized.
!Other tips
* Use of a thesaurus is recommended to avoid overusing specific words . You can use an online thesaurus (just do a Web search for 'thesaurus' using, e.g. Google). Alternatively,  standalone thesaurus software exists for a number of operating systems (see 'Software' below)
* There may be times when you are not very confident that the phrase you have written is correct grammatical English. If you do not have specialist grammar checker software, there is an inventive (but slightly unreliable - take care!) way to 'tweak' an English phrase that is almost correct - type it into the Google search engine, surrounded by double quotes, e.g. if you had written the phrase "that interact whit a database", you could copy and paste this phrase into the Google search engine, surrounded by double quotes ("). Google will return the suggestion ''Did you mean "that interact with a database"?'' , and it is then your decision as to which version is more correct. This method of comparing the phrase you write with similar phrases from Google's massive database gives you some idea of how many times a phrase like yours has been written by others. If you type in a seemingly reasonable short phrase, and get no search hits or suggested alternatives, then it might be a good idea to check the English more carefully. The more hits you find for a phrase, the more likely it is to be grammatically correct (or at least, grammatically 'average').
!Software
* [[Artha|http://artha.sourceforge.net/wiki/index.php/Home]]
This is a free cross-platform (MS Windows, Linux, MS Windows Phone) English dictionary and thesaurus with some very convenient features. Once installed, it does not require an internet connection.
* [[WordWeb|http://wordweb.info/free/]] 
A free thesaurus program for MS Windows. Android and ~IPhone apps are also available.
!Other resources
A list of resources for improving your writing in English:

*Common grammar mistakes (http://www.planetoid.org/grammar_for_geeks/index.shtml).

* Common Errors in English (http://www.wsu.edu/~brians/errors/index.html)

*Common Student Writing Problems (http://www.paulhensel.org/teachprob.html).

*Technical Writing Made Easier (http://www.icsharpcode.com/TechNotes/TechnicalWriting20020325.pdf) - this one was written by a non-native English speaker.
''This is intended to be a general checklist for students about to produce the final form of their written examwork thesis. It is incomplete at the moment, and will be expanded over time. Check back (if you have time) occasionally to see if anything has been added.''

''DISCLAIMER: this checklist is unofficial, and also incomplete. It should not be construed as replacing any official policy document (as published on the examwork website) or course plan. It is simply a compilation of 'frequently encountered issues' in student exam work theses, that you may, or may not find helpful.''  

!Thesis checklist 

* Use the recommended thesis template, or recommended format (e.g. IEEE).

* All acronyms (e.g. SMTP) should be defined (' ... SMTP (Simple Mail Transport Protocol) ..') the first time they appear in the text 

* You should use a spellchecker and, if possible, a grammar checker on your thesis text. 

* Make sure you understand how to write (and the purpose of) an [[Abstract]]. 

* All concepts should be explained, and/or the reader referred to places where they can get more detailed explanations

* In presenting or interpreting data, use scientifically valid methods of statistics (for an outspoken opinion on this topic, look [[here|http://www.zedshaw.com/essays/programmer_stats.html]]).

* All general statements or claims you make (especially, for example,  '.. increasing importance of X  ..', '.. widespread use of Y ..' , etc. ) should be justified with a [[reference|References]] to a trustworthy external source of expertise in the literature or books etc., or by your own coherent [[scientific arguments|Scientific Thinking and Argumentation]].

* All choices you made should be justified (Why? Why did you make this specific set of choices?), either by [[scientific arguments|Scientific Thinking and Argumentation]] or by reference to a trustworthy external source of expertise in the literature or books etc.
 
* The [[Goals]] of the work must be clearly set out at the beginning of the thesis, and then must be individually addressed again at the end ([[Conclusions]] section) to evaluate if they were achieved. Be very careful  to make sure that you have not ended up answering a different 'research question' or set of goals than the one you outlined at the beginning of the thesis.

* ''MAKE USE OF THE DOCUMENTS ON THE EXAM WORK DISCO SITE!''  There is a guide that examiners will use to help with grading your thesis, but more importantly, there is a guide to your fellow students listing questions that they should ask about your thesis when they oppose it. USE THIS GUIDE not only to oppose a fellow students thesis, but also to evaluate your own thesis. Step back from your work and go through the list of questions listed in the guide, imagining that you are an independent observer who has never seen your thesis before. You could also ask a friend to use the opposition guide to evaluate your thesis. This can give very valuable peer feedback, and may show up areas where you have missed something out. It is easy to miss things in written work when you are writing it, as you are the person closest to the work.

* When in doubt, use more explanations rather that less. You are writing for an audience who know what C++ is, but may not know all the concepts you use in the thesis.

* ALWAYS describe how you performed the necessary information searching for your thesis works.You can do this in a number of paragraphs, or as a separate subsection, in your [[Methods]] section. Bear in mind the difference between primary sources (books, research literature) and secondary sources (Wikipedia, web pages, etc.). You should always try to use primary sources wherever possible, and present a very good reason if you find yourself using mostly secondary sources. If you do this, you will need to compensate with more of your own scientific arguments to justify your choices.

* ALWAYS consider possible sources of error (e.g. how your results could be 'contaminated'  by other programs running on your test machine). Try to find and describe such so-called 'confounding' influences, and then describe what you did to try to minimize or eliminate their effects.

* All Figures and Tables should be numbered and explicitly referred to in the main text, and have descriptive captions.

*At the end of your [[Conclusions]], always write at least a small paragraph reflecting on the process or techniques you used to carry out all the work for your thesis. Evaluate how well your choices have worked, and what you would do differently if you could go back in time and start the thesis work again. 

* Reference citations should be numbered in the order in which they ''first'' appear in the main text. Entries in your [[References]] section should be formatted according to the IEEE standard. Always give publisher, year and ISBN for books, and journal name, volume, issue, page numbers and year for scientific literature. If you can give a URL for the document, do so. If you can give a DOI number, do that also.

*Source code listings, and names of Functions, classes etc. used in the main text should appear in a monospaced font (e.g. Courier) to distinguish them from the surrounding text.

*Source code listings can be included in the main text if they are short. They should be treated like Figures or Tables, numbered, and referenced in the main text (e.g. ' .. (see Listing 4') ), and should be given a caption just like a Figure or a Table. Long source listings should be placed in an [[Appendix|Appendices]] and referred to somewhere in the main text. It is ''NOT'' a good idea to include the entire source code of your project in an Appendix - this should only be used for important and highly relevant short Listings that the reader may want to check while reading the thesis.

* ALWAYS specify what versions of operating systems and other software you use in your thesis. The same applies for hardware - describe the full configuration of the hardware you used.

* Avoid Plagiarism - check, for example, the recommendations for QuotingASource.
The conventional method of including graphical information in scientific text is as a ''Figure''. The graphical information is usually in one of three main forms:
* ''Schematic Diagram'' - e.g. UML diagrams, representations of networks (both computer networks, containing servers, switches, etc., and abstract/mathematical networks), flow charts, block diagrams showing nesting of systems and subsystems, maps, etc.
* ''Images'' - usually photographs, also any scanned picture originally produced in any of the wide range of visual arts
* [[Graphs]] - not to be confused with the mathematical concept of a graph (this is included under the heading ''Schematic Diagrams'' above as 'abstract/mathematical networks'), these are usually visual representations of numerical or categorical data, e.g. line graphs, scatter plots, histograms, pie charts etc.

!Figure requirements
A properly-constructed Figure needs:
* ''An image or picture'' of one of the three types listed above, to provide the main information content
* ''A Figure number:'' Each figure should have a unique figure number. Figure numbering schemes vary, but a general convention is that figures with higher numbers appear later in the document than figures with lower numbers, with the numbering starting at 1, and running consecutively through the whole document, e.g Figure 1, Figure 2, Figure 3 ....
** There are variations on this convention - for example, some document structuring conventions may specify that, for example, the Figures in Section 4 should be numbered as Figure 4.1, Figure 4.2 and so on. Section 5 then contains Figure 5.1, Figure 5.2, Figure 5.3 etc. 
* ''A Caption:'' This is a short description of the information content of the Figure, usually appearing immediately below the content. Ideally, this description should be long and descriptive enough to allow the reader to fully interpret the information content of the Figure without having to switch their attention back to the main text.

''Example Figure to appear here''

It is ''essential'' that every Figure be mentioned explicitly in the text. e.g. 'As Figure 5 shows, the throughput ...' or ' ... (see Figure 5) ...'. It is also a convention that a Figure should appear on the same page where it is first mentioned in the text, or possibly on the following page if there is no room on the current page. If a document contains a lot of Figures, then it is sometimes permitted to devote a single whole page in the document to containing only Figures and their captions. 

!! Subfigures
Occasionally, it is necessary or useful to group multiple pieces of related graphical information content together in a single Figure. In this case, the most used convention is to lay out the Figure as containing all the subfigures, laid out in a grid and individually labelled with, for example, lower case letters. For example, Figure 3 could contain subfigures (a),(b), and (c). The content of the Figure caption should then explicitly mention and explain the content of all of the subfigures.
** One occasionally encounters in scientific and technical literature subfigures embedded ''within'' a main Figure. This should usually be avoided wherever possible for reasons of clarity, but are sometimes useful (e.g. when a subfigure provides a 'zoomed-in' view of some important but poorly visible detail of the main figure).

''Example figure with subfigures to appear here''

!!!Tips for figures
* If the required format for the document you are producing specifies that each page has two columns of text, it is usually acceptable (and feasible in modern software) to put a particularly wide Figure at the top of the page, spanning the width of both columns, together with its caption. The remainder of the page can then be filled with two shortened columns of text, underneath the Figure, as usual.
* Figures tend to look neatest on the page when they are placed at the top of a text column. In most modern word processors this can be achieved by 'anchoring' the figure to the column or to the page (see the documentation for your word processor software for instructions on how to do this).
* Academic publications often require that manuscripts submitted for consideration for publication have all their Figures at the end on the manuscript, one per page. Often the graphics files containing the Figure information must also be supplied as separate files.
* If you have many Figures for a relatively small part of the text, an acceptable compromise may be to devote one or more entire pages entirely to Figures. The LaTeX typesetting software will do this for you automatically.
<<tiddler [[Thesis]]>>
In the Goals section (which usually  takes the form of a subsection of the Introduction), you should clearly specify the goals of the work you are describing in the thesis. This can consist,  for example, of a statement of your [[Research Question]], followed by a short description of exactly how you will attempt to answer the question. 

It is usually better to start with ambitious goals, and perhaps to not achieve them fully, than to set low goals and achieve them fully. 

The goals that you state in this section should then be mentioned again in the [[Conclusions]] section at the end of the thesis.
These are usually visual representations of numerical or categorical data, and can take a multitude of different forms ( line graphs, scatter plots, histograms, pie charts etc.). Specific advice about different types of graphs is given below.

!Line graphs and scatter plots
These two type of graph are among the most common types used in scientific and technical work.

Specific advice:

*Each axis (x and y for a 2-D graph, and x,y, and z for a 3-d graph) should have:
** A clear axis title, describing the variable plotted along the axis
** If appropriate, units, along with a multiplier chosen so as not to make the axis tic labels too cramped.
* If multiple data sets are shown on a line or scatter graph, then:
**Each data set should be represented by a different type of point marker symbol
**The graph should contain a key or legend, clearly matching each marker type with the appropriate data set
**Be wary of putting more than four or five datasets on each graph, otherwise the graph can become very cluttered 
** Be careful with colour - your graph may sometimes end up printed in black and white (or scales of gray) on paper, and this may also make distinguishing different data sets difficult.
A common element of almost all scientific writing is the presentation of information in a form other than conventional prose. This can take a number of forms (graphical, tabular, source code, ~URLs etc.). Broadly speaking, we can separate tasks related to these elements into two broad categories:
* ''Presentation of Data''
** [[Figures]]
** [[Tables]]
** [[Listings]] 
* ''Extracting Information from Data''
** [[Statistics]]
/***
|Name|ImageCaptionPlugin|
|Source|http://tiddlyyap.tiddlyspot.com/|
|License|Public domain|
|~CoreVersion|2.3|
|Type|plugin|
|Requires|none|
|Overrides|none|
|Description|Show an image's tooltip as a figure legend (caption) below the image|
!Usage
@@{{{<<icap '[img[tooltip|filename]]'>>}}}@@
Use standard TW image markup, including [>img or [<img to float image right or left.
Enclose image markup in quotes as argument for the icap macro.

Display of the image is controlled by three CSS classes which need to be added to [[StyleSheet]] (and can of course be customized to the user's taste):

.icapr {float: right; font-size: 9px; color: black; background-color: white; border: 1px solid #ccc; padding: 5px; margin: 5px;}
.icapl {float: left; font-size: 9px; color: black; background-color: white; border: 1px solid #ccc; padding: 5px; margin: 5px;}
.icapn {display: block; font-size: 9px; color: black; background-color: white; border: 1px solid #ccc; padding: 5px; margin: 5px;}
.icapr img {border: none; padding: 0; margin: 0;}
.icapl img {border: none; padding: 0; margin: 0;}
.icapn img {border: none; padding: 0; margin: 0;}

!Code
***/
//{{{

config.macros.icap = {};
config.macros.icap.handler = function(place,macroName,params)
 { var imarkup = params[0];
   var ifloat = imarkup.substr(1,1);
   if (ifloat == ">")
    { icss = "icapr";
      imarkup = imarkup.substr(0,1) + imarkup.substr(2);
      }
   else if (ifloat == "<")
    { icss = "icapl";
      imarkup = imarkup.substr(0,1) + imarkup.substr(2);
      }
   else
    { icss = "icapn";
      }
   var icapt = imarkup.substring(imarkup.indexOf("[",1)+1,imarkup.indexOf("|",0));
   var idiv = "{{" + icss + "{" + imarkup + "<br>" + icapt + "}}}"
   wikify (idiv,place,null,null);
   return false;
   };

//}}}
This section, if needed, should contain details of the process of turning a software [[Design]] into executable form. 

In this section it is also acceptable to describe difficulties or problems that arose during implementation, and describe how they were solved. It is therefore usually useful to keep some form of notes, in written or electronic (e.g. on a project Wiki) form during the implementation process. Such notes can prove invaluable when writing a thesis - if you keep no notes, you have no record of the issues that arose, or you may find that your memory is incomplete. In any case, demonstrating exactly how you tackled problems provides valuable evidence to the reader (and your examiner) of the thoroughness of your approach, and may highlight important issues not immediately apparent to the reader.
This should establish why the topic of the thesis is important, give the reader a good clear overview of what is going to be discussed and why the issue is important. 

Whether a reader has discovered your thesis by first reading the [[Abstract]] and deciding to find out more, or begins to read it for another reason, they will usually start by reading the Introduction. It is therefore very important to lead the reader gradually into the thesis by establishing clearly what issue the thesis is intended to address. 
One good way of doing this is to 'set the scene' by first describing the importance of the general subject area, then, in successive sentences and paragraphs, narrow down the focus to more specific sub-fields, explaining why it is important (or alternatively, why there is a current and pressing need) to solve problems and increase knowledge in these areas. You continue to narrow the focus in this way, until you finally reach the specific topic of your thesis, which you will then go on to describe in the [[Goals]] subsection of the Introduction. 

[[Goals]]

[[Delimitations]]

Roadmap

At the very end of the Introduction it is usually a good idea to have a paragraph that sets out a 'roadmap' for the rest of the thesis, e.g.

'In section 2, an introduction to XML is provided, and following sections discuss its applications in Software Engineering. Section 3 describes the Simple Object Access Protocol (SOAP), and Section 4 discusses ..
...
Finally , in Section (n), the techniques described in earlier sections are compared and discussed, possible future ways in which things could evolve are presented in Section (n+1), and Section (n+2) contains the Conclusions of this work.'

This way, you make it easy for the reader interested in one specific part of the thesis to navigate to the relevant section.
[[LaTeX|http://en.wikipedia.org/wiki/LaTeX]] is a free document preparation system available for a wide variety of platforms. It does not take the same approach to document preparation as ~WYSIWIG word processors (although friendly GUI interfaces such as [[LyX|http://www.lyx.org/]] exist), instead relying on a purely text-based approach, complemented by in-text markup instructions and directives. The text can then be processed by a number of programs into output formats such as ~PostScript, PDF and HTML. 

!!Pros
*Can be created with a standard text editor across a range of platforms
*Many standard document styles and user-contributed addons available via the [[Comprehensive TeX Archive Network|http://www.ctan.org/]]
*Publication-quality output (especially for mathematics)
* Automatically generated citation and reference formatting
* Automatic numbering of sections and subsections, chapters, equations, Tables and Figures
* Straightforward indexing using 'makeindex' or similar tools

!!Cons
* Higher learning curve for users used to word processing systems
* Handling of tables requires care (though software tools exist to ease the process)
* The system takes control of layout using sensible defaults: you may need to exert some effort to override these defaults 
Laboratory reports are pieces of writing produced, either individually or by groups, to document the progress of a small self-contained task or exercise, usually carried out using facilities designed specifically for this task (e.g. computer labs, electronics lab, chemistry labs). One or more predefined tasks are carried out in the labs, and both the process of carrying out the tasks and the results obtained should be documented in a written lab report.

A common outline for a lab report could be:

''Title Page'' (containing names, date, institution and department or those carrying out the lab task)
# Definition of the task(s)
** Lab tasks are usually predefined, but in some cases the student carrying out the lab may have to suggest or choose between a number of options for carrying out the task, providing motivation for their choices. A common pattern is for the teacher to provide a 'lab script' containing the instructions for the lab exercise. In any case, this section should contain a clear description of what is to be done or measured in the lab task. Details of algorithms, theory etc. can be omitted unless specifically requested, and the reader referred to detailed descriptions elsewhere using reference citations.   
# Methods
** This is an __extremely important__ part of a lab report. All materials, procedures, equipment, computer software and hardware used in carrying out the lab task must be clearly listed in detail, along with the measurement techniques or procedures used to carry out the lab. It is vital to describe these in sufficient detail that another person could pick up your lab report and repeat exactly what you have done without needing any guesswork. Hardware model numbers and specifications, and software and operating system version numbers, are, for example, expected in a computer lab report. If the task requires measurements, you are expected to explicitly describe what steps you took to ensure that you measured __only__ the desired quantities, and minimized any other external effects that might 'contaminate' or 'confound' the measurements. 
# Results
** In this section you describe what results you obtained. In a quantitative task, these could take the form of [[Tables]] and/or [[Figures]] obtained by experiment, measurement, comparison with theoretical predictions or statistical data manipulation. In a lab where programs to perform a specific set of operations must be written or used, this section would then contain a set of documented tests (possibly using screenshots) to demonstrate the requested operations. 
# Conclusion
** Here you reflect on what your results show. If experiment is being compared with a theoretical prediction, try to suggest what factors would account for any differences. Make suggestions for how the experiment could be designed better to give more accurate, precise, or more widely applicable, results.
# References
** If references are used they should be listed here using an approved reference style.

Depending on the subject area and the type of lab, you can also tabulate the raw unprocessed measurements you made. It is ''always'' a good idea to store all measurements made, in case they ever need to be reprocessed, or supplemented with another set of measurements for statistical reasons. Some subject areas advocate including raw data as one or more  [[Appendices]] to the lab report, but in most cases it is sufficient to store a separate physical or computer record of the measurements safely so that they can be re-examined if necessary.
/***
|''Name:''|LegacyStrikeThroughPlugin|
|''Description:''|Support for legacy (pre 2.1) strike through formatting|
|''Version:''|1.0.2|
|''Date:''|Jul 21, 2006|
|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|
|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.0|
***/

//{{{
// Ensure that the LegacyStrikeThrough Plugin is only installed once.
if(!version.extensions.LegacyStrikeThroughPlugin) {
version.extensions.LegacyStrikeThroughPlugin = {installed:true};

config.formatters.push(
{
	name: "legacyStrikeByChar",
	match: "==",
	termRegExp: /(==)/mg,
	element: "strike",
	handler: config.formatterHelpers.createElementAndWikify
});

} //# end of "install only once"
//}}}
Listings are convenient for presentation of computer input or output data, source code, HTML, SQL instructions etc. more than 3-4 lines long, which would otherwise disrupt the flow of the main text. They usually look best in a monospaced font (e.g. Courier), and should be treated in the same way as a Figure or Table, that is, they should be numbered, given a descriptive caption and mentioned explicitly in the main text (e.g. 'The allowed forms of the ~MyClass constructor method are shown in Listing 2.')

It is usually a good idea to move long Listings (say, taking up more than half a page) to an [[Appendix|Appendices]]. The usual advice about not using Appendices as a 'dumping ground' for large amounts of source code, however, still applies. 
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
 major: 1, minor: 1, revision: 0, 
 date: new Date("mar 17, 2007"), 
 source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};

if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};

bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
 if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){ 
  url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
 }
 return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
<<search>>
----
[[Welcome]]
----
[[Thesis]]
[[Journal Paper]]
[[Scientific Poster]]
----
[[Academic Writing Style]]
----
[[Handling and Presentation of Data]]
----
[[Software Support for Technical Writing]]
----
[[English Usage]]
----
[[Useful resources]]
----
[[Recommended Reading: CS/SE]]
----
[[University West-specific information]]
----
[[TiddlyWiki|http://www.tiddlywiki.com]] v.<<version>>
<<tiddler ToggleRightSidebar>>
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
An freely available open-source office software suite, available from [[here|http://www.openoffice.org/]] .
A thesis or report written in a scientific style conventionally has a number of distinct sections, each with a specific purpose. These are presented in an order defined by the requirements of clear transmission of information among academics. Consequently, the order of presentation usually does not vary much from the sequence given below. Some of the sections named below may, depending on the exact nature of the thesis, be omitted or combined with others.

[[Title page]]
[[Abstract]]
[[Introduction]]
[[Background]]
[[Theory]]
[[Methods]]
[[Results]]
[[Discussion]]
[[Conclusions]]
[[References]]
[[Appendices]]

In the particular case of a thesis in Computer Science (using a broad definition of that term), where you have designed, implemented and tested a piece of software, you may also need the following top-level sections, usually appearing just before the [[Results]] section:

[[Design]]
[[Implementation]]

In this case, your [[Results]] section should then contain a well-documented set of tests of the software you have written, with example input and output.
 
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'
};

config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");

merge(config.macros.option.types, {
	'pas': {
		elementType: "input",
		valueField: "value",
		eventName: "onkeyup",
		className: "pasOptionInput",
		typeValue: config.macros.option.passwordInputType,
		create: function(place,type,opt,className,desc) {
			// password field
			config.macros.option.genericCreate(place,'pas',opt,className,desc);
			// checkbox linked with this password "save this password on this computer"
			config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);			
			// text savePasswordCheckboxLabel
			place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
		},
		onChange: config.macros.option.genericOnChange
	}
});

merge(config.optionHandlers['chk'], {
	get: function(name) {
		// is there an option linked with this chk ?
		var opt = name.substr(3);
		if (config.options[opt]) 
			saveOptionCookie(opt);
		return config.options[name] ? "true" : "false";
	}
});

merge(config.optionHandlers, {
	'pas': {
 		get: function(name) {
			if (config.options["chk"+name]) {
				return encodeCookie(config.options[name].toString());
			} else {
				return "";
			}
		},
		set: function(name,value) {config.options[name] = decodeCookie(value);}
	}
});

// need to reload options to load passwordOptions
loadOptionsCookie();

/*
if (!config.options['pasPassword'])
	config.options['pasPassword'] = '';

merge(config.optionsDesc,{
		pasPassword: "Test password"
	});
*/
//}}}
<<tiddler [[Scientific Poster]]>>
! Some advice for presentations

* Make sure that when you present your slides, ''__UNDER NO CIRCUMSTANCES__'' should you just 'read off the screen' - you MUST talk around the topics presented on the slides. Think of the points on your slides as very concise summaries - you must then expand on the points verbally.  It is essential to be able to talk directly to the audience in this way, because it shows that you know what you are talking about.
* Talk to the audience, not to the screen (or your feet!). It may help to choose a person in the audience, and look at them when you are speaking. Switch to looking at a different person occasionally.
*  If you are presenting using overheads, slides, ~PowerPoint or PDF files, it is beneficial to keep in mind the '6 by 6' rule (not more than 6 bullet points per slide, and no more than 6 words per bullet point). This rule is, in general, a little too conservative, and slides often need a little more text than this. Remember, however, that during a presentation the audiences attention will be split between listening to what the presenter is saying, and reading the slides. If the audience has too much text to read on each slide, they will either get tired of reading so much, or will completely miss what the speaker is saying.
* The first slide that should be on the screen when you start talking is a slide just containing the title of your exam work and your name
* The second slide should be a short bullet-pointed list of the topics you will discuss during the presentation. You can also think of this as a short 'roadmap' of the presentation.
*One or two slides are needed at the beginning motivating why the problem you are solving is important - some of the things you have said in the Introduction of your thesis will be useful here.
* Make the final slide a Summary - were the goals achieved ? etc.
* There is no need to make a final slide with the word 'Questions?' on it - the audience will already assume that you are open to questions.
* If there is time, and if it is possible, a live demonstration of your work is another good way to impress an audience (but be careful with the timing). An alternative to a live demonstration is a recorded video demonstration or walkthrough - you can then comment on the video as it plays. 
* ''DON'T JUST FILL THE SLIDES WITH ~CUT-AND-PASTED TEXT FROM YOUR THESIS!'' This is a classic mistake, and makes you and your work look weak.
* Use pictures wherever possible.
* Another trick that reassures the audience is to put a page counter on the bottom of your slides, so that it shows, e.g. if you have 18 slides, slide 7 would say 'Slide 7/18' at the bottom. This provides the audience (and you) a way of seeing how far you have progressed through the presentation.
* Practice your presentation in front of friends in advance, and encourage them to ask you questions.
* Speak slowly and clearly. 
* Learn presentation technique by observing others (a good resource for this is [[TED Talks|http://www.ted.com/index.php/talks]]).

!!Timing
*  If you run out of time in the presentation, ''__ALWAYS__ '' jump directly to the Summary slide, spend a few seconds highlighting the main points, then finish.
* The time allowed for your presentation will go VERY quickly, so one trick is to keep track of how much time you have spent with a stopwatch. If your talk is due to last for 20 minutes, for example, and you have 20 slides and are spending the same amount of time talking about each slide, then after 10 minutes you should be on slide 10, and so on. If you find that you finish your presentation __early__, it is always a good idea to have a few extra slides available AFTER the final Summary slide, possibly describing some interesting technical aspect of your work. 
* Somewhere between approximately 12 and 18 slides is a good total for a 20-30 minute presentation, depending how much time you are going to spend talking about each one. If you have more than that you will either have to rush through the slides or overrun your allotted time. In either of these cases, you will annoy your audience. If you have less than that, it makes your work seem insubstantial and weak.

!! Informative links
[[Collins (2004). “Giving a PowerPoint presentation”. RadioGraphics, vol. 24, 1185–1192|http://radiographics.rsnajnls.org/cgi/reprint/24/4/1185]].
If you want to directly quote someone else's words in your writing, there are two main approaches, outlined below. In general, a quotation of someone's ''written'' words should be surrounded by single quote marks ('), and if the words were actually spoken, you should use double quote marks("). You must make very sure that it is obvious to the reader that these are not your own words by making them stand out from your own text. 

*If the quote is short, you can include it directly in your text, but it must be
**Surrounded with the appropriate style of quotes
**Ideally, made to look different from the surrounding text by changing to italic font
**Followed immediately by a reference citation

*If the quote is more than a single sentence, it should be:
**Written in an indented block, which is also separated from the surrounding text by a blank line, both before and after the quote.
**Surrounded with the appropriate style of quotes 
**Ideally, made to look different from the surrounding text by changing to italic font
**Followed immediately by a reference citation

If you fail to correctly quote a source, this opens the possibility that you could be accused of [[Plagiarism]] by presenting someone else's words as your own. 
The following is a list of classic or important papers in the area of computer science and software engineering. The purpose of this list is to provide a 'standard reading list' for students in this area, as well as for occasional reference. Recommendations for additions are very welcome!

!Security
# [[The top 25 most dangerous programming errors|http://www.sans.org/top25errors/]] 

!Computer Science and Programming
# [[The Joel Test: 12 Steps to Better Code|http://www.joelonsoftware.com/articles/fog0000000043.html]]
# [[What every computer scientist should know about floating-point arithmetic|http://www.engrng.pitt.edu/hunsaker/3097/floatingpoint.pdf]]
# [[What every programmer should know about memory|http://people.redhat.com/drepper/cpumemory.pdf]]
# [[Error detecting and error correcting codes|http://www.engelschall.com/~sb/hamming/?page=1]], Richard Hamming, Bell Systems Technical Journal, vol. 29, pp. 147–160, 1950 .

!Architecture/Software Engineering

This list was compiled using the list and comments at [[Dr Dobbs CodeTalk|http://dobbscodetalk.com/index.php?option=com_myblog&show=10-Papers-Every-Software-Architect-Should-Read-At-Least-Twice-.html&Itemid=29]].

 
# [[The Byzantine Generals Problem|http://research.microsoft.com/en-us/um/people/lamport/pubs/byz.pdf]] (1982) by Leslie Lamport, Robert Shostak and Marshall Pease - The problem with distributed consensus 
# [[Go To statements considered harmfull|http://www.u.arizona.edu/~rubinson/copyright_violations/Go_To_Considered_Harmful.html]] (1968) - by Edsger W. Dijkstra 
# [[A Note on Distributed Computing|http://research.sun.com/techrep/1994/abstract-29.html]] (1994) - by Samuel C. Kendall, Jim Waldo, Ann Wollrath and Geoff Wyant
# [[Big Ball of Mud|http://www.laputan.org/mud/]] (1999) - Brian Foote and Joseph Yoder - [[patterns or anti-patterns|http://www.rgoarchitects.com/nblog/2007/11/28/BigBallOfMudAndOtherArchitecturalDisastersNot.aspx]]?
# [[No Silver Bullet Essence and Accidents of Software Engineering|http://www.lips.utexas.edu/ee382c-15005/Readings/Readings1/05-Broo87.pdf]] (1987) - Frederick P. Brooks - On the limitations of Technology and Technological innovations.
# [[The Open Closed Principle|http://www.objectmentor.com/resources/articles/ocp.pdf]] (1996) - Robert C. Martin (Uncle Bob) - The first in a series of articles on Object Oriented Principles 
# [[IEEE1471-2000 A recommended practice for architectural description of software intensive systems|http://standards.ieee.org/reading/ieee/std_public/description/se/1471-2000_desc.html]] (2000).
# [[Harvest, Yield, and Scalable Tolerant Systems|http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.33.411]] (1999) Armando Fox, Eric A. Brewer - CAP theorem
# [[An Introduction to Software Architecture|http://www.cs.cmu.edu/afs/cs/project/vit/ftp/pdf/intro_softarch.pdf]] (1993) - David Garlan and Mary Shaw - one of the foundation articles of software architecture field (although based on earlier work by the two) 
# [[Who Needs an Architect?|http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf]] (2003) Martin Fowler
This section, which in some cases can have the alternative title 'Bibliography', contains an ordered, formatted list of any external information sources you are citing in your work. Reference (and citation) styles vary greatly between and within subject areas, but in the area of computer science the most frequently used standard is that defined by the [[IEEE|http://www.ieee.org]]. All the information below is based on the use of this standard. 

* Information on the IEEE standard can be found by
** Accessing the official IEEE Style Manual on [[this page|http://www.ieee.org/web/publications/authors/transjnl/index.html]].
** Any of the following linked alternative sources: [[one|http://wwwlib.murdoch.edu.au/find/citation/ieee.html]], [[two|http://www.lib.monash.edu.au/tutorials/citing/ieee.html]], [[three|http://www.lib.unimelb.edu.au/cite/ieee/]]
* A numbered reference list should appear after the [[Conclusions]] (and before any [[Appendices]]), in a section of their own called 'References'.
* References should appear in the list ''in order of first appearance'' of their citations in the main text.
* Reference citations look like this: [1], [2,5,6,9-15]. This example shows how you handle multiple references, and also ranges of reference numbers. Note that the numbers are always stated in increasing order.
* Using the IEEE recommended style of formatting references (and citations in the main text) can easily be achieved if you are using [[helper software|Software Support for Technical Writing]], e.g. BibTeX, using the IEEE bibliography style. If you can't do this then at least use the website http://citationmachine.net/ or http://www.ecf.utoronto.ca/~writing/bb.html to format your reference lists correctly.
<<tiddler [[Journal Paper]]>>
! Literature searching
By far the best place to find references is in the research literature or in textbooks. Such sources are usually called 'primary sources', as they tend to be peer-reviewed. Web-based information sources (such as web pages, weblogs, [[Wikipedia|http://www.wikipedia.org]] etc. ) fall into the less-desirable category of 'secondary sources', not only because they often have had little or no peer-review, but also because they are more likely to disappear or change.   

!! Literature searching tips
* If you don't know where to start looking, however, one way to find negative opinions about almost anything software-related is to Google-search for the phrase 'considered harmful'. This is because of a old classic [[paper|http://www.u.arizona.edu/~rubinson/copyright_violations/Go_To_Considered_Harmful.html]] by Djikstra, entitled 'GOTO Statement Considered Harmful', describing why the GOTO statement in Basic, Fortran etc. is a bad idea. Many people have copied the title and used it to attack things they don't like, e.g. [[this example|http://www.xml.com/pub/a/1999/05/xsl/xslconsidered_1.html]]. Be aware, however, that the quality of the arguments presented in such essays can vary from very bad to very good, so you need to be a little sceptical of the opinions expressed, but sometimes they can make very valid points and, most importantly, contain further references that are useful.
A scientific poster serves the function of communicating scientific information to a casual reader who is usually standing when reading the poster. This type of  poster can often be found in an area set aside for such posters at a scientific meeting (such as a research conference),  or in the corridors of a university department. In both cases, the goal of the poster is to convey information to the passer-by, in an environment which can sometimes be cramped, noisy or busy with many other people. It is therefore important that a scientific poster conveys its message very clearly, and must be readable (and understandable) in less than 5 minutes.

!Advice for scientific posters
* If you are presenting a poster at a conference, check well in advance the recommended format for poster submissions. Most conferences will give you advance information about the dimensions of the area available for each poster. Usually this takes the form of poster display boards: be careful to check if these boards will be mounted in 'landscape' or 'portrait' orientation - there are few things more annoying when presenting a poster to find that the boards have 'portrait' orientation when your carefully-prepared poster is in 'landscape' orientation. Boards can also sometimes be raised off the ground - be aware of this possibility.
* ''NEVER'' simply take the text of a paper and put all of it on a poster. The result will be very difficult to read, both in terms of density of information and visual density of text (i.e. the text will be too small to read). Keep in mind the following rule: ''There is ALWAYS too much text on a poster'' - be concise! 
* Use dark text on a light background. The converse can cause all sorts of problems to appear during the production process, and also uses more ink.
* Make sure that your poster is readable from a few meters away. Experience suggests that titles should be no smaller than 72pt, and body text should be no smaller than 24pt. Use sans-serif fonts for the main title and section titles, and either serif or sans-serif fonts for the main text. Avoid unusual/'funny'/quirky fonts or font effects - these always detract from the comprehensibility of the poster.
* By all means use colour to attract the reader's eye and enhance your poster, but use it sparingly (e.g. just for emphasis, or as coloured images directly related to the work). Avoid garish colour combinations and spare a thought for those with colour-blindness.
* Arrange your content in sections, one distinct text block per section. Order these blocks in columns, not rows. Colin Purrington (second link below) also advocates putting your most important results near the top of your poster, and relegating the less interesting parts to the bottom. 

!Poster resources
!!General advice and examples
* [[Creating Effective Poster Presentations :: An Effective Poster|http://www.ncsu.edu/project/posters]]
* [[Designing Conference Posters|http://colinpurrington.com/tips/academic/posterdesign]]
* [[Poster and Presentation Resources - The Graduate School at UNC-Chapel Hill|http://gradschool.unc.edu/student/postertips.html]]
* [[A Student Handbook for Writing in Biology, Third Edition : File Downloads - Sinauer Associates, Inc.|http://www.sinauer.com/knisely/]]
* [[UMass Amherst: Biology Department: Poster Printing|http://www.bio.umass.edu/biology/undergraduate/biology-computer-resource-center/documentation/poster-printing]]
* [[Poster Presentations - University at Buffalo Libraries|http://library.buffalo.edu/asl/guides/bio/posters.html]]
* [[Create a Power Point Poster|http://sph.washington.edu/practicum/ppposter.asp]]
* [[Adventures in poster making « Robyn Hall|http://robynhall.ca/adventures-in-poster-making/]]
* [[Making scientific posters - OpenWetWare|http://openwetware.org/wiki/Making_scientific_posters]]
* [[Welcome and creating a scientific poster : The Huttenhower Lab|http://www.huttenhower.org/content/welcome-and-creating-scientific-poster]]
* [[Poster HOWTO : IRKM Lab : Jack Baskin School of Engineering : UC Santa Cruz|http://irkmlab.soe.ucsc.edu/PosterHOWTO]]
* [[Design of Scientific Posters|http://www.writing.engr.psu.edu/posters.html]]
* [[Better Posters|http://betterposters.blogspot.com/]]
* [[MAST - Math and Science Teaching Institute|http://mast.unco.edu/services/poster_printing.php]]
* [[Cain Project: Poster Resources|http://www.owlnet.rice.edu/~cainproj/ih_posters.html]]
* [[Poster Gallery - PhD Posters|http://phdposters.com/gallery.php]]
* [[Texas Tech University - Teaching, Learning, and Professional Development Center|http://www.tltc.ttu.edu/content/asp/services/PresentingPosters.asp]]
* [[Poster presentation|http://people.eku.edu/ritchisong/posterpres.html]]
* [[The Writing Center at George Mason University - Poster Presentations in the Natural Sciences|http://writingcenter.gmu.edu/?p=381]]
* [[Poster Instructions - PhD Posters|http://phdposters.com/howto.php#howto_ppt]]


!!Templates and practical guides
* ''NEW'': a suitable set of templates for the College of Chemistry and Chemical Engineering, Hunan Normal University can be found [[here|http://www.beaconresearch.org/otherfiles/CCCETemplates.zip]]. This ZIP file contains versions of an A0-size poster template in both 'landscape' and 'portrait' orientations in ~PowerPoint (.ppt), ~PowerPoint Template (.pot), ~OpenOffice/~LibreOffice (.odp) and SVG ((suitable for Corel Draw and open source programs like [[Inkscape|http://http://inkscape.org/]] and [[Scribus|http://http://www.scribus.net/]]). There is also a PDF version which shows what the poster should look like.
* [[PowerPoint XP (2002) for academic posters|http://www.bristol.ac.uk/it-services/learning/documentation/pptxp-3/pptxp-3t.pdf]](PDF)
* [[Powerpoint poster templates for research poster presentations|http://www.posterpresentations.com/html/free_poster_templates.html]]
* [[A0 poster template for Scribus|http://sites.google.com/site/psolymos/download/a0poster-template.sla?attredirects=0&d=1]]
* [[CTAN search for LaTeX poster styles|http://www.ctan.org/search/?search=poster&search_type=description]]

!!Software
Software for preparing posters includes, but is not limited to:
* [[Inkscape|http://inkscape.org]] (open source, Windows/Linux/OS X) - a very good vector graphics program with the ability to import PDF files and also insert scalable mathematical equations (using a plugin).
* [[Scribus|http://www.scribus.net]] (open source, Windows/Linux/OS X) - excellent general-purpose DTP program
* [[LaTeX|http://www.latex-project.org/]] (open source, practically all operating systems) - This is good for those accustomed to writing journal papers in ~LaTeX. The basic programs are command-line based, but various GUI interfaces have been written to make life a little easier. Various ~LaTeX styles have been written specifically for posters (search on [[CTAN|http://www.ctan.org]] or see the templates section above).
* [[Adobe Illustrator|https://www.adobe.com/products/illustrator.html]] (commercial, Windows/OS X) - professional design software
* [[Microsoft PowerPoint|http://office.microsoft.com/en-us/powerpoint/]] (commercial, Windows) - provided as part of Microsoft Office. This common software has been widely used for poster creation (see the Templates section above), but does not provide as much flexibility as the other programs above. ~PowerPoint files can also cause problems for printing companies - it is usually best to convert the final version to PDF before handing over the poster to be printed.
* [[OmniGraffle|https://www.omnigroup.com/products/omnigraffle/]] - (commercial, OS X) - recommended by Apple Mac users
Try to find both references that support the ideas you are advancing, and also criticise these ideas or advocate a different approach. Summarize their arguments, and present your own informed judgements and opinions, taking into account all the arguments, backing up your arguments with reference citations. The more reference citations you can make to back up your point of view, the better. Make your arguments logical and reasoned. 
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<tiddler TspotSidebar>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
a guide for students in science, CS, IT, engineering and other technical subjects
Scientific Communication
Many of the tasks associated with scientific and technical writing can be automated, leaving the author more free to consider the content of their work. Such software can cover one or more of the following tasks:

!Spelling and grammar checking

!Structure and clarity
* [[Swan - Scientific Writing Assistant|https://cs.joensuu.fi/swan/]] - This Java software helps the reader consider the structure (not the spelling or grammar) of their writing, making recommendations for greater clarity.

!Bibliography and reference handling
See [[Bibliography Software]] for a short list of useful software.

!General tips
* If you send draft copies of your thesis to your supervisor or examiner in PDF format, please make sure that comments are ENABLED in the security settings for the document file. This makes an all-electronic editing/review process possible.

* Try to use LaTeX (or GUI interfaces like [[LyX|http://www.lyx.org/]]) for your main text and BibTeX to handle references. This will save you a lot of work in the long run, especially if you have long lists of references, numbered tables, figures, equations etc.

* If your scientific writing task has pre-defined templates (e.g. dissertations or theses at University West, or some academic journals), then it is usually best to use these. Make sure that you are aware of any facilities provided by the template, such as predefined styles, automatically generated tables of contents, equation/figure/listing/table/reference numbering macros etc.

* If you do not have a predefined template to use for your scientific writing task, try to use ''styles'' if you are using word-processing software (e.g. Microsoft Word, OpenOffice). Most word processing packages allow you to define styles - create one style for your main body text, another for section headings, another for subsection headings, etc. and save these styles in the document. This greatly simplifies formatting issues when the text is being cleaned up for the final version.
/***
|''Name:''|SparklinePlugin|
|''Description:''|Sparklines macro|
***/
//{{{
if(!version.extensions.SparklinePlugin) {
version.extensions.SparklinePlugin = {installed:true};

//--
//-- Sparklines
//--

config.macros.sparkline = {};
config.macros.sparkline.handler = function(place,macroName,params)
{
	var data = [];
	var min = 0;
	var max = 0;
	var v;
	for(var t=0; t<params.length; t++) {
		v = parseInt(params[t]);
		if(v < min)
			min = v;
		if(v > max)
			max = v;
		data.push(v);
	}
	if(data.length < 1)
		return;
	var box = createTiddlyElement(place,"span",null,"sparkline",String.fromCharCode(160));
	box.title = data.join(",");
	var w = box.offsetWidth;
	var h = box.offsetHeight;
	box.style.paddingRight = (data.length * 2 - w) + "px";
	box.style.position = "relative";
	for(var d=0; d<data.length; d++) {
		var tick = document.createElement("img");
		tick.border = 0;
		tick.className = "sparktick";
		tick.style.position = "absolute";
		tick.src = "data:image/gif,GIF89a%01%00%01%00%91%FF%00%FF%FF%FF%00%00%00%C0%C0%C0%00%00%00!%F9%04%01%00%00%02%00%2C%00%00%00%00%01%00%01%00%40%02%02T%01%00%3B";
		tick.style.left = d*2 + "px";
		tick.style.width = "2px";
		v = Math.floor(((data[d] - min)/(max-min)) * h);
		tick.style.top = (h-v) + "px";
		tick.style.height = v + "px";
		box.appendChild(tick);
	}
};


}
//}}}
.icapr {float: right; font-size: 9px; color: black; background-color: white; border: 1px solid #ccc; padding: 5px; margin: 5px;}
.icapl {float: left; font-size: 9px; color: black; background-color: white; border: 1px solid #ccc; padding: 5px; margin: 5px;}
.icapn {display: block; font-size: 9px; color: black; background-color: white; border: 1px solid #ccc; padding: 5px; margin: 5px;}
.icapr img {border: none; padding: 0; margin: 0;}
.icapl img {border: none; padding: 0; margin: 0;}
.icapn img {border: none; padding: 0; margin: 0;}
A Theory section is not necessary in all theses. Usually, depending on the subject, necessary background information can be conveyed in a [[Background]] section. The exceptions, i.e  the situations where a separate Theory section may be a good idea, are typically the following:

* The writer is using theory or algorithms created by others, and wishes to provide the reader with a description and explanation of the theories/algorithms (''always'' backed up with reference citations!)
* The writer has developed new theories or algorithms themselves. In such a case, careful and complete explanations are essential (and the relationship to known theories and algorithms in the literature must be clearly stated).

Any equations or Listings used must be numbered, and referred to in the main text. 
<<tiddler [[Parts of a thesis]]>>
TiddlyWiki is the name of the HTML+~JavaScript system used to create this webpage. For more information, see the [[TiddlyWiki home page|http://www.tiddlywiki.com/]]. You can also get a free hosted TiddlyWiki at [[TiddySpot|http://www. tiddlyspot.com/]]. 
/%
!info
|Name|ToggleRightSidebar|
|Source|http://www.TiddlyTools.com/#ToggleRightSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|show/hide right sidebar (SideBarOptions)|
Usage
<<<
{{{
<<tiddler ToggleRightSidebar>>
<<tiddler ToggleRightSidebar with: label tooltip>>
}}}
Try it: <<tiddler ToggleRightSidebar##show
	with: {{config.options.chkShowRightSidebar?'►':'◄'}}>>
<<<
Configuration:
<<<
{{{
config.options.chkShowRightSidebar (true)
config.options.txtToggleRightSideBarLabelShow (◄)
config.options.txtToggleRightSideBarLabelHide (►)
}}}
<<<
!end
!show
<<tiddler {{
	var co=config.options;
	if (co.chkShowRightSidebar===undefined) co.chkShowRightSidebar=true;
	var sb=document.getElementById('sidebar');
	var da=document.getElementById('displayArea');
	if (sb) {
		sb.style.display=co.chkShowRightSidebar?'block':'none';
		da.style.marginRight=co.chkShowRightSidebar?'':'1em';
	}
'';}}>><html><nowiki><a href='javascript:;' title="$2"
onmouseover="
	this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
	+encodeURIComponent(encodeURIComponent(this.onclick))
	+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
	var co=config.options;
	var opt='chkShowRightSidebar';
	var show=co[opt]=!co[opt];
	var sb=document.getElementById('sidebar');
	var da=document.getElementById('displayArea');
	if (sb) {
		sb.style.display=show?'block':'none';
		da.style.marginRight=show?'':'1em';
	}
	saveOptionCookie(opt);
	var labelShow=co.txtToggleRightSideBarLabelShow||'&#x25C4;';
	var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25BA;';
	if (this.innerHTML==labelShow||this.innerHTML==labelHide) 
		this.innerHTML=show?labelHide:labelShow;
	this.title=(show?'hide':'show')+' right sidebar';
	var sm=document.getElementById('storyMenu');
	if (sm) config.refreshers.content(sm);
	return false;
">$1</a></html>
!end
%/<<tiddler {{
	var src='ToggleRightSidebar';
	src+(tiddler&&tiddler.title==src?'##info':'##show');
}} with: {{
	var co=config.options;
	var labelShow=co.txtToggleRightSideBarLabelShow||'&#x25C4;';
	var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25BA;';
	'$1'!='$'+'1'?'$1':(co.chkShowRightSidebar?labelHide:labelShow);
}} {{
	var tip=(config.options.chkShowRightSidebar?'hide':'show')+' right sidebar';
	'$2'!='$'+'2'?'$2':tip;
}}>>
/***
Contains the stuff you need to use Tiddlyspot
Note you must also have UploadPlugin installed
***/
//{{{

// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'scicomm';

// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)

// disable autosave in d3
if (window.location.protocol != "file:")
	config.options.chkGTDLazyAutoSave = false;

// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
	SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
	SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
	OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
	DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
	MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}

// create some shadow tiddler content
merge(config.shadowTiddlers,{

'WelcomeToTiddlyspot':[
 "This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
 "<<tiddler TspotControls>>",
 "See also GettingStarted.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki Guides|http://tiddlywikiguides.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n"),

'TspotControls':[
 "| tiddlyspot password:|<<option pasUploadPassword>>|",
 "| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<<br>>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
 "| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[announcements|http://announce.tiddlyspot.com/]], [[blog|http://tiddlyspot.com/blog/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),

'TspotSidebar':[
 "<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),

'TspotOptions':[
 "tiddlyspot password:",
 "<<option pasUploadPassword>>",
 ""
].join("\n")

});
//}}}
''DISCLAIMER: The best (definitive and authoritative) source for University West-specific information is always through the University website or the [[Disco|http://disco.hv.se/]] page for the specific course.  The following information is __unofficial__''.

! Thesis Work ('exjobb')

!!Thesis work templates
Links to downloadable templates (in MS Word or alternative formats) will be made available here, when a list has been compiled. Please check back regularly for an updated list.
*

!! Undergraduate and Masters degree in Computer Science and Network Technology

The assessable tasks for these thesis work courses consist of the following:

!!! Research project and written thesis
 
See the unofficial ExamworkThesisChecklist

!!!! Written opposition of peer student work

After being approved to present their own thesis work, each student or student group is assigned the task of critically evaluating the written thesis work of another student or student group. This is a vital part of the assessment, and contributes a significant proportion of the final overall course grade. It is therefore ''essential'' to take this task seriously. The best way to tackle this task is to download the guidelines for opponentship from the thesis work Disco site, and use the points and headings contained in this document as a outline. You are expected to evaluate another student or student group's work using all of the questions and criteria contained in this Guidelines document.  

!!!! Oral opposition of peer student work

All students must attend the oral presentation of the thesis work for which they have been assigned as opponent. After each thesis work presentation finishes, the presentation coordinator invites the designated opponents to perform an oral opposition. Opponents are expected to comment on the thesis work they are opposing, and on the recently-concluded presentation of that work. Opponents are also expected to question the presenter on aspects of their work, asking questions based on the written thesis. During this questioning, opponents should ''not'' focus on minor issues such as spelling, but rather on the substance of the written work and the choices made in its execution.

!!! Presentation of thesis work

See [[Presentations]]
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 07/05/2012 22:44:16 | YourName | [[/|http://scicomm.tiddlyspot.com/#Poster]] | [[store.cgi|http://scicomm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://scicomm.tiddlyspot.com/index.html]] | . | failed |
| 07/05/2012 22:51:20 | YourName | [[/|http://scicomm.tiddlyspot.com/#Poster]] | [[store.cgi|http://scicomm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://scicomm.tiddlyspot.com/index.html]] | . |
| 17/10/2012 15:39:42 | YourName | [[/|http://scicomm.tiddlyspot.com/]] | [[store.cgi|http://scicomm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://scicomm.tiddlyspot.com/index.html]] | . | failed |
| 17/10/2012 15:40:12 | YourName | [[/|http://scicomm.tiddlyspot.com/]] | [[store.cgi|http://scicomm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://scicomm.tiddlyspot.com/index.html]] | . | failed |
| 17/10/2012 15:41:17 | YourName | [[/|http://scicomm.tiddlyspot.com/]] | [[store.cgi|http://scicomm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://scicomm.tiddlyspot.com/index.html]] | . |
| 05/11/2012 14:49:34 | YourName | [[/|http://scicomm.tiddlyspot.com/]] | [[store.cgi|http://scicomm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://scicomm.tiddlyspot.com/index.html]] | . | ok |
| 05/11/2012 21:31:32 | YourName | [[/|http://scicomm.tiddlyspot.com/]] | [[store.cgi|http://scicomm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://scicomm.tiddlyspot.com/index.html]] | . |
| 02/12/2012 14:56:17 | YourName | [[/|http://scicomm.tiddlyspot.com/]] | [[store.cgi|http://scicomm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://scicomm.tiddlyspot.com/index.html]] | . | ok |
| 02/12/2012 15:01:14 | YourName | [[/|http://scicomm.tiddlyspot.com/]] | [[store.cgi|http://scicomm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://scicomm.tiddlyspot.com/index.html]] | . | ok |
| 02/12/2012 15:05:23 | YourName | [[/|http://scicomm.tiddlyspot.com/]] | [[store.cgi|http://scicomm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://scicomm.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.4|
|''Date:''|2008-08-11|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 4,
	date: new Date("2008-08-11"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

//
// Environment
//

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;	// true to activate both in Plugin and UploadService
	
//
// Upload Macro
//

config.macros.upload = {
// default values
	defaultBackupDir: '',	//no backup
	defaultStoreScript: "store.php",
	defaultToFilename: "index.html",
	defaultUploadDir: ".",
	authenticateUser: true	// UploadService Authenticate User
};
	
config.macros.upload.label = {
	promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
	promptParamMacro: "Save and Upload this TiddlyWiki in %0",
	saveLabel: "save to web", 
	saveToDisk: "save to disk",
	uploadLabel: "upload"	
};

config.macros.upload.messages = {
	noStoreUrl: "No store URL in parmeters or options",
	usernameOrPasswordMissing: "Username or password missing"
};

config.macros.upload.handler = function(place,macroName,params) {
	if (readOnly)
		return;
	var label;
	if (document.location.toString().substr(0,4) == "http") 
		label = this.label.saveLabel;
	else
		label = this.label.uploadLabel;
	var prompt;
	if (params[0]) {
		prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0], 
			(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
	} else {
		prompt = this.label.promptOption;
	}
	createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};

config.macros.upload.action = function(params)
{
		// for missing macro parameter set value from options
		if (!params) params = {};
		var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
		var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
		var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
		var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
		var username = params[4] ? params[4] : config.options.txtUploadUserName;
		var password = config.options.pasUploadPassword; // for security reason no password as macro parameter	
		// for still missing parameter set default value
		if ((!storeUrl) && (document.location.toString().substr(0,4) == "http")) 
			storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
		if (storeUrl.substr(0,4) != "http")
			storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
		if (!toFilename)
			toFilename = bidix.basename(window.location.toString());
		if (!toFilename)
			toFilename = config.macros.upload.defaultToFilename;
		if (!uploadDir)
			uploadDir = config.macros.upload.defaultUploadDir;
		if (!backupDir)
			backupDir = config.macros.upload.defaultBackupDir;
		// report error if still missing
		if (!storeUrl) {
			alert(config.macros.upload.messages.noStoreUrl);
			clearMessage();
			return false;
		}
		if (config.macros.upload.authenticateUser && (!username || !password)) {
			alert(config.macros.upload.messages.usernameOrPasswordMissing);
			clearMessage();
			return false;
		}
		bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password); 
		return false; 
};

config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir) 
{
	if (!storeUrl)
		return null;
		var dest = bidix.dirname(storeUrl);
		if (uploadDir && uploadDir != '.')
			dest = dest + '/' + uploadDir;
		dest = dest + '/' + toFilename;
	return dest;
};

//
// uploadOptions Macro
//

config.macros.uploadOptions = {
	handler: function(place,macroName,params) {
		var wizard = new Wizard();
		wizard.createWizard(place,this.wizardTitle);
		wizard.addStep(this.step1Title,this.step1Html);
		var markList = wizard.getElement("markList");
		var listWrapper = document.createElement("div");
		markList.parentNode.insertBefore(listWrapper,markList);
		wizard.setValue("listWrapper",listWrapper);
		this.refreshOptions(listWrapper,false);
		var uploadCaption;
		if (document.location.toString().substr(0,4) == "http") 
			uploadCaption = config.macros.upload.label.saveLabel;
		else
			uploadCaption = config.macros.upload.label.uploadLabel;
		
		wizard.setButtons([
				{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption, 
					onClick: config.macros.upload.action},
				{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
				
			]);
	},
	options: [
		"txtUploadUserName",
		"pasUploadPassword",
		"txtUploadStoreUrl",
		"txtUploadDir",
		"txtUploadFilename",
		"txtUploadBackupDir",
		"chkUploadLog",
		"txtUploadLogMaxLine"		
	],
	refreshOptions: function(listWrapper) {
		var opts = [];
		for(i=0; i<this.options.length; i++) {
			var opt = {};
			opts.push();
			opt.option = "";
			n = this.options[i];
			opt.name = n;
			opt.lowlight = !config.optionsDesc[n];
			opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
			opts.push(opt);
		}
		var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
		for(n=0; n<opts.length; n++) {
			var type = opts[n].name.substr(0,3);
			var h = config.macros.option.types[type];
			if (h && h.create) {
				h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
			}
		}
		
	},
	onCancel: function(e)
	{
		backstage.switchTab(null);
		return false;
	},
	
	wizardTitle: "Upload with options",
	step1Title: "These options are saved in cookies in your browser",
	step1Html: "<input type='hidden' name='markList'></input><br>",
	cancelButton: "Cancel",
	cancelButtonPrompt: "Cancel prompt",
	listViewTemplate: {
		columns: [
			{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
			{name: 'Option', field: 'option', title: "Option", type: 'String'},
			{name: 'Name', field: 'name', title: "Name", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'} 
			]}
};

//
// upload functions
//

if (!bidix.upload) bidix.upload = {};

if (!bidix.upload.messages) bidix.upload.messages = {
	//from saving
	invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
	backupSaved: "Backup saved",
	backupFailed: "Failed to upload backup file",
	rssSaved: "RSS feed uploaded",
	rssFailed: "Failed to upload RSS feed file",
	emptySaved: "Empty template uploaded",
	emptyFailed: "Failed to upload empty template file",
	mainSaved: "Main TiddlyWiki file uploaded",
	mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
	//specific upload
	loadOriginalHttpPostError: "Can't get original file",
	aboutToSaveOnHttpPost: 'About to upload on %0 ...',
	storePhpNotFound: "The store script '%0' was not found."
};

bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
	var callback = function(status,uploadParams,original,url,xhr) {
		if (!status) {
			displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
			return;
		}
		if (bidix.debugMode) 
			alert(original.substr(0,500)+"\n...");
		// Locate the storeArea div's 
		var posDiv = locateStoreArea(original);
		if((posDiv[0] == -1) || (posDiv[1] == -1)) {
			alert(config.messages.invalidFileError.format([localPath]));
			return;
		}
		bidix.upload.uploadRss(uploadParams,original,posDiv);
	};
	
	if(onlyIfDirty && !store.isDirty())
		return;
	clearMessage();
	// save on localdisk ?
	if (document.location.toString().substr(0,4) == "file") {
		var path = document.location.toString();
		var localPath = getLocalPath(path);
		saveChanges();
	}
	// get original
	var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
	var originalPath = document.location.toString();
	// If url is a directory : add index.html
	if (originalPath.charAt(originalPath.length-1) == "/")
		originalPath = originalPath + "index.html";
	var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
	var log = new bidix.UploadLog();
	log.startUpload(storeUrl, dest, uploadDir,  backupDir);
	displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
	if (bidix.debugMode) 
		alert("about to execute Http - GET on "+originalPath);
	var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

bidix.upload.uploadRss = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		if(status) {
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
			bidix.upload.uploadMain(params[0],params[1],params[2]);
		} else {
			displayMessage(bidix.upload.messages.rssFailed);			
		}
	};
	// do uploadRss
	if(config.options.chkGenerateAnRssFeed) {
		var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
		var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
		var rssString = generateRss();
		// no UnicodeToUTF8 conversion needed when location is "file" !!!
		if (document.location.toString().substr(0,4) != "file")
			rssString = convertUnicodeToUTF8(rssString);	
		bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
	} else {
		bidix.upload.uploadMain(uploadParams,original,posDiv);
	}
};

bidix.upload.uploadMain = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		var log = new bidix.UploadLog();
		if(status) {
			// if backupDir specified
			if ((params[3]) && (responseText.indexOf("backupfile:") > -1))  {
				var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
				displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
			}
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
			store.setDirty(false);
			log.endUpload("ok");
		} else {
			alert(bidix.upload.messages.mainFailed);
			displayMessage(bidix.upload.messages.mainFailed);
			log.endUpload("failed");			
		}
	};
	// do uploadMain
	var revised = bidix.upload.updateOriginal(original,posDiv);
	bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};

bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
	var localCallback = function(status,params,responseText,url,xhr) {
		url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
		if (xhr.status == 404)
			alert(bidix.upload.messages.storePhpNotFound.format([url]));
		if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
			alert(responseText);
			if (responseText.indexOf("Debug mode") >= 0 )
				responseText = responseText.substring(responseText.indexOf("\n\n")+2);
		} else if (responseText.charAt(0) != '0') 
			alert(responseText);
		if (responseText.charAt(0) != '0')
			status = null;
		callback(status,params,responseText,url,xhr);
	};
	// do httpUpload
	var boundary = "---------------------------"+"AaB03x";	
	var uploadFormName = "UploadPlugin";
	// compose headers data
	var sheader = "";
	sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
	sheader += uploadFormName +"\"\r\n\r\n";
	sheader += "backupDir="+uploadParams[3] +
				";user=" + uploadParams[4] +
				";password=" + uploadParams[5] +
				";uploaddir=" + uploadParams[2];
	if (bidix.debugMode)
		sheader += ";debug=1";
	sheader += ";;\r\n"; 
	sheader += "\r\n" + "--" + boundary + "\r\n";
	sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
	sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
	sheader += "Content-Length: " + data.length + "\r\n\r\n";
	// compose trailer data
	var strailer = new String();
	strailer = "\r\n--" + boundary + "--\r\n";
	data = sheader + data + strailer;
	if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
	var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
	if (!posDiv)
		posDiv = locateStoreArea(original);
	if((posDiv[0] == -1) || (posDiv[1] == -1)) {
		alert(config.messages.invalidFileError.format([localPath]));
		return;
	}
	var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
				store.allTiddlersAsHtml() + "\n" +
				original.substr(posDiv[1]);
	var newSiteTitle = getPageTitle().htmlEncode();
	revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
	revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
	revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
	revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
	revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
	return revised;
};

//
// UploadLog
// 
// config.options.chkUploadLog :
//		false : no logging
//		true : logging
// config.options.txtUploadLogMaxLine :
//		-1 : no limit
//      0 :  no Log lines but UploadLog is still in place
//		n :  the last n lines are only kept
//		NaN : no limit (-1)

bidix.UploadLog = function() {
	if (!config.options.chkUploadLog) 
		return; // this.tiddler = null
	this.tiddler = store.getTiddler("UploadLog");
	if (!this.tiddler) {
		this.tiddler = new Tiddler();
		this.tiddler.title = "UploadLog";
		this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
		this.tiddler.created = new Date();
		this.tiddler.modifier = config.options.txtUserName;
		this.tiddler.modified = new Date();
		store.addTiddler(this.tiddler);
	}
	return this;
};

bidix.UploadLog.prototype.addText = function(text) {
	if (!this.tiddler)
		return;
	// retrieve maxLine when we need it
	var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
	if (isNaN(maxLine))
		maxLine = -1;
	// add text
	if (maxLine != 0) 
		this.tiddler.text = this.tiddler.text + text;
	// Trunck to maxLine
	if (maxLine >= 0) {
		var textArray = this.tiddler.text.split('\n');
		if (textArray.length > maxLine + 1)
			textArray.splice(1,textArray.length-1-maxLine);
			this.tiddler.text = textArray.join('\n');		
	}
	// update tiddler fields
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	store.addTiddler(this.tiddler);
	// refresh and notifiy for immediate update
	story.refreshTiddler(this.tiddler.title);
	store.notify(this.tiddler.title, true);
};

bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	if (!this.tiddler)
		return;
	var now = new Date();
	var text = "\n| ";
	var filename = bidix.basename(document.location.toString());
	if (!filename) filename = '/';
	text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
	text += config.options.txtUserName + " | ";
	text += "[["+filename+"|"+location + "]] |";
	text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
	text += uploadDir + " | ";
	text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
	text += backupDir + " |";
	this.addText(text);
};

bidix.UploadLog.prototype.endUpload = function(status) {
	if (!this.tiddler)
		return;
	this.addText(" "+status+" |");
};

//
// Utilities
// 

bidix.checkPlugin = function(plugin, major, minor, revision) {
	var ext = version.extensions[plugin];
	if (!
		(ext  && 
			((ext.major > major) || 
			((ext.major == major) && (ext.minor > minor))  ||
			((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
			// write error in PluginManager
			if (pluginInfo)
				pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
			eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
	}
};

bidix.dirname = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(0, lastpos);
	} else {
		return filePath.substring(0, filePath.lastIndexOf("\\"));
	}
};

bidix.basename = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("#")) != -1) 
		filePath = filePath.substring(0, lastpos);
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(lastpos + 1);
	} else
		return filePath.substring(filePath.lastIndexOf("\\")+1);
};

bidix.initOption = function(name,value) {
	if (!config.options[name])
		config.options[name] = value;
};

//
// Initializations
//

// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);

// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");

//optionsDesc
merge(config.optionsDesc,{
	txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
	txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
	txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
	txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
	txtUploadUserName: "Upload Username",
	pasUploadPassword: "Upload Password",
	chkUploadLog: "do Logging in UploadLog (default: true)",
	txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});

// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');


// Backstage
merge(config.tasks,{
	uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");


//}}}
* Another useful source of advice for producing your thesis, created by Dr. Stanislav Belenki and Dr. Robert Feldt, can be found [[here|http://havsvik.nu/htu/Some_advice_for_a_successful_thesis_project.html]]
* A good way to gain practical experience in software engineering and programming is [[Contributing To Open-Source Projects]]
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
Welcome to the Scientific Communication TiddlyWiki site! 

This site, produced and edited by Dr. Samantha Jenkins and Dr. Steven R. Kirk of the [[BEACON Research Group|http://www.beaconresearch.org]], is intended to be a complete downloadable resource for student in Natural sciences, Computer Science, IT, Engineering, and other technical and scientific subjects. Its primary audience is students at undergraduate, Masters- and ~PhD level. The subjects covered have mainly been prompted by 'frequently asked questions' from students, but we intend that this page should grow into a more generally useful resource on scientific writing.

At the moment, we are in the process of copying relevant material into this site from our other sites. The amount of material presented here will therefore increase over time.  

You can explore the topics covered by clicking on one of the topics in the menu at the left of the page, by typing a word into the 'Search' box at the top right of the page, or by clicking your mouse on the 'All' tab in the menu on the right side of the page and select a topic from the alphabetically ordered list.  A complete index of all the entries in this document can be viewed by clicking on the tab marked 'All' in the gray column on the right-hand side of this page.

''You can also download this site as a single HTML page and read it offline - click 'Download' in the right-hand menu, or simply click on the button below!''

<html><a href='http://scicomm.tiddlyspot.com/download'
class='button'>download</a></html> 

! Starting points
Below is a list of commonly-used forms of written and oral communication in scientific and technical subject areas. 

!!Written forms
* [[Poster]]
* [[Laboratory Report]]
* [[Course Project Report]]
* [[Final-year dissertation or thesis]]
* [[Research Paper]]
!!Oral Forms
* [[Presentations]]

This list will be expand as the content in this site increases.

! Acknowledgements
We would like to acknowledge useful comments, suggestions and links provided by:
* Dr. Stanislav Belenki (see [[Useful resources]])
* Dr. Robert Feldt (see [[Useful resources]])
config.options.chkShowRightSidebar=false;