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

TEE3201 Software Engineering


Module 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 module website

The 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, 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 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:

  • Ou Jin Bin (Kelvin):   e0902046[at]u.nus.edu

Lectures + Tutorials

Tuesdays 1800-2130
Venue: E4-04-02

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

  • 1800-1900: Do exercises related to previous week topics. Consult prof (via MS Teams) 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 module. 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 module.


Programming Language

This module 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 (2023-04-16). Submissions later than the deadline are liable to a late submission penalty, to be fair to those who submitted on time. But given that you are part time students, the late submission penalty will be small (e.g., -1 per day).

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 2023-04-11 (i.e., week 13 Tuesday). 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 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,
      • 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.
  • 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

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