This site is from a past semester! The current version will be here when the new semester starts.

TIC2002 Introduction to Software Engineering


Module overview

TIC2002 Introduction to Software Engineering contains roughly a 50-50 balance of theory and practice of SE. It covers the knowledge/skills necessary to do small software projects, and as such, it is a first step towards preparing you to work in bigger SE projects, which will be done in later modules.

This module is optimized for SCALE students so that you can learn at your own pace even if you are not a full-time student: the need to attend lectures/tutorials at fixed times is low, deadlines are more flexible than usual, and the on-campus presence is optional.

e.g., Instead of traditional instructor-led tutorials, the module provides quizzes and other activities that you can do at your own time to self-test your knowledge. The instructor can be consulted if you need help with any of them.


Using this module website

The Schedule page is your main source of information for TIC2002. 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 boarder-less panel


Some less important info in a panel


Tabs indicate alternative 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 (activated by hovering over it) and dashed underlines indicate modal windows (activated by clicking) containing additional information.

This website uses a topic levels system to indicate the progression of contents from basic/relevant topics to advanced/less-relevant topics.

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)

Meaning of icons

: additional info
: warning
: positive message
or : important message
: error or danger to avoid
or : tip
: definition or topic
extra : tangential info, can be ignored if not interested
: learning outcomes
: 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
: 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

Follow this guide @SE-EDU/guides.

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.


Instructors

Damith Chatura RAJAPAKSE (Module Coordinator)
Associate Professor, NUS School of Computing
PhD, Software Engineering, NUS, 2002-2006
BSc, Computer Science & Engineering, University of Moratuwa, 1996-2001
damith[at]comp.nus.edu.sg
COM2-02-57
651 64359
https://www.comp.nus.edu.sg/~damithch

Tutors:

  • Richard Dominick:   dominick[at]u.nus.edu

Lectures + Tutorials

Tuesdays 6.30-9.30pm
COM1-0207

A TIC2002 lecture + tutorial time is divided into three parts, as follows:

  • [6.30-7.00pm] Pre-lecture consultations:
    • You can use this time to get prof's help if you encountered problems while doing the previous week's tasks.
    • This session will be online. Communications with the prof is to be done using Microsoft Teams app.
      • If the question is is potentially relevant to others in the class, post your question in the chat room of the TIC2002-2023 Jan-Apr (link) MS Team.
      • Otherwise search for prof's name (Damith Chatura RAJAPAKSE) in MS Teams and send a private chat message.
  • [7.00-8.00pm] Lecture briefing:
    • Will be done in Hybrid mode (i.e., you can attend F2F, or join via Zoom, or watch the recording later).
  • [8.00-9.30pm] Post-lecture consultations:
    • This portion will start as soon as the previous portion (i.e., the lecture briefing) ends.
    • During this time,
      • go through the week's lecture topics in the module website
      • do suggested activities/exercises in there (if any)
      • if you encounter any problems while doing the above or have a question, contact the prof/TA using MS-Teams or F2F.

Lecture slides are not suitable to be used as reference materials as they have been instead. Use the textbook (not slides) as your main reference. Slides can be uploaded to Canvas if requested, after the lecture.


Textbook

This module is supported by a customized online textbook Software Engineering for Self-Directed Learners (TIC2002 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. In addition, a PDF version of the full textbook will be provided at the start of the semester, via Canvas.


Programming language

This module uses Java. It assumes you are familiar with C++ basics and provides lessons to help you transition from C++ to Java.

Install JDK 11 on your computer. Using other versions of Java is highly discouraged.


Programming exercises

In some weeks, there will be some programming exercises for you to submit (on Coursemology). You should do the exercises as you learn the topics.

Focus on learning the topic rather than finishing the exercises. While these are exercises provided to self-test your knowledge, the more important thing is to read and understand the topic content. Furthermore, not all topics are tested by exercises.

Programming exercises are graded for participation.


Project

  • The project is to be done individually.
  • The project based on a generic project called Duke.
  • In the project, you will build a small chatbot, using Java.
  • The project is to be done in small increments. You will be given a schedule of what increments to be done in each week.
  • Some weekly increments will be common to all students, while some will vary from student to student. That means your final product will be unique in terms of total features, but some features will be common to other students in the class.

Weekly project increments are given in the panels below:

Week 3


Week 4


Week 5


Week 6


Week 7


Week 8


Week 9


Week 10


Week 11


Week 12


Week 13


Week 13: Final submission

Deadline: Sun, Apr 16th 2359 (Sunday of week 13)

  • An extra week can be given (upon request) for a small late submission penalty of -2 marks.
  • Submissions later than the hard deadline are liable to a late submission penalty, to be fair to those who submitted on time. But given you are part-time students, late submission penalty will be more lenient than otherwise (e.g., -1 per day) and will be on a case-by-case basis.

Deliverables:

Please upload items 2, 3, 4 as three separate files, using the three Canvas assignments provided. Do not put them into a single zip file.

  1. Source code of the working program: push to your GitHub repo.
  2. Product:
    i. Create a JAR file for the final version of the code.
    ii. Copy it to an empty folder outside of your project folder, and test it (reason: to ensure the JAR file does not depend on a specific folder location for it to work).
    iii. Submit to Canvas, name: {YourName}.jar e.g., JunHao.jar
  3. Project report: a single .docx (preferred) or a pdf file that follows the template file given (available in Canvas/Files/Handouts).
    • Submission: Upload to Canvas. The file name should be your name e.g., JunHao.docx
    • [Optional] Feedback for an early draft of the project report: Optionally, you can get prof's feedback on an early draft of the project report if you email a draft of the report to the prof no later than Wed, Apr 12th 2359 (Wednesday of week 13). Note that feedback on project report draft will be high-level feedback only (reason: the report is graded).
  4. Demo video:
    • Record a demo video showcasing the features of your product.
      You can use any screen recording software for this. One simple way is to start a Zoom meeting and record the meeting while screen-sharing your demo.
    • Use the exact version of the code you submitted (i.e., the demo should match the submitted code exactly).
    • Recommended length 7 minutes, max length 10 minutes.
    • Audio narration is optional if the demo can be understood without the audio.
    • Ensure the video is in a format that can be played by any computer.
    • Submission: Name the file with your name (to match the jar and the report file) and upload to Canvas.
  5. Code Reuse Declaration:
    • Submit this survey (on Canvas) to declare your level of code reuse in the project.
    • This is compulsory. You must submit this even if you did not reuse any code.

Policies

Deadlines

  • Deadline for weekly tasks:
    • If a specific deadline is given, adhere to that.
    • If no specific deadline is given, try to complete tasks allocated to a week by Tuesday 6.30pm of the following week (i.e., before the next lecture). In case you fail to meet that deadline, you should still do those tasks as soon as possible. There will be no penalty if a task is done within a grace period of one week after the deadline.

Plagiarism

  • You are allowed (and even encouraged) to discuss module tasks with others and help (and learn-from) each other. However, the submitted work should be largely your own.
  • If you reuse/adapt code from elsewhere (e.g., from an online site such as stackoverflow), you must cite the source in the code. e.g.,
    //Solution below adapted from https://stackoverflow.com/a/16252290
    {Your implementation of the reused solution here ...}
    

Keep track of code reuse If you reuse/adapt code from elsewhere, cite the source in code immediately. Otherwise you will not remember the source of code reuse later. Not citing the original source can land you in trouble for plagiarism.

FAQ: Can I use code generated by AI tools (e.g., CoPilot, ChatGPT)?
Answer: We don't explicitly prohibit you from using those tools but we strongly discourage you from using them in a way that hinders your learning. For example,

  • Bad Give the problem description to the tool and get it to generate the code for you, and use it directly in your submission.
  • Good Write the required code yourself, and then, use the tool to generate alternative implementations, compare, and use that experience to improve your own coding skills.
  • Good When troubleshooting/debugging, if you are still stumped after giving it your best show, try if such a tool can help you locate the problem.

Other caveats:

  • Using such tools can result in your code being same as others in the class. If such code was flagged for plagiarism, "It was generated by a tool" will not be a valid excuse.
  • Those tools sometimes can confidently give you the wrong answer. So, have a healthy level of scepticism about the accuracy of the code generated by such tools.
  • Tools are being developed that can identify the 'signature' of AI-generated content even if the content is unique.

Finally, should you still choose to use/adapt a code snippet generated by a tool, acknowledge it in the code (as a case of code reuse).


Tools

Zoom

Install Zoom in your computer. Installation and login instructions are here (requires login).
When using Zoom, remember to login using the SSO option and use your NUSNET account.

Microsoft Teams (MST)

Install MST in your computer. Installation and login instructions are here (requires login).
When using MST, remember to login using your NUSNET account.

The MST team used for the class is TIC2002-2023 Jan-Apr (link).

Git, SourceTree

We'll be using Git as our revision control tool (compulsory).

If you are not familiar with Git already, install SourceTree (a GUI for Git, but also contains Git) on your computer.

If you encounter issues connecting Sourcetree with your GitHub account, refer to these Sourcetree Tips.

GitHub

We'll be using GitHub for code hosting (compulsory).

Create a free GitHub account if you don't have one already.

Coursemology

We'll be using Coursemology for coding exercises (compulsory).

  • You'll receive the invitation link near to the first lecture.
  • More info about assignment submission will be given in the first week's lecture.

Intellij IDEA

We'll be using Intellij IDE for programming. While using Intellij is not compulsory, there will be no help/instructions given for other IDEs.

Install Intellij on your computer. You may use the Community Edition (free) or the Ultimate Edition (free for students).


Assessment

[40%] CA

  • 10%: Participation -- Each week has activities that can earn you participation points.
    For you to be considered as participated in a particular week, you need to earn at least half of available participation points in that week (e.g., if the eligible activities in a week offer a total of 5 points, you should earn at least 3 points).
    To earn full 10% marks allocated for participation, you should have participated (based on the above criterion) in at least 10 (out of 13) weeks.
    You can track your participation points through the Participation Dashboard.
    Given below are the typical activities that can earn you participation points:
    • Weekly quizzes:
      • When awarding participation points for quizzes, we look for two conditions:
        • Condition 1: submitted early i.e., before the next lecture
        • Condition 2: answered correctly i.e., least 70% of the answers are correct (reason: to discourage random answers)
      • You earn:
        • 3 points if you satisfy both conditions.
        • 2 points if only one of the conditions is satisfied.
        • 1 point if submitted but both conditions are not satisfied.
    • Weekly programming exercises: You can earn 3 points if you complete at least 80% of the exercises allocated for that week.
    • Other admin activities: Other admin activities such as submitting a survey can earn you 2 points, unless the activity specify a different number of points.
  • [30%] Project
    • [20%] Features, code
    • [10%] Documentation

[60%] Final Exam


Getting help

If you face difficulties/doubts while learning the weekly topics, doing weekly exercises/tasks, here are the options to seek help:

  1. [Preferred] Post in MS Teams channel for the class:
    • If there is any chance that the question can be relevant to other classmates, post in the General channel.
    • Otherwise, post in the YOUR_NAME - Help Channel private channel we have created for each of you.
  2. Email tic2002@comp.nus.edu.sg. These emails will be answered by the prof or forwarded to the TA for follow up.
  3. You may also post in the Canvas forum or Coursemology forum.

Exam

There is no midterm exam. Information about the final exam is given below.

  1. Weightage: 60% of the final grade.
  2. Schedule/venue: The final exam will be as per the normal exam schedule, which will be sent to you by the Registrar's Office (or you can find via EduRec -> Academics -> Exams -> View exam schedule). You can find the date/time from NUSMODS.
  3. The exam will be done face-to-face, but using Examplify.
    Please use these resources if you haven't used Examplify in the recent past (the behavior may be different from the version you used last semester):
    • slides (refer to the slides on On-Campus exam)
    • video (refer to the Examplify Student Briefing video)
    • try a few practice exams provided in the above two
    • write to NUS CIT (citbox25@nus.edu.sg) if you run into any technical issues
  4. You will need to bring your own laptop, which can connect to the NUS wifi network.
    • iPads are not allowed as our exam configuration is not compatible with the iPad Examplify app.
    • Only one device per person is allowed for the exam.
  5. No recording of your PC screen required.
  6. Any soft/hard copies of reference materials are allowed, including hand-written notes.
  7. Internet is not allowed (will be blocked by Examplify).
    You are recommended to have a soft copy of the textbook, the coding standard, and any other relevant document on your exam device.
  8. Download the exam (both parts) before you come to the exam. We'll give you the password for opening the exam paper at the starting time of the exam.
  9. If you have a doubt/query about a question, or want to make an assumption about a question, please write it down in the 'feedback' text box. Do not try to communicate those with the invigilator during the exam. We'll take your doubt/query/assumption into account when grading. For example, if many had queries about a specific question, we can conclude that the question is unclear and omit it from grading.

Submitting doubts/assumptions/feedback for a question:

  1. Click on TOOL KIT.

  2. Click on the NOTES tab, if it is not selected already.

  3. Type in your doubt/assumption/query/feedback in the text box. e.g.,

    Doubt: is there an error in this diagram?
    
    Assumption: no other entities are involved in this interaction.
    
  4. Tick the REQUEST FEEDBACK checkbox. If you don't, the note will not be saved!!!


  1. Bring your computer fully charged (and bring the charger too), although some charging points will be available at the exam venue.
    • FAQ: My laptop battery is weak. Can I be put in a seat near a charging point?
      A: The standard operation procedure for digital exams: Some venues have charging points within reach of every seat. If that's not the case, you will be moved to another location with a charging point when your laptop power level reaches a low level. Pre-allocating you a seat with a charging point is not feasible, as the number of such requests can easily exceed the number of charging points in the venue.
  2. You must start the exam within 5 minutes of receiving the password or else the quiz will close before your allotted time has run out.

Format

  • The exam will be divided into 2 parts.

Final exam - part 1

  • This exam contains 16 MCQ questions. All questions are estimated to be equal size/difficulty.

  • You only need to answer 15 questions correctly to get full marks. The extra question is there to cushion you against careless mistakes or misinterpreting a question.

  • Questions will appear in random order.

  • You will not be able to go back to previous questions.
    Reasons:
    1. to minimize opportunities for collusion
    2. not unreasonable for the materials tested and the proficiency level expected -- i.e., when using this knowledge in a real life SE project discussion, it will be rare for you to go back to revise what you said earlier in the discussion

  • Duration: 45 minutes (recommended: allocate 2.5 minutes per question, which gives you a 5 minutes buffer)

  • Most MCQ question will also have a follow up question requiring a short answer.

  • Here is an example question. The answer is a and the answer to the follow-up question can be OOP is only one of the choices for an SE project.

Choose the incorrect statement.

A. Software engineering projects always use OOP.
B. Some software engineering projects can be large and complex.
C. Some software engineering projects can go on for many years.
D. Software projects can involve people who are not software engineers.

Why is it incorrect? _____


  • Here is another example question. Note the [SELECT ALL] which tells you that this question can have multiple correoct answers and you need to select all of them i.e., it is a checkbox type question
    The answer is A, B, C.

[SELECT ALL] Which are UML diagrams covered in the module?.

A. Class diagrams.
B. Object diagrams.
C. Activity diagrams.
D. Gantt charts.


Final exam - part 2

  • Similar to part 1 (e.g., 16 questions, same length).

Exam briefing, mock exam, practice exam paper

  • There will be an exam briefing in the penultimate lecture. It will include a minimal mock exam, just to help you understand the structure.
  • You will be given a practice exam paper (at least half the size of the full paper) to help you practice timing. That practice paper will be released at least one week before the exam.