CS2103/T
  • Schedule
  • Textbook
  • Handbook
    • This is your main source of information for CS2103/T. You will need to refer to it weekly.
    • Important bits of information are highlighted. Less important additional information are dimmed out.
    • Details for the upcoming weeks will be added as the weeks progress.
    • It also contains a lot of links to additional resources. It’s fine if you don’t have time to read them now. They are for your future reference too (i.e. after the semester is over).
    • You can access this page after this semester using this link http://www.comp.nus.edu.sg/~cs2103/AY1617S2

    1. Attend the lecture for a recap on the preceding week's topics, as well as an introduction to the current week's topics.

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

    3. a. Perform some of the learning activities recommended for the week.
      b. Meet with team members and help each other to complete all basic and intermediate learning activities collectively as a team.

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

    Module Tutorial ID Time Venue Tutors (contact details)
    CS2103T W09 Wed 0900 COM1-B103 TBD
    CS2103 W10 Wed 1900 COM1-B103 TBD
    CS2103T W13 Wed 1300 COM1-B103 TBD
    CS2103T W14 Wed 1400 COM1-B103 TBD
    CS2103T W15 Wed 1500 COM1-B103 TBD
    CS2103T T09 Thu 0900 COM1-B103 TBD
    CS2103 T11 Thu 1100 COM1-B103 TBD
    CS2103 T15 Thu 1500 COM1-B103 TBD
    CS2103 T16 Thu 1600 COM1-B103 TBD
    CS2103 F12 Fri 1200 SR5 (COM1-0201) TBD
    CS2103T F14 Fri 1400 SR5 (COM1-0201) TBD

    Delay forming teams until your place in a tutorial is confirmed. Read the Teams section of the handbook before forming teams.

    Apart from this Schedule page, there are two other important sources of information.

    • The 'module handout' (available from IVLE files) is a self-contained set of materials that has been compiled as an e-book. The purpose of the handout is to serve as a reference to the materials covered during the lectures. As the handout is meant to be used in any introductory software engineering course, it does not contain course-related details such as assignment deliverables.
    • The 'module handbook' specifies the course requirements of CS2103/T and is very comprehensive. There is no need to read everything; we will point you to the correct sections in due time.

    Handbook sections to read around this time:

    You are going to start programming soon.

    Brush up your Java programming skills. This module requires you to write Java code almost every week.

    Advanced: Have a look at Java 8 new features.

    More about lectures

    Overview: As a Software Engineer you can do great things.

    Resources: {'Resources' listed in this document are non-examinable unless stated otherwise}

    • Interesting readings:
      • [Article] Why Software Is Eating The World (An article in The Wall Street Journal)
      • [Video] Steve jobs on the joy of creation
      • [Developer blog post] Why no one's looking for 'rockstar programmers'
      • [Book excerpt] Any time you write code, you could be saving lives, as this anecdote from from Walter Isaacson's Steve Jobs Biography tells us.
      • [Quora post] What do the top 1% of software engineers do that the other 99% do not?
      • [Blog post] We code; We rule the world!

    {If you know more useful resources, please let us know using this link so that we can share it with the class}

    [no handout] [ Slides]

    Overview: This is a killer module. What doesn't kill you will make you stronger.

    Topics: Module outcomes. Project intro.

    Resources:

    • Interesting readings:
      • [Blog post] Hackers and Software Engineers
      • [Web article] How to Get a Job at Google - Read this to learn how Google values 'ability to learn' over expertise.
      • [Web article] The Craiglist penis effect - How you can be average and still do better than most
      • [Web article] Computer Science: Lessons Learned - How to Succeed at a CS Education
      • We are not going to give you lot of help in this module. Here is why.
      • [Post from Google inc.] The tech skills and courses Google recommends for Software Engineers
      • [Web article] If You're the Best One in the Room, You're in the Wrong Room - This is why you should not always team up with the same group of people, especially friends.

    [Handout] [Slides]

    Overview: The IDE is one of the primary tools in your trade and you should know how to use it well.

    Topics: IDEs, debugging

    Resources:

    • Eclipse resources
      • [Slides] Getting started with Eclipse
      • [Slides] Debugging with Eclipse
      • [Article] Eclipse tips and tricks (There are many other similar resources on the Web. Find more on your own)
      • [Article] Eclipse keyboard shortcuts
    • Interesting side reading
      • [Dev opinion] Does relying on an IDE for development make you a bad programmer?
      • [Dev opinion] Programmer, know thy tools!
      • [Humor] The six stages of debugging

    [ Handout] [ Slides]

    Overview: Any modifications to existing code should be followed by regression testing to ensure the code still works. Frequent regression testing is practical only if they are automated.

    Topics: testing, Scripted vs Exploratory testing, regression testing, test automation (Text UIs)

    Resources:

    • [Humor] Another example of the 'butterfly effect'

    Note that IVLE quizzes open on Fridays just after the lecture and closes on the following Tuesday 2359.

    Pre-Tutorial Learning Activities are work to be done before coming to the tutorial. These can earn participation marks.

    Achieve level learning outcomes of

    Complete the exercise for the learning outcome:

    AddressBook-Level1: Use a debugger [LO-Debugging]

    Submission: Demo your debugging skills to the tutor during the tutorial. There's no need to find a bug. Just show how you can insert break points, step through code, inspect variable values, step in to methods, etc.

    If you don't use a scheduling/task tracking tool (also known as GTD tools) to manage your schedules/tasks, start using one. There are many available (e.g. Google Calendar + Google Tasks, Todo.txt, Fantastical, Wunderlist, Any.do, Remember The Milk, etc. here's a long list). Not only it will help to keep track of your work, but also it will help you better understand the product domain of the module project. If you feel sceptical about this, check out rule #1 in this article.

    To encourage you to do the above, we resist sending you reminders about module deadlines etc. You are expected to keep track of the them yourself.

    {This learning activity is to experience the user's point of view of the problem you are going to solve in your project later.}

    Submission: Show to the tutor your current schedule as seen on the UI of the software you are using.

    Complete the exercise for the learning outcome:

    AddressBook-Level1: Automate CLI testing [LO-AutomatedCliTesting]

    Submission: Demo how you run the tests to the tutor.

    If you have not used Java Collections classes (ArrayList, HashMap, HashMap, etc.), Enums, or Varargs, complete the exercises for the corresponding learning outcomes below:

    Submission: Show your code to the tutor during the tutorial.

    If you do not have confirmed tutorial group yet, attend the slot you chose in the 'Temporary Tutorial Registration' on IVLE.

    CS2103T: Sit with members of your your phase A team (formed by CS2101).

    CS2103: Form tentative phase A teams for this week. Teams will be finalized next week.

    Demo to the tutor results of your pre-tutorial learning activities.

    If you have further questions about the lecture topics that you could not resolve even after the tutorial, your can talk to the lecturer or find more in the handout section below.