├── .gitignore ├── CONTRIBUTORS.md ├── README.md ├── codingStandards ├── coding-standards-css.html └── coding-standards-css.md ├── commitandpublish.sh ├── contents ├── activities │ └── IDEs.html ├── examples │ ├── A123456.md │ └── AboutUs.md ├── handbook │ ├── appendixA-principles.html │ ├── appendixB-policies.html │ ├── appendixC-faq.html │ ├── appendixD-help.html │ ├── appendixE-github.html │ ├── appendixF-teamworkIssues.html │ ├── exams.html │ ├── gradeBreakdown.html │ ├── index.html │ ├── lectures.html │ ├── participation.html │ ├── peerEvaluations.html │ ├── preliminaries.html │ ├── programmingLanguages.html │ ├── project-assessment.html │ ├── project-constraints.html │ ├── project-deliverables.html │ ├── project-individualReport.html │ ├── project-product.html │ ├── project-retrospective.html │ ├── project-scope.html │ ├── project-supervision.html │ ├── project-v00.html │ ├── project-v01.html │ ├── project-v02.html │ ├── project-v03.html │ ├── project-v04.html │ ├── project-v05.html │ ├── project-v05rc.html │ ├── project.html │ ├── teams.html │ ├── testingFaq.html │ ├── textbooks.html │ ├── tools.html │ └── tutorials.html ├── headings.html ├── pointsToPonderAboutProductDesign.html ├── schedule │ ├── index.html │ ├── week.html │ ├── week0.html │ ├── week1.html │ ├── week10.html │ ├── week11.html │ ├── week12.html │ ├── week13.html │ ├── week14.html │ ├── week2.html │ ├── week3.html │ ├── week4.html │ ├── week5.html │ ├── week6.html │ ├── week7.html │ ├── week8.html │ └── week9.html └── search │ ├── index.html │ ├── search-category-partial.html │ ├── search-keyword-partial.html │ └── search-main-category-partial.html ├── dashboard ├── Teams-AY1617S1.md └── Teams-AY1617S2.md ├── diagrams └── PhasesTimeline.pptx ├── doc ├── ContentAuthorGuide.md ├── DeveloperGuide.md ├── contextual-backgrounds.png └── searchFeature.md ├── images ├── 10 observations.png ├── 2stars.png ├── 3stars.png ├── BigBang.png ├── BigPictureSmall.png ├── Deliverables.png ├── DemoTips.png ├── FilesChangedTab.png ├── Forces me to visit a separate website.png ├── Greenbox.png ├── I'm not allowed to use my favorite tool.png ├── IntermediateOop.png ├── JamesGosling.png ├── Jim at his computer.png ├── KeyboardNotFound.jpg ├── L10-pre-lecture-exercise.png ├── Lecture photo.png ├── Polymorphism.png ├── PowerTips.png ├── PrDetails.png ├── Redbox.png ├── Rubber_duck_assisting_with_debugging.jpg ├── Submission requirements differ.png ├── Topics - big picture.png ├── UML reference sheet.png ├── Violetbox.png ├── Why workload heavy.png ├── Why you....png ├── [Handouts] front cover.png ├── activitydiagram.png ├── ada_lovelace.png ├── ajax-preload.gif ├── alternativeDesigns.png ├── archi roadmap.png ├── bad code.png ├── brooks.png ├── chaos.png ├── component designs.png ├── coupling.png ├── defensive.png ├── dennis-ritchie.png ├── details.png ├── documentation.png ├── eclipse.png ├── exam connected to project.png ├── fire.png ├── frameworks.png ├── frequent submissions.png ├── github.png ├── good code.png ├── grade breakdown.png ├── growingPlant.png ├── how to get help.png ├── how to google it.png ├── hubturboBoardsExample.png ├── l10-pre.png ├── limited project scope.png ├── moduleTimeline.png ├── no marks for intermediate submissions.png ├── objects.png ├── patterns.png ├── peer evaluations.png ├── png_peer.png ├── principles.png ├── processes.png ├── profilephotos.png ├── qa methods.png ├── rcs.png ├── roles.png ├── slides not detailed enough.png ├── small things matter.png ├── so much self study.png ├── specifying.png ├── star.png ├── supplementary books.png ├── t5_architecture.png ├── t5_discussions.png ├── task listing UI comparison.png ├── team.png ├── testcases.png ├── the good reasons to get home early.png ├── tools.png ├── typical cs2103 week.png ├── userstories.png ├── v00.png ├── v01demo.png ├── v05demo.png ├── vague requirement.png ├── waling skeleton.png ├── week12-12thingsslides.png ├── weeklyWrapupQuestion.png ├── windowsErrorPrompt.png └── yee ha.png ├── index.html ├── publish.sh ├── scripts ├── common.js ├── embedded.js ├── handbook.js ├── markdown.js ├── search.js └── tooltip.js └── styles ├── common.css ├── handbook.css └── markdown.css /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | CS2103website.iml 3 | -------------------------------------------------------------------------------- /CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | # Developers 2 | * [**Aaron Chong**](https://github.com/nus-cs2103/website/issues?q=involves%3Aacjh) - Lead Developer [Dec 2016 - ] 3 | * [**Wilson Kurniawan**](https://github.com/wkurniawan07) - Lead Developer [Aug 2015 - Nov 2015]. 4 | 5 | # Contributors 6 | * [**Xianyan Jia**](https://github.com/nus-cs2103/website/issues?q=involves%3ASeaOfOcean) [2015] 7 | * [**Chencan Xu**](https://github.com/nus-cs2103/website/issues?q=involves%3Acxuc163) [2015] 8 | * [**Soh You Jun**](https://github.com/nus-cs2103/website/issues?q=involves%3Ayj-soh) [2015] 9 | * [**Benjamin Heng**](https://github.com/nus-cs2103/website/issues?q=involves%3Abenjaminheng) [2015] 10 | * [**Tan Chun Hui**](https://github.com/nus-cs2103/website/issues?q=involves%3Acrispyfridge) [2015] 11 | * [**Raghav Ramesh**](https://github.com/nus-cs2103/website/issues?q=involves%3ARaghavRamesh) [2015] 12 | 13 | 14 | `//more to be added` 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Source Code for the CS2103 Module Website 2 | This repo hosts the source code for the CS2103 (Software Engineering) module at [SoC (NUS)](http://www.comp.nus.edu.sg) 3 | 4 | ## Released version 5 | The **released version** of this website is available [here](http://www.comp.nus.edu.sg/~cs2103/). 6 | The released version may be behind the latest version in this repo. 7 | 8 | ## Contributing 9 | **We welcome contributions from current/past CS2103 students**. 10 | 11 | The easiest way to contribute is to post bugs and suggestion in our issue tracker. 12 | 13 | If you would like to contribute code, refer to our [Developer Guide](doc/DeveloperGuide.md). 14 | 15 | If you would like to contribute content, refer to our [Content Author Guide](doc/ContentAuthorGuide.md). 16 | 17 | ## Acknowledgements 18 | Many thanks to our [contributors](CONTRIBUTORS.md). 19 | -------------------------------------------------------------------------------- /codingStandards/coding-standards-css.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | CSS Style Guide 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /codingStandards/coding-standards-css.md: -------------------------------------------------------------------------------- 1 | # CSS Coding Standard 2 | 3 | ## Contents 4 | - [General](#general) 5 | - [CSS Files](#css-files) 6 | - [Sections](#sections) 7 | - [Selectors](#selectors) 8 | - [Selector Formatting](#selector-formatting) 9 | - [Use of Efficient Selectors](#use-of-efficient-selectors) 10 | - [Classes](#classes) 11 | - [Naming Standards](#naming-standards) 12 | - [Attributes](#attributes) 13 | - [Order of Attributes](#order-of-attributes) 14 | - [Attribute Formatting](#attribute-formatting) 15 | - [General Details](#general-details) 16 | - [Resources](#resources) 17 | - [Highly Recommended](#highly-recommended) 18 | - [Other Readings](#other-readings) 19 | 20 | ## General 21 | We are using the [Google CSS Style Guide](https://google-styleguide.googlecode.com/svn/trunk/htmlcssguide.xml) as our primary guide and have made a few changes to suit nus-cs2103 project. The Google Style Document shall be used for any topics not covered in this document. 22 | 23 | > If the project is using Bootstrap/jQuery, use Bootstrap classes wherever possible and as much as possible. 24 | 25 | We are not using CSS3 selectors. 26 | 27 | > Although they are powerful, cross-browser compatibility is difficult to achieve and many rules are supported by different browsers starting from different versions (refer: [W3CSchools List](http://www.w3schools.com/cssref/css3_browsersupport.asp)). Also, we can stick to more functional names for the css and use classes to achieve our needs → more readable and easier to manage. 28 | 29 | ## CSS Files 30 | In the future if we have more files, CSS file includes must be done using `` tags in the html/jsp files and NOT using `@import` in other css files. 31 | ```html 32 | 33 | ``` 34 | ```html 35 | @import "common.css"; 36 | ``` 37 | > **`@import`** can be slow and may result in the page being rendered without css for a while before the page magically comes 38 | to life. As of now we are using css files as stylers of html pages and thus the dependency must be clearly visible in the html 39 | page. 40 | 41 | NO inline style sheets or inline styles in the html/jsp files. 42 | ```css 43 | /* write styles only in the external file common.css */ 44 | #mainDiv { 45 | border: thin solid black; 46 | color:white; 47 | margin: auto; 48 | } 49 | ``` 50 | ```css 51 | 52 | 57 | 58 | 59 |
60 | ``` 61 | > The whole idea is to have Separation of Concerns (SoC). If css rules are specified everywhere, editing them 62 | in the future will be a hassle and redundant overriding of css rules may occur. If all are in one place 63 | management is also easier. 64 | 65 | ## Sections 66 | The CSS styles are divided into three seperate files for three sections - [common, handbook, markdown](https://github.com/nus-cs2103/website/blob/master/styles). Also [common.css](https://github.com/nus-cs2103/website/blob/master/styles/common.css) has been divided into many sections - accordions, buttons, table, embedded handbook section and so on. Place the new css rules in the appropriate section. 67 | 68 | > By segmenting the file(s) in this logical way, it is easy to locate css rules and to ensure that a new rule 69 | being added is not already present. 70 | 71 | ## Selectors 72 | ### Selector Formatting 73 | The selector(s) must be specified in separate lines. 74 | ```css 75 | /* Each selector in a new line */ 76 | .button-sort-ascending:hover, 77 | .button-sort-none:hover { 78 | cursor: pointer; 79 | } 80 | ``` 81 | ```css 82 | /* do not write them in the same line */ 83 | .button-sort-ascending:hover, .button-sort-none:hover { 84 | cursor: pointer; 85 | } 86 | ``` 87 | 88 | > This eases reading as well as helps in revision control as conflicts reduce. 89 | 90 | Group related/hierarchical style specifications (eg :hover, child specifier, etc) and provide an additional indent to the more specific selector -- refer to [here](http://isobar-idev.github.io/code-standards/#_css_formatting) for examples. 91 | 92 | > This gives a nice hierarchical structure to the file and helps to visually group css rules by indentation. 93 | In addition this gives an immediate idea as to how certain classes are being used in the HTML files 94 | (from the hierarchy) without actually reading HTML files. 95 | 96 | ### Use of Efficient Selectors 97 | Do not qualify class/ID selectors using tag names (do not use: div.mainContent, simply use .mainContent) -- refer to [Writing efficient CSS](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Writing_efficient_CSS#Guidelines_for_Efficient_CSS) for examples. 98 | 99 | > This speeds up the css match lookup. If such a qualification is actually required, either use another 100 | class on top of this to change the style or use a completely different class to start with. In any case, 101 | if this kind of qualification is needed, then probably the class has not been named well enough 102 | (see naming standards for classes). 103 | 104 | Use Child selector rather than descendant selector (use '#container > span' rather than '#container span') -- refer to [Writing efficient CSS](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Writing_efficient_CSS#Guidelines_for_Efficient_CSS) for examples. 105 | 106 | > This is a strong recommendation as descendant selector is extremely expensive, especially when the 107 | specified ancestor has a lot of descendants. 108 | 109 | ## Classes 110 | ### Naming Standards 111 | Use all lowercase letters.
112 | Separate words with hyphens ('-') and no other separator.
113 | We use 2 kinds of classes: Atomic and Component. 114 | ```css 115 | /* Component Class */ 116 | .comment-list 117 | .sort-icon 118 | /* Atomic Class */ 119 | .align-center 120 | .border-gray 121 | ``` 122 | ```css 123 | /* do not use these */ 124 | .commentList 125 | .sort_icon 126 | .centeralign 127 | ``` 128 | > Atomic Classes describe atomic attributes like border-gray, align-center that can be used on any element. 129 | They have at most 2 rules in them. Start their names with the attribute, followed by the value. 130 | (eg: .align-center and not .center-align) 131 | 132 | > Component Classes are used for components that have a particular role that (preferably) recurs in multiple 133 | pages. To name these classes, describe the function of the element rather than its location. 134 | (eg: .panel-details rather than .top-details-box) 135 | 136 | When adding classes to style elements in the page, follow the following steps:
137 | 138 |       ⇒ Try and style the entire component using bootstrap.
139 |       ⇒ For any additional css, if the component is used in many places create a functional name for the class.
140 |       ⇒ If the component does not have any recurring function, utilise the generic classes to achieve the styling.
141 |       **Exception:** If a particular element requires too many generic classes ( > 5) create a functional class name for it. 142 | 143 | ## Attributes 144 | ### Order of Attributes 145 | Alphabetize the attributes, disregarding any browser prefix.
146 | All browser prefixed versions of an attribute must be written together. 147 | ```css 148 | /* code the attributes in alphabetical order */ 149 | .sort-icon { 150 | display: block; 151 | float: right; 152 | height: 17px; 153 | margin-top: 1px; 154 | width: 12px; 155 | } 156 | ``` 157 | ```css 158 | .sort-icon { 159 | width: 12px; 160 | height: 17px; 161 | display: block; 162 | margin-top: 1px; 163 | float: right; 164 | } 165 | ``` 166 | > This way looking for an attribute is faster. 167 | 168 | ### Attribute Formatting 169 | - Semicolon after every attribute specification.
170 | - Space after colon.
171 | - Drop the units for 0 values (eg: margin: 0).
172 | - All attribute(s) are to be specified in individual lines.
173 | - Attributes must have one more indentation than the selector.
174 | - Indent attributes that require browser specifications so that the actual attribute being declared are in one column -- refer to [Writing Your Best Code](http://learn.shayhowe.com/html-css/writing-your-best-code/#css-coding-practices) for examples.
175 | 176 | ### General Details 177 | Use shorthands as much as possible (eg border: 2px 0 1px 4px).
178 | DO NOT use `!important` specifier.
179 | ```css 180 | /* not recommended */ 181 | margin: 10px 0 !important; 182 | ``` 183 | > Using the **!important** specifier overrides the natural flow of specificity and cascading hierarchy of css styles. 184 | Unless absolutely necessary do not use it. If there is such a situation clearly state the reason with comments (/* */). 185 | 186 | ## Resources 187 | ### Highly Recommended 188 | - [Google CSS Style Guide](https://google-styleguide.googlecode.com/svn/trunk/htmlcssguide.xml) 189 | - [Writing Your Best Code](http://learn.shayhowe.com/html-css/writing-your-best-code/#css-coding-practices) 190 | 191 | ### Other Readings 192 | - [Isobar Coding Standards](http://isobar-idev.github.io/code-standards/) 193 | - [30 CSS Best Practices For Beginners](https://code.tutsplus.com/tutorials/30-css-best-practices-for-beginners--net-6741) 194 | - [Writing efficient CSS (MDN article)](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Writing_efficient_CSS) 195 | - [A list of CSS style guides](https://css-tricks.com/css-style-guides) 196 | -------------------------------------------------------------------------------- /commitandpublish.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | git commit -a -m "$1" 3 | ./publish.sh -------------------------------------------------------------------------------- /contents/activities/IDEs.html: -------------------------------------------------------------------------------- 1 | The single above indicates this is a 2 | 3 | BASIC learning activity 4 | 5 | 6 |
7 | Go to the addressbook-level1 project. 8 | Do the exercise under the following learning outcomes. 9 |
    10 |
  1. 11 | AddressBook-Level1: Set up a project in an IDE [LO-IdeSetup]
  2. 12 |
  3. 13 | AddressBook-Level1: Navigate code efficiently [LO-CodeNavigation]
  4. 14 |
15 |

16 | Submission: Demo your code and code navigation skills to the tutor during the tutorial. 17 |

18 | -------------------------------------------------------------------------------- /contents/examples/AboutUs.md: -------------------------------------------------------------------------------- 1 | #### [John Doe](http://www.comp.nus.edu.sg/~damithch) [@damithc](https://github.com/damithc) 2 |
3 | 4 | * Components in charge of: [Storage](https://github.com/se-edu/addressbook-level4/blob/master/docs/DeveloperGuide.md#storage-component) 5 | * Aspects/tools in charge of: Testing, Git 6 | * Features implemented: 7 | * [List persons](https://github.com/se-edu/addressbook-level4/blob/master/docs/UserGuide.md#listing-all-persons--list) 8 | * [Delete person](https://github.com/se-edu/addressbook-level4/blob/master/docs/UserGuide.md#deleting-a-person--delete) 9 | * Code written: [[functional code](A123456.md)][[test code](A123456.md)] 10 | * Other major contributions: 11 | * Did the initial refactoring from AddressBook to ToDoList [[#133](https://github.com/se-edu/addressbook-level4/pull/152) ] 12 | * Set up Travis and Coveralls 13 | 14 | #### Jane Doe @janedoe 15 | ... -------------------------------------------------------------------------------- /contents/handbook/appendixA-principles.html: -------------------------------------------------------------------------------- 1 |

[ You . Together . Continuously . Reach ]

2 |

3 |

These are some of the main principles underlying the module structure.

4 |

5 |

The product is you, NOT what you build.

6 |

The software product you build is a side effect only. You are the product of this module. 7 | This means,

8 | 17 |

Following from that, we evaluate you on not just how much you've done, but also, how well 18 | you've done those things.

19 |

Here are some of the aspects in which we try to make you more professional:

20 |

21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 39 | 41 | 42 | 43 | 44 | 46 | 47 | 48 | 50 | 52 | 53 | 54 | 55 | 57 | 58 | 59 |

We appreciate ...

But we value more ...

Ability to deal with minute details

Ability to abstract over details, generalize, see the big 30 | picture

A drive to learn latest and greatest technologies

Ability to make the best of given tools

Ability to find problems that interest you and solve them 38 |

Ability to solve the given problem to the best of your 40 | ability

Ability to burn the midnight oil to meet a deadline

Ability to schedule work so that the need for 'last 45 | minute heroics' is minimal

Preference to do things you like or things you are good at 49 |

Ability to buckle down and deliver on important things that 51 | you don't necessarily like or aren't good at

Ability to deliver desired end results

Ability to deliver in a way that shows how well you 56 | delivered (i.e. visibility of your work)

60 |

61 | 62 |

We learn together, NOT compete against each other.

63 |

You are not in a competition. Our grading is not forced on a bell curve.

64 |

Learn from each other. That is why we publish submissions.

65 |

Teach each other, even those in other teams. Those who do it well can become tutors next time.

66 | 67 |

Continuously engage, NOT last minute heroics.

68 |

We want to train you to do software engineering in a steady and repeatable manner that does 69 | not require 'last minute heroics'.

70 |

In this module, last minute heroics will not earn you a good project grade, and last minute 71 | mugging will not earn you a good exam grade.

72 | 73 |

Where you reach at the end matters, NOT what you knew at the beginning.

74 |

When you start the module, some others in the class may appear to know a lot more than you. 75 | Don't let that worry you. The final grade depends on what you know at the end, not what 76 | you knew to begin with. The full 10% allocated to intermediate deliverables is within the reach 77 | of everyone in the class irrespective of their prior knowledge.

78 | -------------------------------------------------------------------------------- /contents/handbook/appendixD-help.html: -------------------------------------------------------------------------------- 1 |

In this module, we want to move you away from 'hand holding'. We want you to learn how to solve 2 | problems on your own. This is a vital survival skill in the industry and it 3 | needs practice. 4 |

5 | 6 | 7 | 10 | 19 | 20 |
8 |

9 |
11 |

12 | Whether it is a technical problem (e.g. error when using Eclipse) or a doubt about a concept (e.g. what is the 13 | difference between scripted testing and exploratory testing?) the teaching team is happy to work with you when 14 | you look for a solution/answer. But we do not do it for you. Do not fire off an ‘SOS’ email to the 15 | lecturer/tutor right away. We discourage unconditional direct help because we want you to learn to help 16 | yourself. Yes, we believe in ‘tough love’. 17 |

18 |
21 |
22 | The question you should always ask yourself is, 'how do I solve this problem if the lecturer/tutors 23 | are not around to help me?' 

24 |

25 |

Note: This guide is mostly about getting tech help, but it also applies to getting clarifications 26 | on module topics too. e.g. what is the difference between aaa and bbb?

27 |

What not to do: Email lecturer/tutor immediately after you encounter a problem or a doubt, unless 28 | it is something only the lecturer/tutor is supposed to know.

29 |

When faced with a technical problem or a doubt about a concept, here are the things you should do:

30 | 119 |

Resources

120 | 128 | 129 | -------------------------------------------------------------------------------- /contents/handbook/appendixF-teamworkIssues.html: -------------------------------------------------------------------------------- 1 |

If your team is facing difficulties due to differences in skill/motivation 2 | /availability among team members,

3 | 29 | 30 |

Given below are some suggestions you can adopt if the project work is not going smooth 31 | due to team issues. Note that the below measures can result in some team members doing more 32 | work than others and earning better project grades than others. It is still better than sinking 33 | the whole team together.

34 | 51 | 52 | If you have very unreliable or totally disengaged team members : 53 | 67 | 68 | -------------------------------------------------------------------------------- /contents/handbook/exams.html: -------------------------------------------------------------------------------- 1 | No midterm.
2 | Final exam: 3 | 24 | 25 |

Note that CS2103 paper measures how well you can apply the theory to a project. 26 | Therefore, the exam is strongly connected to the project and how you  applied theory in the 27 | project. The exam will be easy for you if you attend lectures, participate in tutorials(tutorials 28 | too are focused on application of theory to the project), and do a sincere job in the project. 29 | You will not be able to ace the exams by simply doing past 30 | papers just before the exams.

31 | 32 | -------------------------------------------------------------------------------- /contents/handbook/gradeBreakdown.html: -------------------------------------------------------------------------------- 1 |

2 | 7 | -------------------------------------------------------------------------------- /contents/handbook/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | [Aug16] Handbook - CS2103/T 7 | 9 | 10 | 11 | 12 | 13 | 14 |
Page Loading...
15 |
Back To Top
16 |
17 | 86 |
87 | 88 | 89 |

Preliminaries

90 |
91 |

Lectures

92 |
93 |

Tutorials

94 |
95 |

Textbooks

96 |
97 |

Programming Language

98 |
99 |

Project

100 |
101 | 102 |

The product

103 |
104 |

Project Scope

105 |
106 |

Project Constraints

107 |
108 |

Project Deliverables

109 |
110 | 111 |

V0.0 : The Concept

112 |
113 | 114 |

V0.1 : The Walking Skeleton

115 |
116 | 117 |

V0.2 : The MVP

118 |
119 | 120 |

V0.3

121 |
122 | 123 |

V0.4

124 |
125 | 126 |

V0.5rc : The Release Candidate

127 |
128 | 129 |

V0.5 : The Production Release

130 |
131 | 132 |

Project retrospective

133 |
134 | 135 |

Individual report

136 |
137 | 138 |

Project Assessment

139 |
140 | 141 |

Project Supervision

142 |
143 | 144 |

Forming Teams

145 |
146 |

Peer Evaluations

147 |
148 |

Project Tools

149 |
150 | 151 |

Exams

152 |
153 |

Grade Breakdown

154 |
155 |

Participation Marks

156 |
157 | 158 |

Appendix A: Module Principles

159 |
160 | 161 |

Appendix B: Module Policies

162 |
163 |
164 | 165 |

Appendix C: Frequently Asked Questions

166 |
167 | 168 |

Appendix D: How to get help in CS2103/T

169 |
170 | 171 |

Appendix E: Using GitHub Project Hosting

172 |
173 | 174 |

Appendix F: What to do if there are teamwork issues

175 |
176 | 177 | 178 | 179 | 217 |

-------------------------------------End of document----------------------------------------

218 | 219 | 220 | 221 | 222 | 223 | -------------------------------------------------------------------------------- /contents/handbook/lectures.html: -------------------------------------------------------------------------------- 1 | 2 |

3 | Timing/venue: Fri 1400-1600 ICube Auditorium. 4 | Lectures start at 1400 sharp and end around 1545 (15 minutes to travel to next lecture). 5 |

6 |

7 | Attendance: Attendance for the first lecture is compulsory. 8 |

9 |

10 | Webcast: All lectures will be webcast. However, some things are not captured well in the webcast 11 | recording. 12 | You are advised to treat the webcast as a 'backup' for you to catch up anything missed during the lecture. 13 |

14 |

15 | Handouts: Each lecture consists of 3-5 sections, supported by separate handouts. 16 | Links to handouts for a lecture will be added to the Schedule page on Wednesday of that week. 17 | You are welcome to, but not required to, read through them before attending the lecture. 18 |

19 |

20 | Read before tutorials: You are required to read the relevant handouts and ponder 21 | how to apply those concepts in your project before attending the corresponding tutorial. If you have any followup 22 | questions about handouts, please post in IVLE forums or ask during tutorials (if there is spare time). 23 |

24 |

25 | Post-lecture quizzes: 26 | Each lecture will be followed by an IVLE quiz that can earn you participation points. 27 |
28 | Purpose: for you to self-test how well you understood the handouts and other “required” readings (if any). 29 |
30 | You can keep taking the quiz until you get full marks. We count the best effort only. 31 |
32 | IVLE quizzes open on Friday right after the lecture and closes on the following Tuesday 2359. 33 |
34 | Post-lecture quizzes are counted for participation marks. 35 |

36 |

37 | Slides: Because we are giving separate handouts, lecture slides do not contain content that you can 38 | print and use as a reference during the lecture or the exams. Instead, handouts serve as the main exam reference while 39 | slides will play only a supporting role during lecture delivery. Slides will be uploaded after the lecture. 41 |

42 | -------------------------------------------------------------------------------- /contents/handbook/participation.html: -------------------------------------------------------------------------------- 1 |

To get the full 10 marks allocated for participation you should satisfy the following criteria, evaluated based on 2 | peer evaluations and tutor observations. We will also take into account data recorded in other systems e.g. GitHub, 3 | IVLE. 4 |

5 | 46 | 47 |

The scheme tries to,

48 | 54 | -------------------------------------------------------------------------------- /contents/handbook/peerEvaluations.html: -------------------------------------------------------------------------------- 1 |

2 | We use the TEAMMATES online peer evaluation system 3 | to conduct several rounds of peer-evaluations.
4 | All peer evaluations will be taken into account when determining your participation marks. 5 | The system also allows you to give anonymous feedback to your teammates. 6 |

7 | 8 |
9 | Extra Requirements: [considered for participation marks] 10 | 41 |
42 | 43 |
44 | Giving constructive feedback to others is a valuable skill for software engineers. It is also an intended learning 45 | outcome of this module. Those who give ineffective feedback will be penalized. 46 |

Here are some things to keep in mind:

47 | 61 |
62 | 63 |

64 | The final peer evaluation will be used to determine the level of contribution from each member to the 65 | project. In that peer-evaluation you will be asked to estimate the contribution 66 | of each team member (including yourself) to the project so far. 67 |

68 | 69 |

70 | Final peer evaluation affects your grade in the following way: 71 |

72 | 87 |

88 | Peer evaluations are not visible to undergraduate tutors. 89 |

90 |

91 | If you disagree with the team’s opinion, i.e., you think the perceived contribution 92 | is significantly different from what you actually contributed, you can help us grade you fairly by submitting an 93 | individual report (‘individual report’ is explained under V0.5 deliverables). 94 |

95 |

96 | Keep in mind the contribution numbers reported by TEAMMATES are based on team member perceptions and may not reflect 97 | your real contribution. We use those numbers primarily to identify cases that need further investigation. 98 |

99 |

100 | You may ignore minor variations in the contribution numbers reported by TEAMMATES. 101 | For example, the difference between [Equal share] and [Equal share - 2%] is not significant and can very well be due 102 | to rounding off within the system. 103 |

104 |

105 | Also keep in mind that it is human nature for one to downplay the value of contributions from others when 106 | one’s own contribution is being compared to that of others. As a result, it is common for the ‘perceived 107 | contribution’ to be somewhat lower than what you actually did. 108 |

109 |

110 | If you are unhappy about the peer-feedback received and would like to make your views known to the team, 111 | please allow at least one day to lapse before you fire off a response email. You are likely to respond more 112 | rationally when you had some time to think it over. Also keep in mind that we do take note of how well you handle 113 | such a situation. You need to act professionally when facing conflicting views, opposition, and even 114 | deliberate sabotage. 115 |

116 | 117 | 118 | 119 | 126 | 128 | 129 |
120 |

A final note on this issue :

121 | Please be sincere about how much you can do from the beginning, rather than 122 | let your team members figure it out over the long run. Tell them how much you can do and what kind of work you are 123 | willing to do. If you are not open about it, they will still figure it out at the end; they will still report it 124 | (via the peer-evaluations), and your score will be adjusted all the same. Being open about it on the other hand 125 | can save everyone a lot of frustrations, unpleasantness, and bitterness.

127 |
130 |

131 | 132 | -------------------------------------------------------------------------------- /contents/handbook/preliminaries.html: -------------------------------------------------------------------------------- 1 |

2 | Where is everything? CS2103/T-related information are mainly in one of these two places: 3 |

4 | 17 |

18 | No reminder emails: We try to minimize sending module details via announcements. 19 | The reason will be explained in lecture 1. 20 |

21 |

22 | CS2103 Vs CS2103T: Same lectures, same exam. Separate tutorials, separate project grading. If not specifically 23 | mentioned, whatever is stated for one module applies to the other. 24 |

25 |

26 | What did seniors say about this module? CS2103/T is practical and useful module, but also a 27 | heavy and intensive module, as you can see from 28 | student feedback for a recent offering of the module. 29 |

30 | -------------------------------------------------------------------------------- /contents/handbook/programmingLanguages.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 16 | 17 |
4 | 5 | 7 | The main language used in this module is Java. You should use 8 | Java for all programming activities, the project, and exam answers. 9 |

10 | The module doesn’t “teach” Java. We assume you already know Java basics.
11 | We expect you to learn on your own any Java constructs not covered in your previous modules.

12 |

Our Java coding standard is 13 | 14 | here.

15 |
18 | 19 |

20 | 21 |

22 | 23 | -------------------------------------------------------------------------------- /contents/handbook/project-assessment.html: -------------------------------------------------------------------------------- 1 |

2 | Note that project grading is not competitive (not bell curved). CS2103T projects will be assessed separately from CS2103 projects. This is to 4 | account for the perceived difference in workload. 5 | Given below is the marking scheme. 6 |

7 |

8 | Total: 50 marks (25 individual marks + 25 team marks) 9 |

10 |
    11 |
  1. Product features [team][10 marks] - How good is your software as a product? 12 |

    13 | Based on the features implemented, how well they fit together to make a good product, and how well they are 14 | demonstrated. 15 |

    16 |

    17 | ‘Half-baked’ (i.e. not production quality) or 'ill-fitting' (feature does not go well with the other 18 | features) features will not earn marks at all and could even be penalized. It may be better to remove such 19 | features before submission.

    20 |
  2. 21 | 22 |
  3. 23 | Design [individual][5 marks] - How good is your internal design? 24 |

    25 | Evaluated solely based on what we can learn from the developer guide. 26 | Evaluated by lecturer. You will be graded individually on the design of your component and how well 27 | you have described it. Collective design decisions such as architecture will affect the grade of all team 28 | members. 29 |

    30 | Criteria considered: 31 |
      32 |
    • 33 | Conformance with the multi-level top-down approach (i.e. design at high-level first, and do the 34 | lower-level design of each component later) 35 |
    • 36 |
    • 37 | Conformance with the OO paradigm 38 |
    • 39 |
    • 40 | Application of patterns and principles 41 |
    • 42 |
    • 43 | Quality of documentation e.g. using the right diagram at the right place. 44 |
    • 45 |
    46 |
  4. 47 | 48 |
  5. 49 | Implementation [individual][15 marks] - How good is your implementation? 50 | A measure of the quality and the quantity of code you have written yourself. 51 | On average, a student is expected to write 0.5-1.5 KLoC. 52 | Evaluated based on an inspection of the collated code (submitted in your *.md files) by at least two tutors. 53 |
    54 | Criteria considered: 55 |
      56 |
    • 57 | Following SLAP (IMPORTANT). 58 |
    • 59 |
    • 60 | Following the coding standard given (IMPORTANT). 61 |
    • 62 |
    • 63 | Using at least some assertions. 64 |
    • 65 |
    • 66 | Using at least some logging. 67 |
    • 68 |
    • 69 | Using at least some unit tests. 70 |
    • 71 |
    • 72 | Commenting at the right level. 73 |
    • 74 |
    • 75 | Exception handling. 76 |
    • 77 |
    • 78 | Neatness and human readability. 79 |
    • 80 |
    81 | Expectations: 82 |
      83 |
    • 84 | Each person is expected to implement one or more features individually in addition to features implemented collectively. 85 | Each person is expected to write backend code, frontend code, test code, user documentation, and 86 | developer documentation. 87 |
    • 88 |
    89 |
  6. 90 | 91 |
  7. 92 | QA [team: 5 marks], [individual: 5 marks] - How good is your Quality Assurance? 93 | Evaluated based on our own testing. A well written user guide and a product that conforms to the user guide 94 | (i.e. no bugs) will give you a high mark. 95 |

    96 | Things considered for team grade: Bugs including validation issues (i.e. not meeting project requirements) 97 |

    98 |

    99 | Things considered for individual grade: Quality and quantity of the test code in your collated code. 100 |

    101 |
  8. 102 |

    103 | Expectations: 104 |

    105 | 123 | 124 |
  9. 125 | Documentation [team][5 marks] - How well does your user guide achieves 126 | its objectives? Evaluated by lecturer and TA.
    127 | Criteria considered: 128 |
      129 |
    • 130 | Explanation should be clear and written to match the audience. 131 |
    • 132 |
    • 133 | Good use of visuals to complement text. 134 |
    • 135 |
    136 | Note: Developer Guide is graded under the 'Design' component. 137 |
  10. 138 | 139 |
  11. 140 | Project management [team: 5 marks][individual: 5 marks] - How well you worked together as a 141 | team to follow a systematic process?
    142 | For the team component, we look for, 143 |
      144 |
    • 145 | Good version control, based on the repo. 146 |
    • 147 |
    • 148 | Good task definition, assignment and tracking, based on the issue tracker. 149 |
    • 150 |
    • 151 | Good use of buffers (opposite: everything at the last minute) 152 |
    • 153 |
    • 154 | Iterative (opposite: fake iterative, doing most of the work in one iteration).
      155 | Passed almost all checkpoints from V0.0 to V0.5 156 |
    • 157 |
    158 | The individual component is determined by peer evaluation from your project team members. 159 |
  12. 160 | 161 |
162 | 163 |

164 | Penalty for late submission: -1 mark for each hour delayed. 165 | Even a 1-second delay is penalized, irrespective of the reason. Based on the time shown by IVLE. 166 |

-------------------------------------------------------------------------------- /contents/handbook/project-constraints.html: -------------------------------------------------------------------------------- 1 |

2 | You should also comply with the following constraints. The purpose of these constraints is to increase 3 | comparability among submissions and to maximize applicability of module content in the project. 4 |

5 | -------------------------------------------------------------------------------- /contents/handbook/project-deliverables.html: -------------------------------------------------------------------------------- 1 |
2 | {Click on the image to enlarge} 3 |

To expedite your project implementation, you will be given some sample code (AddressBook-Level1 to AddressBook-Level4, 4 | shown as AB-1 to AB-4 in the diagram above) 5 | that you can use as the basis for improving your individual skills during Phases A and as the basis for your project 6 | in Phase B.

7 |

8 | The sub-sections further down explain each project deliverable in detail. 9 |

10 | -------------------------------------------------------------------------------- /contents/handbook/project-individualReport.html: -------------------------------------------------------------------------------- 1 |

2 | The purpose of this report is to help us in grading students where a student may have done significantly 3 | more/less than an equal share. Submit this only if you were specifically 4 | asked to OR if you have a disagreement with the phase B final peer evaluation. 5 |

6 |

7 | The report should contain an itemized list of your contribution to the project. Be as concrete and precise 8 | as possible. For example, you can mention how many lines of code you wrote in which classes, which parts of 9 | the documentation were done by you, etc. 10 |

11 |

12 | Note that this report is visible to your team member and they may 13 | be asked to verify its accuracy. 14 |

15 |

16 | Suggested length: about 0.5-1 page worth of content. 17 |

18 |

19 | Submission: Via TEAMMATES. More instructions to follow. 20 |

21 |

22 | Deadline: End of reading week. 23 |

-------------------------------------------------------------------------------- /contents/handbook/project-product.html: -------------------------------------------------------------------------------- 1 |

2 | In this semester, we build a scaled-down version of ‘a Siri for keyboards’. i.e. a tool that can accept 3 | natural language commands via keyboard. This is for folks who can type fast, spend most of the time near 4 | a computer, and prefer typing over mouse/voice commands. 5 |

6 |

7 | It is ‘scaled down’ in the following ways: 8 |

    9 |
  1. It handles only commands related to managing the user's schedule and todo tasks.
  2. 10 |
  3. The commands will not be truly ‘natural language’. The command format will be flexible, but still 11 | quite structured. NLP (Natural Language Processing) is not required. 12 |
  4. 13 |
14 | Let us use the generic term 'Task Manager' to refer to this product. You should give it a different name yourself. 15 |

16 |

17 | Problem outline: We are bombarded with ‘things to do’ continuously. Some things need to be 18 | done during specific times (e.g., attend meeting), some have deadlines (e.g., submit report), and others are 19 | simply ‘to be done someday’ (e.g., read ‘Lord of the Rings’). The pile of todo items accumulates and weighs 20 | heavily on our mind at times. Sometimes things go out of control and we forget to do certain things on time. 21 |

22 |

23 | Solution outline: The software should help user to put these todo items into a systematic 24 | process that tracks them and helps the user to decide what to do and when to do things so that the user 25 | doesn’t have to remember the todo items. 26 |

27 |

28 | Target audience: There are many similar software that tackles some aspect of this problem 29 | (todo lists software, calendar software, GTD software). Because it is a crowded product space, our strategy 30 | is to become a niche player by targeting a specific user group. Our target users are people like Jim whose workflow 31 | is described below. 32 |

33 | 34 |

35 | Most of Jim’s todo items arrive as emails. This is how Jim processes his emails. 36 |

    37 |
  1. Decides what is the follow up action required by that email.
  2. 38 | 47 |
  3. When Jim is free to do some work, he looks at his calendar and picks up something that he can do at 48 | that time. Once the task is done, he marks it as ‘done’. If there is a further follow up action required, 49 | he schedules it in the calendar. 50 |
  4. 51 |
  5. Jim periodically reviews the calendar to pick items that could not be completed and need to be 52 | rescheduled or discarded as ‘cannot do’. 53 |
  6. 54 |
  7. Todo items not arising from email are dealt similarly by entering them in the calendar.
  8. 55 |
56 |

57 |

58 | As you can see from the above workflow, Jim’s inbox is almost empty most of time (cf Inbox Zero). He no longer worries about an 60 | inbox full of emails he has to deal with at any time he login to email. He also does not have to keep any todo items 61 | in his mind because everything is recorded somewhere. However, here are some ‘pain points’ in his workflow. 62 |

90 |

91 |

92 | Design your product to solve some of Jim’s problems to make his workflow even more efficient and painless. i.e. 93 | to make his life better. You don’t have to solve all problems mentioned above and there may be other problems you 94 | could solve but not mentioned above. Good software delights users by solving problems users don’t even realize they 95 | have. 96 |

97 |

98 | Important: Command Line Interface is the primary mode of input. The 99 | GUI is primarily for output. That is, the GUI is used to give visual feedback rather than to collect input. Some 100 | minimal use of mouse is OK (e.g. to click the minimize button), but the primary input should be 101 | command-driven. Mouse actions should have keyboard alternatives and typing is preferred over key combinations. Design 102 | the app in a way that you can do stuff faster by typing compared to mouse or key combinations. 103 |

104 | -------------------------------------------------------------------------------- /contents/handbook/project-retrospective.html: -------------------------------------------------------------------------------- 1 |

2 | This is an individual submission. 3 |

4 |

5 | The project Retrospective answers the following question: 6 | If you were to redo this project from the 7 | beginning, what would you do differently and why? 8 |

9 | 22 |

23 | Suggested length: about 0.5 page worth of content. 24 |

25 |

26 | Submission: Via TEAMMATES. More instructions to follow. 27 |

28 |

29 | Deadline: Reading week Monday 2359 30 |

-------------------------------------------------------------------------------- /contents/handbook/project-scope.html: -------------------------------------------------------------------------------- 1 |

2 | The scope of the project will be restricted. This is to reduce your workload and discourage an ‘arms race’ 3 | where you try to implement as many features as possible with no time to spend on learning good software engineering 4 | principles and practices. 5 |

6 |

7 | Write the software to cater to Jim. He is an office worker who has an office computer (used when at office) and his 8 | personal laptop (used when at home or travelling). His computers are not shared by other colleagues or family members. 9 | He is not expected to use this software for collaborative work scheduling with others. 10 |

11 |

12 | Narrowing/widening the scope of the project further is discouraged. 13 |

14 |

15 | Must-have features: 16 |

    17 |
  1. 18 | Support for events (i.e., has a start time and end time), deadlines (tasks that have to be done 19 | before a specific deadline), and floating tasks (tasks without specific times). Note that these category 20 | names are temporary names only. You should figure out what are the best names for these categories. 21 | Are these names intuitive to end-users? Should they even care about consciously categorizing tasks? 22 |
  2. 23 |
  3. 24 | CRUD (i.e., Create, Read, Update, Delete) support for tasks. 25 |
  4. 26 |
  5. 27 | Undo operations (at least for the most recent action) 28 |
  6. 29 |
  7. 30 | Some flexibility in the command format: Support a few natural variations of the command format. 31 |
  8. 32 |
  9. 33 | Simple search: A simple text search for finding an item if the user remembers some keywords from the 34 | item description. 35 |
  10. 36 |
  11. 37 | Some way to keep track of which items are done and which are yet to be done. 38 |
  12. 39 |
  13. 40 | The ability to specify a specific folder and a file for data storage. With this feature, 41 | Jim can choose to store the data file in a local folder controlled by a cloud syncing service (e.g. dropbox), 42 | allowing him to access task data from multiple computers. 43 |
  14. 44 |
45 |

46 |

47 | Nice to have features : (you may implement 0 or more of these features) 48 |

49 |

50 | Difficulty-low 51 |

60 |

61 |

62 | Difficulty-medium 63 |

74 |

75 |

76 | Difficulty-high 77 |

89 |

90 |

91 | You can also propose your own extra features(subject to approval). 92 | Note that each student must implement at least one feature individually (in addition to 93 | features implemented collectively with other team members) and the average amount of 94 | code one member is expected to write for the project is 0.5-1.5 KLoC. Reason: Each student must learn all 95 | parts of the code and write a significant amount of code. 96 |

97 |

Adding more features may not necessarily increase your score as half-baked features, 98 | ill-fitting features, and buggy features will bring your score down.

99 | -------------------------------------------------------------------------------- /contents/handbook/project-supervision.html: -------------------------------------------------------------------------------- 1 |

2 | Your tutor for phase B will also be your project supervisor.
3 | Tutorial time is the main avenue for meeting your tutor. In addition, you can meet the tutor before/after the 4 | tutorial, or any other time, as many times you need, subject to availability in his/her schedule. However, please note 5 | that it is not the tutor’s job to chase you down and give help. It is up to you to get as much feedback from the 6 | project tutor as you need.
7 | Furthermore, it is not the job of the project supervisor to lead your project to success. His/job is to observe, 8 | evaluate, and give feedback. You are free to request more feedback from the tutor as necessary. 9 |

-------------------------------------------------------------------------------- /contents/handbook/project-v01.html: -------------------------------------------------------------------------------- 1 |

V0.1 Product

2 |
3 |

4 | This is the sample project morphed to be more like your target product. Functionality can be limited to only those 5 | that can be refactored from the sample project. e.g. support for adding and deleting floating tasks. 6 |

7 | 8 |

9 | Submission: Push the code to GitHub and 10 | git tag as V0.1. 11 | Refer to the Schedule page for further submission instructions. 12 |

13 |

14 | Grading: 15 | To consider this milestone as reached, you should have at least add/delete/find support for floating tasks. 16 | You should be able to do that by deleting/renaming the given Address Book code, without having to add too much new code.
17 | The most important thing is not to break the code while morphing sample code to your target product.
18 |

19 | 20 |

V0.1 Demo

21 |
22 | 23 | 24 | 25 | 29 | 30 |
Demo the product to your tutor.
26 |

27 |
[Picture on left: an early version of the mobile phone]
28 |
31 | 32 |

V0.1 Documentation

33 |
34 | Update the following pages:
35 | 108 |

109 | Grading: 110 | To consider this milestone as reached, you should have all V0.0 deliverables completed and the two documents 111 | mentioned above updated.
112 |

-------------------------------------------------------------------------------- /contents/handbook/project-v02.html: -------------------------------------------------------------------------------- 1 |
2 |

V0.2 Product

3 | This is the first MVP (Minimum Viable Product) version of the product. 4 | 27 |

28 | Submission: Push the code to GitHub and git 29 | tag as V0.2. 30 |

31 |

32 | Grading: To pass this checkpoint, your product should have reached the MVP stage.
33 |

34 | 35 |
36 |

V0.2 Documentation

37 |

38 | You are encouraged to update your project documentation to match the product but you are not required to submit them 39 | for evaluation. Note that this flexibility is given solely to reduce your workload. In a production environment, the 40 | documentation should always be kept in sync with the product. 41 |

42 |

V0.2 Demo

43 |

44 | As before, show the demo to the tutor during the tutorial.
45 | The demo should use the version tagged as V0.2, not the latest code. No tinkering with code 46 | during the tutorial. 47 |

48 | -------------------------------------------------------------------------------- /contents/handbook/project-v03.html: -------------------------------------------------------------------------------- 1 |
2 |

V0.3 Product

3 |

This version should be a more functional version than V0.2 and should contain at least a basic version of features 4 | you intend to release in the final version.

5 |

Ideally, V0.3 should be good enough for 6 | dog fooding. 7 | Try to reach a dogfooding-ready version of the 'must have' features at least. 8 |

9 |

10 | From V0.3, you are required to divide work based on features rather than component. 11 | That is, each team member should implement 0 or more features end-to-end, doing required changes in *all* components. 12 | The objective of this switch is to force you to learn all components of the software, instead of limiting yourself 13 | to your own components.
14 | Note that you will continue to be in charge of your own components although others will be modifying your components' 15 | code. Your new role is to help others modify code in your components (you are supposed to be the most knowledgeable 16 | about those components) and protect your components from degrading. For example, you can review others' changes to 17 | your components and suggest possible changes. This is also a good time to switch to a PR based workflow (if you 18 | haven't done that already) as PRs can be reviewed by other team members before merging. 19 |

20 |

21 | Submission: V0.3 (and future milestones) should be released using GitHub's 22 | release mechanism. The release should include an executable JAR file. Refer the 23 | 24 | 'Making a Release' section of the sample developer guide for more info. 25 |

26 |

27 | Grading: To pass this checkpoint, your product should be noticeably better than an MVP. 28 | It goes without saying that other project management requirements expected at reaching a milestone 29 | (mentioned in the 'Using Milestones' section of Appendix E) are applicable too.
30 |

31 |

V0.3 Documentation

32 |
33 |

34 | Follow the documentation in the sample project in terms or organization, level of details, etc. 35 |

58 |

59 |

60 | Submission: Must be included in the version tagged V0.3. 61 |

62 |

63 | Grading: To pass this checkpoint, your documentation should have been updated to match your 64 | project.
65 |

66 |

V0.3 Demo

67 |
68 |

69 | Submission: Demo to the tutor during the tutorial. Use jar file for the demo, not 70 | the IDE. 71 |

72 |

73 | Grading: Must use the version tagged V0.3 and should be at least very close to a 74 | dog-fooding-ready state. 75 |

76 | -------------------------------------------------------------------------------- /contents/handbook/project-v05.html: -------------------------------------------------------------------------------- 1 |
2 |

V0.5 Product

3 |

4 | This is as a ‘production release’. It should be at least ‘near production quality’. 5 |

6 |

7 | Please follow submission instructions closely. Any non-compliance will be penalized. 8 | e.g. wrong file name, team member photos not suitable, product manual page header doesn't have the team ID, etc. 9 |

10 |

11 | Add these two new files to the repo 12 | (these will be used by our testers when testing your final submission): 13 |

24 |

25 |

26 | Submission: 27 |

45 |

46 |

47 | Deadline: Week 13 Monday 23.59. 48 |

49 |

50 | Grading: Given in a section below. 51 |

52 | 53 | 54 | 55 |

V0.5 Documentation

56 |
57 |

58 | Submission: 59 |

67 |

68 |

69 | Deadline: Same as V0.5 product. 70 |

71 |

72 | Grading: Given in a section below. 73 |

74 | 75 | 76 | 77 |

V0.5 Demo

78 |
79 |
80 | 81 |
82 | 162 | 163 |

164 | Grading: Given in a section below. 165 |

166 | -------------------------------------------------------------------------------- /contents/handbook/project-v05rc.html: -------------------------------------------------------------------------------- 1 |
2 |

V0.5rc Product

3 |

4 | Functionality expectations: Freeze features after reaching this milestone. 5 | As this is a ‘release candidate’ it should have all the features you intend to release. 6 | Adding more features after this point is risky. The remaining time should be left 7 | aside for fixing problems discovered late.
8 | Other suggestions: 9 |

16 |

17 | Submission: as before. 18 |

19 |

20 | Grading: Your product should show significant progress since the previous milestone. 21 |

22 |

V0.5rc Documentation

23 |
24 |

25 | Recommended to update the documentation to match the product. 26 |

27 |

28 | Submission: Must be included in the version tagged V0.5rc. 29 |

30 |

31 | Grading: Not graded.
32 |

33 | 34 |

V0.5rc Demo

35 |
36 |

37 | Submission: as before. 38 |

39 |

40 | Grading: as before. 41 |

42 | -------------------------------------------------------------------------------- /contents/handbook/project.html: -------------------------------------------------------------------------------- 1 |

2 | CS2103 project is structured to resemble the initial stages of a non-trivial real-life software project. 3 | In this project you will conceptualize a product and build a scaled-down version of the product, 4 | and have it ready to be continued by someone else. 5 |

6 | -------------------------------------------------------------------------------- /contents/handbook/teams.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | 19 | 20 |
4 |

5 | The two teams:
6 | You will be in two different teams at different times of the semester. 7 |

    8 |
  • Week 1 - 5: Phase A team
  • 9 |
  • Week 6 - 13: Phase B team (i.e. Project team)
  • 10 |
11 |

Phase A (Weeks 1 - 5) is the period for strengthening individual competencies. By working with 12 | different classmates during this period you get to know and learn from more classmates. The project is done 13 | in phase B. That means your Phase B team is also your project team. 14 |

15 |

17 |
[Picture: The team that was at the top of early Google]
18 |
21 | 22 |

There cannot be any overlap between your 2 teams. For example, any member from your 23 | Phase A team cannot be a member of your Phase B team.

24 |

25 | When to form teams 26 | 34 |

35 | Team size: The default team size is four. 36 | Please do not form teams with five or more. 37 |

38 |

39 | Team ID: This will be given to you after forming teams in each phase. It has the form 40 | TUTORIAL_ID-PHASE+TEAM_NUMBER e.g, W14-A2 means you are in 41 | tutorial W14 (i.e., Wed 1400-1500), phase A, team 2. 42 |

43 |

44 | Team composition 45 |

46 | 47 | We allow some freedom in choosing team members, subject to these constraints: 48 | 68 | -------------------------------------------------------------------------------- /contents/handbook/testingFaq.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | FAQ: Unit Testing 7 | 8 | 9 | 10 | 11 |
CS2103/T
12 |

FAQ: Unit Testing

13 | 14 | 15 | 16 | 17 | 27 | 28 | 29 |
18 | How to test void methods?
19 | Is it enough to check for the correctness of status message only?
20 | How to test private methods?
21 | How to test the reading of user commands?
22 | How to test displaying of text to the user?
23 | Can we use one method in our code to test another method?
24 | Why write tests? Manual testing is much easier.
25 | Why TDD?
26 |
30 | 31 |
32 |

How to test void methods?

33 |
Use other means to check the effect of the method. E.g., if you are testing a 34 | deleteFile(fileName) method, you could do something like this. 35 |
deleteFile(fileName);
 36 | assertFalse(isFileExists(fileName));
 37 | 
38 |
39 | 40 |
41 |
In addition, you can refactor to make methods return values. For example, consider the following 42 | method. 43 |
void display() {
 44 |     // for each line in file
 45 |          // display line
 46 | }
47 | It can be refactored like this: 48 |
void display(){
 49 |     String content = getFileContent(fileName);
 50 |     print(content);
 51 | }
52 | Now, you can unit test getFileContent(fileName) method. There is no need to unit 53 | test display() method because most of it’s logic is in getFileContent(fileName) 54 | that is already unit tested. 55 |
56 | 57 |
58 |

Is it enough to check for the correctness of status message only?

59 |
Some of your methods returns the status of the method execution as a string. Just checking the return 60 | message of such methods is not enough if the command is expected to change the state of the data. You 61 | can use techniques used for testing void methods (given above) to check the correct execution of the 62 | method, in addition to checking the status message.
63 | 64 |
65 |

How to test private methods?

66 |
For now, make them public. In Java, there is 67 | 68 | a way to access private methods using reflection. Alternatively, we can omit testing private methods because only public 69 | methods are exposed to others. If public methods are working correctly, private methods must be working correctly too.
70 | A more extensive discussion of this issue can be found here.
71 | 72 |
73 |

How to test the reading of user commands?

74 |
That part is hard to test. Separate the ‘reading user command’ part from the rest and test the rest. 75 | See CityConnectTest.java(in the Schedule page) for an example.
76 | 77 |
78 |

How to test displaying of text to the user?

79 |
Similar to the previous question. Separate the generating of the text to display from displaying the 80 | text. The former is the more complicated part which should be unit tested. 81 |
String result = executeCommand(command); //unit test this method
 82 | displayToUser(result); //simple, no need to unit test
83 | If your software is completely text based, you can use the I/O redirection method covered in lecture 1 84 | to test the software including the input and output. 85 |
TextBuddy.exe < input.txt > output.txt
 86 | FC output.txt expected.txt
87 |
88 | 89 |
90 |

Can we use one method in our code to test another method?

91 |
Yes, it is acceptable. You can use methods that are already unit-tested to test other methods. 92 | e.g., you can use clear() and add() methods when testing the sort() 93 | method.

94 |
Note: This is not strictly ‘unit testing’ as we are not testing the unit in complete isolation from 95 | the rest of the code, but it is acceptable because other units are already tested and are under your 96 | control too.
97 | 98 |
99 |

Why write tests? Manual testing is much easier.

100 |
Automated tests are not just to check if the code works NOW, but they help to ensure it keeps working 101 | FOREVER. Their main purpose is regression testing.
102 | 103 |
104 |

Why TDD?

105 |
Writing tests first makes you write more testable code. If you write the functional code first, you often 106 | find such code is harder to test. Furthermore, it encourages you to think WHAT the code should do before you 107 | figure out HOW the code should do it.
108 |

--- End of document ---

109 | 110 | 111 | -------------------------------------------------------------------------------- /contents/handbook/textbooks.html: -------------------------------------------------------------------------------- 1 |

2 | There is no need to buy a textbook this semester. Lecture handouts 3 | should be enough to give you the required coverage of our topics. 4 |

5 |

6 | Here are some relevant books you can read to supplement module content (optional reading). 7 |

8 | 9 | 24 | -------------------------------------------------------------------------------- /contents/handbook/tools.html: -------------------------------------------------------------------------------- 1 | 2 |

3 | Communication: 4 |

5 |

6 | Keeping a record of communications among your team can help you, and us, in many ways. We encourage you to do 7 | at least some of the project communication in written medium (e.g., GitHub Issue Tracker) 8 | to practice how to communicate technical things in written form. 9 |

10 |

11 | Collaboration platform: We are going to use GitHub as the hosting and collaboration platform 12 | of your project (i.e., to hold the Code repository, Issue Tracker, etc.). See Appendix 13 | E for more info on how to setup and use GitHub for your project.

14 |

15 | IDE: We require you to use Eclipse 16 | (latest stable release) for module related programming work. 17 | Because all team members will work on the same code base and project tutors too have to go through the code for 18 | testing 19 | and evaluation, it is troublesome to use multiple IDEs. Furthermore, when everyone uses the same tool, it creates a 20 | bigger collective know-how about the tool which makes troubleshooting easier and the productivity higher. 21 |

22 |

23 | Revision control:

You are required to use Git. Other revision control software are not 24 | allowed.
25 | The recommended GUI client for Git is SourceTree (which comes bundled 26 | with Git), but you may use any other, or none. 27 |

28 | -------------------------------------------------------------------------------- /contents/handbook/tutorials.html: -------------------------------------------------------------------------------- 1 |
IMPORTANT: Our tutorials start on week 2 (even before CORS tutorial bidding is over), 2 | not in week 3 as other modules do. CS2103 (not CS2103T) students need to choose a temporary tutorial slot for 3 | week 2 tutorial. We'll inform you the procedure to do so in due course. 4 |
5 |

6 | The structure of our tutorials is different from traditional tutorials. 7 |

8 | 19 |

20 | The role of our tutors is different from tutors in other modules. 21 |

22 | 58 |

59 | Timing/venue: 60 |

61 | 97 | 98 |

99 | Learning activities:

100 | Each tutorial has a list of learning activities. They are categorized as, 101 | 114 | 115 |

116 | Grading:

117 | The following aspects of your conduct in tutorials will be considered 118 | when awarding participation marks. Grading is based on peer evaluations and tutor observations. 119 | Cf handbook section: Participation marks 120 | 139 | 140 |

141 | Other expectations: 142 |

143 | 154 | -------------------------------------------------------------------------------- /contents/headings.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Headings 8 | 9 | 10 | 11 | 12 | 13 | 56 | 59 | 60 | 61 |
14 | 15 | Schedule 16 | 17 | · 18 | 19 | Handbook 20 | 21 | · 22 | 24 | Teaching team 25 | 26 | · 27 | 29 | Dashboard 30 | 31 | · 32 | IVLE 34 | files 35 | 36 | · 37 | 39 | Announcements 40 | 41 | · 42 | 44 | Forum 45 | 46 | 50 | · 51 | 52 | Report Bugs 53 | 54 |    55 | 57 | [CS2103/T-AY16/17-S2] 58 |
62 |
63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /contents/schedule/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | [Aug16] Schedule - CS2103/T 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 26 | 27 |
15 |
16 | Show:    17 | All 18 | Deadlines 19 | Things to do 20 | Lectures 21 | Activities 22 | Tutorials 23 | Intended Learning Outcomes 24 |
25 |
28 |
29 |
30 |
31 |

Overview

32 |
33 |
34 |
35 |
36 |

Week 1 []

37 |
38 |
39 |
40 |
41 |

Week 2 []

42 |
43 |
44 |
45 |
46 |

Week 3 []

47 |
48 |
49 |
50 |
51 |

Week 4 []

52 |
53 |
54 |
55 |
56 |

Week 5 []

57 |
58 |
59 |
60 |
61 |

Week 6 []

62 |
63 |
64 |
65 |
66 |

Week 7 []

67 |
68 |
69 |
70 | 71 |
72 |

Week 8 []

73 |
74 |
75 |
76 |
77 |

Week 9 []

78 |
79 |
80 |
81 |
82 |

Week 10 []

83 |
84 |
85 |
86 |
87 |

Week 11 []

88 |
89 |
90 |
91 |
92 |

Week 12 []

93 |
94 |
95 |
96 |
97 |

Week 13 []

98 |
99 |
100 |
101 |
102 |

Reading Week []

103 |
104 |
105 |
106 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /contents/schedule/week.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | [Aug16] Schedule - CS2103/T 7 | 8 | 9 | 10 | 11 |
12 |
13 |

14 |
15 |
16 |
17 |
18 | 19 | 20 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /contents/schedule/week0.html: -------------------------------------------------------------------------------- 1 |
2 |

Some details common to all weeks

3 |
4 |
5 |

About this document

6 |
7 | 8 |
    9 |
  • This is your main source of information for CS2103/T. You will need to refer it weekly.
  • 10 |
  • Recommended usage: At the start of each week, read the section corresponding to that week in the Schedule 11 | page. 12 | That should be good enough in general, unless you are keen to read ahead to find out what's coming up in 13 | future weeks. 14 |
  • 15 |
  • Important bits of information are highlighted. 16 | Less important additional information are dimmed out. 17 |
  • 18 |
  • We will be adding details of the upcoming weeks as we go.
  • 19 |
  • It also contain a lot of links to additional resources. It’s ok if you don’t have time to read them now. 20 | They are for your future reference too (i.e. after the semester is over). 21 |
  • 22 |
  • You can access this page after this semester using this link 23 | http://www.comp.nus.edu.sg/~cs2103/AY1617S2
  • 24 |
25 |
26 |
27 |
28 |

A typical CS2103/T week

29 |
30 |

1. Attend lecture to recap previous week's topics and get an intro to this week's topics.

31 |

2. Use the relevant learning resources to learn the topic. Self-test your knowledge using post-lecture quiz 32 | on IVLE.

33 |

3a. Do some of the learning activities recommended for the week.

34 |

3b. Meet with team members and help each other to complete all basic and intermediate learning 35 | activities collectively as a team.

36 |

4. Attend the tutorial and demonstrate to the tutor your completed learning activities.

37 |
38 |
39 |

Tutorial Schedule

40 |
41 | Our tutorial ID is different from the one given in IVLE. In our scheme, W09 42 | means the tutorial is on Wednesdays and starts at 43 | 0900 (and so on). 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 |
ModuleTutorial IDTimeVenueTutors ( 52 | contact 53 | details 54 | ) 55 |
CS2103T (CS)W09Wed 0900COM1-B103TBD
CS2103T (CS)W10Wed 1000COM1-B103TBD
CS2103T (CS)W11Wed 1100COM1-B103TBD
CS2103T (CS)W13Wed 1300SR5 (COM1-0201)TBD
CS2103T (CS)W14Wed 1400SR5 (COM1-0201)TBD
CS2103T (CS)W15Wed 1500SR5 (COM1-0201)TBD
CS2103T (CEG)T09Thu 0900COM1-B103TBD
CS2103 (CEG)T10Thu 1000COM1-B103TBD
CS2103 (CEG)T11Thu 1100COM1-B103TBD
CS2103T13Thu 1300COM1-B103TBD
CS2103T14Thu 1400COM1-B103TBD
CS2103T15Thu 1500COM1-B103TBD
CS2103T (CEG)T16Thu 1600SR5 (COM1-0201)TBD
CS2103T17Thu 1700SR5 (COM1-0201)TBD
CS2103F09Fri 0900COM1-B103TBD
CS2103F10Fri 1000COM1-B103TBD
CS2103F11Fri 1100COM1-B103TBD
179 |
180 |
181 |
182 |
-------------------------------------------------------------------------------- /contents/schedule/week11.html: -------------------------------------------------------------------------------- 1 |
2 |

Pre-Tutorial Learning Activities

3 |
4 |
5 |

T10A1. Do a peer code review

6 |
7 |
    8 |
  • Refer to the learning outcome 9 | 10 | [LO-CodeReview]
  • 11 |
  • For at least one PR created by you, get a team member to do a code review (on GitHub) before merging the PR. 12 |
  • 13 |
  • Review at least one PR created by a team member.
  • 14 |
15 |
16 |
17 |
18 |

T10A2. Reach V0.4

19 |
20 | Follow 21 | V0.4 Requirements. 22 | 23 |
24 |
    25 |
  • Remember to collate code/tests/docs written by you 26 | (see V0.4 Requirements for more info).
    27 | Your tutor will do a brief review of the collated code to give you some feedback about your code quality.
  • 28 |
  • Note that there are special requirements for the V0.4 demo 29 | which require advance preparations.
  • 30 |
31 |
32 |
33 |
34 |

T10A3. Relate Design Patterns to the project

35 |
36 | Refer to the learning outcome 37 | 38 | Apply Design Patterns [LO-DesignPatterns] and the relevant lecture handout. 39 | Find which design patterns are used in the AddressBook design. Are they still in your design too?
40 | Find if those patterns can be applied in other places of your design. 41 |
42 |
43 |
44 |

T10A4. Distinguish between unit, integration, and system testing.

45 |
46 | Refer to the following learning outcomes to find examples of unit/integration/system tests in AddressBook:
47 | 55 | Find tests in your projects that are 56 |
    57 |
  • Unit tests
  • 58 |
  • Integration tests
  • 59 |
  • Unit+integration tests
  • 60 |
  • System tests
  • 61 |
62 |
63 |
64 |
65 |
66 | 67 |
68 |

Tutorial 10: V0.4, Patterns, Testing types

69 |
70 |
71 |

Demo V0.4

72 |
73 | Do the demo as specified in V0.4 requirements.
74 | Also show evidence of meeting other V0.4 requirements e.g. code has been collated correctly. 75 |
76 |
77 |
78 |

Patterns

79 |
80 | Discuss patterns used or could have used in your design. 81 |
82 |
83 |
84 |

Testing types

85 |
86 | Show examples of the specified testing types in your code. 87 |
88 |
89 |
90 |
91 | 92 | 93 |
94 |

Lecture 11

95 | 96 |
97 |
98 |

Part 1 - Module Recap [50 minutes]

99 |
100 | 101 | 102 | 105 | 117 | 118 |
103 | 104 | 106 |

107 | [No handout] 108 | [Slides] 109 |

110 | 111 |

112 | Overview: In this lecture we take a quick pass over various topics 113 | we have covered in the module to see how they fit into a big picture. 114 |

115 |
116 |
119 | 120 |

Resources

121 | 160 |
161 |
162 |
163 |

Part 2 - Tips for Killer Product Presentations [30 minutes]

164 |
165 | 166 | 167 | 170 | 182 | 183 |
168 | 169 | 171 |

172 | [No handout] 173 | [Slides] 174 |

175 | 176 |

177 | Overview: Some tips you can use to improve any product presentation. 178 | Many of these are applicable to the final product demo. 179 |

180 |
181 |
184 | 185 |

Resources

186 | 198 |
199 |
200 |
201 |

Part 3 - PowerPoint Power Tips [20 minutes]

202 |
203 | 204 | 205 | 208 | 220 | 221 |
206 | 207 | 209 |

210 | [No handout] 211 | [Slides] 212 |

213 | 214 |

215 | Overview: Some advanced PowerPoint tips that can save you time and get more out 216 | of PowerPoint 217 |

218 |
219 |
222 |
223 |
224 |
225 |
226 | -------------------------------------------------------------------------------- /contents/schedule/week12.html: -------------------------------------------------------------------------------- 1 |
2 |

Things to do

3 |
4 |
5 |

Handbook sections to read

6 |
7 |
    8 |
  • 9 | 10 | Exams 11 | 12 |
    13 |
  • 14 |
15 |
16 |
17 |
18 |
19 | 20 |
21 |

Pre-Tutorial Learning Activities

22 |
23 |
24 |

T11A1. Reach V0.5rc

25 |
26 | Follow 27 | V0.5rc Requirements 28 | 29 |
30 |
31 |
32 |
33 |

T11A2. Relates XP/Scrum to your project

34 |
35 |

36 | Pick task (a) or (b). Ensure at least one member picks each task 37 | and no more than one member picks the same concept/rule. 38 |

39 |

40 | Preferably, try to pick concepts/rules that you think are not applicable to the project. 41 |

42 |
    43 |
  1. Relate* three 44 | 45 | key concepts of Scrum to your project.
    46 | e.g. product backlog, product owner, sprints, sprint backlog, daily scrum, 47 | user stories, scrumboard, story points, burndown charts, team velocity, scrum master, etc. 48 |
  2. 49 |
  3. Relate three 50 | XP rules to your project. 51 |
  4. 52 |
53 |

54 | There is no need to bring any written answers; it is good enough if you can explain your answer verbally. 55 |

56 |

57 | *“Relate” here means: Is it applicable in your project? 58 | If not, why not? Are you using something similar or an alternative in your project? etc. 59 | 60 |

61 |
62 |
63 |
64 |

T11A3. Relate reuse mechanisms to your project

65 |
66 |

67 | Find platforms, frameworks, and libraries you are using in the project.
68 | What are other alternative/additional platforms/frameworks/libraries you could have used in the project? 69 |

70 |
71 |
72 |
73 |

T11A4. Use Activity Diagrams and OO Domain Models

74 |
75 |

76 | Use Activity Diagrams and/or Object Oriented Domain Models to explain the problem domain or the 77 | design of your project.
78 |

79 |
80 |
81 |
82 |

T11A5. Relate other UML models to the project

83 |
84 |

85 | Relate other UML models (the non-examinable ones such as State Machine Diagrams) to the project.
86 | e.g. are they applicable to the project? 87 |

88 |
89 |
90 |
91 |
92 | 93 | 94 |
95 |

96 | Tutorial 11: V0.5rc, OODM, Activity Diagrams, Agile Processes 97 |

98 |
99 |
100 |

Demo V0.5rc

101 |
102 | Do the demo as specified in V0.5rc requirements.
103 |
104 |
105 |
106 |

OODM, Activity Diagrams

107 |
108 | Discuss OODMs or Activity Diagrams you created for the project, if any. 109 |
110 |
111 |
112 |

Agile processes

113 |
114 | Relate XP rules and Scrum practices to the project. 115 |
116 |
117 |
118 |

Reuse mechanisms

119 |
120 | Discuss the libraries, frameworks, and platforms you are using (or could be using) for the project. 121 |
122 |
123 |
124 |
125 | 126 | 127 |
128 |

Lecture 12 129 | No webcast due to the sensitive nature of this lecture

130 |
131 |
132 |

Exam preview [25 minutes]

133 |
134 |

135 | [Slides][No handout] 136 |

137 |

Resources

138 | 143 |
144 |
145 |
146 |

Internships Tips Your Boss Wishes You Knew [80 minutes]

147 |
148 |

149 | [Slides][No handout] 150 |

151 | 152 |

Resources

153 | 205 |
206 |
207 | 208 |
209 |
210 | -------------------------------------------------------------------------------- /contents/schedule/week13.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |

Week 13: Things to do

4 |
5 |
6 |

Handbook sections to read:

7 |
8 |
    9 |
  • 10 | Project: 11 | 12 | V0.5 Requirements | 13 | 14 | 15 | Project retrospective 16 | 17 |
    18 |
  • 19 |
20 |
21 |
22 |
23 |
24 | 25 |
26 |

Deadlines

27 |
28 |
29 |

Deadline [Mon () 23.59]: V0.5 submission

30 |
31 | Please follow V0.5 submission requirements. Each non-conformance will be penalized. 32 |
33 |
34 |
35 |

Project presentations/evaluations [Wed () - Sat ()]

36 |
37 | Please follow V0.5 requirements. 38 |
39 |
40 |
41 |

Peer evaluation 3 [Wed()-Fri()]

42 |
43 | This peer evaluation is to evaluate your peers' contribution for the entire project, 44 | not just the recent weeks. 45 |
46 |
47 |
48 |
49 | 50 |
51 |

52 | Tutorial 13 : Product Demo 53 |

54 |
55 |
56 |

Demo V0.5

57 |
58 | Do the demo as specified in V0.5 requirements.
59 |
60 |
61 |
62 |
-------------------------------------------------------------------------------- /contents/schedule/week14.html: -------------------------------------------------------------------------------- 1 |
2 |

Deadlines

3 |
4 |
5 |

[Mon () 23:59] Project retrospective

6 |
7 | 8 | Instructions 9 | 10 |
11 |
12 |
13 |
14 |

[Wed () 23:59] Individual report

15 |
16 | 17 | Instructions 18 | 19 |
20 |
21 |
22 |
23 |
24 | -------------------------------------------------------------------------------- /contents/search/search-category-partial.html: -------------------------------------------------------------------------------- 1 |
  • 2 | 3 | 4 | 5 | 8 | 11 | 12 |
    6 | 7 | 9 | {{ text }} 10 |
    13 |
    14 | 15 |
  • 16 | -------------------------------------------------------------------------------- /contents/search/search-keyword-partial.html: -------------------------------------------------------------------------------- 1 |
  • 2 | 3 | 4 | 5 | 8 | 11 | 12 |
    6 | 7 | 9 | {{ text }} 10 |
    13 |
    14 | 15 |
  • 16 | -------------------------------------------------------------------------------- /contents/search/search-main-category-partial.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /diagrams/PhasesTimeline.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/diagrams/PhasesTimeline.pptx -------------------------------------------------------------------------------- /doc/ContentAuthorGuide.md: -------------------------------------------------------------------------------- 1 | # Content Author Guide 2 | * [Syntax](#syntax) 3 | * [Embedded Links](#embedded-links) 4 | * [Component Panels](#component-panels) 5 | * [Tooltips](#tooltips) 6 | * [Useful Style Classes](#useful-style-classes) 7 | * [Contextual Backgrounds](#contextual-backgrounds) 8 | * [Code Tags](#code-tags) 9 | * [Syntax Highlighting](#syntax-highlighting) 10 | * [Difficulty Stars](#difficulty-stars) 11 | * [Best Practices](#best-practices) 12 | * [Coding Standards](#coding-standards) 13 | * [Committing Changes](#committing-changes) 14 | * [How to Preview Changes](#how-to-preview-changes) 15 | * [Tool Stack](#tool-stack) 16 | 17 | ## Syntax 18 | 19 | ### Embedded Links 20 | Embedded links are used to load supplementary sections, triggered by a click. 21 | 22 | Adding an embedded link: 23 | 24 | 1. Enclose link text in `` ``, 25 | e.g. ``**Teams**`` 26 | * param-name: name of the file to load from (without .html) 27 | * param-selector: `#selector` for element in this page to load into 28 | * param-id: section id for element in file to load from (optional) 29 |

    30 | 31 | > To use a custom title (not **Extract from handbook**) for the embedded content, use `pullContent` 32 | (instead of `getContentUsingAjax`) that takes an additional `'param-title'` as its 2nd argument. 33 | 34 | 2. Mark a `div` element with the id for `param-2` where content is loaded into. 35 | In most cases, this can be right after the paragraph with the embedded link. 36 | e.g. `
    ` 37 | 38 | > Embedded links are enabled by including this script tag in a HTML file: 39 | ```html 40 | 41 | ``` 42 | 43 | > **Limitation** 44 | \- HTML syntax for embedded links are overly verbose (PR #174). 45 | 46 | ### Component Panels 47 | Component panels are the lowest-level panels in the Schedule page. 48 | One way to populate panels, other than including content directly, 49 | is by specifying a file to load from when the panel first expands. 50 | The file can be reused with different titles to match the context. 51 | 52 | Inner panels should be `h3` elements nested in the `div`: 53 | ```html 54 |
    55 |

    Title

    56 |
    57 | ``` 58 | where `divId` has a form `component-week#` e.g. `activity-week2`, 59 | `url` links to a file with HTML meant to be inside a `div`. 60 | 61 | > Component panels are enabled in **schedule/index.html** and **schedule/week.html** 62 | > through the `loadInnerPanels(divId)` function in **common.js**. 63 | 64 | ### Tooltips 65 | Tooltips are used for short supplementary information, triggered by a hover. 66 | Tooltips are enabled for content in **schedule/index.html** through **common.js**. 67 | 68 | Adding a tooltip: 69 | 70 | 1. Wrap the keyword in the `` tag, 71 | e.g. `IDE` 72 | 73 | 2. Register `tooltips` in [tooltip.js](../scripts/tooltip.js) with the form: `'keyword' : 'tooltip'`, 74 | e.g. `'IDE' : 'Integrated Development Environment'` 75 | 76 | 3. Register `aliases` in [tooltip.js](../scripts/tooltip.js) with the form: `'keyword' : ['alias1', 'alias2']`, 77 | e.g. `'IDE' : ['IDEs']` 78 | 79 | > **Limitation** 80 | \- Multiple definitions are not yet supported (Issue #235). 81 | 82 | ### Useful Style Classes 83 | These classes are used frequently to style inline content. 84 | 85 | * `dim` for less important additional information 86 | > color: gray 87 | 88 | * `highlighted` for important bits of information 89 | > background-color: yellow 90 | 91 | * `important` for extra-important bits of information (used sparingly) 92 | > color: maroon 93 | 94 | ### Contextual Backgrounds 95 | Contextual backgrounds are used for admonition blocks to convey meaning through color. 96 | 97 | Adding contextual backgrounds: 98 | ```html 99 |

    bg-additional

    100 |

    bg-important

    101 |

    bg-quote

    102 |

    bg-sidebar-info

    103 |

    bg-sidebar-main

    104 |

    bg-warning

    105 | ``` 106 | ![](contextual-backgrounds.png) 107 | > Classes may be used with `span`, but preferably blocks (e.g. `p` or `div`). 108 | > However, sidebar elements must be used with blocks and preceded by a block. 109 | 110 | ### Code Tags 111 | Use `` tags to represent fragments of computer code in monospace font. 112 | > font-family: courier 113 | > font-size: small 114 | > background-color: gray 115 | 116 | ### Syntax Highlighting 117 | Language-specific syntax highlighting is achieved by enclosing code samples in: 118 | ```html 119 |
     
    120 | ``` 121 | > Other valid code classes: `lang-html`, `shell` 122 | 123 | ### Difficulty Stars 124 | Each tutorial has a list of learning activities. Stars are used for categories. 125 | 126 | * Single star: Basic / Skills to pass the module 127 | `` 128 | 129 | * 2 stars: Intermediate / Skills for a good grade 130 | `` 131 | 132 | * 3 stars: Advanced / Beyond the module syllabus 133 | `` 134 | 135 | ## Best Practices 136 | 137 | ### Coding Standards 138 | * [JavaScript](https://docs.google.com/document/d/1gZ6WG6HBTJYHAtVkz9kzi_SUuzfXqzO-SvFnLuag2xM/pub?embedded=true) 139 | * [CSS](../codingStandards/coding-standards-css.md) 140 | * [HTML](https://oss-generic.github.io/process/codingStandards/CodingStandard-Html.html) 141 | 142 | ### Committing Changes 143 | * Commit each distinct change as a separate commit. 144 | * Write short, descriptive commit messages. 145 | * Use the imperative mood when writing commit messages. 146 | e.g. `Add README.md` rather than `Added README.md` or `Adding README.md` 147 | 148 | ## How to Preview Changes 149 | Refer to: [DeveloperGuide.md#how-to-preview-changes](DeveloperGuide.md#how-to-preview-changes) 150 | 151 | ## Tool Stack 152 | Refer to: [DeveloperGuide.md#tool-stack](DeveloperGuide.md#tool-stack) 153 | -------------------------------------------------------------------------------- /doc/DeveloperGuide.md: -------------------------------------------------------------------------------- 1 | # Developer Guide 2 | * [Guidelines for New Contributors](#guidelines-for-new-contributors) 3 | * [Contributing to this Repository](#contributing-to-this-repository) 4 | * [Coding Standards](#coding-standards) 5 | * [How to preview changes](#how-to-preview-changes) 6 | * [Preview a week in schedule](#preview-a-week-in-schedule) 7 | * [Preview a handbook section](#preview-a-handbook-section) 8 | * [Preview local files in Google Chrome](#preview-local-files-in-google-chrome) 9 | * [How to stage changes](#how-to-stage-changes) 10 | * [Creating a pull request](#creating-a-pull-request) 11 | * [Tool Stack](#tool-stack) 12 | * [Development environment](#development-environment) 13 | * [Tools used in implementation](#tools-used-in-implementation) 14 | 15 | ## Guidelines for New Contributors 16 | * Asking a Question 17 | * Posting an Issue 18 | * Submitting Your First PR 19 | * Naming Conventions (Branch name and PR title) 20 | * Git Usage Guidelines (Commit messages) 21 | 22 | Refer to: https://github.com/oss-generic/process/#guidelines-for-new-contributors 23 | 24 | ## Contributing to this Repository 25 | 1. Fork this repo. 26 | 2. Make sure what you want to contribute is already listed as an open issue in our issue tracker. 27 | If it is not, post it as an issue first and wait for it to get accepted (an issue is considered 28 | 'accepted' when it is assigned a `priority.*` label). 29 | 3. You may choose an issue labeled `forFirstTimers` as your first issue, if there are any. 30 | But do not do more than one `forFirstTimers` issues. 31 | 4. Clone your fork onto your Computer. 32 | 5. Create a branch. The branch name should be in the format `issue-number-some-key-words`, 33 | i.e. issue number followed by 2-4 key words related to the issue description, 34 | e.g. `112-fix-loading-overlay-handbook`. 35 | 6. Implement your fix in the new branch. 36 | See [coding standards](#coding-standards). 37 | 7. Test the code in your computer. 38 | See [preview local files in Google Chrome](#preview-local-files-in-google-chrome). 39 | 8. When the fix is ready, 40 | 1. Ensure that your fork has the latest code from this repo (the repo you forked from is called 41 | the `upstream` repo). The code in the upstream repo may have been updated while you were fixing the issue. 42 | If that is the case, [sync your fork with upstream repo](https://help.github.com/articles/syncing-a-fork/). 43 | 2. Stage your changes. Your reviewer might want to see how your changes look like to a viewer of the website. 44 | See [how to stage changes](#how-to-stage-changes). 45 | 3. Create a pull request (PR) against the `master` branch of this repo. 46 | See [creating a pull request](#creating-a-pull-request). 47 | 4. Check the diff view of the PR to ensure it contains the intended changes only. 48 | 9. Your code will be reviewed by someone from the dev team. If the reviewer requests changes, 49 | revise the code, push the new commits to your branch, and post a comment to say the pull request 50 | is ready for review again. 51 | 10. When your code is acceptable, it will be merged to this repo. Your fix will be included in the 52 | next release of the website. 53 | 11. After your fix is merged, you may wish to create another PR to add your name to the 54 | [`CONTRIBUTORS.md`](../CONTRIBUTORS.md) file. 55 | There is no need to create a corresponding issue for that PR. 56 | 57 | ## Coding Standards 58 | * [JavaScript](https://docs.google.com/document/d/1gZ6WG6HBTJYHAtVkz9kzi_SUuzfXqzO-SvFnLuag2xM/pub?embedded=true) 59 | * [CSS](../codingStandards/coding-standards-css.md) 60 | * [HTML](https://oss-generic.github.io/process/codingStandards/CodingStandard-Html.html) 61 | 62 | ## How to preview changes 63 | 64 | #### Preview a week in schedule 65 | [`.../contents/schedule/week.html?preview=1`](http://nus-cs2103.github.io/website/contents/schedule/week.html?preview=1) 66 | > `preview` can be any of weeks `0`-`14`. 67 | 68 | #### Preview a handbook section 69 | [`.../contents/handbook/index.html?preview=preliminaries`](http://nus-cs2103.github.io/website/contents/handbook/index.html?preview=preliminaries) 70 | > `preview` can be any section/subsection `id` in handbook/index.html 71 | 72 | #### Preview local files in Google Chrome 73 | You will need to start Chrome with the flag `--allow-file-access-from-files`: 74 | * The path for Chrome can be found at `chrome://version`. 75 | * All windows for Chrome **must** be closed before launching. 76 | * You may create a shortcut to launch Chrome with this flag. 77 | 78 | ## How to stage changes 79 | To create a [*staging site*](https://en.wikipedia.org/wiki/Staging_site) using 80 | [*RawGit*](https://rawgit.com/), commit your changes and push the branch to your fork. 81 | A running version of the website should now be available from the corresponding 82 | `rawgit.com` URL of the form `http://rawgit.com/user/repo/branch/`, 83 | e.g. http://rawgit.com/acjh/website/112-fix-loading-overlay-handbook/. 84 | 85 | ## Creating a pull request 86 | * When naming the PR, copy and paste the name of the issue you are fixing, including the original issue number, 87 | e.g. `Fix size and position of 'Page Loading...' overlay in handbook page #112`. 88 | * In the PR description, mention `Fixes #IssueNumber` (e.g. `Fixes #112`) so that 89 | the corresponding issue is closed automatically when the PR is merged. 90 | Remember to mention the URL of the staging site in your PR description. 91 | [Here](https://github.com/nus-cs2103/website/pull/202) is an example. 92 | 93 | ## Tool Stack 94 | 95 | #### Development environment 96 | * **GitHub** 97 | Used to host the repo and code reviewing. 98 | * **Google Chrome DevTools** (recommended) 99 | Used to iterate, debug and profile the site. 100 | * **Atom** (recommended) 101 | Used as a text editor, automatically removes trailing whitespaces and newlines. 102 | * **SourceTree** (recommended) 103 | Used as a GUI client for Git. 104 | 105 | #### Tools used in implementation 106 | * **HTML** [version 5], **JavaScript**, **CSS** 107 | * **jQuery** [version 1.11.3] 108 | jQuery is a JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. 109 | * **jQuery UI** [version 1.11.3] 110 | jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. 111 | -------------------------------------------------------------------------------- /doc/contextual-backgrounds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/doc/contextual-backgrounds.png -------------------------------------------------------------------------------- /images/10 observations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/10 observations.png -------------------------------------------------------------------------------- /images/2stars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/2stars.png -------------------------------------------------------------------------------- /images/3stars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/3stars.png -------------------------------------------------------------------------------- /images/BigBang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/BigBang.png -------------------------------------------------------------------------------- /images/BigPictureSmall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/BigPictureSmall.png -------------------------------------------------------------------------------- /images/Deliverables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/Deliverables.png -------------------------------------------------------------------------------- /images/DemoTips.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/DemoTips.png -------------------------------------------------------------------------------- /images/FilesChangedTab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/FilesChangedTab.png -------------------------------------------------------------------------------- /images/Forces me to visit a separate website.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/Forces me to visit a separate website.png -------------------------------------------------------------------------------- /images/Greenbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/Greenbox.png -------------------------------------------------------------------------------- /images/I'm not allowed to use my favorite tool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/I'm not allowed to use my favorite tool.png -------------------------------------------------------------------------------- /images/IntermediateOop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/IntermediateOop.png -------------------------------------------------------------------------------- /images/JamesGosling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/JamesGosling.png -------------------------------------------------------------------------------- /images/Jim at his computer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/Jim at his computer.png -------------------------------------------------------------------------------- /images/KeyboardNotFound.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/KeyboardNotFound.jpg -------------------------------------------------------------------------------- /images/L10-pre-lecture-exercise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/L10-pre-lecture-exercise.png -------------------------------------------------------------------------------- /images/Lecture photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/Lecture photo.png -------------------------------------------------------------------------------- /images/Polymorphism.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/Polymorphism.png -------------------------------------------------------------------------------- /images/PowerTips.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/PowerTips.png -------------------------------------------------------------------------------- /images/PrDetails.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/PrDetails.png -------------------------------------------------------------------------------- /images/Redbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/Redbox.png -------------------------------------------------------------------------------- /images/Rubber_duck_assisting_with_debugging.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/Rubber_duck_assisting_with_debugging.jpg -------------------------------------------------------------------------------- /images/Submission requirements differ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/Submission requirements differ.png -------------------------------------------------------------------------------- /images/Topics - big picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/Topics - big picture.png -------------------------------------------------------------------------------- /images/UML reference sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/UML reference sheet.png -------------------------------------------------------------------------------- /images/Violetbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/Violetbox.png -------------------------------------------------------------------------------- /images/Why workload heavy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/Why workload heavy.png -------------------------------------------------------------------------------- /images/Why you....png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/Why you....png -------------------------------------------------------------------------------- /images/[Handouts] front cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/[Handouts] front cover.png -------------------------------------------------------------------------------- /images/activitydiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/activitydiagram.png -------------------------------------------------------------------------------- /images/ada_lovelace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/ada_lovelace.png -------------------------------------------------------------------------------- /images/ajax-preload.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/ajax-preload.gif -------------------------------------------------------------------------------- /images/alternativeDesigns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/alternativeDesigns.png -------------------------------------------------------------------------------- /images/archi roadmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/archi roadmap.png -------------------------------------------------------------------------------- /images/bad code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/bad code.png -------------------------------------------------------------------------------- /images/brooks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/brooks.png -------------------------------------------------------------------------------- /images/chaos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/chaos.png -------------------------------------------------------------------------------- /images/component designs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/component designs.png -------------------------------------------------------------------------------- /images/coupling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/coupling.png -------------------------------------------------------------------------------- /images/defensive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/defensive.png -------------------------------------------------------------------------------- /images/dennis-ritchie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/dennis-ritchie.png -------------------------------------------------------------------------------- /images/details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/details.png -------------------------------------------------------------------------------- /images/documentation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/documentation.png -------------------------------------------------------------------------------- /images/eclipse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/eclipse.png -------------------------------------------------------------------------------- /images/exam connected to project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/exam connected to project.png -------------------------------------------------------------------------------- /images/fire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/fire.png -------------------------------------------------------------------------------- /images/frameworks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/frameworks.png -------------------------------------------------------------------------------- /images/frequent submissions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/frequent submissions.png -------------------------------------------------------------------------------- /images/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/github.png -------------------------------------------------------------------------------- /images/good code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/good code.png -------------------------------------------------------------------------------- /images/grade breakdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/grade breakdown.png -------------------------------------------------------------------------------- /images/growingPlant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/growingPlant.png -------------------------------------------------------------------------------- /images/how to get help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/how to get help.png -------------------------------------------------------------------------------- /images/how to google it.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/how to google it.png -------------------------------------------------------------------------------- /images/hubturboBoardsExample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/hubturboBoardsExample.png -------------------------------------------------------------------------------- /images/l10-pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/l10-pre.png -------------------------------------------------------------------------------- /images/limited project scope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/limited project scope.png -------------------------------------------------------------------------------- /images/moduleTimeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/moduleTimeline.png -------------------------------------------------------------------------------- /images/no marks for intermediate submissions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/no marks for intermediate submissions.png -------------------------------------------------------------------------------- /images/objects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/objects.png -------------------------------------------------------------------------------- /images/patterns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/patterns.png -------------------------------------------------------------------------------- /images/peer evaluations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/peer evaluations.png -------------------------------------------------------------------------------- /images/png_peer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/png_peer.png -------------------------------------------------------------------------------- /images/principles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/principles.png -------------------------------------------------------------------------------- /images/processes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/processes.png -------------------------------------------------------------------------------- /images/profilephotos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/profilephotos.png -------------------------------------------------------------------------------- /images/qa methods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/qa methods.png -------------------------------------------------------------------------------- /images/rcs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/rcs.png -------------------------------------------------------------------------------- /images/roles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/roles.png -------------------------------------------------------------------------------- /images/slides not detailed enough.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/slides not detailed enough.png -------------------------------------------------------------------------------- /images/small things matter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/small things matter.png -------------------------------------------------------------------------------- /images/so much self study.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/so much self study.png -------------------------------------------------------------------------------- /images/specifying.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/specifying.png -------------------------------------------------------------------------------- /images/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/star.png -------------------------------------------------------------------------------- /images/supplementary books.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/supplementary books.png -------------------------------------------------------------------------------- /images/t5_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/t5_architecture.png -------------------------------------------------------------------------------- /images/t5_discussions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/t5_discussions.png -------------------------------------------------------------------------------- /images/task listing UI comparison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/task listing UI comparison.png -------------------------------------------------------------------------------- /images/team.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/team.png -------------------------------------------------------------------------------- /images/testcases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/testcases.png -------------------------------------------------------------------------------- /images/the good reasons to get home early.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/the good reasons to get home early.png -------------------------------------------------------------------------------- /images/tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/tools.png -------------------------------------------------------------------------------- /images/typical cs2103 week.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/typical cs2103 week.png -------------------------------------------------------------------------------- /images/userstories.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/userstories.png -------------------------------------------------------------------------------- /images/v00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/v00.png -------------------------------------------------------------------------------- /images/v01demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/v01demo.png -------------------------------------------------------------------------------- /images/v05demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/v05demo.png -------------------------------------------------------------------------------- /images/vague requirement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/vague requirement.png -------------------------------------------------------------------------------- /images/waling skeleton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/waling skeleton.png -------------------------------------------------------------------------------- /images/week12-12thingsslides.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/week12-12thingsslides.png -------------------------------------------------------------------------------- /images/weeklyWrapupQuestion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/weeklyWrapupQuestion.png -------------------------------------------------------------------------------- /images/windowsErrorPrompt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/windowsErrorPrompt.png -------------------------------------------------------------------------------- /images/yee ha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nus-cs2103/old-website/5fb796942839ce53740319a522abb9130c228d60/images/yee ha.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | CS2103/T (Module website) 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /publish.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | git pull 3 | git push origin master 4 | git checkout gh-pages 5 | git pull 6 | git merge master 7 | git push origin gh-pages 8 | git checkout master 9 | -------------------------------------------------------------------------------- /scripts/embedded.js: -------------------------------------------------------------------------------- 1 | function getContentUsingAjax(fileName, elementSelector, sectionName) { 2 | pullContent(fileName, elementSelector, 'Extract from handbook', sectionName); 3 | } 4 | 5 | function pullContent(fileName, elementSelector, title, sectionName) { 6 | var toBeLoaded = fileName + '.html' + (sectionName == undefined ? '' : ' #' + sectionName); 7 | var section = fileName.substring(fileName.lastIndexOf('/') + 1); 8 | var directLink = '../handbook/index.html#' + section; 9 | var linkNotice = '{Some links in this embedded content box might not work. ' + 10 | 'If you need to follow the links, please go to the relevant section ' + 11 | 'of the handbook instead}'; 12 | $(elementSelector).html('Loading...'); 13 | $(elementSelector).load(toBeLoaded, function(response, status, xhr) { 14 | if (status == 'success') { 15 | $(elementSelector).addClass('embedded'); 16 | $(elementSelector).prepend('
    ' + title + '

    '+linkNotice+'
    '); 19 | $(elementSelector + ' > div > .btn-dismiss').button(); 20 | 21 | if ($('.prettyprint:not(.prettyprinted)').length > 0) { 22 | prettyPrintCodeSamples(); 23 | } 24 | } 25 | }); 26 | } 27 | -------------------------------------------------------------------------------- /scripts/handbook.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Jumps to a section's heading. 3 | * The header is before the div. 4 | * Account for Safari scrolling. 5 | */ 6 | function jumpToSectionHeading(section) { 7 | var isSafariBrowser = !navigator.userAgent.includes('Chrome') && navigator.userAgent.includes('Safari'); 8 | var windowToScroll = window; 9 | var headingsFrameOffset = 0; 10 | if(isSafariBrowser && (windowToScroll != window.top)) { 11 | windowToScroll = window.top; 12 | headingsFrameOffset = 60; // From index.html 13 | } 14 | var headerPosition = $('#' + section).prev().offset().top; 15 | $(windowToScroll).scrollTop(headerPosition + headingsFrameOffset); 16 | } 17 | 18 | /** 19 | * Adds jumps-to-section-heading behaviour for anchors. 20 | * Previous behaviour is remove and default is blocked. 21 | */ 22 | function addJumpToSectionHeadingBehavior(anchors) { 23 | anchors.off(); // Remove previous behaviour 24 | anchors.click(function(event) { 25 | event.preventDefault(); // Prevent default behaviour 26 | jumpToSectionHeading(this.hash.substring(1)); 27 | }); 28 | } 29 | 30 | /** 31 | * Adds load-on-demand capability for anchors in table-of-contents. 32 | * This capability is triggered when any of the anchors is clicked. 33 | */ 34 | function addLoadOnDemandToAnchors() { 35 | var allAnchors = $('a'); 36 | handleClickForAllAnchors(allAnchors); 37 | 38 | // Appendix B 39 | var policySection = 'appendixB-policies'; 40 | var policyAnchors = $('a[href^="#policy-"]'); 41 | handleClickForAppendixAnchors(policySection, policyAnchors); 42 | 43 | // Appendix C 44 | var faqSection = 'appendixC-faq'; 45 | var faqAnchors = $('a[href="#' + faqSection + '"]').next().find('a'); 46 | handleClickForAppendixAnchors(faqSection, faqAnchors); 47 | } 48 | 49 | /** 50 | * Handles onclick event for all anchors. 51 | * For first click, load 'section' using ajax then jump to 'section' heading. 52 | * For subsequent clicks, jump to 'section' heading only. 53 | */ 54 | function handleClickForAllAnchors(allAnchors) { 55 | allAnchors.click(function() { 56 | var thisAnchor = $(this); 57 | var section = this.hash.substring(1); 58 | var callback = function() { 59 | jumpToSectionHeading(section); 60 | addJumpToSectionHeadingBehavior(thisAnchor); 61 | }; 62 | loadSectionUsingAjax(section, callback); 63 | }); 64 | } 65 | 66 | /** 67 | * Handles onclick event for Appendix B and C anchors (subsections in common HTML file). 68 | * For first click, load 'containerSection' using ajax then jump to 'subsection' heading. 69 | * For subsequent clicks, jump to 'subsection' heading only. 70 | */ 71 | function handleClickForAppendixAnchors(containerSection, subsectionAnchors) { 72 | subsectionAnchors.off(); // Remove previous behaviour 73 | subsectionAnchors.click(function() { 74 | var subsection = this.hash.substring(1); 75 | var callback = function() { 76 | jumpToSectionHeading(subsection); 77 | addJumpToSectionHeadingBehavior(subsectionAnchors); 78 | }; 79 | loadSectionUsingAjax(containerSection, callback); 80 | }); 81 | } 82 | 83 | /** 84 | * Loads a single section on demand using ajax. 85 | * On success, execute the callback. 86 | */ 87 | function loadSectionUsingAjax(section, callback) { 88 | $.ajax({ 89 | type: 'GET', 90 | url: section + '.html', 91 | error: function() { 92 | }, 93 | success: function(data) { 94 | $('#' + section).html(data); 95 | var images = $('#' + section + ' img'); 96 | if (images.length == 0) { 97 | callback(); 98 | } else { 99 | var imagesLoaded = 0; 100 | images.on('load', function() { 101 | imagesLoaded++; 102 | if (imagesLoaded == images.length) { 103 | callback(); 104 | } 105 | }); 106 | } 107 | if ($('.prettyprint:not(.prettyprinted)').length > 0) { 108 | PR.prettyPrint(); 109 | } 110 | } 111 | }); 112 | } 113 | 114 | /** 115 | * Load all sections asynchronously. 116 | * Increment number of sections loaded in callback. 117 | * If all sections loaded, remove the loading overlay. 118 | */ 119 | function loadAllSectionsUsingAjax(callbackOnLoadAll) { 120 | var sectionsLoaded = 0; 121 | for (var i in sections) { 122 | var section = sections[i]; 123 | var callback = function() { 124 | sectionsLoaded++; 125 | if (sectionsLoaded == sections.length) { 126 | callbackOnLoadAll(); 127 | } 128 | }; 129 | loadSectionUsingAjax(section, callback); 130 | } 131 | } 132 | 133 | function isTableOfContentVisible() { 134 | var windowTop = $(window).scrollTop(); 135 | var tableTop = $('#table-of-contents').offset().top; 136 | var tableBottom = $('#table-of-contents').height() + tableTop; 137 | return windowTop < tableBottom; 138 | } 139 | 140 | /** 141 | * Loads sections, based on whether a preview was requested. 142 | * If preview, the remaining anchors trigger load-on-demand, 143 | * else, the remaining anchors jump to section heading only. 144 | */ 145 | function loadSections() { 146 | var preview = window.location.href.match(/\?preview=([^&#]*)/); 147 | 148 | if (preview) { 149 | var section = preview[1]; 150 | addLoadOnDemandToAnchors(); 151 | $('a[href="#' + section + '"]').click(); 152 | $('#overlay').remove(); 153 | } else { 154 | var callback = function() { 155 | $('#overlay').remove(); 156 | // If there is an anchor tag in url, make sure to jump to the specific section. 157 | if (location.hash) { 158 | location.href = location.hash; 159 | } 160 | } 161 | loadAllSectionsUsingAjax(callback); 162 | addJumpToSectionHeadingBehavior($('a')); 163 | } 164 | } 165 | 166 | $(document).ready(function() { 167 | loadSections(); 168 | 169 | var buttonAnimationDuration = 200; 170 | var speed = 1; 171 | 172 | function scrollToPosition(scrollTopPosition) { 173 | $('html,body').animate({ 174 | scrollTop: scrollTopPosition 175 | }, speed); 176 | } 177 | 178 | $('#back-to-top-button').button(); 179 | $('#back-to-top-button').click(function(e) { 180 | scrollToPosition(0); 181 | }); 182 | 183 | $(window).scroll(function() { 184 | if (!isTableOfContentVisible()) { 185 | $('#back-to-top-button').fadeIn(buttonAnimationDuration); 186 | } else { 187 | $('#back-to-top-button').fadeOut(buttonAnimationDuration); 188 | } 189 | }); 190 | }); 191 | -------------------------------------------------------------------------------- /scripts/markdown.js: -------------------------------------------------------------------------------- 1 | var markdownUrl = $('.markdown-body').attr('data-url'); 2 | 3 | $.ajax({ 4 | type: 'GET', 5 | url: markdownUrl, 6 | error: function(jqXHR, textStatus, error) { 7 | redirectToGithub(); 8 | }, 9 | success: function(data) { 10 | $.ajax({ 11 | type: "POST", 12 | url: "https://api.github.com/markdown", 13 | data: JSON.stringify({ 14 | "text": data, 15 | "mode": "markdown" 16 | }), 17 | error: function(jqXHR, textStatus, error) { 18 | redirectToGithub(); 19 | }, 20 | success: function(data) { 21 | processAndDisplayResult(data); 22 | } 23 | }); 24 | } 25 | }); 26 | 27 | function redirectToGithub() { 28 | window.location.href = 'https://github.com/nus-cs2103/website/blob/master/contents/' + markdownUrl; 29 | } 30 | 31 | function displayResult(html) { 32 | $('.markdown-body').html(html); 33 | } 34 | 35 | function processAndDisplayResult(html) { 36 | // Pre-process the result as necessary 37 | html = html.replace(/user-content-/g, ''); 38 | html = html.replace(/Good<\/th>/g, 'Good'); 39 | html = html.replace(/Bad<\/th>/g, 'Bad'); 40 | html = html.replace('id="borderless"', 'class="borderless"'); 41 | 42 | // Display the result in the page; this is the minimum requirement of the function 43 | displayResult(html); 44 | 45 | // Post-process the result as necessary 46 | } 47 | -------------------------------------------------------------------------------- /scripts/tooltip.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | // Maps a string to a tooltip (in the form of a HTML string) 3 | var tooltips = { 4 | 'GTD' : 'Getting Things Done', 5 | 'IDE' : 'Integrated Development Environment', 6 | 'Regression' : 'A regression is an unintended side effect of a modification to the code.
    ' 7 | + 'e.g. when fixing one bug causes another bug' 8 | }; 9 | 10 | // Maps a string to a list of aliases 11 | var aliases = { 12 | 'Regression' : ['regression', 'regressions'] 13 | } 14 | 15 | for (let term in aliases) { 16 | let tooltip = tooltips[term]; 17 | let values = aliases[term]; 18 | for (let i in values) { 19 | let alias = values[i]; 20 | tooltips[alias] = tooltip; 21 | } 22 | } 23 | 24 | var count = 0; 25 | $('tooltip').each(function() { 26 | var term = $(this).text(); 27 | var title = tooltips[term]; 28 | var id = String(count++); 29 | $(this).attr('id', id); 30 | $(this).tooltip({ 31 | items: '#' + id, 32 | content: title 33 | }); 34 | }); 35 | })(); 36 | -------------------------------------------------------------------------------- /styles/handbook.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 0px 10px; 3 | max-width: 740px; 4 | } 5 | 6 | h1{ 7 | color:purple; 8 | } 9 | 10 | h2{ 11 | color:purple; 12 | } 13 | 14 | h3{ 15 | color:purple; 16 | } 17 | 18 | pre.cliprint{ 19 | background-color: #000; /*black*/ 20 | -moz-border-radius: 8px; 21 | -webkit-border-radius: 8px; 22 | -o-border-radius: 8px; 23 | -ms-border-radius: 8px; 24 | -khtml-border-radius: 8px; 25 | border-radius: 8px; 26 | padding: 1em; 27 | color:#ffec00; 28 | } 29 | 30 | code.clisystem{ 31 | color:#fff; /*white*/ 32 | } 33 | 34 | code.cliuser{ 35 | color:#b000ff; /*purple*/ 36 | } 37 | 38 | img { 39 | max-width: 100%; 40 | height: auto; 41 | } 42 | 43 | #back-to-top-button{ 44 | display: none; 45 | position: fixed; 46 | bottom: 0; 47 | right: 0; 48 | padding: 10px; 49 | border: #dff0d8; 50 | color: #fff; 51 | background: #5cb85c; 52 | transition: background 0.2s ease; 53 | } 54 | 55 | #back-to-top-button:hover{ 56 | color: #3c763d; 57 | background: #dff0d8; 58 | } 59 | 60 | #overlay { 61 | width: 20%; 62 | background-color: rgba(0,0,0,0.5); 63 | border-radius: 5px; 64 | line-height: 50px; 65 | position: fixed; 66 | top: 50%; 67 | left: 50%; 68 | text-align: center; 69 | font-size: large; 70 | font-family: sans-serif; 71 | color: #ffffff; 72 | transform: translate(-50%, -50%); 73 | } 74 | 75 | /* 740px since max-width of body is set to 740px 76 | Any device whose view is below 740px will use this*/ 77 | @media screen and (max-device-width: 740px) { 78 | body{ 79 | max-width: 100%; 80 | } 81 | 82 | #overlay { 83 | width: 50%; 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /styles/markdown.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 30px 50px; 3 | } 4 | 5 | .example-good { 6 | color: green; 7 | } 8 | 9 | .example-bad { 10 | color: red; 11 | } 12 | 13 | .borderless tbody td, 14 | .borderless tbody tr { 15 | border: 0px solid black; 16 | } 17 | 18 | .markdown-body .highlight pre, 19 | .markdown-body pre, 20 | .markdown-body code, 21 | .markdown-body tt { 22 | background-color: inherit; 23 | } --------------------------------------------------------------------------------