- Set up the tools before the lecture
- Submit the pre-module survey by Wednesday 2359
- Learn about the module
- Attend the first lecture
1 Set up the tools before the lecture
- Follow the Preparation instructions of the following tools.
Admin Programming Language
The main language used in this module is Java. You should use Java for all programming activities, the project, and exam answers. The exam expects you to know Java to the extent that you should be familiar with it by virtue of using it in the module exercises/projects. |
Preparation:
We require you to use Java 11 (the Oracle version or the OpenJDK version) for all module work. It is your duty to ensure the code you write (and executables you produce) are compatible with that version of Java. Any incompatibilities will be considered as bugs.
Java coding standard
This module follows the this Java coding standard.
You are required to follow basic guidelines (those marked as ⭐️) in the module projects. Intermediate and advanced guidelines are optional.
Admin Tools - GitHub
Tool Used: GitHub (for Code Hosting)
You are required to use GitHub as the hosting and collaboration platform of your project (i.e., to hold the Code repository, Issue Tracker, etc.).
Preparation:
Create a GitHub account (if you don't have one yet), as explained in the panel below.
Admin Appendix E - GitHub: Creating an Account
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 profile photo that matches our requirements.
Why am I being encouraged to complete my GitHub profile?
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.
-
You are discouraged from changing your GitHub username during the semester/exam/grading period as it can cause our auto-grading scripts to miss your GitHub activities. If you do change your GitHub username during that period, please let us know immediately.
The purpose of the profile photo is for the teaching team to identify you. Therefore, choose a recent individual photo showing your face clearly (i.e., not too small) -- somewhat similar to a passport photo. Some examples can be seen in the 'Teaching team' page. Given below are some examples of good and bad profile photos.
If you are uncomfortable posting your photo due to security reasons, you can post a lower resolution image so that it is hard for someone to misuse that image for fraudulent purposes. If you are concerned about privacy, you may use a placeholder image in place of the photo in module-related documents that are publicly visible.
More info: See Appendix E - Using GitHub.
Admin Tools - RCS
Tool Used: Git (for Revision Control)
You are required to use Git. Other revision control software are not allowed. The recommended GUI client for Git is SourceTree, but you may use any other, or none.
Preparation:
Install Git and a Git GUI client on your computer.
SourceTree comes with bundled with Git i.e., if you install SourceTree, you get both Git and a GUI client in one shot.
Set Git user.name
: We use various tools to analyze your code. For us to be able to identify your commits, we encourage you to set your Git user.name
in all computers you use to a sensible string that uniquely identifies you. For example, you can set it to your GitHub username or your full name. If this user name is not set properly or if you use multiple user names for Git, our tools might miss some of your work and as a result you might not get credit for some of your work.
After installing Git in a computer, you can set the Git username as follows:
- Open a command window that can run Git commands (e.g., Git bash window)
- Run the command
git config --global user.name YOUR_GITHUB_USERNAME
(omit the--global
flag to limit the setting to the current repo only)
e.g.,git config --global user.name JohnDoe
More info about setting Git username is here.
Admin Tools - IDE
Tool Used: Intellij IDE
You are recommended to use Intellij IDEA for module-related programming work. While the use of Intellij is not compulsory, note that module materials are optimized for Intellij. Use other IDEs at your own risk.
Preparation:
- Install the IDE in your computer. You may use the Intellij community edition (free) or the ultimate edition (free for students).
- If you have an older version of the IDE, we recommend updating to the latest version (i.e., 2019 edition).
Admin Tools - repl.it
Tool Used: Repl.it (for Coding Exercises)
- We'll be using
Repl.it
for coding exercises (compulsory).
Preparation:
- Create an account on https://repl.it.
- Make sure you set your first name in your
repl.it
user profile to be exactly the same as your GitHub username (so that our grading scripts can trace yourrepl.it
submissions). The last name field is not used by the scripts (i.e., you can set it to any value). - Join the
repl.it
classroomcs2113-2020 Jan-Apr
using this link https://repl.it/classroom/invite/jmu7TQ6.
2 Submit the pre-module survey by Wednesday 2359
- Submit the pre-module survey (compulsory)
Pre-Module Survey will be available on LumiNUS Week 1 Monday - Friday 2359. We need all of you to submit it because it tells us some important information about you, especially your GitHub username.
3 Learn about the module
- Read the following admin info about the module.
Admin Module expectations and the star rating system
Workload
As 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 e.g., if this module is core for you, it should not take more time than other level 2 core modules in your programpeer modules.
- 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
We use a star rating system indicate the importance of module components. Start with things that are rated one-star and progress to things with more stars. Things rated four stars are optional.
Star ratings for topics (and textbook sections):
- One-star topics are essential to keep up with the module. We recommend you to learn these topics if you want to pass the module (i.e. up to a C grade).
- Two-stars topics can get you up to a B+.
- Three-stars topics can get you up to an A.
- Four-stars topics : OPTIONAL can push you beyond the limits of the module, and help you get into a level above those who merely limit themselves to the topics of the module. They are not examinable.
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.
Admin Using this website [essential info]
The Schedule page is your main source of information for CS2113/T. You will need to refer to it weekly. For an overview of the full schedule, refer to the Full Timeline page.
More details for the upcoming weeks will be added as the weeks progress. In general, information given for more than 1 week into the future should be treated as tentative.
Browser compatibility
Most of this will work on most mainstream Browsers, but embedded slides are best viewed using Chrome.
Information layers
This book tries to layer information so that readers can decide to omit less important layers if they wish to.
More important information are in bold or highlighted while less important information are dimmed or in collapsed panels such as the below.
Some less important info in a minimized panel
Less important info
Some less important info in a boarder-less panel
Less important info
Some less important info in a panel
Less important info
Tabs indicate alternative formats of the same content (e.g. video vs text). You can choose the one you like and ignore the other tabs.
Some textual description of X
Video describing X
Dotted underlines indicate tool tips (activated by hovering over it) and dashed underlines indicate modal windows (activated by clicking) containing additional information.
Tooltip ExampleThis website uses a star rating system to indicate the priority level of contents.
Admin Module Expectations → Star Rating System
Star Rating System
We use a star rating system indicate the importance of module components. Start with things that are rated one-star and progress to things with more stars. Things rated four stars are optional.
Star ratings for topics (and textbook sections):
- One-star topics are essential to keep up with the module. We recommend you to learn these topics if you want to pass the module (i.e. up to a C grade).
- Two-stars topics can get you up to a B+.
- Three-stars topics can get you up to an A.
- Four-stars topics : OPTIONAL can push you beyond the limits of the module, and help you get into a level above those who merely limit themselves to the topics of the module. They are not examinable.
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.
Admin Using this website [more info]
Conventions used
Shorthand headings
Meaning of some shortened headings:
-
What : the meaning of the concept in concern
Example
-
Why : the motivation behind the concept in concern
Example
-
How : the usage of the concept in concern
Example
-
When : the pros and cons of the concept in concern, when to use the concept
Example
Boxed-text styles
Meaning of icons
extra : tangential info, can be ignored if not interested
: direct link to the LO. Ctrl+Click
to open the LO in new window/tab.
: learning outcomes
: prerequisite learning outcome
: examples
: resources
: exercises
: printable version
: preview/more info
: video
: textual description
: slides
: output produced by running code
question without answer
question with answer
: tasks to do
: lecture
: tutorial
: evidence you can use to prove you have achieved a learning outcome
⏰ : deadline
Searching for keywords
Use the search box in the top navigation bar to search for keywords in the website pages. If you cannot find the content related to a keyword, let us know by posting in the forum so that we can add the missing keyword to our search index.
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.
Printing Textbook Content
Printer-friendly version (indicated by icon) have been provided for each chapter and the whole book. You can use them for saving as pdf files or printing.
Making this Website Better
This website was generated using the MarkBind software developed at NUS. We welcome bug reports, suggestions, and contributions, to be submitted at the website issue tracker.
Admin Weekly schedule
[Wednesday (previous week)]
- Attend the lecture to,
- see a recap of the preceding week's topics
- get an introduction to the current week's topics
- submit the in-lecture quiz/activities (if any)
Admin Lectures
Timing/venue:
Module | Venue | Time |
---|---|---|
CS2113/T | LT15 | 1200-1400 |
Lectures start on time sharp and end around 15 minutes before official end time.
Attendance: Attendance for the first lecture is compulsory.
Handouts: There are no handouts. All learning materials are organized around topics, are given in Web format, can be found in the Textbook section (organized by topics), and are also embedded in the Schedule page (organized by order of coverage).
Slides: Our lecture slides are not suited for printing or to be used as a reference during the lecture/exams. They are only an aid for lecture delivery. Slides will be uploaded to LumiNUS after the lecture.
[Wednesday (previous week) - Tutorial day]
- Use the relevant learning resources to learn the topics.
- Self-test your knowledge using exercises given in the learning resources.
- Submit the post-lecture quiz/exercises (if any)
- Do project tasks (e.g., attend weekly project meeting, finish weekly deliverables)
- If you don't have time to learn all topics assigned to the week, use the star rating system to decide which ones to do first.
[Tutorial Day (Monday - Tuesday)]
- Attend the tutorial to,
- demonstrate evidence of your learning weekly topics to the tutor
- learn from peer demos of showing evidence of their own learning
Admin Tutorials
Our tutorial IDs are different from LumiNUS. Format: CS2113T-W09
means a tutorial of CS2113T
module, held on Wednesday
at 0900
, and so on.
Module | Venue | Time | in LumiNUS (don't use this!) |
Our Tutorial ID (use this!) |
Tutors (contact details) |
---|---|---|---|---|---|
CS2113T | COM1-B103[1] | Mon 16:00 | CS2113T-M16 |
Damith | |
CS2113T | CS2113T-M17 |
||||
CS2113T | COM1-B103 | Tue 12:00 | CS2113T-T12 |
Ryan, Wei Xiang | |
CS2113T | COM1-B103 | Tue 13:00 | CS2113T-T13 |
Tejas, Wei Xiang | |
CS2113 | COM1-B103 | Tue 14:00 | CS2113-T14 |
Glen, Rachel | |
CS2113 | COM1-B103 | Tue 15:00 | CS2113-T15 |
Jerry, Manaswini |
Tutorial Structure
What happens during the tutorial:
-
A tutorial group is handled by two tutors. Each tutor will work with two teams.
-
The tutor will facilitate tutorial activities, observe your progress, and give feedback. If you are facing difficulties with a weekly activity, the tutor can direct you to get help from another student in the tutorial.
-
Please bring your laptop to tutorials. You'll need it for tutorial tasks.
Admin Appendix C(FAQ): What if I don't carry around a laptop?
What if I don’t carry around a laptop? : OPTIONAL
If you do not have a laptop or prefer not to bring the laptop, it is up to you to show your work to the tutor in some way (e.g. by connecting to your home PC remotely), without requiring extra time/effort from the tutor or team members.
Reason: As you enjoy the benefits of not bring the laptop; you (not others) should bear the cost too.
The role of our tutors is different from tutors in other modules.
- No direct tech help: Tutors are prohibited from giving direct technical help, other than to give you some general direction to finding a solution. Rationale: We want you to learn the vital survival skill of troubleshooting technical problems.
Admin Appendix D: How to get Help in CS2113/T
This guide is mostly about getting tech help, but it also applies to getting clarifications on module topics too. e.g. what is the difference between refactoring and rewriting?
Keep in mind that instructors don't have ready solutions to all technical problems. Unlike tutorial questions for which instructors have model solutions, given the complexity of industry tools we use (Gradle, Travis, Git, ...) and the rapid pace they are updated, instructors don't have ready solutions to most technical problems you face in this module. The only realistic way to solve those problems at a large scale is crowd-sourcing i.e., someone else who faced a similar problem might know how to fix it.
What not to do:
- Send a help request to an instructor: When faced with a technical problem or a doubt about a concept, don't fire off an email lecturer/tutor immediately, unless it is something only the lecturer/tutor is supposed to know.
- Request to meet the instructor to solve the problem: That can only work if the person is supposed to know how to solve all technical problems, which is not the case.
What to do:
-
Double-check the given instructions: Often, technical problems arise due to deviations in how you perform a step or a difference in your environment.
-
Get your team to meet for a weekly work-together session. When you do module tasks together, it is easy to compare with each other and figure out what deviation is causing the problem. That is, crowd-source your team first.
-
Search: It is very likely the answer already exists somewhere in the cyberspace. Almost every programming-related question has been answered in places like stackoverflow. Don't give an opportunity for someone to ask you to STFW.
Pay attention to the error message you encounter. Sometimes it also contains hints as to how to fix the problem. Even if not, a web search on the error message is a good starting point.
-
Ask in the module forum:
-
Give full details of the problem Conversations via online forums take time. If you post everything that is relevant to your problem, your chances of getting an answer in the first try is higher. If others have to ask you more questions before they can help you, it will take longer. But this doesn't mean you dump too much information into the thread either.
- Include full error message, screenshots, code snippets, stack traces, etc.
- If the problem is code-related, push the current state of the code to a branch in your fork and give the link to the branch. That gives a chance for someone to reproduce the state of your project in their computer.
- Include full error message, screenshots, code snippets, stack traces, etc.
-
Avoid addressing the question to one person (e.g., the prof), unless really necessary. Doing so will discourage others from answering that question.
-
Isolate the problem. "My code doesn't work" isn't going to help even if you post the whole code. Others don't have time to go through all of your code. Isolate the part that doesn't work and strip it down to the bare minimum that is enough reproduce the error. Sometimes, this process actually helps you to figure out the problem yourself (have you heard about Rubber Duck Debugging?).
How to isolate problematic code? Delete code (one bit at a time) that is confirmed as not related to the problem. Do that until you can still reproduce the problem with the least amount of code remaining.
-
Generalize the problem. "How to write tasks to a text file using Java" is too specific to what you are working on. You are more likely to find help if you post a thread called (or search for) "How to write to a file using Java".
-
Remember to thank those you try to help, and close the issue after the issue has been resolved.
-
Rubber duck debugging is an informal term used in software engineering to refer to a method of debugging code. The name is a reference to a story in the book The Pragmatic Programmer in which a programmer would carry around a rubber duck and debug his code by forcing himself to explain it, line-by-line, to the duck.
[for more, see wikipedia entry]
- Ask the world using programming forums such as stackoverflow.
-
PLEASE search for existing answers before you post your question in those public forums; You don't want to appear as a 'clueless' or 'too lazy to do your research' person in a public forum.
Know what these stand for: RTFM, STFW, GIYF
-
- Raise your question during a tutorial. Some questions can be discussed with the tutor and tutorial-mates.
What kind of questions are suitable to discuss with the tutor? Consider these two questions you might want to ask a tutor:
- Good This is how I understood/applied coupling. Is that correct? - Such questions are welcome. Reason:This question shows you have put in some effort to learn the topic and seeking further clarification from the tutor.
- Bad What is coupling? - Such questions are discouraged. Reason: This question implies you haven’t done what you could to learn the topic in concern.
- Ask the lecturer: Failing all above, you can talk to the lecturer before/after the lecture, or email the lecturer.
Some technical problems can take a long time to resolve. Therefore, plan ahead and schedule your work much earlier than the deadline.
Some problems might not get resolved at all; while waiting for a solution, explore alternatives and workarounds.
Resources
- [lifehacker article] Google Tips and Tricks Every Student Should Know
- [Article] How To Ask Questions The Smart Way by Eric Steven Raymond
- No ‘teaching’: Tutors are prohibited from “teaching” concepts that are covered in lectures or other learning resources given to you as self-learning is a vital part of the module. For example, the tutor will not do a mini-lecture at the start of the tutorial. Of course tutors can help you clarify doubts under the right circumstances.
Admin Appendix D (extract): Questions suitable for tutor
- Raise your question during a tutorial. Some questions can be discussed with the tutor and tutorial-mates.
What kind of questions are suitable to discuss with the tutor? Consider these two questions you might want to ask a tutor:
- Good This is how I understood/applied coupling. Is that correct? - Such questions are welcome. Reason:This question shows you have put in some effort to learn the topic and seeking further clarification from the tutor.
- Bad What is coupling? - Such questions are discouraged. Reason: This question implies you haven’t done what you could to learn the topic in concern.
- No leading from the front: Tutors are not expected to lead your project effort. They will not tell you how to do project tasks or when to do project tasks. You have to figure those out yourselves. But tutors will give you feedback on how you are doing (or have done) project tasks so that you can improve further.
Timing/venue:
- Please refer to the Schedule page for further details on each tutorial.
- You are expected to arrive on time. Punctuality is considered for participation marks.
- You may leave the class 15 minutes before the hour if you have another class right after. There is no need to wait till the tutor dismisses you. However, inform the tutor (as a courtesy) before leaving if you leave before the class is dismissed.
- Vacate the table 5 minutes before the hour so that the next group can start on time.
- In the past, many students have requested to increase the tutorial duration because a mere hour is barely enough to get through all the tutorial tasks. Increasing the tutorial time is not possible due to lack of venues and tutors. Instead, let's try to make the best of the one hour available by coming well prepared and starting on time. Note that the better prepared you are, the higher the chance of completing e all activities allocated to a tutorial within time.
Grading:
- Your conduct in tutorials will be evaluated by team members and the tutor which can affect your participation marks.
Admin Module overview
An iterative introduction to Software Engineering...
CS2113/T is an introductory Software Engineering module covering a balance of basic SE theory and practical skills needed to work in a project that has a software component. The module follows an going through SE topics several times while increasing depth, as opposed to going through topics sequentiallyiterative approach to covering topics. The module also introduces you to the Java programming language, the OOP paradigm, and some basic UML models.
-
The theory side of this module is supported by a customized online textbook Software Engineering for Self-Directed Learners, integrated into this module website.
-
On the practice side, you will first ramp up your technical skills by doing a small individual project in which you will develop a personal assistant chatbot called Duke. Then, you will move to a team project in which you will build another small Comman Line InterfaceCLI app while working as a team.
Admin FAQ: What are the differences between CS2113 and CS2113T?
4 Attend the first lecture
- Attend the Week 1 lecture (Week 1 lecture is compulsory).
- Bring your computer to the lecture. Some lecture activities will need it.