Week 1 [Aug 13]
Todo
Given below are some preparatory tasks you can do as you wait for the module to start:
Getting ready for the module:
Delay forming teams until your place in a tutorial is confirmed.
Exchange students need to use the ORATUT system to register for the tutorials. You must have received the instructions from UG office on how/when to go about the registration process. If not, please talk to UG office. When we can see your
appeal on ORATUT, we can allocate you to the tutorial slot.
Create a personal GitHub account if you don't have one yet.
-
You are advised to choose a sensible GitHub username as you are likely to use it for years to come in professional contexts.
-
Strongly recommended: Complete your GitHub profile. In particular,
- Specify your full name.
- Upload a suitable profile photo (i.e. a recent photo of your face).
The GitHub profile is useful for the tutors and classmates to identify you. If you are reluctant to share your info in your long-term GitHub account, you can remove those details after the module is over or create a separate GitHub account just for the module.
Pre-Module Survey will be available on IVLE Week 1 Monday 0900 - Sunday 2355 ⏰. We need all of you to submit it because it tells us some important information about you, especially your GitHub username.
Communication: Keeping a record of communications among your team can help you, and us, in many ways. We encourage you to do at least some of the project communication in written medium (e.g., GitHub Issue Tracker) to practice how to communicate technical things in written form.
- Instead of the IVLE forum, we encourage you to post your questions/suggestions in this github/nus-cs2113-AY1819S1/forum.
- Alternatively, you can post in our slack channel https://nuscs2113-ay1819s1.slack.com. We encourage you all to join the slack channel (you'll need to use an email address
ending in
@nus.edu.sg
,@comp.nus.edu.sg
, or@u.nus.edu
to join this channel). - Note that slack is useful for quick chats while issue tracker is useful for longer-running conversations.
- You are encouraged to use channels with a wider audience (common channel in slack, GitHub forum issue tracker) for module-related communication as much as possible, rather than private channels such as private slack/FB messages or direct emails. Rationale: more classmates can benefit from the discussions.
Prior Knowledge: Java and OOP
This module requires you to write Java code almost every week, starting from the very first week. While we introduce some bit of Java programming in this module, it is by no means exhaustive. The module expects that you learn much of Java programming by yourself.
In particular, you may want to have a look at the new features introduced in Java 8 such as streams, lambdas, Optionals. These are used in the codebase given to you.
Workload
Given 60% of this module is based on CA, it can appear to be heavy. However, it is not expected that you will spend more time on this module than its peer modules (e.g., if this module is core for you, it should not take more time than other level 2 core modules in your program).
- Note that the module contains more things than a typical students can do, in order to provide enough things for even the strongest students to learn as much as they wish to.
- This means it is perfectly OK if you don't have time to learn everything the module offers. Control your workload based on time you spend for the module in a week e.g., 1-1.5 days per week.
- We have provided a star rating system to guide you when prioritizing which things to do.
Star rating system
Start with things that are rated one-star and progress to things with more stars. Things rated four stars are optional.
Star ratings for Learning Outcomes (and textbook sections):
-
One-star LOs : The LOs you need to achieve just to keep up with the module. We recommend you to achieve these LOs if you want to pass the module (i.e. up to a C grade).
-
Two-stars LOs : Can get you up to a B+.
-
Three-stars LOs : Can get you up to an A.
-
Four-stars LOs : Can be useful for getting an A+, tutors positions, and getting into downstream SE modules that have competitive entry requirements (e.g., CS3281&2, CS3217, CS3216). Four-star LOs are not examinable. Omitting them will not affect your CAP (as A+ has the same CAP as an A grade)
-
LOs marked with two icons e.g., : , : , : , : are relevant LOs you are expected have achieved in prerequisite modules. They are given for reference and are examinable. The number of stars indicate the progression of topics, similar to the star rating system above i.e., one-star prerequisite LOs are the most basic and the most important. Four-star pre-requisite LOs can be ignored without affecting CAP.
Star ratings for other things e.g., admin info sections:
- The module uses a similar star rating system to indicate the importance of other info in this website. i.e., information rated as one-star are the most essential. Info rated four stars are non-essential and can be ignored without affecting your ability to follow the module.
Given below are some module admin info to read around this time:
Admin info to read:
Where is everything?
The Schedule pageSchedule page presents all you need to know in chronological order while the other pages have some of the same content organized by topic.
The Schedule pageSchedule page is the one page you need to refer weekly. Although there is a lot of content in the Admin Info page Admin Info page and the Textbook page -- which you are welcome to read in those respective pages -- the same content is also embedded in the relevant weeks of the Schedule page. Embedded extracts usually appear in expandable panels and can be identified by the symbol in the panel title.
Prior Knowledge: Java and OOP
This module requires you to write Java code almost every week, starting from the very first week. While we introduce some bit of Java programming in this module, it is by no means exhaustive. The module expects that you learn much of Java programming by yourself.
In particular, you may want to have a look at the new features introduced in Java 8 such as streams, lambdas, Optionals. These are used in the codebase given to you.
Workload
Given 60% of this module is based on CA, it can appear to be heavy. However, it is not expected that you will spend more time on this module than its peer modules (e.g., if this module is core for you, it should not take more time than other level 2 core modules in your program).
- Note that the module contains more things than a typical students can do, in order to provide enough things for even the strongest students to learn as much as they wish to.
- This means it is perfectly OK if you don't have time to learn everything the module offers. Control your workload based on time you spend for the module in a week e.g., 1-1.5 days per week.
- We have provided a star rating system to guide you when prioritizing which things to do.
Star rating system
Start with things that are rated one-star and progress to things with more stars. Things rated four stars are optional.
Star ratings for Learning Outcomes (and textbook sections):
-
One-star LOs : The LOs you need to achieve just to keep up with the module. We recommend you to achieve these LOs if you want to pass the module (i.e. up to a C grade).
-
Two-stars LOs : Can get you up to a B+.
-
Three-stars LOs : Can get you up to an A.
-
Four-stars LOs : Can be useful for getting an A+, tutors positions, and getting into downstream SE modules that have competitive entry requirements (e.g., CS3281&2, CS3217, CS3216). Four-star LOs are not examinable. Omitting them will not affect your CAP (as A+ has the same CAP as an A grade)
-
LOs marked with two icons e.g., : , : , : , : are relevant LOs you are expected have achieved in prerequisite modules. They are given for reference and are examinable. The number of stars indicate the progression of topics, similar to the star rating system above i.e., one-star prerequisite LOs are the most basic and the most important. Four-star pre-requisite LOs can be ignored without affecting CAP.
Star ratings for other things e.g., admin info sections:
- The module uses a similar star rating system to indicate the importance of other info in this website. i.e., information rated as one-star are the most essential. Info rated four stars are non-essential and can be ignored without affecting your ability to follow the module.
The main language used in this module is Java. You should use Java for all programming activities, the project, and exam answers. The module doesn’t “teach” Java, but only introduces some topics essential to get you started. We expect you to learn on your own any Java constructs that are not covered in the lectures, but used in the provided codebase. |
Java coding standard
This module follows the OSS-NUS Java coding standard.
In the project you are required to follow basic and intermediate guidelines (those marked as ⭐️ and ⭐️⭐️). In other programming activities in the module, we recommend (but not require) you to follow the coding standard.
This module is supported by a customized online text book **Software Engineering for Self-Directed Learners*, integrated into this module website. While it is in a dynamic Web page format, there is a way to save the main text as pdf files. Printer-friendly versions have been provided too.
Relevant: [
Saving as PDF Files
-
Use Chrome to load the page you want to save as pdf.
-
Click on the
Print
option in Chrome’s menu. -
Set the destination to
Save as PDF
, then clickSave
to save a copy of the file in PDF format. For best results, use the settings indicated in the screenshot below.
What are the differences between the T and the non-T version of the module?
Same lectures, same exam. Separate tutorials, separate project grading. Unless specified otherwise, whatever is stated for one module applies to the other.
Why the workload is so high?
CS2113/T prepares you for many higher-level project modules (CS3216/7, CS3203, CS3281/2, etc.), each requiring a slightly different skill set. It is also the only SE module some of you do before going for industry internships. Therefore, we have to cover many essential SE concepts/skills and also provide enough exercises for you to practice those skills. This is also why we don't have time to go very deep into any of the topics.
Remember, everything you learn here is going to be useful in a SE-related career.
Also, consider this a gradual introduction to 'heavy' modules; most project modules you do after this are going to be much heavier 😛
How to reduce the workload? You can omit Learning Outcomes rated . Furthermore, control the project workload by using no more than a fixed amount of time weekly on the project (e.g., 1 day).
What are the extra requirements to get an A+?
In CS2113/T, A+ is not given simply based on the final score. To get an A+ you should,
- score enough to get an A
- be considered technically competent by peers and tutor (based on peer evaluations and tutor observations)
- be considered helpful by peers (based on peer evaluations and tutor observations)
- In particular, you are encouraged to be active on the slack channel and our forum and give your inputs to ongoing discussions so that other students can benefit from your relatively higher expertise that makes you deserve an A+.
- Whenever you can, go out of your way to review PRs created by other team members.
Tutorial 1
Note: We use Tutorial 1
to mean the tutorial in week 1
.
No tutorial in week 1.
Lecture 1
This lecture is compulsory to attend.
Slides:
Uploaded on IVLE.