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

Week 12 [Fri, Apr 5th] - Admin

  1. Submit the declaration about code reuse COMPULSORY | Tue, Apr 16th 2359
  2. Submit the PE mode selection COMPULSORY | Sat, Apr 13th 2359
  3. Submit feedback for tutors

1 Submit the declaration about code reuse COMPULSORY | Tue, Apr 16th 2359

  • Submit the Canvas survey to declare that you have followed the proper procedure for reusing/adapting code from elsewhere. You need to submit this even if you did not reuse any code.

Admin Policy on reuse

Policy on reuse

Scope: The policies on reuse apply to all project deliverables that are normally expected to be your own work (i.e., code, code comments, documentation, diagrams, images, etc.) unless stated otherwise.

Reuse is encouraged. However, note that reuse has its own costs (such as the learning curve, additional complexity, usage restrictions, and unknown bugs). Furthermore, you will not be given credit for work done by others. Rather, you will be given credit for reusing work done by others.

  • You are allowed to reuse work from your classmates or past students, subject to following conditions:
    • The work has been shared publicly by us or the authors.
    • You clearly give credit to the original author(s).
  • You are allowed to reuse code from external sources, subject to following conditions:
    • You clearly give credit to the original author/source.
    • You do not violate the license under which the work has been released. Please do not use 3rd-party images/audio in your software unless they have been specifically released to be used freely. Just because you found it in the Internet does not mean it is free for reuse.
  • Always get permission from us before you reuse third-party libraries. Please post your 'request to use 3rd party library' in our forum. That way, the whole class get to see what libraries are being used by others.
    • Our approval is given based on compliance with the course. Compliance with the license of the reused software is entirely your responsibility. While we don't anticipate such a case, any liability from improper reuse of a third-party library is to be borne by the person who reused it (i.e., not NUS).
    • Once a 3rd party library has been approved for one student/team, it can be used freely by others without asking for approval again.

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.

Automated plagiarism checks ahead! We'll be using automated plagiarism checks to detect uncredited reuses of content from other CS2103 tP's i.e., tP's done by other teams in this batch and all previous batches. These checks will be done after the final submissions. The cases detected will be verified and reported to the university administration for disciplinary action. As you know, NUS enforces a penalty of F grade for the entire course (with no option to S/U or withdraw from the course) for plagiarism offenses.

Giving credit for reused work

Given below are how to give credit for things you reuse from elsewhere. These requirements are specific to this course i.e., not applicable outside the course (outside the course, you should follow the rules specified by your employer and the license of the reused work)

If you used a third party library:

  • Individual project (iP): Mention in the README file (under the Acknowledgements section)
  • Team project (tP):
    • Mention in the Developer Guide (under the Acknowledgements section)
    • Mention in Project Portfolio Page if the library has a significant relevance to the features you implemented.

If you reused code snippets found on the Internet e.g. from StackOverflow answers or
referred code in another software or
referred project code by current/past student:

  • If you read the code to understand the approach and implemented it yourself, mention it as a comment
    Example:
    //Solution below inspired by https://stackoverflow.com/a/16252290
    {Your implementation of the reused solution here ...}
    
  • If you copy-pasted code from elsewhere but modified it significantly, mention it as a comment
    Example:
    //Solution below adapted from https://stackoverflow.com/a/16252290
    {Your implementation of the reused solution here ...}
    
  • If you copy-pasted a non-trivial code block (possibly with minor modifications renaming, layout changes, changes to comments, etc.), also mark the code block as reused code (using @@author tags with the -reused suffix)
    Format:
    //@@author {yourGithubUsername}-reused
    //{Info about the source...}
    
    {Reused code (possibly with minor modifications) here ...}
    
    //@@author
    
    Example of reusing a code snippet (with minor modifications):
    persons = getList()
    //@@author johndoe-reused
    //Reused from https://stackoverflow.com/a/34646172
    // with minor modifications
    Collections.sort(persons, new Comparator<CustomData>() {
        @Override
        public int compare(CustomData lhs, CustomData rhs) {
            return lhs.customInt > rhs.customInt ? -1 : 0;
        }
    });
    //@@author
    return persons;
    

Giving credit to AB3 code: If your team project code follows a design similar to AB3, that doesn't mean you need to credit AB3 -- this is because a brownfield project is expected to follow existing code/design where possible, in the interest of consistency. This type of reuse need not be acknowledged/credited specifically.

Giving credit to AB4 code: If you reused any code from AB4, cite it as you would cite reuse from any other external source.

Giving credit for reusing from course materials (e.g., course textbook, tutorials, instructional resources from se-education.org) is not required, although you are welcome to do so. Reason: Those materials were created by the teaching team for you to use/reuse.

Reuse within the team (e.g., reusing code written by a team member) need not be mentioned explicitly. However, you should factor in such reuse when you estimate effort contributed by each team member.

Reuse of documentation (e.g., reusing a UG/DG section) is no different from code reuse. Such reuse should be credited as well.

Citing the use of AI-generated/assisted work (e.g., using GitHub Copilot for project work):

  • If the use of the tool was localized into a few places (e.g., used it to write a few methods/classes only), cite its use in comments near where you used it.
  • If the use was more widespread (e.g., used it as an auto-complete tool during most of your coding), cite the usage (i.e., which tool, who used it, the extent of use) in the following location instead (i.e., no need to cite in code comments):
    • iP: in the README file
    • tP: in the DG, under the Acknowledgements section

2 Submit the PE mode selection COMPULSORY | Sat, Apr 13th 2359

  • Submit the Canvas survey to declare which mode (i.e., remote or F2F) you intend to use for the PE. The panel below has some information you can use to make the decision.
    Please consider carefully before choosing, and stick to the selected mode afterward -- it will be difficult to change your PE mode after the deadline given above.

Admin tP → PE → Extract (PE modes)

  • Mode: you can choose between remote or F2F (we'll use a Canvas survey to collect your preferred mode):
    • Remote mode: This is the recommended mode. Proctored via Zoom. You'll need to join the Zoom session from a quiet place (i.e., conducive to an exam) at which you can set up a Zoom device for proctoring.
      Choose this mode only if you are able to comply with the Zoom proctoring requirements given further down.
    • F2F mode: Attend the PE at the lecture venue (LT15).
      Choose only if you are unable to use the remote mode (reason: higher the number of F2F attendees, higher the risk of Wi-Fi speed issues and GitHub throttling issues).

...

  • Remote mode proctoring will be done via Zoom. No admission if the following requirements are not met.
    • You need two Zoom devices (PC: chat, audio video, Phone: video, audio), unless you have an external webcam for your PC.
    • To change the Zoom display name as required by the PE, join the Zoom call, go to the 'Participation' panel, and search for yourself. Then, click on 'More', followed by 'Rename'.
    • Add your [PE_seat_number] in front of the first name of your Zoom display name, in your Zoom devices. Seat numbers can be found in here about 2 days before the PE. e.g.,
      • [M18] John Doe (M18 is the seat number)
      • [M18][PC] John Doe (for the PC, if using a phone as well)
    • Set your camera so that all the following are visible:
      1. your face (side view, no mask)
      2. your hands
      3. the work area (i.e., the table top)
      4. the computer screen

3 Submit feedback for tutors

  • [Not urgent] A gentle reminder to submit feedback for your tutor via the semester-end student feedback exercise, if you can spare a few minutes.
    They will be disappointed if only a few students cared enough to give feedback.
  • Please don't rate the 'other' tutor appearing in the submission form but didn't tutor you. That is another tutor teaching in the same time slot as yours.
    In particular, don't give a Neutral ratings to that 'unknown' tutor as it can affect their performance evaluation.