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

TEE3201 Software Engineering


Course overview

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


Using this course website

The Weekly Schedule Page is your main source of information for TEE3201. 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, although some pages might not work well in small-screen devices.

Information layers

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.

Some less important info in a boarder-less panel


Some less important info in a panel


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

A panel that can be opened as another tab


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.

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/briefing
: 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

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.

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 in the forum.


Instructors

Lecturer


Damith

Damith Chatura RAJAPAKSE
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:

  • Khoo Jin Xiang:   e0958193[at]u.nus.edu

Lectures + Tutorials

Wednesdays 1800-2130
Venue: E5-02-32

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.

  • 1800-1900: Do exercises related to previous week topics. Consult prof/tutor (via MS Teams or F2F) if you encounter problems.
  • 1900-2000: Short lecture/briefing, introducing topics for the current week.
    Delivered in hybrid mode (i.e., you can attend F2F, join via Zoom, or watch the recording later). After that, watch the pre-recorded videos and follow the textbook sections provided.
  • 2000-2130: Optionally, you can stay back and do exercises for the current week. Consult prof/TA (F2F or using MS Teams) for help, as needed.

Lecture slides will be uploaded to Canvas after the lecture, usually by midnight of the same day. Lecture slides are not suitable to be used as reference materials as they have been instead.


Textbook

Software Engineering Textbook:

A customized online text book is used for this course. Topic coverage may not follow the exact topic sequence in the book. There are several ways for you to access the text book.

  • Full version is here: The relevant sections are embedded under the corresponding week in the schedule page.
  • Printable version is here. You are encouraged to use the online full version when possible (instead of the printable version or the PDF version), as it has more content videos, exercises, etc.

Programming Textbook:

An additional guide on programming basics is provided for you to get started or programming. The topics in that textbook are to help you do the programming part of the project. Furthermore, we try to use external resources as much as possible in our guide so that you can continue your learning using those resources beyond the scope of this course.


Programming Language

This course uses Python programming language to teach you programming basics required for software engineering. A basic knowledge of Python is expected in the final exam, to the extent it was used in the weekly exercises and the project. For example, some questions might use Python code snippets as part of the question.

Install Python (the latest 3.x version) in your computer.


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.

Learn the topic first before trying 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.

Project

  • The project is to be done individually.
  • The project based on a generic project called Monty.
  • In the project, you will build a small chatbot, using Python.
  • 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 project increments will be common to all students, while some will vary from student to student (to be announced near to the date). 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.
  • Constraints:
    1. You should not use relational/SQL databases e.g., MySQL
    2. The software should work in a Windows computer that has Python 3. If your software needs other software to be installed (e.g., third-party libraries), please get prof's permission first.

Weekly Project Increments


Week 13: Final Submission

Submission Deadline: Sunday of week 13 (2024-11-17 23:59).

  • An extra week can be given (upon request) for a small late submission penalty of -2 marks.
  • Submissions later than the above one-week extra time 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:

  1. Code of the working program: zip (not rar) the code.
    • Submission: via Canvas assignments
    • File name: {Your Name}.zip e.g., Jun Hao.zip
  2. Project report: a single .docx or a pdf file that follows the template given (template file will be available in Canvas).
    • Submission: via Canvas assignments
    • File name: {Your Name}.docx/pdf e.g., Jun Hao.docx
    • Optionally, you can get feedback on an early project report draft by emailing it to the prof no later than 2024-11-13 (i.e., week 13 Wednesday). Note that such feedback will be limited to high-level comments only (reason: the report is graded), and given only once per student.
  3. 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: via Canvas assignments
    • File name: {Your Name}.mp4 e.g., Jun Hao.mp4
  4. Code Reuse Declaration:
    • Submit the Canvas survey 'Code Reuse Declaration' when it opens in week 13, 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,
      • Soft deadline: try to complete tasks allocated to a week before the following lecture.
      • Hard deadline: In case you fail to meet the soft deadline, there will be no penalty if a task is done within one week after the soft deadline.

Plagiarism

  • You may view/discuss others' work or get help from others. However, the work you submit should be your own. In case of similar submissions, marks will be divided among those submissions e.g., if your submission scored 8/10 and there is another submission that is similar to your work (beyond coincidental similarity), each submission will get 4 marks (new policy: NUS requires all plagiarism cases to reported to the university).
  • 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,

  • Good Use a tool such as GitHub co-pilot to increase the productivity of writing code (e.g., auto-complete the next bit of code).
  • 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, use a tool to help you locate the problem.
  • Bad Give the problem description to the tool and get it to generate the code for you, and use it directly in your submission, and claim it as your own.

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. Therefore, if you use (possibly with minor changes) a non-trivial code snippet generated by a tool (e.g., an entire method), it is safer to acknowledge in the code as a case of code reuse.
  • 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

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.

PyCharm

  • PyCharm is the recommended Python editor. While using PyCharm is optional, there will be no help/instructions given for other editors.

  • In the initial weeks, repl.it online editor is good enough for writing Python code. As your project code gets bigger in later weeks, you can consider installing PyCharm on your computer. You may use the Community Edition (free) or the Professional Edition (free for students).


Getting Help

If you face difficulties/doubts while learning the weekly topics, doing weekly exercises/tasks, here are the ways to get help, in the order of preference (most preferred on the top).

  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.
    • If there is no response from us after 24 hours (in which case it is likely that we didn't get the MS Teams notification), feel free to remind us by emailing tee3201@comp.nus.edu.sg.
  2. Email tee3201@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.

Assessment

  • 10%: Participation -- To get full marks, submit weekly programming exercises and weekly project increments on time. In a week that has a quiz, they will be counted for participation as well.
  • 30%: Project
    • 10%: Documentation
    • 20%: Functionality, code
  • 60%: Final Exam

Exam

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 has two parts:
    • Part 1: MCQ questions (1 hour, 30 marks)
    • Part 2: Essay questions (1 hour, 30 marks)
  • Both papers will be given to you at the start, but you need to answer Part 1 first (i.e. MCQ paper). It will be collected 1 hour after the exam start time (even if you arrived late for the exam). You are free to start part 2 early if you finish Part 1 early.

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.

Final Exam: Part 1 (MCQ)

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

  • If you have a doubt/query about a question, or would like to make an assumption about a question, or would like to report a potential error in the exam paper, write down your doubt/query/assumption in the space provided for it at the end of the exam paper.
  • Those doubts/queries/assumptions (if justified) will be taken into account when grading.

Final Exam: Part 2 (Essay)

  • Some examples of the nature of questions you can expect:
    • Draw UML diagrams to match the given code/description
    • Specify requirements for a given project using various formats covered in the course
    • Design test cases to test a given function.
  • Yes, you may use pencils when answering part 2.
  • If you have any queries during this part of the exam, you may ask the invigilator for clarifications.