TIC2002/TCX3221 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.
[Note for TCX3221 students] Sometimes, TIC2002 course code is used to refer to this course (instead of the longer TIC2002/TCX3221). There is no difference between TIC2002 and TCX3221 -- so, whatever is stated for TIC2002 applies to TCX3221 as well.
The Weekly Schedule Page is your main source of information for TIC2002/TCX3221. 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, although some pages might not work well in small-screen devices.
We try to layer information so that readers have the freedom to omit less important layers if they wish to. Some 'layering' techniques used are explained below:
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.
the topic levels system indicates 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/briefing
: 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.
A PDF version of the full textbook () will be provided at the start of the semester.
In addition, 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 in the forum.
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
Tuesday 6.30-9.30pm
COM1-02-08
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-2024 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.
Topics relevant for a week appears under the weekly schedule page (see the Topics tab). Some topics in there come with pre-recorded videos. Watching those videos is encouraged but optional: while they do not have additional theory not already covered by the text version, they can have complementary explanations, more examples, visualizations etc.
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 17 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.
FAQ: Which code editor to use when doing programming exercises?
Answer: Here are some options:
+ Create Repl
-> choose Java).javac
command, and run using java
command.Weekly project increments are given in the panels below:
Deadline: Sun, Nov 17th 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 log in using your NUSNET account.
The MST team used for the class is TIC2002-2024 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. Instructions are here.
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
.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).
A small number of questions will provide custom options to choose from.
Here is one more example that has specific options to choose from, rather than the default Agree/Disagree.
Q25: 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).
That said, based on our past observations, almost all students are able to finish this part of the exam withing the given time fairly comfortably.
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 50 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.