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 courses.
This course 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 course 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.
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.
Most of this will work on most mainstream Browsers, but embedded slides are best viewed using Chrome.
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.
You can use the button in a panel to open it as a new tab (it can be expanded in-place too). This feature is available only for panels containing another full page of the website (i.e., not available if the panel contains an extract of a page). e.g.,
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. Open the panel below to see more details of that system.
Meaning of some shortened headings:
: 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
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.
Follow this guide @SE-EDU/guides.
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.
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.
Damith Chatura RAJAPAKSE (Course 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
dominick
[at]u.nus.edu
Tuesdays 6.30-9.30pm
COM1-0210
The first lecture will be in F2F mode, and will start at 7pm.
Subsequent lecture + tutorial time is divided into three parts, as given below and will be in hybrid mode.
You can continue to attend them using F2F mode but those who show good progress in weekly tasks will have the option to join live via Zoom,
or watch the recording later.
TIC2002-2023 Aug-Nov
(link) MS Team.Damith Chatura RAJAPAKSE
) in MS Teams and send a private chat message.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.
This course is supported by a customized online textbook Software Engineering for Self-Directed Learners (TIC2002 edition), integrated into this course 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.
This course 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.
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.
Weekly project increments are given in the panels below:
Deadline: Sun, Nov 19th 2359 (Sunday of week 13)
-2
marks.-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.
{YourName}.jar
e.g., JunHao.jar
JunHao.docx
//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,
Other caveats:
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.
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 Aug-Nov
(link).
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.
We'll be using GitHub for code hosting (compulsory).
Create a free GitHub account if you don't have one already.
We'll be using Coursemology for coding exercises (compulsory).
We'll be using IntelliJ IDEA 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).
[40%] CA
5
points, you should earn at least 3
points).3
points if you complete at least 80% of the exercises allocated for that week.2
points, unless the activity specify a different number of points.[60%] Final Exam
If you face difficulties/doubts while learning the weekly topics, doing weekly exercises/tasks, here are the options to seek help:
General
channel.YOUR_NAME - Help Channel
private channel we have created for each of you.tic2002@comp.nus.edu.sg
. These emails will be answered by the prof or forwarded to the TA for follow up.There is no midterm. The info given below are for the final exam.
Mode: F2F pen-and-paper mode (not digital)
Weightage: 60% of the final grade
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.
Structure:
The exam is open-book: you may bring any printed or written materials to the exam in hard copy format. But no devices are allowed.
Questions papers are confidential. You are not allowed to reveal their content to anyone after the exam. All pages of the exam paper are to be returned at the end of the exam.
You will be given a practice exam paper at least one week before the final exam.
You can also use past weekly Canvas quizzes to self-test your knowledge (they have been reopened, and set to show the answer immediately).
However, past exam papers will not be made available.
Number of questions: 50
Each MCQ question gives you one or more statement to evaluate.
Unless stated otherwise, the meaning of answer options are
A
: Agree. If the question has multiple statements, agree with all of them.
B
: Disagree. If the question has multiple statements, disagree with at least one of them
Here is an example:
Q23: Java can be used to write OOP code.
The answer should be A
(i.e., Agree).
Here is another example:
Q24: Testing is a QA activity. It is done by testers only.
As the first statement is true but the second is not, the answer should be B
(i.e., Disagree).
Some questions have tags (e.g., OOP, JAVA). Those tags provide additional context about the question.
In the example below, the tag indicates that the question is about OOP.
Q25: Objets are instances of a class. OOP
In the example below, the tag indicates that the question is about OOP.
Q26: The course project was done using the _____ paradigm.
[A] Procedural [B] Functional [C] OOP
Answer: C
You will be given OCR forms (i.e., bubble sheets) to indicate your answers for Part 1.
You have slightly more than 1 minute for each question, which means you need to go through the questions fairly quickly. You might not have a lot of time left to refer notes frequently during this part of the exam (i.e., you need to be fairly familiar with the content, needing to refer to notes only occasionally).
Mark the OCR form as you go, rather than planning to transfer your answers to the OCR form near the end. Reason: Given there are 100 questions, it will be hard to estimate how much time you need to mass-transfer all answers to OCR forms.
Write the answer in the exam paper as well when marking it in the OCR form. Reason: It will reduce the chance of missing a question. Furthermore, in case you missed a question, it will help you correct the OCR form quickly.
We have tried to avoid deliberately misleading/tricky questions. If a question seems to take a very long time to figure out, you are probably over-thinking it.
Invigilators will not answer queries about the questions in the exam paper part 1 (but will answer queries related to exam administration). Reason: Given the fast pace required by this part of the exam, it may be difficult to reach exam takers quickly enough, or to ensure all students receive the same level of access to the invigilator during the exam.