This site is from a past semester! The current version is here.
CS2113/T Aug '19
  • Week 1 [Aug 12]
  • Week 2 [Aug 19]
  • Week 3 [Aug 26]
  • Week 4 [Sep 2]
  • Week 5 [Sep 9]
  • Week 6 [Sep 16]
  • Week 7 [Sep 30]
  • Week 8 [Oct 7]
  • Week 9 [Oct 14]
  • Week 10 [Oct 21]
  • Week 11 [Oct 28]
  • Week 12 [Nov 4]
  • Week 13 [Nov 11]
  • Textbook
  • Admin Info
  • Report Bugs
  • Slack
  • Forum
  • Project Info
  • Instructors
  • Announcements
  • File Submissions
  • Tutorial Schedule
  • Duke
  • Project Phase1 Dashboard
  • Java Coding Standard
  • samplerepo-things
  • Projects List
  • config.json templates for Reposense
  • PersonalAssistant-Duke
  • Project Phase2 Dashboard
  • Reference project - Addressbook
  • Repl.it classroom
  • Next Week

    Week 1 [Aug 12]

    Admin info relevant to the week will appear in this tab.

    The Schedule page is your main source of information for CS2113/T. You will need to refer to it weekly.

    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.

    Less important info

    Less important info

    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.

    Additional information
    Additional information

    This website uses a star rating system to indicate the priority level of contents.

    Relevant: [Admin Module Expectations → Star Rating System ]

     

    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 topics : The topics you need to learn just 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 : 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 topics are not examinable. Omitting them will not affect your CAP (as A+ has the same CAP as an A grade)

    • Topics marked with two icons e.g., : , : , : , : are relevant topoics you are expected have learned in prerequisite modules. They are given for reference, but are examinable. The number of stars indicate the progression of topics, similar to the star rating system above i.e., one-star prerequisite topics are the most basic and the most important. Four-star pre-requisite topics 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.

    Conventions Used

    Shorthand Headings

    Meaning of some shortened headings:

    • What : the meaning of the concept in concern

    • Why : the motivation behind the concept in concern

    • How : the usage of the concept in concern

    • When : the pros and cons of the concept in concern, when to use the concept

    Boxed-Text Styles

    additional info warning positive message important message an error to avoid tip definition

    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
    >_ : a command to be run in a terminal
    : 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

    1. Use Chrome to load the page you want to save as pdf.

    2. Click on the Print option in Chrome’s menu.

    3. Set the destination to Save as PDF, then click Save 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.

    [Friday (previous week)]

    Attend the lecture for,

    • a recap of the preceding week's topics
    • an introduction to the current week's topics

    Relevant: [Admin Lectures ]

     

    Timing/venue:

    Semester Venue Time
    Semester 1 (Aug-Nov) LT19 Friday 1600-1800
    Semester 2 (Jan-April) LT15 Wednesday 1200-1400

    Lectures start on time sharp and end around 15 minutes before official end time.

    CS2113T lectures are same as that for CS2113. Please ignore the CS2101 session scheduled at the same slot. That is a dummy slot used to work around a limitation of the Edurec modreg system.

    Attendance: Attendance for the first lecture is compulsory.

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

    Handouts: There are no handouts. All learning materials are organized around topics, are given in Web format, and can be found in the Textbook section and are also embedded in from the Schedule page.

    Slides: Our lecture slides are not suited for printing or using as a reference during the lecture/exams. They are only an aid for lecture delivery. Slides will be uploaded to LumiNUS after the lecture.

    [Saturday (previous week) onwards]

    • Use the relevant learning resources to learn the topics.
    • Self-test your knowledge using exercises given in the learning resources.
    • 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.

    [Wednesday - Friday]

    Attend the tutorial to,

    • demonstrate evidence of your learning of the weekly topics to the tutor
    • learn from peer demos of showing evidence of their own learning

    Relevant: [Admin Tutorials ]

     

    Tutorial Timetable

    Our tutorial IDs are different from LumiNUS/Edurec.
    Format: CS2113T-W12 means CS2113T tutorial in the time slot Wednesday 1200-1300 and so on.

    Module Tutorial ID ID in LumiNUS
    (not to be used)
    Time Venue Tutors (contact details)
    CS2113T W12 (C01) Wed 1200 COM1-B103 TBD
    CS2113T W13 (C02) Wed 1300 COM1-B103 TBD
    CS2113T W17 (C09) Wed 1700 COM1-B103 TBD
    CS2113T T09 (C05) Thu 0900 COM1-B103 TBD
    CS2113T T12 (C04) Thu 1200 COM1-B103 TBD
    CS2113 T13 (1) Thu 1300 COM1-B103 TBD
    CS2113 T14 (3) Thu 1400 COM1-B103 TBD
    CS2113 T16 (2) Thu 1600 COM1-B103 TBD
    CS2113T F09 (C06) Fri 0900 COM1-B103 TBD
    CS2113T F10 (C03) Fri 1000 COM1-B103 TBD
    CS2113T F11 (C08) Fri 1100 COM1-B103 TBD
    CS2113T F14 (C07) Fri 1400 COM1-B103 TBD

    What happens during the tutorial:

    • A tutorial group is handled by two tutors. Each tutor will work with two teams.
    • The tutor will direct students to share/discuss evidence of learning the weekly topics.
    • If some students have met with difficulties while learning a topic, the tutor can direct those students to get help from those who have learned the topic. The number of topics that can be covered in the tutorial session depends on how well-prepared you are.
    • The tutor will observe, and give feedback on how well you are learning required topics.
    • Please bring your laptop to tutorials. You often need it to show evidence of learning the topics. At other times, we ask you to work on project related things with your team members, which too may require the laptop.

    Relevant: [Admin Appendix C(FAQ): What if I don't carry around a laptop? ]

     

    What if I don’t carry around a laptop?

    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. Rationale: We want you to learn the vital survival skill of troubleshooting technical problems.

    Relevant: [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?


    We want to move you away from 'hand holding' and make you learn how to solve problems on your own. This is a vital survival skill in the industry and it needs practice.

    Whether it is a technical problem (e.g. error when using the IDE) or a doubt about a concept (e.g. what is the difference between scripted testing and exploratory testing?)  the teaching team is happy to work with you when you look for a solution/answer, but we do not do it for you. We discourage unconditional direct help from tutors because we want you to learn to help yourself. Yes, we believe in ‘tough love’😝.

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


    What not to do:

    • 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.

    What to do:

    • Check what is given: Check if the problem/concept has been discussed in the lectures, textbook, or the list of resources given to you. Yes, it is easier for you to write an email to the tutor/lecturer instead, but that shouldn't be your default behavior. We know that sometimes it is difficult to find stuff in the resources we have provided. But you should try 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 peers:

      Ask your team members.

      Ask classmates using the module forum. Even if you figured out one way to solve a problem, discussing it on a public forum might lead you to better ways of solving it, and will help other classmates who are facing similar problems too.


      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.

      Here are some tips for posting help request:

      • 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.

      • Learn to isolate the problem. "My code doesn't work" isn't going to help even if you post the whole code online. 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. If not, at least it increases the chance of someone else being able to help you.

        💡 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".

      • Explain well. 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.

        💡 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.
    • Talk to the lecturer before the lecture. The lecturer will be at the lecture venue from 30 minutes before the start of the lecture.

    • Request our help: Failing all above, you can always request for help by emailing the lecturer.

    Resources


    • No ‘teaching’: Tutors are prohibited from “teaching” concepts that are covered in lectures or other learning resources given to you. Self-learning is a vital part of the module. But of course tutors can help you clarify doubts under the right circumstances.

    Relevant: [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.
    • Please make sure you vacate the table 5 minutes before the hour so that the next group can start on time.
    • In the past many students have suggested to increase the tutorial duration because 1 hour is barely enough to get through all weekly topics. 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.

    Grading:

    Tutorials are not graded. However, your conduct will be reviewed by team members and the tutor which will determine your participation marks.

    A balanced and iterative introduction to Software Engineering...

    CS2113/T is an introductory Software Engineering module. The module covers the essentials of Object-oriented programming in addition to SE. It covers roughly a 50-50 balance of basic SE theory and practice that a student needs to know before going for SE internships in the industry or taking higher-level project modules. The module follows an iterative approach of going increasingly deeper into SE by exposing students to a series of increasingly bigger software projects.

    On the theory side, this module is supported by a customized online textbook Software Engineering for Self-Directed Learners, integrated into this module website.

    The practice side of this module is mainly covered by a team project that runs in two phases. The first phase provides opportunities to familiarize with Java programming and OOP. In the second phase, students are expected to enhance the codebase of the first phase to either build a command line based personal assistant or evolve it into a different project.

    Given below is a summary of what the module covers and does not cover.

    Topic Covered Not covered
    Java Used heavily, but not taught extensively syntax (reason: expected to self-learn)
    OOP Used in a non-trivial project, intermediate OOP principles advanced OOP
    SE tools/practices those typically used in a mature, high-rigor SE project those specific to start-ups
    Modeling Some UML notations (sufficient to be able to describe SE artifacts using models, such as seen in this sample Developer Guide) intensive upfront design modeling
    Requirements Some lightweight techniques to gather and document project requirements rapid prototyping, heavy UI design, designing a product from scratch
    Documentation Documentation targeting end users (example) as well as those targeting developers (example) Marketing materials
    Project Management Iterative delivery of a product, Working collaboratively with team members, on-site as well as remotely Setting up project infrastructure from scratch
    Testing basic developer testing and user testing testing for non-functional aspects
    Applications domains Cross-platform desktop applications Web programming, Mobile programming, Database programming

    Admin Appendix C (FAQs) → Where is everything?

    Where is everything?

    The Schedule 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 page is the one page you need to refer weekly. Although there is a lot of content in the 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.

    Admin Module Expectations

    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 Java 8 features 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 topics : The topics you need to learn just 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 : 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 topics are not examinable. Omitting them will not affect your CAP (as A+ has the same CAP as an A grade)

    • Topics marked with two icons e.g., : , : , : , : are relevant topoics you are expected have learned in prerequisite modules. They are given for reference, but are examinable. The number of stars indicate the progression of topics, similar to the star rating system above i.e., one-star prerequisite topics are the most basic and the most important. Four-star pre-requisite topics 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.

    Admin E: Using GitHub [Creating a GitHub Account]

    Create a personal GitHub account if you don't have one yet.

    1. You are advised to choose a sensible GitHub username as you are likely to use it for years to come in professional contexts.

    2. Strongly recommended: Complete your GitHub profile. In particular,

      • Specify your full name.
      • Upload a profile photo that matches our requirements.

      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.

    3. 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, you should 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 can request permission to omit your photo from the page by writing to prof.

    Admin Tools [Communication]

    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.

    • We encourage you to post your questions/suggestions in this github/nusCS2113-AY1920S1/forum.
    • You can use our slack channel https://nus-cs2113-ay1920s1.slack.com for team communications. You need 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 start using this channel).
      • Note that slack is useful for quick chats while issue tracker is useful for longer-running conversations.
      • All official communications from the teaching team will happen via the github/nusCS2113-AY1920S1/forum; the same will be linked to in LumiNUS announcements.
    • You are encouraged to use channels with a wider audience (i.e., the GitHub 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.

    Admin Forming Teams


    [Picture: The team that was at the top of early Google]

    When to form teams

    • CS2113: Team formation will happen in week 3 tutorial.
    • CS2113T: Your team will be formed in the CS2101 class, the same team is applicable in both CS2113T and CS2101.

    Team size: The default team size is five.

    Team ID: This will be given to you after forming teams. It has the form MODULE-TUTORIAL_ID-TEAM_NUMBER e.g, CS2113T-W12-2 means you are a CS2113T team: tutorial W12 (i.e., Wed 1200-1300), team 2.

    Relevant: [Admin Tutorials → Tutorial IDs ]

     

    Our tutorial IDs are different from LumiNUS/Edurec.
    Format: CS2113T-W12 means CS2113T tutorial in the time slot Wednesday 1200-1300 and so on.

    Module Tutorial ID ID in LumiNUS
    (not to be used)
    Time Venue Tutors (contact details)
    CS2113T W12 (C01) Wed 1200 COM1-B103 TBD
    CS2113T W13 (C02) Wed 1300 COM1-B103 TBD
    CS2113T W17 (C09) Wed 1700 COM1-B103 TBD
    CS2113T T09 (C05) Thu 0900 COM1-B103 TBD
    CS2113T T12 (C04) Thu 1200 COM1-B103 TBD
    CS2113 T13 (1) Thu 1300 COM1-B103 TBD
    CS2113 T14 (3) Thu 1400 COM1-B103 TBD
    CS2113 T16 (2) Thu 1600 COM1-B103 TBD
    CS2113T F09 (C06) Fri 0900 COM1-B103 TBD
    CS2113T F10 (C03) Fri 1000 COM1-B103 TBD
    CS2113T F11 (C08) Fri 1100 COM1-B103 TBD
    CS2113T F14 (C07) Fri 1400 COM1-B103 TBD

    Team composition

    We allow some freedom in choosing team members, subject to these constraints:

    • All team members should be in the same tutorial. Delay forming teams until your place in a tutorial is confirmed. We do not allow changing tutorials to team up with your preferred team mates.

    • Teams of single nationality are not allowed  Rationale: to train you to work in multicultural teams. However, we allow same nationality teams if the only language common among all team members is English. e.g. an all-Singaporean team that include both Chinese and Malay students.

    • No more than one exchange students per team Rationale: to increase interaction between exchange students and NUS students.

    • Gender balanced teams are encouraged. While all-male teams may be unavoidable at times (due to high male percentage in the cohort), all-female teams are highly discouraged.

    • Also note that we may modify teams when circumstances call for it. There is no avenue for you to object. Staying with your preferred team is not guaranteed.

    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 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.

    Admin Textbooks

    This module is supported by a customized online textbook Software Engineering for Self-Directed Learners (CS2113 edition), 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: [Admin Using this Website → Saving as PDF files ]

     

    Saving as PDF Files

    1. Use Chrome to load the page you want to save as pdf.

    2. Click on the Print option in Chrome’s menu.

    3. Set the destination to Save as PDF, then click Save to save a copy of the file in PDF format. For best results, use the settings indicated in the screenshot below.

    Admin Tutorials

    Tutorial Timetable

    Our tutorial IDs are different from LumiNUS/Edurec.
    Format: CS2113T-W12 means CS2113T tutorial in the time slot Wednesday 1200-1300 and so on.

    Module Tutorial ID ID in LumiNUS
    (not to be used)
    Time Venue Tutors (contact details)
    CS2113T W12 (C01) Wed 1200 COM1-B103 TBD
    CS2113T W13 (C02) Wed 1300 COM1-B103 TBD
    CS2113T W17 (C09) Wed 1700 COM1-B103 TBD
    CS2113T T09 (C05) Thu 0900 COM1-B103 TBD
    CS2113T T12 (C04) Thu 1200 COM1-B103 TBD
    CS2113 T13 (1) Thu 1300 COM1-B103 TBD
    CS2113 T14 (3) Thu 1400 COM1-B103 TBD
    CS2113 T16 (2) Thu 1600 COM1-B103 TBD
    CS2113T F09 (C06) Fri 0900 COM1-B103 TBD
    CS2113T F10 (C03) Fri 1000 COM1-B103 TBD
    CS2113T F11 (C08) Fri 1100 COM1-B103 TBD
    CS2113T F14 (C07) Fri 1400 COM1-B103 TBD

    What happens during the tutorial:

    • A tutorial group is handled by two tutors. Each tutor will work with two teams.
    • The tutor will direct students to share/discuss evidence of learning the weekly topics.
    • If some students have met with difficulties while learning a topic, the tutor can direct those students to get help from those who have learned the topic. The number of topics that can be covered in the tutorial session depends on how well-prepared you are.
    • The tutor will observe, and give feedback on how well you are learning required topics.
    • Please bring your laptop to tutorials. You often need it to show evidence of learning the topics. At other times, we ask you to work on project related things with your team members, which too may require the laptop.

    Relevant: [Admin Appendix C(FAQ): What if I don't carry around a laptop? ]

     

    What if I don’t carry around a laptop?

    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. Rationale: We want you to learn the vital survival skill of troubleshooting technical problems.

    Relevant: [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?


    We want to move you away from 'hand holding' and make you learn how to solve problems on your own. This is a vital survival skill in the industry and it needs practice.

    Whether it is a technical problem (e.g. error when using the IDE) or a doubt about a concept (e.g. what is the difference between scripted testing and exploratory testing?)  the teaching team is happy to work with you when you look for a solution/answer, but we do not do it for you. We discourage unconditional direct help from tutors because we want you to learn to help yourself. Yes, we believe in ‘tough love’😝.

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


    What not to do:

    • 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.

    What to do:

    • Check what is given: Check if the problem/concept has been discussed in the lectures, textbook, or the list of resources given to you. Yes, it is easier for you to write an email to the tutor/lecturer instead, but that shouldn't be your default behavior. We know that sometimes it is difficult to find stuff in the resources we have provided. But you should try 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 peers:

      Ask your team members.

      Ask classmates using the module forum. Even if you figured out one way to solve a problem, discussing it on a public forum might lead you to better ways of solving it, and will help other classmates who are facing similar problems too.


      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.

      Here are some tips for posting help request:

      • 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.

      • Learn to isolate the problem. "My code doesn't work" isn't going to help even if you post the whole code online. 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. If not, at least it increases the chance of someone else being able to help you.

        💡 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".

      • Explain well. 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.

        💡 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.
    • Talk to the lecturer before the lecture. The lecturer will be at the lecture venue from 30 minutes before the start of the lecture.

    • Request our help: Failing all above, you can always request for help by emailing the lecturer.

    Resources


    • No ‘teaching’: Tutors are prohibited from “teaching” concepts that are covered in lectures or other learning resources given to you. Self-learning is a vital part of the module. But of course tutors can help you clarify doubts under the right circumstances.

    Relevant: [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.
    • Please make sure you vacate the table 5 minutes before the hour so that the next group can start on time.
    • In the past many students have suggested to increase the tutorial duration because 1 hour is barely enough to get through all weekly topics. 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.

    Grading:

    Tutorials are not graded. However, your conduct will be reviewed by team members and the tutor which will determine your participation marks.

    Admin Appendix C (FAQs) → What are the differences between the T and the non-T version of the module?

    What are the differences between the T and the non-T version of the module?

    • Same lectures, same exam.
    • Separate tutorials.
    • The T version reuses (to some extent) the documentation in CS2101.

    Unless specified otherwise, whatever is stated for one module applies to the other.

    Admin Appendix C (FAQs) → Why the workload is so high?

    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).

    Admin Appendix C (FAQs) → What are the extra requirements to get an A+?

    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 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.